from tracker import Tracker
tracker = Tracker() # instantiate Tracker
cap = cv2.VideoCapture('test.mp4') # open one video
while True:
_, img = cap.read() # read frame from video
if img is None:
break
img_visual, bbox = tracker.update(img) # feed one frame and get result
cv2.imshow('demo', img_visual) # imshow
cv2.waitKey(1)
if cv2.getWindowProperty('demo', cv2.WND_PROP_AUTOSIZE) < 1:
break
cap.release()
cv2.destroyAllWindows()
Tracker uses YOLOX as detector to get each target's boundingbox, and use deepsort to get every bbox's ID.
If you just want to track only some specific categories, you can set by param filter_classes.
For example:
tracker = Tracker(filter_classes=['car','person'])
If you don't need tracking and just want to use YOLOX for object-detection, you can use the class Detector to inference easliy .
For example:
from detector import Detector
import cv2
detector = Detector() # instantiate Detector
img = cv2.imread('YOLOX/assets/dog.jpg') # load image
result = detector.detect(img) # detect targets
img_visual = result['visual'] # visualized image
cv2.imshow('detect', img_visual) # imshow
cv2.waitKey(0)
You can also get more information like raw_img/boudingbox/score/class_id from the result of detector.
-
Clone the repository recursively:
git clone --recurse-submodules https://github.com/pmj110119/YOLOX_deepsort_tracker.git
If you already cloned and forgot to use
--recurse-submodules
you can rungit submodule update --init
(clone最新的YOLOX仓库) -
Make sure that you fulfill all the requirements: Python 3.8 or later with all requirements.txt dependencies installed, including torch>=1.7. To install, run:
pip install -r requirements.txt
-
train your own model or just download pretrained models from https://github.com/Megvii-BaseDetection/YOLOX
Model size mAPtest
0.5:0.95Speed V100
(ms)Params
(M)FLOPs
(G)weights YOLOX-s 640 39.6 9.8 9.0 26.8 onedrive/github YOLOX-m 640 46.4 12.3 25.3 73.8 onedrive/github YOLOX-l 640 50.0 14.5 54.2 155.6 onedrive/github YOLOX-x 640 51.2 17.3 99.1 281.9 onedrive/github YOLOX-Darknet53 640 47.4 11.1 63.7 185.3 onedrive/github Download yolox_s.pth to the folder weights , which is the default model path of Tracker.
-
You can also use other yolox models as detector,. For example:
""" YOLO family: yolox-s, yolox-m, yolox-l, yolox-x, yolox-tiny, yolox-nano, yolov3 """ # yolox-s example detector = Tracker(model='yolox-s', ckpt='./yolox_s.pth') # yolox-m example detector = Tracker(model='yolox-m', ckpt='./yolox_m.pth')
python demo.py --path=test.mp4