Biowulf High Performance Computing at the NIH
DeepLabCut: Markerless pose estimation of user-defined features with deep learning for all animals, including humans

DeepLabCut is an open source toolbox that builds on a state-of-the-art animal pose estimation algorithm. It allows training of a deep neural network by using limited training data to precisely track user-defined features, so that the human labeling accuracy will be matched.

References:

Documentation
Important Notes

Interactive job
Interactive jobs should be used for debugging, graphics, or applications that cannot be run as batch jobs.

The DeepLabCut application installed on Biowulf is supposed to be run using GPU. As the first step, please allocate an interactive session:

Interactive use of DeepLabCut via the GUI requires a graphical X11 connection.
Both NX and MobaXterm work well for Windows users,
while XQuartz works well for Mac users.

[user@biowulf]$ sinteractive --gres=gpu:p100:1,lscratch:10 --mem=20g -c14
[user@cn4469 ~]$ module load DeepLabCut 
[+] Loading CUDA Toolkit  10.0.130  ...
[+] Loading cuDNN/7.5/CUDA-10.0 libraries...
[+] Loading deeplabcut  2.1.6.4
Clone the DeepLabCut GitHub repository, which contains some examples:
[user@cn4469 user]$ git clone https://github.com/AlexEMG/DeepLabCut
[user@cn4469 user]$ cd DeepLabCut
Checkout the version with specific tag corresponding to the version of the module you loaded:
[user@cn4469 user]$ git tag -l
...
v2.1.10.4
v2.1.4
v2.1.5
v2.1.5.2
v2.1.6
v2.1.6.4
v2.1.6.5
...    
[user@cn4469 user]$ git checkout tags/v2.1.6.4
...
HEAD is now at 2f5d328... DLC 2.1.6.4
The repository contains several videos:
[user@cn4469 ~]$ ls examples/*/videos/* 
examples/openfield-Pranav-2018-10-30/videos/m3v1mp4.mp4
examples/Reaching-Mackenzie-2018-08-30/videos/MovieS2_Perturbation_noLaser_compressed.avi
examples/Reaching-Mackenzie-2018-08-30/videos/reachingvideo1.avi
Use these data in an interactive python session:
[user@cn4469 ~]$ python
Python 3.6.8 |Anaconda, Inc.| (default, Dec 30 2018, 01:22:34) 
[GCC 7.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import deeplabcut
>>>  config_path = deeplabcut.create_new_project("MyFirstProject", "Me", ["examples/Reaching-Mackenzie-2018-08-30/videos/MovieS2_Perturbation_noLaser_compressed.avi", "examples/Reaching-Mackenzie-2018-08-30/videos/reachingvideo1.avi"], '.', copy_videos=True)
>>>  deeplabcut.extract_frames(config_path,"automatic","uniform")
...
Config file read successfully.
...
Extracting frames based on uniform ...
Uniformly extracting of frames from 0.0  seconds to 8.53  seconds.

Frames were selected.
You can now label the frames using the function 'label_frames' (if you extracted enough frames for all videos).
>>>  deeplabcut.label_frames(config_path) 


...
>>>  quit()
[user@cn4469 ~]$ exit
salloc.exe: Relinquishing job allocation 46116226