基于YOLO11的道路积水视觉检测:从数据集构建到云上训练实践
在城市内涝预警、智慧交通和防汛巡检等场景中,道路积水的快速识别是一项具有实际应用价值的技术需求。本文将围绕一个道路积水目标检测项目,分享如何利用YOLO11模型组织训练流程,并探讨将这一流程迁移至云上环境进行工程化管理的思路。内容涵盖数据集准备、标注管理、训练配置、模型评估及落地注意事项,适合对计算机视觉工程化感兴趣的开发者参考。
数据集获取
百度网盘:点击获取数据集
提取码:
yc2s链接仅作为本文配套数据资源入口,请按数据集说明合理使用。
数据集说明(来源:数据集说明表)
本系统使用的数据集名称为“道路积水yolo数据集”,项目代号为 dljsyolosjj。该数据集专门用于训练道路场景下的积水(puddle)目标检测模型。根据数据集说明表的信息,数据集共包含5275张图片,标注框总数为7155个。其中,训练集(train)图片数量为4220张,对应5744个标注框;验证集(val)图片数量为1055张,对应1411个标注框。所有图片和标注框均服务于单一类别“puddle”,即道路积水区域。数据集来源为视频抽帧与人工标注,原始视频文件为一段包含多种道路积水场景的MP4素材。

该数据集覆盖了从乡村土路到城市沥青路面的多种道路环境,积水形态从小水洼到大面积积水均有收录,为训练鲁棒的目标检测模型提供了多样化的样本基础。
业务场景与技术目标
城市道路积水检测的典型场景包括:低洼路段、隧道入口、桥下涵洞、园区内部道路等。传统方式依赖人工巡检或水位传感器,存在覆盖范围有限、响应不及时等问题。基于视频监控画面的视觉检测方案,可以在现有摄像头资源基础上,实现全天候、大范围的积水自动识别。
本项目的技术目标是通过目标检测模型,在监控画面中定位积水区域并输出边界框,为后续的预警、派单或水位估算提供视觉依据。选择YOLO11作为训练模型,主要基于其在实时性与精度之间的良好平衡,以及模型部署的灵活性。
数据集准备与云上存储建议
数据来源与标注流程
数据来源于一段道路监控视频,通过抽帧方式获取100张原始图片,并利用Label Studio工具进行人工标注。标注类别为“puddle”,标注格式为矩形边界框。

在标注过程中,需要注意以下要点:
- 对于被阴影、反光或部分遮挡的积水区域,标注人员需根据画面上下文判断边界。
- 标注框应贴合积水区域的实际轮廓,避免包含过多无关背景。
- 对于大面积积水,建议使用单个边界框覆盖完整区域,而非拆分标注。
云上存储与版本管理建议
若将本流程迁移至云上环境,数据存储与版本管理可参考以下组织方式:
- 原始数据存储:使用对象存储服务(如OSS)存放原始视频和抽帧图片,按日期或项目名称建立目录结构。例如:
oss://road-puddle/raw-video/20260710/和oss://road-puddle/frames/20260710/。 - 标注数据管理:Label Studio导出的JSON标注文件可与图片一一对应存储,同时维护一份汇总的标注索引表,便于训练时读取。
- 数据集版本化:每次标注迭代或数据增广后,为数据集打上版本标签(如
v1.0、v1.1),并将对应的图片列表和标注文件归档至同一目录,方便回溯和复现。
训练任务设计:基于YOLO11
模型选择
YOLO11是YOLO系列的最新迭代版本,在检测精度和推理速度上均有提升。其网络结构针对小目标和复杂背景进行了优化,适合道路积水这种目标尺度变化大、背景干扰多的场景。
训练配置示例
以下是一个基于YOLO11的训练配置示例,适用于本数据集:
# dataset.yaml
path: ./road-puddle-dataset
train: images/train
val: images/val
nc: 1 # 类别数量:puddle
names: ['puddle']
训练命令示例(假设使用Ultralytics框架):
yolo train model=yolo11.pt data=dataset.yaml epochs=100 batch=16 imgsz=640
关键参数说明:
- 模型权重:使用YOLO11的预训练权重(
yolo11.pt)进行迁移学习,可加速收敛并提升最终精度。 - 输入尺寸:
imgsz=640是YOLO11的常用输入尺寸,兼顾检测精度与显存占用。 - 数据增强:建议开启马赛克增强(mosaic)、随机翻转和色彩抖动,以提升模型对复杂场景的泛化能力。
- 早停策略:设置
patience=20,当验证集mAP连续20个epoch不提升时自动停止训练,避免过拟合。

训练过程中的注意点
根据训练观察,本数据集存在以下特点,需要在训练时特别关注:
- 目标尺度多样性:积水区域可能只占画面的一小部分(如一个小水洼),也可能占据大部分画面(如大面积路面积水)。YOLO11的多尺度检测头能够处理这种尺度变化,但建议在训练时开启多尺度训练(
multi-scale)以增强模型的尺度适应性。 - 复杂背景干扰:路面纹理、水面反光、路边植被等背景元素可能与积水区域在视觉上相似,容易造成误检。建议在数据增强中加入随机擦除(Random Erase)或CutOut,迫使模型关注积水本身的纹理特征。
- 极端场景处理:严重积水场景中,水面可能倒映周围建筑或天空,导致模型难以区分。对于这类样本,可考虑在训练集中增加更多标注样本,或使用对抗训练策略提升鲁棒性。
模型评估与复核
训练完成后,需要对模型在验证集上的表现进行全面评估。主要关注以下指标:
- mAP@0.5:IoU阈值设为0.5时的平均精度,反映模型的整体检测能力。
- mAP@0.5:0.95:IoU阈值从0.5到0.95的均值,对边界框定位精度要求更高。
- Precision & Recall:精确率与召回率,评估模型对积水目标的漏检和误检情况。

在复核阶段,建议对验证集中的误检(False Positive)和漏检(False Negative)样本进行人工分析。常见问题包括:
- 将路面反光区域误检为积水(高误检)。
- 对远处或小面积积水漏检(高漏检)。
- 在强光或阴影下检测不稳定。
针对这些问题,可通过补充困难样本、调整置信度阈值或使用TTA(Test Time Augmentation)进行优化。
工程化落地注意点
将训练好的YOLO11模型部署到实际业务系统中,需要考虑以下几点:
- 模型导出与优化:将PyTorch模型导出为ONNX或TensorRT格式,利用INT8量化或半精度推理加速,降低推理延迟。对于边缘设备,可进一步使用NCNN或OpenVINO进行适配。
- 推理服务架构:建议将模型封装为RESTful API或gRPC服务,部署在云服务器或边缘计算节点上。对于实时视频流场景,可采用流式推理架构,每帧图像独立处理。
- 结果后处理:对模型输出的边界框进行非极大值抑制(NMS)后,可根据业务需求进行过滤。例如,只保留面积大于一定阈值的积水区域,或对连续帧的检测结果进行时序平滑,减少单帧误检。
- 监控与告警:当模型检测到积水区域且面积超过预警阈值时,触发告警并推送至管理平台。告警信息应包括检测时间、摄像头位置、积水区域截图等。
素材配图建议
以下配图可用于文章中不同章节,帮助读者直观理解数据集、标注流程和训练结果:
数据集样本展示:使用视频抽帧图片展示道路积水场景的多样性。


Label Studio 标注界面:展示标注工具的操作界面和标注框示例。


模型验证结果:展示模型在验证集上的检测效果,包括检测框和置信度。


训练配置界面:展示YOLO11训练时的参数设置和训练过程。


总结
本文围绕一个道路积水目标检测项目,详细介绍了从数据集构建、标注管理到YOLO11模型训练的完整流程,并探讨了将这一流程迁移至云上环境进行工程化管理的思路。通过合理的数据组织、训练配置和模型优化,可以构建出适用于城市道路积水检测的视觉AI系统。未来,随着数据量的增加和模型技术的演进,该类系统在防汛预警、智慧交通等领域的应用前景将更加广阔。