保姆级教程:用YOLOv8和DeepSORT在Windows上实现视频行人车辆计数(附完整代码与环境配置)

📅 2026/8/4 10:44:45 👁️ 阅读次数 📝 编程学习
保姆级教程:用YOLOv8和DeepSORT在Windows上实现视频行人车辆计数(附完整代码与环境配置)

从零搭建YOLOv8+DeepSORT多目标跟踪系统:Windows环境完整实战指南

在智能安防、交通监控等场景中,自动统计行人车辆数量是基础却关键的需求。本文将手把手带您完成YOLOv8目标检测与DeepSORT多目标跟踪的完整环境搭建与项目部署,即使您是刚接触计算机视觉的新手,也能跟随步骤实现视频分析流水线。

1. 开发环境准备:避坑指南

1.1 硬件与基础软件检查

确保您的Windows设备满足以下最低配置:

  • GPU:NVIDIA显卡(GTX 1060及以上)
  • 驱动:CUDA 11.7+和cuDNN 8.5+兼容版本
  • 系统:Windows 10/11 64位

提示:运行nvidia-smi命令可查看显卡驱动版本,若未识别请先安装最新NVIDIA驱动

1.2 开发工具链安装

按顺序完成以下关键组件安装:

  1. Visual Studio 2022:安装时勾选"使用C++的桌面开发"组件
  2. CUDA Toolkit:推荐11.7版本(与后续PyTorch版本匹配)
  3. cuDNN:下载对应CUDA版本的压缩包,解压后复制到CUDA安装目录
  4. Anaconda:Python环境管理工具
# 验证CUDA安装成功 nvcc --version

1.3 Conda虚拟环境配置

创建隔离的Python环境避免依赖冲突:

conda create -n yolov8_tracking python=3.9 conda activate yolov8_tracking

2. 核心组件安装与验证

2.1 YOLOv8框架部署

使用官方ultralytics库安装:

pip install ultralytics pip install torch==1.13.1+cu117 torchvision==0.14.1+cu117 --extra-index-url https://download.pytorch.org/whl/cu117

2.2 DeepSORT依赖安装

需要额外安装的特定版本库:

# requirements.txt numpy==1.23.5 opencv-python==4.7.0.72 scipy==1.10.1 easydict==1.10

2.3 预训练模型准备

下载官方权重文件:

  • YOLOv8s.pt(约22MB)
  • mars-small128.pb(DeepSORT特征提取模型)

注意:模型文件需放置在项目根目录的weights文件夹下

3. 项目结构与代码解析

3.1 核心文件功能说明

文件功能描述
objdetector.pyYOLOv8目标检测封装
objtracker.pyDeepSORT跟踪逻辑实现
count.py越线计数业务逻辑
zone.py区域入侵检测功能

3.2 计数功能实现原理

计数模块通过向量叉积判断移动方向:

def is_passing_line(point, line_pt1, line_pt2): # 计算向量叉积 cross_product = (line_pt2[0]-line_pt1[0])*(point[1]-line_pt1[1]) - \ (line_pt2[1]-line_pt1[1])*(point[0]-line_pt1[0]) return cross_product > 0

3.3 多目标跟踪流程

  1. 检测阶段:YOLOv8生成bbox和置信度
  2. 特征提取:ReID网络获取外观特征
  3. 数据关联:匈牙利算法+卡尔曼滤波
  4. 轨迹管理:处理新生/消失/遮挡目标

4. 实战演示与问题排查

4.1 视频分析完整流程

运行计数demo的标准化步骤:

python count.py --input test.mp4 --output result.mp4 --line_coords 100,200,500,200

参数说明:

  • --line_coords:设置计数线起点和终点坐标
  • --display:实时显示处理画面

4.2 常见错误解决方案

  • CUDA out of memory:减小检测尺寸--imgsz 640
  • DLL load failed:重装对应版本的VC_redist
  • 版本冲突:使用pipdeptree检查依赖关系

4.3 性能优化技巧

  • 启用TensorRT加速:
    from torch2trt import torch2trt model_trt = torch2trt(model, [input_data])
  • 调整检测频率:每N帧执行一次完整检测
  • 使用多进程处理:分离检测与跟踪线程

5. 扩展应用与二次开发

5.1 自定义检测类别

修改yolov8配置文件的names字段:

# data.yaml names: 0: person 1: car 2: truck

5.2 多摄像头接入方案

通过RTSP协议实现网络视频流处理:

cap = cv2.VideoCapture("rtsp://admin:password@192.168.1.64/stream1")

5.3 数据统计与可视化

集成Prometheus+Grafana实现监控看板:

from prometheus_client import Counter people_counter = Counter('people_total', 'Total passed people')

6. 项目部署与生产化建议

6.1 容器化部署方案

使用Docker封装运行环境:

FROM nvidia/cuda:11.7.1-base RUN pip install -r requirements.txt CMD ["python", "count.py"]

6.2 边缘设备优化

针对Jetson设备的部署要点:

  • 转换模型为ONNX格式
  • 使用TensorRT加速引擎
  • 调整帧率与分辨率平衡

6.3 长期运行保障

  • 添加看门狗进程监控
  • 实现异常自动恢复机制
  • 日志分级与轮转配置

在真实场景部署时,建议先用10分钟短视频测试系统稳定性。我遇到过因内存泄漏导致24小时后服务崩溃的情况,最终通过定期重启进程解决。对于关键业务场景,可以考虑使用Kubernetes实现高可用部署。