All Projects → zlingkang → multi_object_tracker

zlingkang / multi_object_tracker

Licence: other
An optical flow and Kalman Filter based tracker

Programming Languages

C++
36643 projects - #6 most used programming language
CMake
9771 projects

Projects that are alternatives of or similar to multi object tracker

bikeshed
Lock free hierarchical work scheduler
Stars: ✭ 78 (+151.61%)
Mutual labels:  multithreading
flask-threads
A helper library to work with threads in Flask
Stars: ✭ 24 (-22.58%)
Mutual labels:  multithreading
Track-Stargazers
Have fun tracking your project's stargazers
Stars: ✭ 38 (+22.58%)
Mutual labels:  multithreading
Socket-Programming-Python
Client Server running code described with comments here.
Stars: ✭ 48 (+54.84%)
Mutual labels:  multithreading
space
A SCI-FI community game server simulating space(ships). Built from the ground up to support moddable online action multiplayer and roleplay!
Stars: ✭ 25 (-19.35%)
Mutual labels:  multithreading
ddos
Simple dos attack utility
Stars: ✭ 36 (+16.13%)
Mutual labels:  multithreading
euler2d kokkos
Simple 2d finite volume solver for Euler equations using c++ kokkos library
Stars: ✭ 27 (-12.9%)
Mutual labels:  multithreading
ACVR2017
An Innovative Salient Object Detection Using Center-Dark Channel Prior
Stars: ✭ 20 (-35.48%)
Mutual labels:  object-tracking
CoopThreads
Lightweight, platform agnostic, stackful cooperative threads library.
Stars: ✭ 18 (-41.94%)
Mutual labels:  multithreading
dannyAVgleDownloader
知名網站avgle下載器
Stars: ✭ 27 (-12.9%)
Mutual labels:  multithreading
MemoryAllocator.KanameShiki
Fast multi-threaded memory allocator
Stars: ✭ 73 (+135.48%)
Mutual labels:  multithreading
pblat
parallelized blat with multi-threads support
Stars: ✭ 34 (+9.68%)
Mutual labels:  multithreading
SiamFC-tf
A TensorFlow implementation of the SiamFC tracker, use with your own camera and video, or integrate to your own project 实时物体追踪,封装API,可整合到自己的项目中
Stars: ✭ 22 (-29.03%)
Mutual labels:  object-tracking
TradingMachine
TradingMachine is a mini-trading system simulation, whose components (market data and order feeds, FIX acceptor and initiator, back-end for filled orders) interact by queues and topics.
Stars: ✭ 26 (-16.13%)
Mutual labels:  multithreading
kernelized correlation filters gpu
Real-time visual object tracking using correlations filters and deep learning
Stars: ✭ 27 (-12.9%)
Mutual labels:  object-tracking
Multithreaded-Reddit-Image-Downloader
Does exactly what it says on the tin.
Stars: ✭ 38 (+22.58%)
Mutual labels:  multithreading
Corium
Corium is a modern scripting language which combines simple, safe and efficient programming.
Stars: ✭ 18 (-41.94%)
Mutual labels:  multithreading
Yolov5-Deepsort
最新版本yolov5+deepsort目标检测和追踪,能够显示目标类别,支持5.0版本可训练自己数据集
Stars: ✭ 201 (+548.39%)
Mutual labels:  object-tracking
tweetsOLAPing
implementing an end-to-end tweets ETL/Analysis pipeline.
Stars: ✭ 24 (-22.58%)
Mutual labels:  multithreading
CSA
Official implementation of CVPR2020 Paper "Cooling-Shrinking Attack"
Stars: ✭ 48 (+54.84%)
Mutual labels:  object-tracking

multi_object_tracker

An optical flow and Kalman Filter based multi-ojbect tracker

Introduction

Object detection is slow, especially for embedded platforms. Tracking algorithm implementations in OpenCV3 contrib does not work well for multi-object tracking, the processing time increases linearly with the number of trackers. And they are all long-term tracking oriented. When we have detection every once a while, we do not need the trackers to be that accurate, and we need high speed tracking.
So I implemented this optical-flow and kalman filter based multi-object tracker, ~50ms processing time for a 640x480 frame tested on Odroid XU4.

Description

  • lk_tracker.cpp contains the tracker implementation, including LkTracker as an individual tracker and TrackerManager which manages all trackers
  • object_detection.cpp contains an OpenCV face detector, you can modify the class to use other object detection.
  • lk_tracker_test.cpp contains a simple test in a single-threaded setting. It requires opencv3 contrib to draw the initial bounding box. Modify that if you do not have OpenCV 3 contrib. Or simply commment it out in CMakeLists.txt if you do not want it.
  • det_and_track.cpp contatins the setting to use our tracker and a face detector in a multi-threaded setting. The face detector here can be replaced with any detector you like.
  • main.cpp contains the usage of the detection and tracking in multi-thread setting.

Usage

  • Modify the OpenCV path in CMakeLists.txt.
  • Modify the detection_sleep_time_ and track_sleep_time_ to 0 when using with embedded platforms.
    mkdir build
    cd build
    cmake ..
    make

Tune Parameters

  • Use Kalman Filter or not:
    Modify the USE_KF_ in TrackerManger's constructor in lk_tracker.cpp. If true, the Kalman Filter will be applied, and the trackers will be more robust against oclussion, however it may also cause drifting problem.
  • Matching cost threshold:
    COST_THRESHOLD_ in lk_tracker.cpp, everytime we get detection results from the detector, we will match all the bouding boxes with the existing trackers using Hungarian algorithm. However, sometimes even when a detection result is matched with an existing trackers, it may still not be ideal. Thus we use the COST_THRESHOLD_ to get rid of this match.
  • MIN_ACCEPT_FRAMES_ and MIN_REJECT_FRAMES_ in lk_tracker.cpp
    If in continuous MIN_ACCPET_FRMAES_ frames, a tracker can be matched with a detection result, then this tracker is 'qualified' as a tracker to a most-likely real face. If in continuous MIN_REJECT_FRAMES_ frames, a tracker cannot be matched with detection result, then this tracker is most-likely lost tracking and will be removed.
  • Detection and tracking frequency:
    The detection_sleep_time_ and track_sleep_time_ together with the performanmce of you computer determines the detection and tracking frequency. Let's say it takes 100ms for detection for each frame, and you set detection_sleep_time_ to 150ms, then you will get detection results every 250ms. The smaller the value means the better results you can get but more load on your CPU. Usually if you want to get the best performance in embedded environment (Raspberry Pi or Odroid), just set them to 0.

Related

Checkout https://github.com/zlingkang/mtcnn_face_detection_and_tracking/tree/master to see how to replace the OpenCV face detector used in this repo to a deep learning based face detector which is much more accurate.

Credits

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].