Annolid is a deep learning-based software package designed for the segmentation, labeling, and tracking of research targets within video files, focusing primarily on animal behavior analysis. Based on state-of-the-art instance segmentation methods, Annolid now harnesses the Cutie video object segmentation model to achieve resilient, markerless tracking of multiple animals from single annotated frames, even in environments in which they may be partially or entirely concealed by environmental features or by one another. Our integration of Segment Anything and Grounding-DINO strategies additionally enables the automatic masking and segmentation of recognizable animals and objects by text command, removing the need for manual annotation. Annolid's comprehensive approach to object segmentation flexibly accommodates a broad spectrum of behavior analysis applications, enabling the classification of diverse behavioral states such as freezing, digging, pup huddling, and social interactions in addition to the tracking of animals and their body parts.
YouTube Channel | Annolid documentations | |
---|---|---|
A basic user guide with installation instructions and recent documentation can be found at https://cplab.science/annolid or https://annolid.com.
Instance segmentations | Behavior prediction |
---|---|
Mouse behavior analysis with instance segmentation based deep learning networks
create a conda env
conda create -n annolid-env python=3.11
conda activate annolid-env
conda install git
conda install ffmpeg
git clone --recurse-submodules https://github.com/healthonrails/annolid.git
cd annolid
The pip install command will attempt to determine your computer's resources (like a GPU) automatically. To control this directly, you alternatively can use the conda env command and the appropriate environment file (.yml). For alternative installation methods, see the Annolid documentation (https://cplab.science/annolid or https://annolid.com).
Open a terminal window and navigate to the directory where the Annolid source code was downloaded.
Create a Conda environment based on the specifications in the environment.yml file located in the Annolid source code directory using the following command:
conda env create -f environment.yml
This command will create a new Conda environment with the required packages and dependencies needed to run Annolid on an Ubuntu 20.04 machine with GPUs.
Activate the new Conda environment using the following command:
conda activate annolid-env
Verify that the installation was successful by running the annolid
annolid
Note: For error NVIDIA GeForce RTX 3090 with CUDA capability sm_86 is not compatible with the current PyTorch installation, please try the following command.
conda install pytorch==2.2.0 torchvision==0.17.0 torchaudio==2.2.0 cudatoolkit=12.1 -c pytorch -c nvidia
That's it! You should now have Annolid installed on your Ubuntu 20.04 machine with GPUs and be able to use it for video analysis and annotation tasks.
### Note for Mac M1/M2 Chip users
If you encounter the folloing errors,
Intel MKL FATAL ERROR: This system does not meet the minimum requirements for use of the Intel(R) Math Kernel Library. The processor must support the Intel(R) Supplemental Streaming SIMD Extensions 3 (Intel(R) SSSE3) instructions. The processor must support the Intel(R) Streaming SIMD Extensions 4.2 (Intel(R) SSE4.2) instructions. The processor must support the Intel(R) Advanced Vector Extensions (Intel(R) AVX) instructions. [end of output]
Please try the following commands.
conda create -n annolid-env python=3.11 conda activate annolid-env
git clone --recurse-submodules https://github.com/healthonrails/annolid.git cd annolid pip install -e . annolid
Note: To train instance segmentation models, please install Detectron2 in your Annolid environment by following these steps:
Activate your Annolid environment (if not already activated):
```sh
conda activate annolid-env
Install Detectron2:
python -m pip install --user 'git+https://github.com/facebookresearch/detectron2.git'
Note: if you got this error:
ERROR: Could not find a version that satisfies the requirement decord>=0.4.0
try to install ffmpeg or you can install it in conda with conda install -c conda-forge ffmpeg
.
FYI: it is helpful to compress videos to reduce diskspace using ffmpeg using ffmpeg -i my_video.mp4 -vcodec libx264 my_video_compressed.mp4
Tip: to fix the error like objc[13977]: Class QCocoaPageLayoutDelegate is implemented in both /Users/xxx/anaconda3/envs/annolid-env/lib/python3.7/site-packages/cv2/.dylibs/QtGui (0x10ebd85c0) and /Users/xxx/anaconda3/envs/annolid-env/lib/python3.7/site-packages/PyQt5/Qt/lib/QtPrintSupport.framework/Versions/5/QtPrintSupport (0x10fc9d540
, please try the command conda install qtpy
.
source activate annolid-env
annolid
#or you can provide a label.txt file as follows.
annolid --labels=/path/to/labels_custom.txt
If you want to learn more about labelme, please check the following link.
To train models for tracking animals and assigning IDs, please label each instance with a unique name or ID (e.g. vole_1, mouse_2, or frog_femal_01).
For instances without needing to assign IDs across different frames or videos, please label instances with a generic name or ID (e.g vole, mouse, or frog).
For encoding behaviors, please name the ploygon with the behavior name (e.g. rearing, object_investigation, or grooming)
For body parts, please use keypoint with names like nose, tail_base, or left_ear.
The first time you run annolid, it will create a config file in the user's home directory ~/.labelmerc
(C:\Users\
20 to 100 frames per video
For autolabeling, you can label 20 frames and train a model. Then you can use the trained model to predict on the video and add the corrected predictions to the training set to train a better model. Repeat the process until the model is matching human performance.
Write labeling guidelines by starting with this template.
To link instances across frames, we treat each instance as its own class across frames.
To track multiple animals, label each animal as a separate instance.
To generalize across animals or videos, label multiple animals as examples of the same instance.
Please make sure that Docker is installed on your system.
# on Linux
cd annolid/docker
docker build .
xhost +local:docker
docker run -it -v /tmp/.X11-unix:/tmp/.X11-unix/ -e DISPLAY=$DISPLAY <Image ID>
If you use Annolid in your research, please use the following BibTeX entry.
@misc{yang2024annolid,
title={Annolid: Annotate, Segment, and Track Anything You Need},
author={Chen Yang and Thomas A. Cleland},
year={2024},
eprint={2403.18690},
archivePrefix={arXiv},
primaryClass={cs.CV}
}
@article{yang2023automated,
title={Automated Behavioral Analysis Using Instance Segmentation},
author={Yang, Chen and Forest, Jeremy and Einhorn, Matthew and Cleland, Thomas A},
journal={arXiv preprint arXiv:2312.07723},
year={2023}
}
@misc{yang2020Annolid,
author = {Chen Yang, Jeremy Forest, Matthew Einhorn, Thomas Cleland},
title = {Annolid: an instance segmentation-based multiple animal tracking and behavior analysis package},
howpublished = {\url{https://github.com/healthonrails/annolid}},
year = {2020}
}
@article{pranic2022rates,
title={Rates but not acoustic features of ultrasonic vocalizations are related to non-vocal behaviors in mouse pups},
author={Pranic, Nicole M and Kornbrek, Caroline and Yang, Chen and Cleland, Thomas A and Tschida, Katherine A},
journal={bioRxiv},
year={2022},
publisher={Cold Spring Harbor Laboratory}
}
For more information: https://cplab.science/annolid .
Annolid: an instance segmentation-based multiple-animal tracking and behavior analysis package
New An example dataset annotated by Annolid and converted to COCO format dataset is now available from this Google Drive link https://drive.google.com/file/d/1fUXCLnoJ5SwXg54mj0NBKGzidsV8ALVR/view?usp=sharing.
The pretrained models will be shared to the Google Drive folder.
To request a new feature or report bugs, please use the link https://github.com/healthonrails/annolid/issues here.