This repository shows the implementation of a highly modular Video Perception Toolbox. It provides capabilities for the following tasks:
- Single Person Tracking (SOT)
- Multiple Person Tracking (MOT)
- Top-Down Pose Tracking
- Bottom-Up Pose Tracking
-
Real-Time:
This algorithm was designed to be implemented for real-time applications. We tested it on Loomo Segway Robot.
-
Modularity
We decompose the video perception framework into different components and one can easily construct a customized multi-stage method by combining different modules. See the documentation for assembling config files.
-
Benchmarking
this Repository can also serve as a benchmark to test and compare the performance of different perception algorithms on Single Person Tracking Videos/Img Sequences.
Object Detection | Single Object Tracking (SOT) | Multiple Object Tracking (MOT) | Pose Estimation | 3D Pose Estimation |
Every component of the perception pipeline can be easily interchanged using the config files. See config.md for more information.
-
Clone the repository:
git clone git@github.com:theoh-io/PostureTrack.git
-
Look at the Install Procedure Described in Install.md
-
Requirements:
- Python3
- OpenCV
- Pytorch
- torchvision
- Openpifpaf
- mmcv-full
│─── Benchmark ───> Videos/Img sequences + groundtruth bbox
│
│─── libs ───> Folder for the installation of external libraries
│
│─── src/PostureTrack ───> Python files containing perception toolbox
│ │─── config ───> Folder containing the config files to build customized method
│ │─── detectors ───> Classes for implemented detectors
│ │─── trackers ───> Classes for implemented trackers SOT/MOT
│ │─── keypoints ───> Classes for implemented pose estimators 2D/3D
│ │─── perceptors ───> High level class combining every module for Top-Down solutions
│ │─── outputs ───> Folder for the results of the inference
│ │─── run.py: file to run inference on benchmark files
│ │─── loomo.py: file to connect and run the program on Loomo
├── others # Other materials / Android app APK
└── README.md
Check config.md for more information on how to build a customized method.
Check Dataset.md for more information on how to download benchmarking data.
Launch the run.py
script (src/PostureTrack/) to try the default perception module configuration on default benchmark.
To get more details on how to change the configurations and input file check config.md
Make sure to be connected to the same WiFi, get the ip adress of Loomo from settings. Then connect using adb connect <ip Loomo>
and check connection is working using adb devices
.
Run the AlgoApp on Loomo and press on button Start Algo to allow for socket connection, you should now see the camera on Loomo's screen.
Before trying to launch the app on loomo make sure to have the same downscale parameter on Loomo and in the config file: config/loomo/loomo_cfg.yaml
. To see the config on loomo use the command: adb shell cat /sdcard/follow.cfg
Easiest way to start is to change the ip-adress of loomo in the config file and launch the script to run the algorithm on loomo
python3 src/PostureTrack/loomo.py
Please find the following documents for an introduction to the Loomo robot and a socket protocol.
- ReadMe config folder
- Yolov5 in libs so that we can load without torch hub and specify GPU in map location (currently yolov5 automatically loaded on cuda:0)
- Keypoints for top down inference
- 3D keypoints
- Android App APK
- link from old Perception Pipeline
- Automatic download yolov7 weights
- Multiple GPUs support
- Modify android app to take infrared data into account and emergency brake
- Long Term Tracking by Integrating ReID.
We want to thanks OpenMMLab for the provided utils and model-zoo.
@misc{mmtrack2020,
title={{MMTracking: OpenMMLab} video perception toolbox and benchmark},
author={MMTracking Contributors},
howpublished = {\url{https://github.com/open-mmlab/mmtracking}},
year={2020}
}
@misc{mmpose2020,
title={OpenMMLab Pose Estimation Toolbox and Benchmark},
author={MMPose Contributors},
howpublished = {\url{https://github.com/open-mmlab/mmpose}},
year={2020}
}