All Projects → AIHunters → Acurustrack

AIHunters / Acurustrack

Licence: gpl-3.0
A multi-object tracking component. Works in the conditions where identification and classical object trackers don't (e.g. shaky/unstable camera footage, occlusions, motion blur, covered faces, etc.). Works on any object despite their nature.

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Acurustrack

Robovision
AI and machine leaning-based computer vision for a robot
Stars: ✭ 126 (-35.71%)
Mutual labels:  artificial-intelligence, opencv, surveillance
Face Tracking With Anime Characters
Hello! I have made a Python project where YURI from the game doki doki literature club accesses the webcam and stares directly into the players soul. Hope you enjoy!
Stars: ✭ 320 (+63.27%)
Mutual labels:  artificial-intelligence, opencv
Ai Job Notes
AI算法岗求职攻略(涵盖准备攻略、刷题指南、内推和AI公司清单等资料)
Stars: ✭ 3,191 (+1528.06%)
Mutual labels:  artificial-intelligence, opencv
Caer
High-performance Vision library in Python. Scale your research, not boilerplate.
Stars: ✭ 452 (+130.61%)
Mutual labels:  artificial-intelligence, opencv
Deeppicar
Deep Learning Autonomous Car based on Raspberry Pi, SunFounder PiCar-V Kit, TensorFlow, and Google's EdgeTPU Co-Processor
Stars: ✭ 242 (+23.47%)
Mutual labels:  artificial-intelligence, opencv
Yoloface
Deep learning-based Face detection using the YOLOv3 algorithm (https://github.com/sthanhng/yoloface)
Stars: ✭ 339 (+72.96%)
Mutual labels:  artificial-intelligence, opencv
Perceptron
A flexible artificial neural network builder to analyse performance, and optimise the best model.
Stars: ✭ 370 (+88.78%)
Mutual labels:  artificial-intelligence, opencv
Phormatics
Using A.I. and computer vision to build a virtual personal fitness trainer. (Most Startup-Viable Hack - HackNYU2018)
Stars: ✭ 79 (-59.69%)
Mutual labels:  artificial-intelligence, opencv
Raspisecurity
Home Surveillance for Raspberry
Stars: ✭ 128 (-34.69%)
Mutual labels:  opencv, surveillance
Picamnn
Survelliance system with deep learning based people detection (YOLO)
Stars: ✭ 97 (-50.51%)
Mutual labels:  opencv, surveillance
Python Quarantine Projects
Here we are going to make some python projects during Quarantine time
Stars: ✭ 175 (-10.71%)
Mutual labels:  artificial-intelligence, opencv
Leagueai
LeagueAI software framework for League of Legends that provides information about the state of the game based on Image Recognition using OpenCV and Pytorch.
Stars: ✭ 128 (-34.69%)
Mutual labels:  artificial-intelligence, opencv
Person Detection And Tracking
A tensorflow implementation with SSD model for person detection and Kalman Filtering combined for tracking
Stars: ✭ 193 (-1.53%)
Mutual labels:  artificial-intelligence, opencv
Opencv Practical Exercise
OpenCV practical exercise
Stars: ✭ 191 (-2.55%)
Mutual labels:  opencv
Gophernet
A simple from-scratch neural net written in Go
Stars: ✭ 194 (-1.02%)
Mutual labels:  artificial-intelligence
Pyss3
A Python package implementing a new machine learning model for text classification with visualization tools for Explainable AI
Stars: ✭ 191 (-2.55%)
Mutual labels:  artificial-intelligence
Free Ai Resources
🚀 FREE AI Resources - 🎓 Courses, 👷 Jobs, 📝 Blogs, 🔬 AI Research, and many more - for everyone!
Stars: ✭ 192 (-2.04%)
Mutual labels:  artificial-intelligence
Facerec Python
个人毕业设计 - 基于树莓派、OpenCV及Python语言的人脸识别
Stars: ✭ 195 (-0.51%)
Mutual labels:  opencv
Php Opencv
php wrapper for opencv
Stars: ✭ 194 (-1.02%)
Mutual labels:  opencv
Primestereomatch
A heterogeneous and fully parallel stereo matching algorithm for depth estimation, implementing a local adaptive support weight (ADSW) Guided Image Filter (GIF) cost aggregation stage. Developed in both C++ and OpenCL.
Stars: ✭ 191 (-2.55%)
Mutual labels:  opencv

AcurusTrack. Python data association component for precise multi-object tracking

AcurusTrack is a highly predictable multiple object tracker. It is based on a custom data association approach.

This component does not depend on objects' nature - we work with arbitrary ones. You can serve any metadata as input. Here we display the examples of the metadata derived by face and pose estimators. You can use any of the estimators you prefer to create the data for input.

This repository is a work of AIHunters.

We got inspired by the article describing the Markov chain Monte Carlo data association. For fairly simple cases we're releasing this slightly shorter version. But if you are interested in a full version, or have business cases for any of the two versions, feel free to contact us at [email protected] for more information.

Pipeline conceptual representation

Use Cases

  • Complicated multi-occlusion movement

  • Medical face masks

  • Identically-dressed people with faces fully covered

  • People in identical military uniform

  • Visitor analytics for physical locations

  • Feel free to suggest yours

First Time Setup:

git clone https://github.com/AIHunters/AcurusTrack.git
cd AcurusTrack
sudo apt-get install python-virtualenv
virtualenv venv --system-site-packages
source venv/bin/activate
pip install -r requirements.txt

Enter the virtualenv in a later session to use the installed libraries

source venv/bin/activate

To exit the virtualenv

deactivate

Input data should have the following form:

{"frame_no": [{"x1": top_right_x, "y1": top_right_y, "x2": bottom_left_x, "y2": bottom_left_y}], "frame_no":[],...}

in case of face processing (for face meta extraction we used RetinaFace)

{"frame_no": [{"body_part_name_x": x_coord, "body_part_name_y": y_coord, "body_part_name_x": x_coord, "body_part_name_y": y_coord}], "frame_no":[],...}

in case of body processing (for pose meta extraction we used OpenPose, and you can use any pose estimator you want). More information about the parameters you can find in config.py

Clean the data

To enhance accuracy, we recommend using the EvenVizion component which allows transfer to a fixed coordinate system. If you choose to use it:

  • navigate to the FCS;
  • create a separate environment for the EvenVizion setup;
  • use run_EvenVizion.py to get json with with homography matrices;
  • run AcurusTrack, setting fixed_coordinate_system = True beforehand.

Project structure (main files):

  • run.py - main file for running algorithm
  • pipeline.py - pipeline, including splitting video on chunks, processing them individually, merging results, running final merge algorithm
  • config.py - parameters that define overall pipeline
  • FCS
  • processing
  • track
    • tracker.py - contain abstract class AbstractTracker, realizing full pipeline.
    • tracker_merger.py - contain class TrackerMerger for simplified pipeline.
  • initialisation - meta preprocessing based on some similarity metric
  • additional - auxiliary file with modified Kalman filter.
  • utils - custom useful functions
  • examples - demo scripts
  • visualization - folder containing all visualization functions
    • make_video_with_meta.py - visualize algorithm result

      • using face meta

      face_visualization

      • using pose meta

      pose_visualization

    • visualization.py - functions for custom meta visualization meta_visualization

Run the analysis

$python3 run.py --detections [json containing detections] --video_path --video_name --exp_name --path_to_homography_dict optionally --start_frame optionlly --end_frame optionally

Accuracy comparison

We decided to compare our AcurusTrack component (right) with one of the popular trackers - Re3 (left).

  • Identically-dressed people with faces fully covered

  • Medical face masks

As you can see, the accuracy is higher when using AcurusTrack (especially in the presence of occlusions and camera movement).

Important notice

  • Please NOTE that we have changed a source code of the filterpy library slightly, you can find it at the repository.
  • Pay close attention to the configurable parameters as they include important control features.

Latest updates

Single-shot multi-object tracking was added in the latest release AS AN EXPERIMENT. You can try using it for your cases.

License

AcurusTrack is licensed under the GNU General Public License, either version 3 of the License, or (at your option) any later version. All the third-party open-source software used in this project is listed in Third-Party Open Source Software Notice together with the according licenses.

https://github.com/AIHunters/AcurusTrack

Send us your feedback

We're open to any kind of communication, whether it is your feedback, failure cases, possible improvements or cooperation possibilities. Contact us at [email protected].

Please adhere to our CODE_OF_CONDUCT to keep positive and constructive environment here.

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].