使用自定义数据集训练 YOLOv12 以检测道路坑洞严重程度
使用自定义数据集训练 YOLOv12 以检测道路坑洞严重程度
在这个教程中,您将学习如何在自定义的 pothole 检测数据集上微调 YOLOv12,并基于 bounding box 面积对 pothole 进行分类。您将部署一个交互式的 Gradio 用户界面,允许用户上传图像或视频,并查看视觉检测结果和结果总结表。
通过本教程,您将拥有一个完全功能的端到端 pothole 检测应用程序——已训练并准备使用。
这节是关于YOLOv12的三部分系列的最后一节:
- 打破CNN模式:YOLOv12为实时目标检测带来关注
- 使用YOLOv12和质心跟踪器的人体追踪器
- 使用自定义数据集训练用于检测坑洞严重程度的YOLOv12
要了解如何微调YOLOv12用于检测坑洞,分类严重程度,并部署一个由Gradio支持的推理应用程序。
介绍
道路上的裂缝和坑洞不仅仅是麻烦。它们是危险的。从损坏车辆到引发事故,维护不善的道路会带来严重的安全风险。传统检查方法涉及人工调查,这种方法耗时、昂贵,并且通常在实时监控方面无效。
深度学习在这里介入 — 具体来说,是能够分析道路的图像或视频并自动检测坑洞的物体检测模型。在众多选项中,YOLOv12 由于其强大的功能和高效性,成为迄今为止最出色的模型之一。它基于之前YOLO版本的成功。它结合了最新的注意力机制(例如,RELAN 和 区域注意力),使其成为第一个为实时应用设计的注意力驱动的YOLO。
在这个教程中,我们将带您超越仅仅物体检测。我们的目标是使用YOLOv12建立一个完整的管道来检测坑洞并估计其严重程度。我们将基于每个检测到的坑洞的边界框面积来衡量严重程度,从而粗略但实际地表示一个坑洞的大小或危险程度。
但那还不是全部。我们还将:
- 使用预标注图像在自定义 pothole 数据集上训练 YOLOv12
- 构建一个直观的Gradio用户界面,允许用户上传图像或视频,并即时获得标注结果
- 直接在媒体上突出显示 pothole 严重程度等级:低,中,或 高
- 可选择保存输出视频以供检查或记录。
在阅读完这篇文章后,你将拥有一个完全可用的应用程序——一个可以轻松扩展到其他道路损坏检测任务或集成到移动或基于网页的检查工具中的应用程序。
让我们开始吧。
您是否希望免费立即访问1,482张经过整理和标记的 potholes 图片,以用于训练、探索和实验?请访问 Roboflow 并获取免费账户以获取这些 potholes 图片。
数据集和任务概述
为了训练我们的YOLOv12模型用于检测道路坑洞,我们使用了Roboflow的坑洞检测数据集中的公共数据集。这个数据集包含从真实道路捕获的多样化的标注坑洞图像,使我们能够针对实际应用案例对YOLOv12进行微调。
关于数据集
-
来源: Roboflow 宇宙
-
数据集链接: 道路坑洞检测数据集 v2
-
总图像数:
1482
- 训练: 1037 张图像
- 验证: 296 张图像
- 测试: 149 张图片
-
格式: YOLOv12兼容的标注
-
类别: 单类别(坑洞)
数据集涵盖了在不同照明条件、道路纹理和图像分辨率下的 potholes。由于这些注释已经是 YOLO 格式,因此非常适合我们的微调工作流程。
图1 显示了数据集中的一个样本图像。
我们在检测什么?
该任务是检测图像和视频流中的 potholes。每次检测将返回 potholes 的边界框,并且我们还将使用自定义逻辑对 potholes 的严重程度进行分类。
定义 pothole 严重程度
我们将坑洞分为低、中或高严重程度。我们不只使用简单的边界框面积(这可能会因相机视角而变化),而是采用一种混合评分策略,同时考虑这两个因素:
- 坑洞的大小(包围盒的面积)
- 洞在框架中的位置(通常,较低的位置表明物体离相机更近)。
这两个特征都使用帧的高度进行标准化,并使用加权分数组合。如果一个坑洞在帧的底部附近且显得很大,那么它更有可能是一个严重的威胁——因此被标记为高严重性。较小且远处的坑洞得分较低。
当图像的分辨率和道路视角大致一致时,例如在行车记录仪或无人机数据集中,这种策略效果很好。
可以改进道路坑洞严重程度逻辑吗?
是的!虽然这种启发式方法快速且简单,但可以使用更先进的方法来提高准确性:
- 单目深度估计,使用MiDaS(单网络多深度估计准确性)或DPT(密集预测变换器)等模型来测量一个坑洞究竟有多远。
- 实例分割 以获取准确的坑洞边界,而不是仅仅获取边界框。
- 3D传感器或立体视觉用于捕捉物理尺寸。
在这个教程中,我们将坚持使用轻量级评分逻辑,它在速度和效果之间提供了良好的权衡。
在我们开始训练和部署YOLOv12 pothole检测器之前,让我们确保您的开发环境已正确设置。
配置您的开发环境
您需要一个安装了以下关键库的Python环境:
opencv-python
: 图像和视频处理gradio
: 构建交互式网页用户界面numpy
,scipy
,matplotlib
: 核心科学库- YOLOv12(直接从官方仓库克隆)
这是我们将使用的requirements.txt
:
git+https://github.com/sunsmarterjie/yolov12.git
opencv-python
gradio
numpy
matplotlib
scipy
一次全部安装:
pip install -r requirements.txt
一旦你一切都安排好了,我们将继续在我们的道路坑洞数据集上训练YOLOv12。
训练 YOLOv12 用于 pothole 检测
在本节中,我们将使用Roboflow,详细说明在自定义道路坑洞检测数据集上对YOLOv12进行完全微调的过程。我们还将使用损失曲线、评估指标和预测可视化来分析训练结果。