Home

Awesome

Deep Motion Modeling Tracker

We introduce the Deep Motion Modeling Network (DMM-Net) that performs implicit detection and association of the objects in an end-to-end manner. DMM-Net models comprehensive object features over multiple frames and simultaneously infers object motion parameters, categories and visibilities. These outputs are readily used to update the tracklets for efficient MOT. DMM-Net achieves PR-MOTA score of 12.80 @ 120+ fps for jointly performing detection and tracking on the popular UA-DETRAC challenge - orders of magnitude faster than the existing methods with better performance.



Results

DMM-Net on Omni-MOT dataset

DMM-Net on UA-DETRAC dataset

RoadMap

DateEvent
201911Finish the papers :-)
201910Preparing papers
201908Get Result on Omini-MOT dataset
201908Can Train on Omini-MOT dataset
201907Can Train on MOT17 dataset
201906Can Train on ``CVPR 2019 Tracking Challenge''
201905Can Train On the Whole UA-DETRAC dataset
201905Design the tracker
201904Recording Five Cities Training Dataset
201903Start A Plan of Create New Dataset
201902Optimized this network
201812Can Do the Basic Detection
201811Design the Loss Fucntion
201810Try the UA-DETRAC dataset
201809Re-design the input and output
201808Design the whole network
201807Start this idea

Protocol

DMM-Net

Schematics of end-to-end trainable DMM-Net: <img src="https://latex.codecogs.com/svg.latex?N_F"/> frames and their time stamps <img src="https://latex.codecogs.com/svg.latex?t_1:t_2"/> are input to the network. The frame sequence is first processed with a Feature Extractor comprising 3D ResNet-like convolutional groups. Outputs of selected groups are processed by Motion Subnet, Classifier Subnet, and Visibility Subnet. Each sub-network uses 3D convolutions to learn features that are concatenated and used to predict motion parameters (<img src="https://latex.codecogs.com/svg.latex?O_M\in\mathbb{R}^{N_T\times&space;N_P\times&space;4}"/>), object categories (<img src="https://latex.codecogs.com/svg.latex?O_C\in\mathbb{R}^{N_T\times&space;N_C}"/>), and visibility (<img src="https://latex.codecogs.com/svg.latex?O_V\in\mathbb{R}^{N_F\times&space;N_T\times&space;2}"/>), where <img src="https://latex.codecogs.com/svg.latex?N_T"/> <img src="https://latex.codecogs.com/svg.latex?N_P"/> and <img src="https://latex.codecogs.com/svg.latex?N_C"/> denote the number of anchor tunnels, motion parameters and object categories.

framework

DMM Tracker

We directly deploy the trained network into the DMM Tracker (DMMT), as shown in the following figure. <img src="https://latex.codecogs.com/svg.latex?2N_F"/> frames are processed by the tracker, where the trained DMM-Net selects <img src="https://latex.codecogs.com/svg.latex?N_F"/> frames as its input, and outputs predicted tunnels containing all possible object's motion parameter matrice <img src="https://latex.codecogs.com/svg.latex?(O_M)"/>, category matrice <img src="https://latex.codecogs.com/svg.latex?(O_C)"/> and visibility matrice <img src="https://latex.codecogs.com/svg.latex?(O_V)"/>, which are then filtered by the Tunnel Filter. After that, the track set <img src="https://latex.codecogs.com/svg.latex?\mathcal{T}_{t_i}"/> is updated by associating the filtered tunnels by their IOU with previous track set <img src="https://latex.codecogs.com/svg.latex?\mathcal{T}_{t_{i-1}}"/>.

demployment

This tracker can achieve 120+ fps for jointly performing detection and tracking.

Requirement

NameVersion
Python3.6
CUDA>=8.0

Besides, install all the python package by following command

cd <project path>
pip install -r requirement.txt

Preparation

OMOTD

Test

Train

UA-DETRAC

Test

Train

Citation

@inproceedings{ShiJie20,
  author = {Shijie Sun, Naveed Aktar, XiangYu Song, Huansheng Song, Ajmal Mian, Mubarak Shah},
  title = {Simultaneous Detection and Tracking with Motion Modelling for Multiple Object Tracking},
  booktitle = {Proceedings of the European conference on computer vision (ECCV)}},
  year = {2020}

Acknowledge

This work is based on the Pytroch and 3D ResNet. It also inspired by SSD and DAN.

License

The methods provided on this page are published under the Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License . This means that you must attribute the work in the manner specified by the authors, you may not use this work for commercial purposes and if you alter, transform, or build upon this work, you may distribute the resulting work only under the same license. If you are interested in commercial usage you can contact us for further options.

<!-- ## Issues | Symbol | Meanings | | :-------: | :--------: | | :hourglass_flowing_sand: | Plan to solve | | :repeat: | try to solve it again | | :no_entry: | abandoned issue | | :ballot_box_with_check: | solved | | :black_square_button: | unsolved | | :negative_squared_cross_mark: | cannot get solved | | :boom: | focusing | | :exclamation: | important | | SartDate| Content | State | | :------: | :----------------------------------------------------------: | :---: | | 2019/05/18 | ![1558137403985](images/progress/1558137403985.png) ![1558137434625](images/progress/1558137434625.png)![1558137448039](images/progress/1558137448039.png) | :ballot_box_with_check: Cannot detect static vehicle (because of the training dataset)| | 2019/05/18 | ![1558137352644](images/progress/1558137352644.png) | :ballot_box_with_check: cannot detect bus (because of the training dataset) | | 2019/05/18 | ![1558137469303](images/progress/1558137469303.png) | :ballot_box_with_check: Limit on the detection regions | | 2019/05/18 | ![1558137499772](images/progress/1558137499772.png) | :ballot_box_with_check: Something overlapped in the bus | | 2019/05/18 | ![1558137539934](images/progress/1558137539934.png)![1558137545991](images/progress/1558137545991.png) | :boom: totally different scene | | 2019/05/18 | ![1558137571322](images/progress/1558137571322.png) | :ballot_box_with_check: Some weird boxes (because of the visibility)| | 2019/05/18 | ![1558137594908](images/progress/1558137594908.png) | :ballot_box_with_check: totally different vehicle | | 2019/05/18 | ![1558137620722](images/progress/1558137620722.png) | :ballot_box_with_check: Wrongly located boxes | | 2019/05/15 | ![1557913738424](./images/progress/weird_rectangles3.png) | :ballot_box_with_check: solved by change the loss according the first exist box <br />:boom: Weird rectangles and incorrect classifications | | 2019/05/07 | None-filling rectangles <br />![](./images/progress/none_filling1.png) | :ballot_box_with_check: waiting <br />:boom:2019/05/07 process | | 2019/05/07 | Weird rectangles without label <br />![](./images/progress/weird_rectangles1.png)![](./images/progress/weird_rectangles2.png) | :ballot_box_with_check: find the reason <br />:boom:2019/05/07 process | | 2019/05/07 | Lost some objects in other scene <br />![1557188487001](./images/progress/lost_objects3.png) ![](./images/progress/lost_objects4.png) | :ballot_box_with_check:finish by reconfigure the anchor boxes<br />:boom:2019/05/07 process | | 2019/04/26 | Try MOT 17 | :ballot_box_with_check: Need to do (Finish) | | 2019/04/26 | Train A-MOT Dataset | :ballot_box_with_check: Need to do (Finish) | | 2019/04/26 | Train UA-DETRAC | :ballot_box_with_check: Training (Finish)| | 2019/04/16 | Clean this project | :boom: Ready to do<br>:hourglass_flowing_sand: | | 2019/04/16 | Overlap ratio of **Tunnel Anchor** too small | :ballot_box_with_check: Find the best overlap ratio​<br>:boom:<br>:hourglass_flowing_sand: | | 2019/04/16 | Add **Random Mirror** Preprocessing | :no_entry:<br>:hourglass_flowing_sand: | | 2019/04/16 | Add **Random Crop** Preprocessing | :no_entry:<br>:hourglass_flowing_sand: | | 2019/04/16 | Needs Testing The Network | :ballot_box_with_check:Thoroughly testing see [result video](<https://www.dropbox.com/s/m63g9jotgs35xu5/1.avi?dl=0>)<br>:boom: 2019/04/16 processing | | 2019/04/14 | Motion Model Needs Rewrite | :exclamation::exclamation::ballot_box_with_check: 2019/04/16 Rewriting motion model :)​<br>:boom: 2019/04/14 rewriting | | 2019/04/13 | Lost some objects<br/> ![](./images/progress/lost_objects1.png)![](./images/progress/lost_objects2.png)<br> | :ballot_box_with_check: set confidence and existing threshold<br> :boom:20​19/04/13 process | | 2019/04/13 | NMS doesn't work well <br>![](./images/progress/nms_doesnt_work_well1.png) ![](./images/progress/nms_doesnt_work_well.png)<br> | :ballot_box_with_check: ​the bad training data<br>2019/04/13 :boom: | | 2019/04/13 | Problems of object at the edge of the frames. <br> ![](./images/progress/object_at_frame_edge.png)![](./images/progress/object_at_frame_edge1.png) | :ballot_box_with_check: ​remove edging boxes from training data<br> 2019/04/13 :boom: | | 2019/04/13 | Weird detected objects.<br> ![](./images/progress/werid_detect_object.png)![](./images/progress/werid_detect_object1.png) | :ballot_box_with_check: ​the motion model <br>2019/04/13 :boom: | > In our experiment, we find the missing bounding box is caused by the following code: > > ```python > conf[mean_best_truth_overlap < threshold] = 0 # label as background > ``` > > Be careful to set this threshold. -->