Git Product home page Git Product logo

gmphd-ogm_tracker's Introduction

1. Introduction

An Online Multi-Object Tracking (MOT) Method with the GMPHD Filter and Occlusion Group Management (OGM).

To implement a highly practical MOT method, online approach and real-time speed are required.

  • Online Process: The Gaussian mixture probability density (GMPHD) filter was exploited as a base model.
  • Real-time Speed: We only used bounding box information (x, y, width, height).

Tracking-by-detection paradigm.

  • In this project, the public detection results on the MOT15 (ACF) and MOT17 (DPM, FRCNN, SDP) datasets are used as inputs of the GMPHD-OGM tracker.

Our main contributions are as follows:

  • An effective extension of the conventional GMMPHD filter from the original domain radar/sonar systems to video systems, consisting of:
    • A hierarchical data association strategy: detection-to-track and track-to-track associations.
    • An occlusion group management scheme: merge and occlusion energy minimization.
  • The GMPHD-OGM tracker achieved the competitive tracking accurary and real-time speed (>30 FPS).

2. User guide

Development Environment

Windows 10 (64 bit)
Visual Studio 2015 (64 bit)

Programming Languages

Visual C/C++

Libaries

OpenCV 3.4.1 and boost 1.61.0 (Windows Binaries) were used to implement the GMPHD-OGM tracker.

Download Win Pack and boost_1_61_0-msvc-14.0-64.exe to run our tracker in Visual Studio 2015 (64 bit).

Project Source

File Tree

PROJECT_HOME
├── GMPHD-OGM.sln  <-- **solution file for the project**
└── GMPHD-OGM      
    ├── demo_GMPHD-OGM.cpp                            <-- **the main function**
    ├── GMPHD_OGM.h, GMPHD_OGM.cpp                    <-- *a class implementation of the GMPHD-OGM tracker*
    ├── HungarianAlgorithm.h, HungarianAlgorithm.cpp  <-- a class implementation of the Hungarian Algorithm 
    ├── stdafx.h                                      <-- precompiled header including essential header files
    ├── GMPHD-OGM.vcxproj, GMPHD-OGM.vcxproj.filters  <-- VS project file, VS project filter file
    ├── params                                        <-- text files containing scene parameters
    |   └── MOT15train_ACF.txt, MOT17train_DPM.txt, MOT17train_FRCNN.txt, MOT17train_SDP.txt
    ├── seqs                                          <-- text files containing dataset paths and sequences' names
    |   └── MOT15train_ACF.txt, MOT17train_DPM.txt, MOT17train_FRCNN.txt, MOT17train_SDP.txt
    └── res                                           <-- tracking results are saved
        ├── MOT15
        |   └── test, train 
        └── MOT17
            └── test, train 
HungarianAlgorithm.h, HungarianAlgorithm.cpp

is a class implementation of the Hungarian Algorithm refering to #mcximing/hungarian-algorithm-cpp

How to run

  1. Open the solution file (GMPHD-OGM.sln)
  2. Link and include OpenCV3.4.1 and boost1.61.0 libraries to the project.
  3. Press Ctrl+F5 in Release mode (64 bit)

Input

1. Images and public detection results

Download the MOTChallenge datasets.

2. Sequence List files of the image sequences

Users should specify the dataset path and sequences' names in the sequence list file.

e.g., GMPHD-OGM\seqs\MOT17train_DPM.txt
F:\MOT\MOTChallenge2017\train\
MOT17-02-FRCNN
MOT17-04-FRCNN
MOT17-05-FRCNN
MOT17-09-FRCNN
MOT17-11-FRCNN
MOT17-13-FRCNN

3. Parameter files

More details of the parameters will be updated soon.

e.g., GMPHD-OGM\params\MOT17train_DPM.txt

4. Please check the input files' locations in the main fuction (demo_GMPHD-OGM.cpp)

// demo_GMPHD-OGM.cpp
int main()
{
string seqList = "seqs\MOT17train_DPM.txt";
string seqList = "params\MOT17train_DPM.txt";
...

Output

Visualization Options in GMPHD_OGM.h

#define VISUALIZATION_MAIN_ON 0
#define SKIP_FRAME_BY_FRAME 0

VISUALIZATION_MAIN_ON: 0(off), 1(on)

  • You can see the visualization windows of detection and tracking.
    • At initial frame, press any key to start tracking process.

SKIP_FRAME_BY_FRAME: 0(off), 1(on)

  • You can see the results, frame-by-frame. (by pressing any key).

Demo Example 1: Videos captured from actual program running

#define VISUALIZATION_MAIN_ON 1

[MOT17-05-SDP] Click this gif image for playing a full demo video

Video Label

[MOT17-10-SDP] Click this gif image for playing a full demo video

Video Label

Demo Example 2: Log Messages in Console

#define VISUALIZATION_MAIN_ON 0

An example of log results

The output file format is compatible with MOTChallenge.

The tracking results files are saved as
[project home]\GMPHD-OGM\res[benchmark name][train or test][sequence name].txt

e.g., [project home]\GMPHD-OGM\res\MOT15\train\Venice-2.txt

ETC.

We are only providing the parameters of the GMPHD-OGM tracker on the training sequences.

3. References

[1] Ba-Ngu Vo and Wing-Kin Ma, "The Gaussian Mixture Probability Hypothesis Density Filter," IEEE Trans. Signal Process., vol. 54, no. 11, pp. 4091–4104, Oct. 2006. [paper]

[2] Young-min Song and Moong Jeon, "Online Multiple Object Tracking with the Hierarchically Adopted GM-PHD Filter Using Motion and Appearance," in Proc. IEEE Int. Conf. Consum. Electron.-Asia (ICCE-Asia), pp. 1--4, Oct. 2016. [paper]

[3] Young-min Song, Young-chul Yoon, Kwangjin Yoon, and Moongu Jeon, "Online and Real-Time Tracking with the GM-PHD Filter using Group Management and Relative Motion Analysis," in Proc. IEEE Int. Workshop Traffic Street Surveill. Safety Secur. (AVSS), Nov. 2018. [paper]

[4] Young-mins Song, Kwangjin Yoon, Young-chul Yoon, Kin Choon Yow, and Moongu Jeon, "Online Multi-Object Tracking with GMPHD Filter and Occlusion Group Management," IEEE Access, vol. 7, pp. 165103-165121, Nov. 2019.

\bibitem{gmphdogm} Y. Song, K. Yoon, Y-C. Yoon, K. C. Yow, and M. Jeon, 
``Online Multi-Object Tracking with GMPHD Filter and Occlusion Group Management,'' 
IEEE Access, vol. 7, pp. 165103-165121, Nov. 2019.

BSD 2-Clause License

gmphd-ogm_tracker's People

Contributors

songincv 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

Watchers

 avatar  avatar  avatar  avatar

gmphd-ogm_tracker's Issues

need for help!

Hi Young-min,
It seems that you have very good experience in MOT.
I have run my detector on embedded system so I just have detections every 120ms(frame rate is 30fps)...(by GPU)
now I need MOT to run on CPU simultaneously.
And I need track to run between frames.
What do you suggest?

thanks

running error in "GMPHD_OGM::MinimizedGroupCost"

주어진 코드와 파라미터 값들을 사용하여 MOT17-FRCNN을 테스트 하였을 때, GMPHD_OGM::MinimizeGroupCost 함수의 this->tracksbyID[groupRects[v].id].pop_back(); 부분에서 vector out of range error가 확인되었습니다. pop_back()을 수행하는 과정에서 size가 0이 되면서 오류가 발생한 것 같으니 확인 부탁드립니다.

When i tested "MOT17-FRCNN" sequences with the given code and parameters, the 'vector out of range error' occurs in this->tracksbyID[groupRects[v].id].pop_back(); in 'GMPHD_OGM::MinimizeGroupCost' function. It seems to be an error in the process of performing pop_back(), as the size became zero.

Error occured when "VISUALIZATION_MAIN_ON"

VISUALIZATION_MAIN_ON 을 1로 변경후 디버깅없이 실행(Ctrl + F5)할 때에 오픈시피 오류가 납니다.

0으로 했을 시에는 오류가 나지않습니다.

오류 화면 캡쳐합니다. 혹시 짐작가는 해결방법이 있을까요? (demo_....cpp 에서 seqList만 제 이미지 경로로변경을하고 paramsFile은 변경하지 않긴 했습니다. 이 것이 오류의 원인일 수도 있 을까요? 또한 'qaramsFile`이 가리키는 파일들은 무엇을 의미하나요?)

image

+추가

에러부분을 찾으려고 디버깅모드(F5)로 해보니 에러가 뜨긴하지만 실행이 되긴하네요... 무슨상황일까요
image

Consistent crash in MinimizeGroupCost - Out of Bounds

In the MinimizeGroupCost method, there is a loop on v, and inside that a loop on fr. Looks like fr indicates in part how many items have been processed and removed from the gid_track list. It's very confusing and uncommented code. It looks like elements are being removed from "gid_track" and added to "track". The problem is that there is a "gid_track[0].pop_back()" to remove the last item. But right after that, a check is made against the last element at (tSize - 1 - fr). But, this element position was just removed. What exactly is the intent of this loop on "fr" inside a loop on "v" ?

It looks like you fixed this in a previous issue, but brought it back more recently in an optimization check-in. Was this a mistake?

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.