# sharpiless/yolov5-deepsort-inference architecture

> Architecture diagram of the GitHub repository sharpiless/yolov5-deepsort-inference, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-29). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/sharpiless/yolov5-deepsort-inference
- Repository: https://github.com/sharpiless/yolov5-deepsort-inference

## Overview

This repository combines YOLOv5 detection with DeepSort tracking to produce annotated video frames and support object counting. The documented workflow is to submit frames through the Detector interface, detect objects, associate detections across frames, and visualize the results. DeepSort’s update implementation confirms its feature-extraction, suppression, and tracker calls; some top-level and counting details are documented but their source was not sampled, so those links are limited accordingly.

Main entry points: [`AIDetector_pytorch.py`](https://github.com/sharpiless/yolov5-deepsort-inference/blob/master/AIDetector_pytorch.py) (Detector API), [`deep_sort/deep_sort/deep_sort.py`](https://github.com/sharpiless/yolov5-deepsort-inference/blob/master/deep_sort/deep_sort/deep_sort.py) (DeepSort update), [`deep_sort/deep_sort/sort/tracker.py`](https://github.com/sharpiless/yolov5-deepsort-inference/blob/master/deep_sort/deep_sort/sort/tracker.py) (Track lifecycle), [`tracker.py`](https://github.com/sharpiless/yolov5-deepsort-inference/blob/master/tracker.py) (Tracker adapter)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_application["Application"]
  node_demo["Demo entry<br/>[demo.py]"]
  node_detector["Detector API"]
  node_tracker_adapter["Tracker adapter<br/>[tracker.py]"]
  node_counting["Object counting"]
  node_visualization["Frame visualization<br/>[tracker.py]"]
end

subgraph group_detection["Detection"]
  node_yolo_model["YOLO model<br/>[yolo.py]"]
  node_model_loading["Model loading<br/>[experimental.py]"]
  node_common_layers["Model layers<br/>[common.py]"]
  node_postprocess["Detection postprocess<br/>[general.py]"]
end

subgraph group_tracking["Tracking"]
  node_feature_extractor["Appearance features"]
  node_deep_sort_api["DeepSort update<br/>[deep_sort.py]"]
  node_detections["Track detections<br/>[detection.py]"]
  node_suppression["Track suppression<br/>[preprocessing.py]"]
  node_tracker_core["Track lifecycle<br/>[tracker.py]"]
  node_track_state["Track state<br/>[track.py]"]
  node_association["Track association<br/>[nn_matching.py]"]
  node_kalman["Motion filter<br/>[kalman_filter.py]"]
end

subgraph group_modeling["Modeling"]
  node_reid_training["ReID training<br/>[train.py]"]
  node_reid_model["ReID network<br/>[model.py]"]
end

node_user(("Video user"))

node_user -->|"starts"| node_demo
node_user -->|"submits frames"| node_detector
node_demo -->|"runs"| node_detector
node_detector -->|"infers"| node_yolo_model
node_detector -->|"loads model"| node_model_loading
node_model_loading -->|"constructs"| node_yolo_model
node_yolo_model -->|"uses layers"| node_common_layers
node_detector -->|"filters predictions"| node_postprocess
node_tracker_adapter -->|"requests detections"| node_detector
node_tracker_adapter -->|"updates tracks"| node_deep_sort_api
node_deep_sort_api -->|"extracts features"| node_feature_extractor
node_deep_sort_api -->|"creates detections"| node_detections
node_deep_sort_api -->|"suppresses boxes"| node_suppression
node_deep_sort_api -->|"updates"| node_tracker_core
node_tracker_core -->|"associates tracks"| node_association
node_tracker_core -->|"predicts states"| node_kalman
node_tracker_core -->|"maintains tracks"| node_track_state
node_tracker_adapter -->|"draws tracks"| node_visualization
node_detector -.->|"supports counting"| node_counting
node_reid_training -->|"trains"| node_reid_model
node_feature_extractor -->|"uses network"| node_reid_model

click node_demo "https://github.com/sharpiless/yolov5-deepsort-inference/blob/master/demo.py"
click node_detector "https://github.com/sharpiless/yolov5-deepsort-inference/blob/master/AIDetector_pytorch.py"
click node_tracker_adapter "https://github.com/sharpiless/yolov5-deepsort-inference/blob/master/tracker.py"
click node_counting "https://github.com/sharpiless/yolov5-deepsort-inference/blob/master/AIDetector_pytorch.py"
click node_visualization "https://github.com/sharpiless/yolov5-deepsort-inference/blob/master/tracker.py"
click node_yolo_model "https://github.com/sharpiless/yolov5-deepsort-inference/blob/master/models/yolo.py"
click node_model_loading "https://github.com/sharpiless/yolov5-deepsort-inference/blob/master/models/experimental.py"
click node_common_layers "https://github.com/sharpiless/yolov5-deepsort-inference/blob/master/models/common.py"
click node_postprocess "https://github.com/sharpiless/yolov5-deepsort-inference/blob/master/utils/general.py"
click node_feature_extractor "https://github.com/sharpiless/yolov5-deepsort-inference/blob/master/deep_sort/deep_sort/deep/feature_extractor.py"
click node_deep_sort_api "https://github.com/sharpiless/yolov5-deepsort-inference/blob/master/deep_sort/deep_sort/deep_sort.py"
click node_detections "https://github.com/sharpiless/yolov5-deepsort-inference/blob/master/deep_sort/deep_sort/sort/detection.py"
click node_suppression "https://github.com/sharpiless/yolov5-deepsort-inference/blob/master/deep_sort/deep_sort/sort/preprocessing.py"
click node_tracker_core "https://github.com/sharpiless/yolov5-deepsort-inference/blob/master/deep_sort/deep_sort/sort/tracker.py"
click node_track_state "https://github.com/sharpiless/yolov5-deepsort-inference/blob/master/deep_sort/deep_sort/sort/track.py"
click node_association "https://github.com/sharpiless/yolov5-deepsort-inference/blob/master/deep_sort/deep_sort/sort/nn_matching.py"
click node_kalman "https://github.com/sharpiless/yolov5-deepsort-inference/blob/master/deep_sort/deep_sort/sort/kalman_filter.py"
click node_reid_training "https://github.com/sharpiless/yolov5-deepsort-inference/blob/master/deep_sort/deep_sort/deep/train.py"
click node_reid_model "https://github.com/sharpiless/yolov5-deepsort-inference/blob/master/deep_sort/deep_sort/deep/model.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_demo,node_detector,node_tracker_adapter,node_counting,node_visualization,node_user toneBlue
class node_yolo_model,node_model_loading,node_common_layers,node_postprocess toneAmber
class node_feature_extractor,node_deep_sort_api,node_detections,node_suppression,node_tracker_core,node_track_state,node_association,node_kalman toneMint
class node_reid_training,node_reid_model toneRose
```

## Components

### Application

- [Demo entry](https://github.com/sharpiless/yolov5-deepsort-inference/blob/master/demo.py): `demo.py`
- [Detector API](https://github.com/sharpiless/yolov5-deepsort-inference/blob/master/AIDetector_pytorch.py): `AIDetector_pytorch.py`
- [Tracker adapter](https://github.com/sharpiless/yolov5-deepsort-inference/blob/master/tracker.py): `tracker.py`
- [Object counting](https://github.com/sharpiless/yolov5-deepsort-inference/blob/master/AIDetector_pytorch.py): `AIDetector_pytorch.py`
- [Frame visualization](https://github.com/sharpiless/yolov5-deepsort-inference/blob/master/tracker.py): `tracker.py`

### Detection

- [YOLO model](https://github.com/sharpiless/yolov5-deepsort-inference/blob/master/models/yolo.py): `models/yolo.py`
- [Model loading](https://github.com/sharpiless/yolov5-deepsort-inference/blob/master/models/experimental.py): `models/experimental.py`
- [Model layers](https://github.com/sharpiless/yolov5-deepsort-inference/blob/master/models/common.py): `models/common.py`
- [Detection postprocess](https://github.com/sharpiless/yolov5-deepsort-inference/blob/master/utils/general.py): `utils/general.py`

### Tracking

- [Appearance features](https://github.com/sharpiless/yolov5-deepsort-inference/blob/master/deep_sort/deep_sort/deep/feature_extractor.py): `deep_sort/deep_sort/deep/feature_extractor.py`
- [DeepSort update](https://github.com/sharpiless/yolov5-deepsort-inference/blob/master/deep_sort/deep_sort/deep_sort.py): `deep_sort/deep_sort/deep_sort.py`
- [Track detections](https://github.com/sharpiless/yolov5-deepsort-inference/blob/master/deep_sort/deep_sort/sort/detection.py): `deep_sort/deep_sort/sort/detection.py`
- [Track suppression](https://github.com/sharpiless/yolov5-deepsort-inference/blob/master/deep_sort/deep_sort/sort/preprocessing.py): `deep_sort/deep_sort/sort/preprocessing.py`
- [Track lifecycle](https://github.com/sharpiless/yolov5-deepsort-inference/blob/master/deep_sort/deep_sort/sort/tracker.py): `deep_sort/deep_sort/sort/tracker.py`
- [Track state](https://github.com/sharpiless/yolov5-deepsort-inference/blob/master/deep_sort/deep_sort/sort/track.py): `deep_sort/deep_sort/sort/track.py`
- [Track association](https://github.com/sharpiless/yolov5-deepsort-inference/blob/master/deep_sort/deep_sort/sort/nn_matching.py): `deep_sort/deep_sort/sort/nn_matching.py`
- [Motion filter](https://github.com/sharpiless/yolov5-deepsort-inference/blob/master/deep_sort/deep_sort/sort/kalman_filter.py): `deep_sort/deep_sort/sort/kalman_filter.py`

### Modeling

- [ReID training](https://github.com/sharpiless/yolov5-deepsort-inference/blob/master/deep_sort/deep_sort/deep/train.py): `deep_sort/deep_sort/deep/train.py`
- [ReID network](https://github.com/sharpiless/yolov5-deepsort-inference/blob/master/deep_sort/deep_sort/deep/model.py): `deep_sort/deep_sort/deep/model.py`

### Other components

- **Video user**

## Connections

- Video user → Demo entry: starts
- Video user → Detector API: submits frames
- Demo entry → Detector API: runs
- Detector API → YOLO model: infers
- Detector API → Model loading: loads model
- Model loading → YOLO model: constructs
- YOLO model → Model layers: uses layers
- Detector API → Detection postprocess: filters predictions
- Tracker adapter → Detector API: requests detections
- Tracker adapter → DeepSort update: updates tracks
- DeepSort update → Appearance features: extracts features
- DeepSort update → Track detections: creates detections
- DeepSort update → Track suppression: suppresses boxes
- DeepSort update → Track lifecycle: updates
- Track lifecycle → Track association: associates tracks
- Track lifecycle → Motion filter: predicts states
- Track lifecycle → Track state: maintains tracks
- Tracker adapter → Frame visualization: draws tracks
- Detector API → Object counting: supports counting
- ReID training → ReID network: trains
- Appearance features → ReID network: uses network
