# yolo5_deepsort追踪测试学习 **Repository Path**: lucky-six/yolo5_deepsort ## Basic Information - **Project Name**: yolo5_deepsort追踪测试学习 - **Description**: yolo5_deepsort - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-04-23 - **Last Updated**: 2025-04-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # YOLOv5 + DeepSORT 目标跟踪系统 - 零基础小白指南 ## 简介 这个系统将两个强大的技术结合在一起: - **YOLOv5**:一个快速、准确的目标检测系统,能识别图像中的物体(如人、车、猫狗等) - **DeepSORT**:一个目标跟踪系统,能跟踪视频中移动的物体并为每个物体分配唯一ID ## 整个系统做了什么? 1. **检测**:使用YOLOv5识别每一帧画面中的物体 2. **跟踪**:使用DeepSORT跟踪这些物体在视频中的移动 3. **可视化**:显示带有ID和移动轨迹的视频画面 ## 文件结构和作用 ``` . ├── yolov5-master/ # YOLOv5目录(负责物体检测) ├── deep_sort-master/ # DeepSORT目录(负责物体跟踪) │ └── deep_sort/ # DeepSORT核心代码 │ ├── deep/ # 特征提取器(识别同一个物体的关键) │ │ └── checkpoint/ # 存放模型文件 │ └── utils/ # 工具函数 ├──configs/ # 配置文件目录 │ └──deep_sort.yaml # DeepSORT的配置参数 ├── run_yolo_deepsort.py # 整合了所有功能的主程序 └── inference/ └── output/ # 保存处理后视频的目录 ``` ## 各个组件的作用 ### 1. YOLOv5 - 负责检测图像/视频中的物体 - 告诉系统"这一帧中有哪些物体,它们在哪里" ### 2. DeepSORT目录结构 - **deep_sort/deep/**: 包含特征提取器,用于识别同一个物体(即使位置变化) - **deep_sort/deep/checkpoint/**: 存放模型文件(默认使用简化版随机特征) - **configs/deep_sort.yaml**: 配置文件,设置跟踪参数,如: - 目标消失多久后停止跟踪 - 连续检测多少帧后确认为有效目标 - 识别相似物体的阈值等 ### 3. 核心程序 - **setup_deepsort.py**: 自动创建DeepSORT所需的目录结构和配置文件 - **run_yolo_deepsort.py**: 集成所有功能的主程序 ## 系统启动时的完整流程 当你运行`python run_yolo_deepsort.py`时: 1. **初始化阶段**: - 加载YOLOv5模型(用于检测物体) - 设置DeepSORT目录结构(如果不存在) - 创建配置文件(如果不存在) - 初始化DeepSORT跟踪器 2. **视频处理阶段**: - 对每一帧图像: - 使用YOLOv5检测物体 - 提取每个物体的特征 - DeepSORT将这些特征与之前的进行匹配,分配跟踪ID - 绘制物体边界框、ID和移动轨迹 - 显示/保存处理后的画面 ## 如何使用 ### 准备工作 确保安装了所有依赖: ```bash pip install torch torchvision opencv-python pyyaml pip install -r yolov5-master/requirements.txt # 如果有这个文件 ``` ### 基本用法 ```bash # 使用摄像头并显示画面 python run_yolo_deepsort.py --source 0 --view-img # 使用视频文件并保存结果 python run_yolo_deepsort.py --source 你的视频路径.mp4 --save-vid ``` ### 重要参数解释(给小白的简化版) - `--source`: 从哪里获取画面(0=摄像头,或视频文件路径) - `--view-img`: 是否显示处理后的画面 - `--save-vid`: 是否保存处理后的视频 - `--conf-thres`: 检测置信度(0-1):值越高,只显示更确定的物体 - `--classes`: 只检测指定类别的物体(例如:`--classes 0 2`只检测人和汽车) ## 常见问题解答 1. **Q: 程序运行很慢怎么办?** A: 这个系统比较消耗资源。如果有GPU,确保不要使用`--device cpu`。降低视频分辨率也能提高速度。 2. **Q: 想要更准确的跟踪效果?** A: 可以调整DeepSORT参数,比如提高`--min-confidence`,降低`--max-iou-distance`。 3. **Q: 检测结果不准确?** A: 可以尝试使用更大/更准确的YOLOv5模型,如`--weights yolov5-master/yolov5m.pt`。 4. **Q: 丢失跟踪太快?** A: 增加`--max-age`参数,让系统在物体暂时消失后继续保持跟踪更长时间。 ## 关于配置文件 `configs/deep_sort.yaml`包含了DeepSORT的重要参数: ```yaml DEEPSORT: REID_CKPT: "deep_sort-master/deep_sort/deep/checkpoint/ckpt.t7" # 模型文件位置 MAX_DIST: 0.2 # 特征匹配的最大距离(越小越严格) MIN_CONFIDENCE: 0.3 # 最小检测置信度 MAX_IOU_DISTANCE: 0.7 # 最大IOU距离(物体重叠程度) MAX_AGE: 70 # 物体消失后最多跟踪多少帧 N_INIT: 3 # 需要连续检测多少帧才确认为有效目标 NN_BUDGET: 100 # 保留的特征数量 ```