使用YOLO12和DepthAnythingV2的车辆高度估计
概述
这个演示项目实现了一个自动化的车辆高度估计流程。系统通过利用YOLO进行物体检测、跟踪和分割,使用DepthAnythingV2进行深度估计,并结合额外的图像处理来计算车辆的实际高度。该流程集成到了一个包含两个页面的Streamlit应用中:
- 跟踪与分割:实时流式传输并显示检测帧,同时保存跟踪到的车辆。
- 结果:显示合成的可视化图像和日志数据(CSV),供进一步分析使用。
示例Web应用截图
推理页面:
结果页面:
项目亮点
核心技术
- YOLOv12 & YOLO11x-seg:进行车辆的物体检测、跟踪和分割,基于YouTube视频流。
- DepthAnythingV2:提供高质量的深度估计,基于2D图像。
- OpenCV:处理图像处理、分割叠加、裁剪和可视化等功能。
- Streamlit:创建一个交互式的两页Web UI,用户可以输入YouTube链接并实时查看处理结果。
主要组成部分
- track_and_segment.py:从YouTube视频中检测和跟踪车辆,保存未标注的帧、分割掩码和裁剪图像。
- estimate_depth.py:使用DepthAnythingV2对保存的帧进行深度估计。
- calculate.py:利用分割掩码和深度信息计算车辆在实际单位下的高度。
- Inference.py:主Streamlit应用,运行整个处理流程并实时流式传输帧。
- Results.py:一个单独的Streamlit页面,显示合成的可视化结果和日志。
自动化脚本
run_init.ps1:PowerShell脚本,用于自动化项目初始化,包括创建虚拟环境、将DepthAnythingV2作为子模块添加并安装依赖项。
安装依赖项:
./run_init.ps1
启动应用
打开终端并运行以下命令:
streamlit run Inference.py