Open-source project
lambdaloop/anipose avatar
lambdaloop/anipose

Anipose: 3D Animal Pose Estimation from Multiple Cameras with DeepLabCut

🐜🐀🐒🚶 A toolkit for robust markerless 3D pose estimation

468 stars81 forksJavaScriptBSD-2-Clause

At a glance

What is it?
Anipose is an open-source toolkit that takes 2D keypoint tracks from DeepLabCut and triangulates them across multiple camera views to produce 3D pose estimates. It targets animal behavior researchers who already have DeepLabCut models and multi-camera recording rigs.
Who is it for?
Anipose is the right tool for animal behavior researchers who have DeepLabCut 2D models trained on their species and a multi-camera recording setup. It handles the 3D reconstruction step that DeepLabCut alone does not provide.
Can I use it commercially?
Yes. BSD-2-Clause 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 120 days ago.
What is it written in?
Mainly JavaScript, according to GitHub's language statistics.

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

Editorial analysis

What Anipose Does and Who Uses It

Recovering the 3D position of an animal's joints from video requires either a dedicated marker-based motion capture system or a markerless approach that combines machine learning keypoint detection with geometry. Anipose provides the geometry step for researchers who have already solved the keypoint detection step with DeepLabCut.

The project addresses a specific gap in the pose estimation workflow. DeepLabCut tracks keypoints in individual 2D video frames but operates on single camera views. When a behavior lab records the same animal simultaneously from multiple cameras, the 2D tracks from each view can be triangulated into 3D coordinates, but DeepLabCut does not include that triangulation step. Anipose fills exactly this role.

The README describes the target users as researchers studying animal behavior: the project name combines Animal and Pose. Published use cases visible in the README include flies (from the Tuthill Lab at the University of Washington) and hands. The toolkit is designed to be robust to missing detections and calibration imprecision, which are common in real laboratory recordings.

Anipose is an open-source toolkit published alongside a research paper in Cell Reports, which is linked in the README for methodological detail.

How Anipose Converts 2D Tracks to 3D Pose Estimates

The core of Anipose is camera triangulation. Each camera in a multi-camera rig records the same animal from a different angle. DeepLabCut runs on each camera's video independently and outputs 2D coordinates for each tracked keypoint in each frame. Anipose then applies geometric triangulation: given the known positions and orientations of the cameras (determined during calibration) and the 2D coordinates from each view, it calculates the 3D position of each keypoint.

The README notes that the library uses fiducial markers for camera calibration, citing Romero-Ramirez et al., 2018 on speeded-up detection of squared fiducial markers. These are printed calibration boards that the researcher records before the experiment to establish the spatial relationship between cameras.

For the triangulation step, Anipose uses the aniposelib library as a dependency. The setup.py lists aniposelib at version 0.7.0 or newer as a required package. aniposelib handles the camera model mathematics, calibration solving, and the triangulation algorithms.

Anipose also integrates scipy for optimisation, pandas for data handling, and OpenCV (opencv-contrib-python) for image processing during calibration.

Installing Anipose and Its Dependencies

Anipose is available on PyPI as the anipose package. The setup.py lists its core dependencies: aniposelib 0.7.0 or newer, opencv-contrib-python, toml, numpy, scipy, pandas, tqdm, click, scikit-video, flask, flask-compress, and flask-ipban. The package version in setup.py is 1.1.24.

DeepLabCut is listed as an optional dependency in the dlc extras group rather than a hard requirement, so the base package installs without it. The visualisation features require mayavi, listed in the viz extras group.

Documentation is hosted at anipose.org, and the README directs readers there for full usage instructions including specific command sequences and configuration examples. The repository's docs/ directory and .readthedocs.yml file indicate that the documentation is built with ReadTheDocs and kept separate from the README to avoid duplication.

The command-line entry point is registered in setup.py as anipose, mapped to anipose.anipose:cli. After installation this makes the anipose command available in the terminal.

Camera Calibration: The Required Step Before 3D Reconstruction

Triangulation requires knowing exactly where each camera is in 3D space relative to the others and what the intrinsic optical properties of each camera are. Anipose handles this through a calibration step using printed fiducial marker boards.

The RELATED SEARCHES for this project include anipose calibration and anipose camera calibration, reflecting that calibration is a common area where users get stuck. The calibration procedure requires recording video of the calibration board visible simultaneously from all cameras, typically before each experimental session or whenever the camera rig is moved.

The calibration step writes a configuration file that the triangulation pipeline then reads. The repository includes a config.toml at the top level as an example configuration file. The TOML format stores camera calibration results and pipeline settings in a human-readable file that researchers can inspect or modify.

If calibration is poor, for example because the calibration board was partially occluded or the cameras shifted between calibration and recording, the 3D triangulation will produce systematic errors. Anipose's claim to robustness addresses calibration imprecision and missing detections in individual frames, not gross calibration failure.

Limitations and When Anipose Is the Wrong Tool

Anipose is not a standalone solution. It depends entirely on DeepLabCut for the 2D keypoint detection step. Researchers who have not already trained DeepLabCut models on their species and body parts cannot use Anipose until those models exist. Training DeepLabCut models is a separate project with its own time and annotation requirements.

Single-camera setups cannot use Anipose at all. Triangulation requires at least two camera views of the same physical scene. Labs with a single overhead camera or a single side camera have no 3D reconstruction path through Anipose.

The project's primary language is listed as JavaScript in the GitHub metadata, which seems to reflect the web-based 3D visualisation component (Flask serves a browser viewer), while the actual pipeline code is Python. Researchers who inspect the repository expecting pure Python should be aware of this.

For comparison, SLEAP (Social LEAP Estimates Animal Poses) is a pose estimation system that handles both 2D and 3D tracking natively and supports multi-animal scenarios. SLEAP's 3D module handles calibration and triangulation internally rather than relying on DeepLabCut as an upstream dependency. Anipose's advantage is that it integrates with an existing DeepLabCut workflow without requiring researchers to retrain their models in a new framework.

Anipose is BSD-2-Clause licensed. The last push to the repository was on 2026-06-02.

Editorial conclusion

Anipose is the right tool for animal behavior researchers who have DeepLabCut 2D models trained on their species and a multi-camera recording setup. It handles the 3D reconstruction step that DeepLabCut alone does not provide. It is not useful for single-camera recordings, and it does not perform the 2D tracking itself. Before setting up Anipose, verify that DeepLabCut 2D models are trained and producing reliable keypoint tracks, and that calibration boards are available for the camera rig. The anipose paper at Cell Reports provides the full methodological context for the triangulation approach.

Frequently asked questions

What 2D pose estimator does Anipose require?

Anipose is designed to work with DeepLabCut. The dlc optional install extra adds deeplabcut 2.0.4.1 or newer. Anipose takes DeepLabCut's 2D keypoint tracks from each camera as input and triangulates them into 3D coordinates.

How does Anipose convert 2D keypoints to 3D pose estimates?

Anipose uses camera triangulation via the aniposelib library. Given calibrated camera positions and the 2D keypoint coordinates from each camera view, it calculates the 3D position of each keypoint. Camera calibration requires recording fiducial marker boards visible from all cameras.

What is the anipose paper?

The Anipose paper is published in Cell Reports (fulltext identifier S2211-1247(21)01179-7). The README links to it at cell.com. The paper describes the triangulation methodology and the robustness techniques used to handle missing detections and calibration imprecision.

Official sources

  1. lambdaloop/anipose on GitHub
  2. License: BSD-2-Clause
  3. Project website
  4. README
  5. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/lambdaloop-anipose.svg)](https://hysenlabs.com/projects/lambdaloop-anipose)