Framework
talmolab/sleap avatar
talmolab/sleap

SLEAP: Multi-Animal Pose Tracking Without a Custom Pipeline

A deep learning framework for multi-animal pose tracking.

613 stars136 forksPythonBSD-3-Clause-Clear

At a glance

What is it?
SLEAP is a Python framework and GUI for labeling, training and running multi-animal pose estimation, with two separate backends for neural network training and file handling. It is built for labs that need to track many animals at once, but the split backend design and Python version ceiling are constraints worth understanding before you commit.
Who is it for?
Adopt SLEAP if you have a multi-animal tracking problem, a GPU available for training, and a team willing to spend time in the labeling GUI to build ground truth. Do not adopt it if you only need single-animal pose estimation, since the multi-animal machinery adds labeling complexity you will not use.
Can I use it commercially?
Yes. BSD-3-Clause-Clear is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 5 days ago.
What is it written in?
Mainly Python, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 15, 2026, and from our analysis. They are not legal advice.

DEEP OPEN-SOURCE ANALYSIS

The problem SLEAP targets: many animals, one frame

Single-animal pose estimation is a solved enough problem that most labs can pick an existing model and get usable keypoints. Multi-animal tracking is different. When several animals occupy the same frame, a detector has to decide which body part belongs to which individual, and that assignment has to stay consistent across frames. SLEAP is built specifically for that case. The README describes it as a framework that can track any type or number of animals, and it ships a labeling and training GUI alongside the Python package. The intended user is a neuroscience or behavior lab that records multiple animals in one arena and needs per-individual trajectories rather than a single skeleton. The README also states SLEAP is the successor to LEAP, a single-animal tool, which places it in a lineage where multi-animal support is the defining addition rather than an afterthought.

Top-down and bottom-up: two training strategies in one framework

The README lists single- and multi-animal pose estimation with top-down and bottom-up training strategies. These are two different ways of decomposing the problem. A top-down approach first finds each animal as a whole, then estimates keypoints within that crop. A bottom-up approach finds all keypoints in the frame first, then groups them into individuals. The choice matters because the failure modes differ: top-down depends on the animal detector succeeding, while bottom-up depends on the grouping step. SLEAP exposes both, which means you can pick the strategy that matches your animal density and occlusion pattern. The README does not state which strategy is the default or which performs better under which conditions, so that decision requires reading the documentation rather than the repository front page. The framework also claims customizable neural network architectures, and the paper cited in the README is the reference for the underlying method.

Two backends: sleap-nn and sleap-io

The README states SLEAP has two independent backends: sleap-nn for training and inference pipelines, and sleap-io for handling SLEAP files. This is a meaningful architectural split. Training and inference logic lives in one package, file format handling in another, and the main sleap package sits on top with the GUI and workflow. For a developer building an integrated app, that separation is useful because you can depend on sleap-io for reading and writing pose data without pulling in the training stack. For a user installing SLEAP, it means the install command pulls in more than one package, and version mismatches between them are a possible source of breakage. The README gives the documentation sites nn.sleap.ai and io.sleap.ai for the two backends, so the split is documented rather than hidden.

Installing SLEAP with uv and the Python version ceiling

The README recommends uv for installation and gives explicit commands. On macOS or Linux you install uv with curl -LsSf https://astral.sh/uv/install.sh | sh, and on Windows with a PowerShell command. Then, for Windows or Linux with CUDA 12.8, the command is uv tool install "sleap[nn]" --index https://download.pytorch.org/whl/cu128 --index https://pypi.org/simple. For macOS or CPU-only, the index URL changes to https://download.pytorch.org/whl/cpu. After installation you launch the GUI by running sleap. The README is explicit that Python 3.14 is not yet supported and that SLEAP currently supports 3.11, 3.12 and 3.13. Because uv defaults to the system Python, a machine with 3.14 installed needs the version pinned in the command, for example uv tool install --python 3.13 "sleap[nn]". That is a concrete constraint, not a vague compatibility note, and it is the first thing to check if an install fails.

The labeling GUI is the real entry cost

SLEAP advertises a purpose-built GUI and human-in-the-loop workflow for rapidly labeling large datasets, and it describes training as fast, citing 15 to 60 minutes on a single GPU for a typical dataset. Those two claims are connected. The framework is designed around active learning, where you label a subset, train, predict on the rest, correct the predictions, and repeat. The labeling GUI is where most of the human time goes. The README does not describe how many labels are needed for a new dataset, only that the architectures deliver accurate predictions with very few labels. That phrase is doing a lot of work, and it is the kind of claim that depends heavily on the visual complexity of your animals and arena. A lab tracking two mice on a plain background and a lab tracking a dozen fish in a cluttered tank are not the same labeling problem, and the README does not distinguish them.

Where SLEAP is the wrong tool

If your problem is single-animal pose estimation, SLEAP's multi-animal machinery is overhead. The labeling interface, the top-down and bottom-up choice, and the identity tracking across frames all exist to solve a problem you do not have. A simpler single-animal pipeline will get you to results with less setup. There is also a hardware boundary. The README states SLEAP supports remote training and inference workflows for using SLEAP without GPUs, which implies that local training expects a GPU. The cited training time of 15 to 60 minutes is on a single GPU. If you have no GPU and no access to a remote one, the training half of the workflow is not practical. Finally, the README does not state supported video formats, maximum resolution, or memory requirements, so those need to be confirmed from the documentation before assuming SLEAP fits your recording setup.

How SLEAP differs from DeepLabCut

DeepLabCut is the most common alternative in this space and it is worth naming the actual difference. DeepLabCut grew out of a markerless pose estimation approach built on transfer learning from human pose networks, and it is widely used for single-animal and multi-animal tracking with a labeling GUI of its own. SLEAP's distinguishing design choice is the explicit top-down and bottom-up split and the separation of training and file handling into sleap-nn and sleap-io. That separation makes SLEAP more modular for developers who want to embed pose tracking in a larger application, since file I/O does not require the training stack. The trade-off is more moving parts at install time. If you want a single monolithic package with a long history of tutorials, DeepLabCut is the more conventional pick. If you want the identity-tracking machinery and the backend split, SLEAP is the more structured option. Neither choice is settled by the README alone; both require testing on your own footage.

Licence, maintenance and what to verify

SLEAP is released under BSD-3-Clause-Clear. That is a permissive licence, and the Clear variant adds a patent disclaimer. As with any licence question, the terms themselves are the authority, not this article. The repository is not archived, the default branch is develop, and the most recent release listed is v1.6.5 from August 2026, with v1.6.4 and v1.6.3 before it. That release cadence suggests active maintenance, and the README names maintainers at the Salk Institute. The README also states SLEAP is currently developed and maintained in the Talmo Lab. For upgrade cost, the split into sleap-nn and sleap-io means a major version bump in either backend can affect the main package, so pinning versions in your environment is worth doing. The README does not describe a deprecation policy or a version support window, so that is something to verify from the release notes before depending on SLEAP in a long-running study. The concrete first step is to run the install command for your platform and confirm the GUI launches with sleap before labeling anything.

Editorial conclusion

Adopt SLEAP if you have a multi-animal tracking problem, a GPU available for training, and a team willing to spend time in the labeling GUI to build ground truth. Do not adopt it if you only need single-animal pose estimation, since the multi-animal machinery adds labeling complexity you will not use. Before committing, verify that your Python version is 3.13 or lower, that your CUDA version matches the PyTorch index URL in the install command, and that your dataset is large enough to justify the human-in-the-loop labeling workflow.

Official sources

  1. License: BSD-3-Clause-Clear
  2. Project website
  3. README
  4. Releases
  5. talmolab/sleap on GitHub
Community notes

Community notes