Git Product home page Git Product logo

motdt's Introduction

MOTDT

Reference

@inproceedings{long2018tracking,
  title={Real-time Multiple People Tracking with Deeply Learned Candidate Selection and Person Re-identification},
  author={Long, Chen and Haizhou, Ai and Zijie, Zhuang and Chong, Shang},
  year={2018},
  booktitle={ICME}
}

Usage

Download MOT16 dataset and trained weights from the following links. Put weight files in data, then build and run the code.

pip install -r requirements.txt
sh make.sh
python eval_mot.py

I used five of six training sequences as the validation set. Following are the details and evaluation results. Please note that the results may be a little different with the paper because this is a re-implementation version.

Sequences: 
    'MOT16-02'
    'MOT16-05'
    'MOT16-09'
    'MOT16-11'
    'MOT16-13'

    ... MOT16-02
Preprocessing (cleaning) MOT16-02...
......
Removing 656 boxes from solution...
MOT16-02
 IDF1  IDP  IDR| Rcll  Prcn   FAR|   GT  MT   PT   ML|    FP    FN   IDs    FM|  MOTA  MOTP MOTAL 
 38.0 76.4 25.3| 30.6  92.5  0.73|   54   7   20   27|   441 12379    47   146|  27.8  75.1  28.1 

    ... MOT16-05
Preprocessing (cleaning) MOT16-05...
........
Removing 1 boxes from solution...
MOT16-05
 IDF1  IDP  IDR| Rcll  Prcn   FAR|   GT  MT   PT   ML|    FP    FN   IDs    FM|  MOTA  MOTP MOTAL 
 52.0 80.8 38.3| 44.3  93.3  0.26|  125  12   68   45|   216  3801    35   130|  40.6  76.1  41.1 

    ... MOT16-09
Preprocessing (cleaning) MOT16-09...
.....
Removing 765 boxes from solution...
MOT16-09
 IDF1  IDP  IDR| Rcll  Prcn   FAR|   GT  MT   PT   ML|    FP    FN   IDs    FM|  MOTA  MOTP MOTAL 
 58.6 73.1 48.9| 63.2  94.5  0.37|   25   7   16    2|   195  1936    35    66|  58.8  75.2  59.4 

    ... MOT16-11
Preprocessing (cleaning) MOT16-11...
.........
Removing 2 boxes from solution...
MOT16-11
 IDF1  IDP  IDR| Rcll  Prcn   FAR|   GT  MT   PT   ML|    FP    FN   IDs    FM|  MOTA  MOTP MOTAL 
 54.3 71.6 43.7| 57.7  94.5  0.34|   69  11   29   29|   309  3884    29    74|  54.0  79.3  54.3 

    ... MOT16-13
Preprocessing (cleaning) MOT16-13...
.......
Removing 0 boxes from solution...
MOT16-13
 IDF1  IDP  IDR| Rcll  Prcn   FAR|   GT  MT   PT   ML|    FP    FN   IDs    FM|  MOTA  MOTP MOTAL 
 38.0 71.7 25.9| 29.5  81.8  1.01|  107  11   39   57|   754  8072    46   178|  22.5  72.6  22.9 


 ********************* Your MOT16 Results *********************
 IDF1  IDP  IDR| Rcll  Prcn   FAR|   GT  MT   PT   ML|    FP    FN   IDs    FM|  MOTA  MOTP MOTAL 
 45.7 74.4 33.0| 40.5  91.4  0.53|  380  48  172  160|  1915 30072   192   594|  36.3  75.9  36.7

Evaluate

You can use official matlab eval devkit to evaluate the outputs. Or directly use the python version motmetrics. I already added the python evaluation method in the eval_mot.py script. The results are slightly different from the official devkit since the ignoring method is not identical. Results from python evaluation:

          IDF1   IDP   IDR  Rcll  Prcn  GT MT  PT  ML   FP    FN IDs   FM  MOTA  MOTP
MOT16-02 37.1% 75.6% 24.6% 30.2% 93.0%  54  7  21  26  406 12440  47  146 27.7% 0.247
MOT16-05 53.7% 83.0% 39.7% 44.6% 93.1% 125 13  68  44  224  3779  35  130 40.8% 0.242
MOT16-09 61.1% 75.8% 51.1% 63.6% 94.3%  25  8  15   2  202  1913  28   64 59.2% 0.247
MOT16-11 54.9% 72.2% 44.3% 58.1% 94.7%  69 12  28  29  301  3840  27   70 54.6% 0.208
MOT16-13 38.2% 71.6% 26.0% 29.7% 81.6% 107 11  38  58  766  8051  46  178 22.6% 0.276
OVERALL  46.1% 75.1% 33.3% 40.6% 91.5% 380 51 170 159 1899 30023 183  588 36.5% 0.241

Resources

Paper: Real-time Multiple People Tracking with Deeply Learned Candidate Selection and Person Re-identification (researchgate, arxiv)

Results on the test set: https://motchallenge.net/tracker/MOTDT

Eval Devkit: https://bitbucket.org/amilan/motchallenge-devkit/

Models: https://drive.google.com/open?id=1ETfqSoy7OeT-8GO75F1bYWhP3mzrwwvn

motdt's People

Contributors

longcw avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

motdt's Issues

How to use MOTDT on a different dataset

Hi,

Can you please tell me how I can modify to run the tracker on my own dataset? I don't want the results to be generated, but atleast if I can save the tracker output for any sequence other than MOT, it would be of great help

Nice work, but when i wanna run this code there is a mistake.

Traceback (most recent call last):
File "eval_mot.py", line 2, in
import cv2
ImportError: /lib/x86_64-linux-gnu/libz.so.1: version `ZLIB_1.2.9' not found (required by /home/adminroot/anaconda3/envs/zmh/lib/libpng16.so.16)
(zmh) adminroot@adminroot:~/zmh/MOTDT-master$ pip install zlib
Collecting zlib
Could not find a version that satisfies the requirement zlib (from versions: )
No matching distribution found for zlib

i try pip install ZLIB, but it fails, i donot know why, would you have some suggestions?

where is the file _psroi_pooling.py?

Hi,thanks for your great job and share。when i test your code,an error turn out “No module named 'models.psroi_pooling._ext.psroi_pooling._psroi_pooling'” ,i found i can not found _psroi_pooling.py, Is this the problem?

关于评价结果

您好!请问,您在代码说明里提到该代码是一个复现版本,结果和paper和mot官网上有所不同。我在运行时发现结果确实会差一些,请问问题在哪里呢

Bugs to be fixed

Hi @longcw , thanks for the open source code. I have run the evaluation and got similar results that you have posted in the end. However, there are few bugs and solutions that I want to share with you.

(1) at line 124 within "eval_mot.py", it should be Evaluator.save_summary(summary, os.path.join(result_root, 'summary_{exp_name}.xlsx')), without "f" in front of 'summary_{exp_name}.xlsx'

(2) it worth noting that, python3 should be used instead of phython2 for your code. Otherwise, a bug listed below will show up. While there is no problem with python3 by using "from importlib import util"
File "/usr/local/lib/python2.7/dist-packages/motmetrics/lap.py", line 149, in init_standard_solvers from importlib import util ImportError: cannot import name util

Thanks again for your work! @longcw

Model Inferencing API

Hi @longcw,

I am trying to use your model in a custom system to do inference on new frames against a gallery of images already seen. I'm having a little bit of trouble deciphering your code and its interdependencies and was hoping you could enlighten me how I could use your model for running such inference.

I was able to build a system that simple takes any video, gets the bounding boxes of people per frame, pass this information to OnlineTracker.update() and display the tracking results. But the new system I wish to build requires different tracker logic and so I need a way of interfacing with the inferencing of your model, so that I can simply get bounding boxes of a new image and compute the similarity of those rois with any other image or image gallery.

Is there any way you can help me accelerate this process? Thanks.

What parameters can be tuned for better results?

Hello, thanks for this wonderful work.

What parameters can be tuned in order to reach better results?

Another question: is it ok to use YOLO as the detector for the people, then feed the image with bounding boxes obtained with YOLO to the Patch Classifier or am I missing something?

Thanks

distutils.errors.DistutilsPlatformError: Unable to find vcvarsall.bat

How should I solve this issue?
[Running] python -u "e:\paper_code\MOTDT\eval_mot.py"
Traceback (most recent call last):
File "C:\Users\xdu\anaconda3\lib\site-packages\pyximport\pyximport.py", line 215, in load_module
inplace=build_inplace, language_level=language_level)
File "C:\Users\xdu\anaconda3\lib\site-packages\pyximport\pyximport.py", line 191, in build_module
reload_support=pyxargs.reload_support)
File "C:\Users\xdu\anaconda3\lib\site-packages\pyximport\pyxbuild.py", line 102, in pyx_to_dll
dist.run_commands()
File "C:\Users\xdu\anaconda3\lib\distutils\dist.py", line 966, in run_commands
self.run_command(cmd)
File "C:\Users\xdu\anaconda3\lib\distutils\dist.py", line 985, in run_command
cmd_obj.run()
File "C:\Users\xdu\anaconda3\lib\site-packages\Cython\Distutils\old_build_ext.py", line 186, in run
_build_ext.build_ext.run(self)
File "C:\Users\xdu\anaconda3\lib\distutils\command\build_ext.py", line 340, in run
self.build_extensions()
File "C:\Users\xdu\anaconda3\lib\site-packages\Cython\Distutils\old_build_ext.py", line 195, in build_extensions
_build_ext.build_ext.build_extensions(self)
File "C:\Users\xdu\anaconda3\lib\distutils\command\build_ext.py", line 449, in build_extensions
self._build_extensions_serial()
File "C:\Users\xdu\anaconda3\lib\distutils\command\build_ext.py", line 474, in _build_extensions_serial
self.build_extension(ext)
File "C:\Users\xdu\anaconda3\lib\distutils\command\build_ext.py", line 534, in build_extension
depends=ext.depends)
File "C:\Users\xdu\anaconda3\lib\distutils_msvccompiler.py", line 346, in compile
self.initialize()
File "C:\Users\xdu\anaconda3\lib\distutils_msvccompiler.py", line 239, in initialize
vc_env = _get_vc_env(plat_spec)
File "C:\Users\xdu\anaconda3\lib\distutils_msvccompiler.py", line 135, in _get_vc_env
raise DistutilsPlatformError("Unable to find vcvarsall.bat")
distutils.errors.DistutilsPlatformError: Unable to find vcvarsall.bat

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "e:\paper_code\MOTDT\eval_mot.py", line 5, in
from tracker.mot_tracker import OnlineTracker
File "e:\paper_code\MOTDT\tracker\mot_tracker.py", line 6, in
from utils.nms_wrapper import nms_detections
File "e:\paper_code\MOTDT\utils\nms_wrapper.py", line 9, in
from utils.nms.cpu_nms import cpu_nms
File "C:\Users\xdu\anaconda3\lib\site-packages\pyximport\pyximport.py", line 462, in load_module
language_level=self.language_level)
File "C:\Users\xdu\anaconda3\lib\site-packages\pyximport\pyximport.py", line 231, in load_module
raise exc.with_traceback(tb)
File "C:\Users\xdu\anaconda3\lib\site-packages\pyximport\pyximport.py", line 215, in load_module
inplace=build_inplace, language_level=language_level)
File "C:\Users\xdu\anaconda3\lib\site-packages\pyximport\pyximport.py", line 191, in build_module
reload_support=pyxargs.reload_support)
File "C:\Users\xdu\anaconda3\lib\site-packages\pyximport\pyxbuild.py", line 102, in pyx_to_dll
dist.run_commands()
File "C:\Users\xdu\anaconda3\lib\distutils\dist.py", line 966, in run_commands
self.run_command(cmd)
File "C:\Users\xdu\anaconda3\lib\distutils\dist.py", line 985, in run_command
cmd_obj.run()
File "C:\Users\xdu\anaconda3\lib\site-packages\Cython\Distutils\old_build_ext.py", line 186, in run
_build_ext.build_ext.run(self)
File "C:\Users\xdu\anaconda3\lib\distutils\command\build_ext.py", line 340, in run
self.build_extensions()
File "C:\Users\xdu\anaconda3\lib\site-packages\Cython\Distutils\old_build_ext.py", line 195, in build_extensions
_build_ext.build_ext.build_extensions(self)
File "C:\Users\xdu\anaconda3\lib\distutils\command\build_ext.py", line 449, in build_extensions
self._build_extensions_serial()
File "C:\Users\xdu\anaconda3\lib\distutils\command\build_ext.py", line 474, in _build_extensions_serial
self.build_extension(ext)
File "C:\Users\xdu\anaconda3\lib\distutils\command\build_ext.py", line 534, in build_extension
depends=ext.depends)
File "C:\Users\xdu\anaconda3\lib\distutils_msvccompiler.py", line 346, in compile
self.initialize()
File "C:\Users\xdu\anaconda3\lib\distutils_msvccompiler.py", line 239, in initialize
vc_env = _get_vc_env(plat_spec)
File "C:\Users\xdu\anaconda3\lib\distutils_msvccompiler.py", line 135, in _get_vc_env
raise DistutilsPlatformError("Unable to find vcvarsall.bat")
ImportError: Building module utils.nms.cpu_nms failed: ['distutils.errors.DistutilsPlatformError: Unable to find vcvarsall.bat\n']

about IDF1 IDP IDR .

Hello, I ran the model you proposed, but the IDF1 IDP IDR results, which performance is very bad, are different from yours. What could be the cause? looking forward to your reply.
Thank you very much! Sincerely,

Evaluating ...
... MOT16-02
Preprocessing (cleaning) MOT16-02...
......
Removing 626 boxes from solution...
*** 2D (Bounding Box overlap) ***
IDF1 IDP IDR| Rcll Prcn FAR| GT MT PT ML| FP FN IDs FM| MOTA MOTP MOTAL
23.0 66.9 13.9| 30.7 90.3 0.98| 54 7 21 26| 587 12356 77 179| 27.0 75.2 27.4

... MOT16-05

Preprocessing (cleaning) MOT16-05...
........
Removing 1 boxes from solution...
*** 2D (Bounding Box overlap) ***
IDF1 IDP IDR| Rcll Prcn FAR| GT MT PT ML| FP FN IDs FM| MOTA MOTP MOTAL
34.7 56.7 25.0| 45.0 90.9 0.37| 125 16 68 41| 307 3747 75 140| 39.4 75.6 40.5

... MOT16-09

Preprocessing (cleaning) MOT16-09...
.....
Removing 758 boxes from solution...
*** 2D (Bounding Box overlap) ***
IDF1 IDP IDR| Rcll Prcn FAR| GT MT PT ML| FP FN IDs FM| MOTA MOTP MOTAL
38.4 66.1 27.1| 63.5 92.3 0.53| 25 9 13 3| 280 1921 57 77| 57.0 75.2 58.1

... MOT16-11

Preprocessing (cleaning) MOT16-11...
.........
Removing 2 boxes from solution...
*** 2D (Bounding Box overlap) ***
IDF1 IDP IDR| Rcll Prcn FAR| GT MT PT ML| FP FN IDs FM| MOTA MOTP MOTAL
51.1 71.0 39.9| 58.1 94.0 0.38| 69 11 29 29| 340 3844 42 78| 53.9 79.2 54.4

... MOT16-13

Preprocessing (cleaning) MOT16-13...
.......
Removing 0 boxes from solution...
*** 2D (Bounding Box overlap) ***
IDF1 IDP IDR| Rcll Prcn FAR| GT MT PT ML| FP FN IDs FM| MOTA MOTP MOTAL
22.9 62.0 14.1| 30.8 80.7 1.13| 107 11 40 56| 844 7922 60 198| 22.9 72.2 23.4

********************* Your Benchmark Results (2D) ***********************
IDF1 IDP IDR| Rcll Prcn FAR| GT MT PT ML| FP FN IDs FM| MOTA MOTP MOTAL
20.2 43.0 13.2| 41.0 89.8 0.65| 380 54 171 155| 2358 29790 311 672| 35.8 75.8 36.4

Using only re-id to predict

Hi, in your paper, you showed the evaluation results for each component used (tracklet confidence, classification, and re-id).
Can you show me how to test individual component like that?
Thank you.
motdt

你好,我在运行eval_mot.py时出错 : cudnn_status_execution_failed,具体报错如下,急求解决方案啊谢谢

运行python eval_mot.py:
2019-04-01 16:20:54 [INFO]: start seq: MOT16-02
loading layers from squeezenet1_1...
load cls model from: data/squeezenet_small40_coco_mot16_ckpt_10.h5
2019-04-01 16:20:59 [INFO]: Load ReID model from data/googlenet_part8_all_xavier_ckpt_56.h5
2019-04-01 16:20:59 [INFO]: Processing frame 0 (100000.00 fps)
Traceback (most recent call last):
File "eval_mot.py", line 158, in
show_image=False)
File "eval_mot.py", line 105, in main
save_dir=output_dir, show_image=show_image)
File "eval_mot.py", line 58, in eval_seq
online_targets = tracker.update(frame, det_tlwhs, None)
File "/home/wr506/Documents/flyfly/MOTDT/tracker/mot_tracker.py", line 222, in update
self.classifier.update(image)
File "/home/wr506/Documents/flyfly/MOTDT/models/classification/classifier.py", line 87, in update
self.score_map = self.model(im_var)
File "/home/wr506/anaconda3/envs/fly/lib/python3.6/site-packages/torch/nn/modules/module.py", line 491, in call
result = self.forward(*input, **kwargs)
File "/home/wr506/Documents/flyfly/MOTDT/models/classification/rfcn_cls.py", line 103, in forward
feats = self.feature_extractor(x)
File "/home/wr506/anaconda3/envs/fly/lib/python3.6/site-packages/torch/nn/modules/module.py", line 491, in call
result = self.forward(*input, **kwargs)
File "/home/wr506/Documents/flyfly/MOTDT/models/backbone/sqeezenet.py", line 59, in forward
x2 = self.conv1(x)
File "/home/wr506/anaconda3/envs/fly/lib/python3.6/site-packages/torch/nn/modules/module.py", line 491, in call
result = self.forward(*input, **kwargs)
File "/home/wr506/anaconda3/envs/fly/lib/python3.6/site-packages/torch/nn/modules/container.py", line 91, in forward
input = module(input)
File "/home/wr506/anaconda3/envs/fly/lib/python3.6/site-packages/torch/nn/modules/module.py", line 491, in call
result = self.forward(*input, **kwargs)
File "/home/wr506/anaconda3/envs/fly/lib/python3.6/site-packages/torch/nn/modules/conv.py", line 301, in forward
self.padding, self.dilation, self.groups)
RuntimeError: CUDNN_STATUS_EXECUTION_FAILED

不知道何原因,求解决方案啊谢谢

Can you provide train code

Thank you for your sharing. However, the train code is not included, please upload your training code, thx.

license

Could you put a license on this repo, such as MIT? thanks!

权重文件

怎么下载数据集和权重文件,链接在哪里呀,求解答

Hi, I cannot get the result as you listed

Hi,
Is the code published completely online? Because I can get the visualized results but the evaluate analysis cannot reach the score you listed, especially MOTA, it decents heavily.
Could you please help me to find out the problem?

when run sh make.sh,i got troubles:

Traceback (most recent call last): File "build.py", line 29, in extra_objects=extra_objects File "/home/fly/anaconda3/envs/fly/lib/python3.6/site-packages/setuptools/init.py", line 127, in init _Command.init(self, dist) File "/home/fly/anaconda3/envs/fly/lib/python3.6/distutils/cmd.py", line 57, in init raise TypeError("dist must be a Distribution instance") TypeError: dist must be a Distribution instance.
Look forward to your reply,thank you

when i follow your steps one by one, but when i run 'python eval_mot.py' there is a mistake like:

(zmh) adminroot@adminroot:~/zmh/MOTDT-master$ python eval_mot.py
Traceback (most recent call last):
File "eval_mot.py", line 158, in
show_image=False)
File "eval_mot.py", line 93, in main
mkdirs(result_root)
File "eval_mot.py", line 17, in mkdirs
os.makedirs(path)
File "/home/adminroot/anaconda3/envs/zmh/lib/python3.6/os.py", line 210, in makedirs
makedirs(head, mode, exist_ok)
File "/home/adminroot/anaconda3/envs/zmh/lib/python3.6/os.py", line 210, in makedirs
makedirs(head, mode, exist_ok)
File "/home/adminroot/anaconda3/envs/zmh/lib/python3.6/os.py", line 210, in makedirs
makedirs(head, mode, exist_ok)
[Previous line repeated 2 more times]
File "/home/adminroot/anaconda3/envs/zmh/lib/python3.6/os.py", line 220, in makedirs
mkdir(name, mode)
PermissionError: [Errno 13] Permission denied: '/data'

then i think that it havn't

Originally posted by @404hasbeenfound in https://github.com/longcw/MOTDT/issue_comments#issuecomment-448631912

Kalman filter for predict

Hi, i have a question with the code, Does it use Kalman filter for predict new location X ? It seems that it
only used for similarity measurement. Thanks.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.