基于深度学习YOLO26的实时roi区域识别与统计系统 交互式自定义区域人流车辆统计 视频人车流量统计项目
YOLOv11 实时视频 ROI 区域人流量/车流量统计项目介绍
1. 项目背景
随着智慧城市和智能交通的快速发展,实时统计特定区域的人流量和车流量成为关键需求。传统方法依赖人工统计或感应器,效率低且成本高。基于计算机视觉的解决方案,尤其是目标检测技术,为这一问题提供了新的思路。

2. 项目目标
本项目旨在利用 YOLOv11 目标检测算法,实现对实时视频中指定 ROI(感兴趣区域)的人流量和车流量的精准统计,并生成可视化结果。
3. 技术方案
3.1 YOLOv11 算法
YOLOv11 是 YOLO 系列的最新版本,继承了 YOLOv5 的高效和 YOLOv7 的精度,并在速度和精度上进一步提升。其优势包括:
- 轻量化设计: 模型体积小,推理速度快,适合实时视频处理。
- 高精度检测: 在复杂场景下仍能保持较高的检测精度。
- 多目标跟踪: 支持对视频中的目标进行连续跟踪,避免重复计数。
3.2 ROI 区域设置
用户可在视频画面中自定义 ROI 区域,系统仅对该区域内的人流和车流进行统计。ROI 区域可以是矩形、多边形或不规则形状,满足不同场景需求。
3.3 人流量/车流量统计
- 目标检测: YOLOv11 实时检测视频帧中的行人和车辆。
- 目标跟踪: 对检测到的目标进行跟踪,确保每个目标只被统计一次。
- ROI 过滤: 仅统计进入或离开 ROI 区域的目标。
- 计数规则: 根据目标运动方向(进入/离开)进行计数,并区分人流和车流。

3.4 可视化展示
- 实时视频显示: 在视频画面中标注 ROI 区域,并用不同颜色框标识行人和车辆。
- 统计信息叠加: 在视频画面中实时显示当前人流量和车流量统计结果。
- 数据图表展示: 生成人流量和车流量随时间变化的折线图或柱状图。
4. 项目优势
- 高精度统计: 基于 YOLOv11 的检测和跟踪算法,确保统计结果的准确性。
- 实时性强: 轻量化模型设计,满足实时视频处理需求。
- 灵活易用: 支持自定义 ROI 区域,适应不同场景。
- 可视化展示: 实时视频和统计图表结合,直观展示统计结果。
5. 应用场景
- 智慧城市: 统计商圈、景区、交通枢纽等人流密集区域的人流量。
- 智能交通: 统计路口、路段、停车场的车流量,辅助交通管理。
- 安防监控: 统计特定区域的人员进出情况,提升安防水平。
6. 未来展望
- 算法优化: 进一步提升 YOLOv11 的检测精度和速度。
- 功能扩展: 增加对更多目标类别(如自行车、电动车)的统计。
- 数据分析: 基于统计数据进行深度分析,提供更全面的决策支持。

代码使用教程
功能
- 使用 YOLOv8 进行实时行人检测
- 支持同时处理多个视频流
- 通过鼠标点击交互式选择 ROI(感兴趣区域)
- 使用边界框可视化检测结果
- 实时统计每个 ROI 区域内的行人数量
- FPS(帧率)监控
- 实时图表显示行人数量随时间的变化趋势
- 保存处理后的视频输出
环境要求
运行此应用程序需要以下软件包:
- ultralytics==8.0.0
- opencv-python==4.8.0
- streamlit==1.28.0
- numpy==1.24.3
- pandas==2.0.3

可以通过以下命令安装这些依赖:
pip install -r requirements.txt
或者使用提供的环境文件:
conda env create -f environment.yml
设置与安装
- 安装依赖:
pip install -r requirements.txt - 下载 YOLOv8 模型权重(代码默认使用
yolov8n.pt)。
使用方法
- 在脚本中更新视频路径和输出路径:
video_paths = ["path/to/your/video1.mp4", "path/to/your/video2.mp4"] output_paths = ["path/to/output1.mp4", "path/to/output2.mp4"] - 运行应用程序:
streamlit run app.py - 对于每个视频,系统会提示您通过点击帧来选择 ROI 点:
- 点击定义 ROI 多边形的角点(需要 4 个点)。
- 每个视频需要定义 2 个 ROI。
- 选择 4 个点后,绿色轮廓将显示定义的区域。
- 按任意键继续选择下一个 ROI。
- 应用程序将实时处理视频并显示:
- 带有检测框的处理后视频流。
- 每个 ROI 的行人数量。
- FPS 信息。
- 显示行人数量随时间变化的实时图表。
- 处理后的视频将保存到指定的输出路径。

工作原理
- ROI 选择:通过点击视频帧上的点定义 ROI,这些点形成一个多边形,只有在该多边形内检测到的行人会被计数。
- 行人检测:使用 YOLOv8 模型检测每一帧中的行人,并检查检测到的行人是否在定义的 ROI 内,从而更新计数。
- 可视化:
- 检测到的行人用绿色边界框高亮显示。
- ROI 用蓝色轮廓标出。
- 每个 ROI 的行人数量显示在视频帧上。
- 实时图表显示行人数量随时间的变化趋势。
自定义
- 要使用不同的 YOLO 模型,请更改模型路径:
model = YOLO("path/to/your/model.pt") - 要检测行人以外的对象,请修改推理函数中的
classes参数:results = model.predict(source=image, classes=[your_class_ids])

故障排除
- 如果 OpenCV 窗口无响应,请尝试点击窗口以确保其处于焦点状态。
- 如果遇到 GPU 内存问题,请考虑使用较小的 YOLO 模型。
- 如果 FPS 过低,请尝试降低输入视频的分辨率。









