Overview
It is for my undergrad thesis in Tsinghua University.
There are four modules in the project:
- Detection: YOLOv3
- Tracking: SORT and DeepSORT
- Processing: Run detection and tracking, then display and save the results (a compressed video, a few snapshots for each target)
- GUI: Display the results
YOLOv3
A Libtorch implementation of the YOLO v3 object detection algorithm, written with modern C++.
The code is based on the walktree.
The config file in .\models can be found at Darknet.
SORT
I also merged SORT to do tracking.
A similar software in Python is here, which also rewrite form the most starred version and SORT
DeepSORT
Recently I reimplement DeepSORT which employs another CNN for re-id. It seems it gives better result but also slows the program a bit. Also, a PyTorch version is available at ZQPei, thanks!
Performance
Currently on a GTX 1060 6G it consumes about 1G RAM and have 37 FPS.
The video I test is TownCentreXVID.avi.
GUI
With wxWidgets, I developed the GUI module for visualization of results.
Previously I used Dear ImGui. However, I do not think it suits my purpose.
Pre-trained network
This project uses pre-trained network weights from others
How to build
This project requires LibTorch, OpenCV, wxWidgets and CMake to build.
LibTorch can be easily integrated with CMake, but there are a lot of strange things...
On Ubuntu 16.04, I use apt install
to install the others. Everything is fine. On Windows 10 + Visual Studio 2017, I use the latest stable version of the others from their official websites.
Snapshots
Here are some intermediate output from detection and tracking module: