StrangerZhang / Pysot Toolkit
Licence: mit
Python Single Object Tracking Evaluation
Stars: ✭ 262
Programming Languages
python
139335 projects - #7 most used programming language
Labels
Projects that are alternatives of or similar to Pysot Toolkit
AIODrive
Official Python/PyTorch Implementation for "All-In-One Drive: A Large-Scale Comprehensive Perception Dataset with High-Density Long-Range Point Clouds"
Stars: ✭ 32 (-87.79%)
Mutual labels: tracking, evaluation
Ab3dmot
(IROS 2020, ECCVW 2020) Official Python Implementation for "3D Multi-Object Tracking: A Baseline and New Evaluation Metrics"
Stars: ✭ 1,032 (+293.89%)
Mutual labels: tracking, evaluation
face-detectify
😅 Detect faces in images. Without native modules. It uses tracking.js.
Stars: ✭ 20 (-92.37%)
Mutual labels: tracking
Simple-YAML
A Java API that provides an easy-to-use way to store data using the YAML format.
Stars: ✭ 68 (-74.05%)
Mutual labels: object
svelte-google-analytics
Google Analytics component for Svelte
Stars: ✭ 41 (-84.35%)
Mutual labels: tracking
cam-track
Windows, Unix, Raspberry Pi Computer python program to Track Camera X, Y Movements and Convert to Camera Pointing Position. Useful for Stabilization or Robotics Course Correction
Stars: ✭ 27 (-89.69%)
Mutual labels: tracking
Kvpbase
Scalable, simple RESTful object storage platform, written in C#
Stars: ✭ 43 (-83.59%)
Mutual labels: object
Pirsch
Pirsch is a drop-in, server-side, no-cookie, and privacy-focused analytics solution for Go.
Stars: ✭ 257 (-1.91%)
Mutual labels: tracking
PlaceTracking
Simple and free to use API for time and location tracking
Stars: ✭ 21 (-91.98%)
Mutual labels: tracking
realtime-facereccpp
Real time face recognition with tracking (mtcnn detection, kcf tracker, arcface loss)
Stars: ✭ 32 (-87.79%)
Mutual labels: tracking
booleval
Header-only C++17 library for evaluating logical expressions.
Stars: ✭ 54 (-79.39%)
Mutual labels: evaluation
underscore.haz
🔍 _.haz() is like _.has() but this underscore and/or lodash mixin lets you do deep object key existence checking with a dot denoted string, for example 'a.b.c'
Stars: ✭ 13 (-95.04%)
Mutual labels: object
RPT
RPT: Learning Point Set Representation for Siamese Visual Tracking
Stars: ✭ 75 (-71.37%)
Mutual labels: tracking
sparseIndexTracking
Design of Portfolio of Stocks to Track an Index
Stars: ✭ 27 (-89.69%)
Mutual labels: tracking
ember-deep-tracked
Deep auto-tracking for when you just don't care, and want things to work (at the cost of performance in some situtations)
Stars: ✭ 20 (-92.37%)
Mutual labels: tracking
summary-explorer
Summary Explorer is a tool to visually explore the state-of-the-art in text summarization.
Stars: ✭ 34 (-87.02%)
Mutual labels: evaluation
brfv4 win examples
Windows C++ examples utilizing OpenCV for camera access and drawing the face tracking results.
Stars: ✭ 13 (-95.04%)
Mutual labels: tracking
pysot-toolkit
The purpose of this repo is to provide evaluation API of Current Single Object Tracking Dataset, including
- [x] VOT2016
- [x] VOT2018
- [x] VOT2018-LT
- [x] OTB100(OTB2015)
- [x] UAV123
- [x] NFS
- [x] LaSOT
- [ ] TrackingNet (Evaluation on Server)
- [ ] GOT-10k (Evaluation on Server)
Install
git clone https://github.com/StrangerZhang/pysot-toolkit
pip install -r requirements.txt
cd pysot/utils/
python setup.py build_ext --inplace
# if you need to draw graph, you need latex installed on your system
Download Dataset
Download json files used in our toolkit baidu pan or Google Drive
-
Put CVRP13.json, OTB100.json, OTB50.json in OTB100 dataset directory (you need to copy Jogging to Jogging-1 and Jogging-2, and copy Skating2 to Skating2-1 and Skating2-2 or using softlink)
The directory should have the below format
| -- OTB100/
| -- Basketball
| ......
| -- Woman
| -- OTB100.json
| -- OTB50.json
| -- CVPR13.json
-
Put all other jsons in the dataset directory like in step 1
Usage
1. Evaluation on VOT2018(VOT2016)
cd /path/to/pysot-toolkit
python bin/eval.py \
--dataset_dir /path/to/dataset/root \ # dataset path
--dataset VOT2018 \ # dataset name(VOT2018, VOT2016)
--tracker_result_dir /path/to/tracker/dir \ # tracker dir
--trackers ECO UPDT SiamRPNpp # tracker names
# you will see
------------------------------------------------------------
|Tracker Name| Accuracy | Robustness | Lost Number | EAO |
------------------------------------------------------------
| SiamRPNpp | 0.600 | 0.234 | 50.0 | 0.415 |
| UPDT | 0.536 | 0.184 | 39.2 | 0.378 |
| ECO | 0.484 | 0.276 | 59.0 | 0.280 |
------------------------------------------------------------
2. Evaluation on OTB100(UAV123, NFS, LaSOT)
converted *.txt tracking results will be released soon
cd /path/to/pysot-toolkit
python bin/eval.py \
--dataset_dir /path/to/dataset/root \ # dataset path
--dataset OTB100 \ # dataset name(OTB100, UAV123, NFS, LaSOT)
--tracker_result_dir /path/to/tracker/dir \ # tracker dir
--trackers SiamRPN++ C-COT DaSiamRPN ECO \ # tracker names
--num 4 \ # evaluation thread
--show_video_level \ # wether to show video results
--vis # draw graph
# you will see (Normalized Precision not used in OTB evaluation)
-----------------------------------------------------
|Tracker name| Success | Norm Precision | Precision |
-----------------------------------------------------
| SiamRPN++ | 0.696 | 0.000 | 0.914 |
| ECO | 0.691 | 0.000 | 0.910 |
| C-COT | 0.671 | 0.000 | 0.898 |
| DaSiamRPN | 0.658 | 0.000 | 0.880 |
-----------------------------------------------------
-----------------------------------------------------------------------------------------
| Tracker name | SiamRPN++ | DaSiamRPN | ECO |
-----------------------------------------------------------------------------------------
| Video name | success | precision | success | precision | success | precision |
-----------------------------------------------------------------------------------------
| Basketball | 0.423 | 0.555 | 0.677 | 0.865 | 0.653 | 0.800 |
| Biker | 0.728 | 0.932 | 0.319 | 0.448 | 0.506 | 0.832 |
| Bird1 | 0.207 | 0.360 | 0.274 | 0.508 | 0.192 | 0.302 |
| Bird2 | 0.629 | 0.742 | 0.604 | 0.697 | 0.775 | 0.882 |
| BlurBody | 0.823 | 0.879 | 0.759 | 0.767 | 0.713 | 0.894 |
| BlurCar1 | 0.803 | 0.917 | 0.837 | 0.895 | 0.851 | 0.934 |
| BlurCar2 | 0.864 | 0.926 | 0.794 | 0.872 | 0.883 | 0.931 |
......
| Vase | 0.564 | 0.698 | 0.554 | 0.742 | 0.544 | 0.752 |
| Walking | 0.761 | 0.956 | 0.745 | 0.932 | 0.709 | 0.955 |
| Walking2 | 0.362 | 0.476 | 0.263 | 0.371 | 0.793 | 0.941 |
| Woman | 0.615 | 0.908 | 0.648 | 0.887 | 0.771 | 0.936 |
-----------------------------------------------------------------------------------------
OTB100 Success Plot | OTB100 Precision Plot |
---|---|
3. Evaluation on VOT2018-LT
cd /path/to/pysot-toolkit
python bin/eval.py \
--dataset_dir /path/to/dataset/root \ # dataset path
--dataset VOT2018-LT \ # dataset name
--tracker_result_dir /path/to/tracker/dir \ # tracker dir
--trackers SiamRPN++ MBMD DaSiam-LT \ # tracker names
--num 4 \ # evaluation thread
--vis \ # wether to draw graph
# you will see
-------------------------------------------
|Tracker Name| Precision | Recall | F1 |
-------------------------------------------
| SiamRPN++ | 0.649 | 0.610 | 0.629 |
| MBMD | 0.634 | 0.588 | 0.610 |
| DaSiam-LT | 0.627 | 0.588 | 0.607 |
| MMLT | 0.574 | 0.521 | 0.546 |
| FuCoLoT | 0.538 | 0.432 | 0.479 |
| SiamVGG | 0.552 | 0.393 | 0.459 |
| SiamFC | 0.600 | 0.334 | 0.429 |
-------------------------------------------
Get Tracking Results of Your Own Tracker
Add pysot-toolkit to your PYTHONPATH
export PYTHONPATH=/path/to/pysot-toolkit:$PYTHONPATH
1. OPE (One Pass Evaluation)
from pysot.datasets import DatasetFactory
dataset = DatasetFactory.create_dataset(name=dataset_name,
dataset_root=datset_root,
load_img=False)
for video in dataset:
for idx, (img, gt_bbox) in enumerate(video):
if idx == 0:
# init your tracker here
else:
# get tracking result here
2. Restarted Evaluation
from pysot.datasets import DatasetFactory
from pysot.utils.region import vot_overlap
dataset = DatasetFactory.create_dataset(name=dataset_name,
dataset_root=datset_root,
load_img=False)
frame_counter = 0
pred_bboxes = []
for video in dataset:
for idx, (img, gt_bbox) in enumerate(video):
if idx == frame_counter:
# init your tracker here
pred_bbox.append(1)
elif idx > frame_counter:
# get tracking result here
pred_bbox =
overlap = vot_overlap(pred_bbox, gt_bbox, (img.shape[1], img.shape[0]))
if overlap > 0:
# continue tracking
pred_bboxes.append(pred_bbox)
else:
# lost target, restart
pred_bboxes.append(2)
frame_counter = idx + 5
else:
pred_bboxes.append(0)
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].