# Yolov5_DeepSort_OSNet **Repository Path**: chen-zeshan/Yolov5_DeepSort_OSNet ## Basic Information - **Project Name**: Yolov5_DeepSort_OSNet - **Description**: No description available - **Primary Language**: Unknown - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-05-17 - **Last Updated**: 2022-05-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Yolov5 + Deep Sort with OSNet
## Introduction This repository contains a highly configurable two-stage-tracker that adjusts to different deployment scenarios. The detections generated by [YOLOv5](https://github.com/ultralytics/yolov5), a family of object detection architectures and models pretrained on the COCO dataset, are passed to a [Deep Sort algorithm](https://github.com/ZQPei/deep_sort_pytorch) which combines motion and appearance information based on [OSNet](https://github.com/KaiyangZhou/deep-person-reid) in order to tracks the objects. It can track any object that your Yolov5 model was trained to detect. ## Tutorials * [Yolov5 training on Custom Data (link to external repository)](https://github.com/ultralytics/yolov5/wiki/Train-Custom-Data) * [DeepSort deep descriptor training (link to external repository)](https://kaiyangzhou.github.io/deep-person-reid/user_guide.html) * [Yolov5 deep_sort pytorch evaluation](https://github.com/mikel-brostrom/Yolov5_DeepSort_Pytorch/wiki/Evaluation) ## Before you run the tracker 1. Clone the repository recursively: `git clone --recurse-submodules https://github.com/mikel-brostrom/Yolov5_DeepSort_OSNet.git` If you already cloned and forgot to use `--recurse-submodules` you can run `git submodule update --init` 2. Make sure that you fulfill all the requirements: Python 3.8 or later with all [requirements.txt](https://github.com/mikel-brostrom/Yolov5_DeepSort_Pytorch/blob/master/requirements.txt) dependencies installed, including torch>=1.7. To install, run: `pip install -r requirements.txt` ## Tracking sources Tracking can be run on most video formats ```bash $ python track.py --source 0 # webcam img.jpg # image vid.mp4 # video path/ # directory path/*.jpg # glob 'https://youtu.be/Zgi9g1ksQHc' # YouTube 'rtsp://example.com/media.mp4' # RTSP, RTMP, HTTP stream ``` ## Select object detection and ReID model ### Yolov5 There is a clear trade-off between model inference speed and accuracy. In order to make it possible to fulfill your inference speed/accuracy needs you can select a Yolov5 family model for automatic download ```bash $ python track.py --source 0 --yolo_model yolov5n.pt --img 640 yolov5s.pt yolov5m.pt yolov5l.pt yolov5x.pt --img 1280 ... ``` ### DeepSort The above applies to DeepSort models as well. Choose a ReID model based on your needs from this ReID [model zoo](https://kaiyangzhou.github.io/deep-person-reid/MODEL_ZOO) ```bash $ python track.py --source 0 --deep_sort_model osnet_x0_25_market1501 osnet_x0_5_market1501 osnet_x0_75_msmt17 osnet_x1_0_msmt17 ... ``` ## Filter tracked classes By default the tracker tracks all MS COCO classes. If you only want to track persons I recommend you to get [these weights](https://drive.google.com/file/d/1gglIwqxaH2iTvy6lZlXuAcMpd_U0GCUb/view?usp=sharing) for increased performance ```bash python3 track.py --source 0 --yolo_model yolov5/weights/crowdhuman_yolov5m.pt --classes 0 # tracks persons, only ``` If you want to track a subset of the MS COCO classes, add their corresponding index after the classes flag ```bash python3 track.py --source 0 --yolo_model yolov5s.pt --classes 16 17 # tracks cats and dogs, only ``` [Here](https://tech.amikelive.com/node-718/what-object-categories-labels-are-in-coco-dataset/) is a list of all the possible objects that a Yolov5 model trained on MS COCO can detect. Notice that the indexing for the classes in this repo starts at zero. ## MOT compliant results Can be saved to your experiment folder `runs/track/