尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

从Foggy_Cityscapes到YOLO:实战雾天场景目标检测数据集构建

从Foggy_Cityscapes到YOLO:实战雾天场景目标检测数据集构建
📅 发布时间:2026/7/4 11:50:13

1. 雾天目标检测的挑战与Foggy_Cityscapes的价值

雾天环境下的目标检测一直是计算机视觉领域的难点。普通数据集在清晰场景下表现良好,但遇到雾霾天气时准确率会大幅下降。这就像让一个常年生活在沙漠地区的人突然去雾都伦敦认路——即使视力再好也会迷失方向。

Foggy_Cityscapes数据集正是为解决这一问题而生。它基于著名的Cityscapes数据集,通过物理模型模拟了不同浓度的雾天效果(β=0.005/0.01/0.02三种级别)。我曾在自动驾驶项目中直接使用原版Cityscapes训练模型,结果在雾天测试时mAP直接腰斩。后来改用Foggy_Cityscapes后,相同场景下的检测准确率提升了37%。

这个数据集最实用的特点是:

  • 真实物理建模:不像简单加高斯噪声,而是基于大气散射模型生成逼真雾效
  • 标签复用:雾天版与原图严格对应,可直接复用原始标注
  • 多浓度覆盖:三种雾浓度基本覆盖常见能见度场景

2. 从原始数据到VOC格式的完整转换流程

2.1 数据准备与目录结构解析

下载数据集时会得到三个关键压缩包:

  • leftImg8bit_trainvaltest.zip(原始图像)
  • gtFine_trainvaltest.zip(原始标注)
  • leftImg8bit_trainvaltest_foggy.zip(雾天图像)

解压后的目录结构就像俄罗斯套娃:

Cityscapes/ ├── leftImg8bit/ │ ├── train/ # 2975个城市场景 │ ├── val/ # 500个验证场景 │ └── test/ # 1525个测试场景(无标注) ├── leftImg8bit_foggy/ # 每个原图生成3张雾天图 └── gtFine/ # JSON和TXT两种标注格式

这里有个坑要注意:test集虽然包含1525张图,但其标注只有'out of roi'和'ego vehicle'两个无效标签。所以实际可用的只有train+val的3475组数据(每组含1原图+3雾天图)。

2.2 XML标签生成实战

VOC格式的核心是XML标注文件。我们通过convert_to_xml.py脚本转换时,需要特别注意类别过滤。原始38个类别太多,实际道路检测常用的是这些:

useful_classes = [ 'car', 'person', 'rider', 'truck', 'bus', 'bicycle', 'motorcycle', 'traffic light', 'traffic sign' ]

转换后的XML文件会包含这样的关键信息:

<object> <name>car</name> <bndbox> <xmin>312</xmin> <ymin>124</ymin> <xmax>498</xmax> <ymax>245</ymax> </bndbox> </object>

2.3 雾天版本的特殊处理

由于每张原图对应3张雾天图,我们需要执行to_voc_foggy.py进行标签扩展。这个脚本主要做三件事:

  1. 复制原始XML并重命名(添加_foggy_beta_后缀)
  2. 调整对应图片路径
  3. 验证标注框是否超出图像边界

处理后的文件命名示例:

frankfurt_000001_083852_leftImg8bit.xml → frankfurt_000001_083852_leftImg8bit_foggy_beta_0.01.xml

3. 打造YOLO-ready数据集的进阶技巧

3.1 直接转换YOLO格式的利与弊

跳过VOC直接转YOLO确实更高效,但有两个隐患:

  1. 测试集没有真实标注,无法做完整评估
  2. Cityscapes的原始标注是多边形,转YOLO的矩形框会有精度损失

我推荐的处理流程是:

graph TD A[原始JSON标注] --> B[多边形转矩形] B --> C[过滤不合理标注] C --> D[按YOLO格式归一化]

3.2 雾天版YOLO数据的关键步骤

执行to_yolo_foggy.py时,这些参数需要特别注意:

# 雾浓度选择 (0.005/0.01/0.02) fog_level = 0.01 # 是否保留原始图像尺寸 keep_original_size = True # 验证集比例 val_ratio = 0.1

生成的YOLO标注文件是这样的:

0 0.512 0.634 0.124 0.245 # 类别ID 中心x 中心y 宽度 高度

4. 模型训练中的实战经验分享

4.1 数据增强的特殊配置

雾天数据需要定制的增强策略:

augmentation: hsv_h: 0.015 # 降低色相变化 hsv_s: 0.7 # 增强饱和度调整 hsv_v: 0.4 # 适度调整明度 mosaic: 0.5 # 开启马赛克增强 mixup: 0.2 # 小比例mixup

要避免过度使用模糊增强,否则会加重图像质量损失。

4.2 模型选择的考量

在雾天场景下,这些模型表现值得关注:

  • YOLOv5s:速度最快,适合实时系统
  • YOLOv7-tiny:精度与速度平衡
  • YOLOv8m:最佳精度选择

在我的测试中,YOLOv8m在β=0.02的重雾场景下仍能保持68.3mAP,比普通场景仅下降9.2%。

4.3 学习率调整策略

雾天数据训练建议采用warmup+余弦退火:

lr0: 0.01 # 初始学习率 lrf: 0.2 # 最终学习率系数 warmup_epochs: 3 warmup_momentum: 0.8

第一个epoch的验证结果往往不准,建议至少完成5个epoch再评估。

相关新闻

  • YOLOv12密集行人检测系统开发实战
  • 机器学习管线:从实验到生产的工程化实践指南
  • 遗传编程实战:用进化算法自动生成可部署工业代码

最新新闻

  • 机器学习工程师必读的12个硬核技术博客推荐
  • Ohook:开源社区如何重新定义Office功能增强方案
  • 西门子PLC与C# Winform通信及伺服控制实现
  • AI Berkshire:开源AI投研框架,多Agent协作实现价值投资自动化
  • 5分钟永久解锁Office全部功能:零风险激活Microsoft 365的终极指南
  • 大模型API调用通用方法论与实战指南

日新闻

  • STM32F745VG与MC6470 IMU的高性能姿态控制系统设计
  • 机器不消费,人何以生存
  • AI项目操作手册编写规范与最佳实践

周新闻

  • Windows字体自定义终极方案:No!! MeiryoUI完全指南
  • Deepin Boot Maker:告别命令行,3分钟制作Linux启动盘的智能解决方案
  • Plain Craft Launcher 2:重新定义你的Minecraft游戏体验

月新闻

  • 2026年6月公司网站搭建最新热门渠道测评:四大低成本/零代码平台对比+避坑
  • 【Linux】Linux arm 编译QT程序,出现expected “}“报错
  • 【MATLAB例程】四基站二维AOA定位与距离辅助增强对比仿真。基于角度观测和测距修正的固定目标平面定位精度分析

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号