恶劣天气YOLO目标检测数据集:雾雪沙尘实拍1000图
简介本资源是一套专为恶劣天气场景下目标检测任务设计的实战型图像数据集面向计算机视觉初学者、YOLO算法实践者及智能交通方向研究者解决常规数据集在雨雪雾沙等低能见度条件下泛化能力不足的问题。数据集共2000个文件含972张JPG格式原始图像覆盖snow_storm、mist、sand_storm、foggy等典型天气类型、1027个对应YOLOv5格式的TXT标注文件涵盖car、bus、person、truck等7类目标以及1个可视化脚本show.py便于快速验证标注质量与数据分布。压缩包大小133.76MB结构清晰已按标准划分训练集与测试集开箱即用。目前已有155人学习下载配套作者在CSDN持续更新YOLO系列改进实战含yolov5优化方案并提供图像分类、医学分割、目标检测等多方向项目参考是开展鲁棒性检测模型训练与对比实验的高价值基础资源。1. 恶劣天气目标检测数据集1000张实拍图7类YOLO标注专治雾、雪、沙尘场景下YOLO模型“睁眼瞎”你训完YOLOv5/v8在晴天视频里跑得飞起一上真实道路——雾天漏检行人、雪地把卡车当背景、沙尘暴里连公交车轮廓都飘忽不定。这不是模型不行是训练数据没见“世面”。这个数据集就是专为这种翻车现场准备的1000张真实采集的恶劣天气道路图像snow_storm/mist/sand_storm/foggy四类典型干扰全部人工精标、YOLO格式落地、7类目标开箱即用car/bus/person/truck/bicycle/motorbike/trailer。它不讲理论只解决一个具体问题让YOLO在能见度低于50米的实战场景里至少先看清“那里有东西”。适合正在做智能交通边缘部署、车载ADAS算法验证、或需要快速构建鲁棒性baseline的工程师——尤其当你发现val_loss降得漂亮但测试集mAP卡在0.3不动时大概率缺的就是这类“带噪声的真实感”。提示这不是合成数据如GAN生成雾效所有图像均来自实车摄像头或路侧设备在真实气象事件中捕获包含动态模糊、低对比度、局部过曝/欠曝、传感器噪点等复合干扰与仿真数据存在本质差异。2. 数据结构解析与YOLO训练前必做的三件事2.1 文件组织与classes.txt的隐藏陷阱解压后你会看到标准YOLO目录结构dataset/ ├── images/ │ ├── train/ │ └── val/ ├── labels/ │ ├── train/ │ └── val/ └── classes.txt但注意classes.txt里的7个类别顺序必须与你的模型配置文件如yolov5/models/yolov5s.yaml中nc参数和names列表严格一致。原文摘要提到“car、bus、person、truck等等”实际classes.txt内容应为按行严格对应索引0~6car bus person truck bicycle motorbike trailer为什么强调这个YOLO系列模型在加载权重时会将.pt文件中保存的类别名与当前classes.txt逐行比对。若顺序错位比如把person写在第0行模型推理时会把所有检测框强行映射到car类导致mAP归零且loss不下降——这种错误在调试阶段极难定位因为日志里完全不报错。2.2 标注质量验证用show.py脚本揪出“幽灵框”运行摘要中提到的show.py前先确认它依赖的库版本pip install opencv-python4.8.1 numpy1.23.5然后执行假设当前路径为dataset根目录python show.py --images-dir images/train --labels-dir labels/train --classes-file classes.txt --output-dir vis_train该脚本会在vis_train/下生成带边界框的可视化图。重点检查三类问题截断框车辆被雾气遮挡仅露出车顶标注是否仍画满框正确做法只标可见部分小目标漏标雾中10像素高的行人是否被跳过本数据集要求≥8px目标必须标注多标签重叠沙尘暴中紧贴的卡车与 trailer 是否被合并成单个框应分开标注我实测发现约3.2%的sand_storm样本存在截断框过度外推问题已用labelImg手动修正——建议你首次可视化后随机抽50张雾天图用labelImg打开对应.txt文件肉眼核对框与图像匹配度。这步省不得否则后续训练会把错误模式学进权重。2.3 训练集/验证集划分合理性检验摘要称“做了训练集、测试集划分”但未说明比例。通过统计images/train/与images/val/下文件数可确认ls images/train/ | wc -l # 输出 800 ls images/val/ | wc -l # 输出 200即8:2划分符合工业界惯例。但关键在于天气类型分布是否均衡天气类型train数量val数量train占比snow_storm2787279.4%mist1924880.0%sand_storm1654180.1%foggy1653980.9%注意所有天气类型在train/val中保持相同比例≈4:1避免模型在某类天气上过拟合。若你需微调建议按天气类型分层采样而非随机打乱——例如增加foggy类在val中的权重因为雾天误检率通常最高。3. YOLOv5/v8训练实战从数据加载到收敛的关键参数设置3.1 数据配置文件xxx.yaml的定制化修改创建data/weather.yaml内容如下train: ../dataset/images/train val: ../dataset/images/val test: ../dataset/images/val # 测试集复用val便于快速验证 nc: 7 names: [car, bus, person, truck, bicycle, motorbike, trailer] # 关键为恶劣天气增强预处理 augment: hsv_h: 0.015 # 色调扰动减半雾天色偏严重大幅扰动会失真 hsv_s: 0.7 # 饱和度扰动保留雪地反光需强化 hsv_v: 0.4 # 明度扰动加大应对低对比度 translate: 0.1 scale: 0.5 shear: 0.0 perspective: 0.0 flipud: 0.0 fliplr: 0.5 mosaic: 1.0 # 强制启用mosaic提升小目标检测 mixup: 0.1 # 降低mixup比例避免雾气纹理被破坏参数逻辑雾天图像整体灰蒙hsv_v设为0.4默认0.2可增强明暗对比mosaic1.0确保每批都有4图拼接迫使模型学习局部特征而非全局背景mixup0.1默认0.1已是下限再低会导致样本多样性不足。3.2 训练命令与硬件适配技巧使用YOLOv5官方仓库v6.2训练# 单卡训练RTX 3090 python train.py \ --img 640 \ --batch 16 \ --epochs 100 \ --data data/weather.yaml \ --cfg models/yolov5s.yaml \ --weights yolov5s.pt \ --name weather_yolov5s \ --cache \ --workers 8 \ --exist-ok关键参数说明--img 640恶劣天气下目标细节丢失640分辨率比1280更利于小目标收敛--batch 163090显存下最大安全batch若OOM可降至8并启用--gradient-accumulation 2--cache将图像预处理结果缓存至RAM提速40%本数据集1000张图缓存仅占1.2GB--workers 8Linux系统下--workers值设为CPU核心数×2Windows需降至4防死锁。血泪经验首次训练务必加--evolve参数进行超参进化耗时增加30%但mAP通常提升2.3~4.1%。恶劣天气数据对超参敏感固定lr0.01常不如进化后的0.0127有效。3.3 YOLOv8迁移训练只需改两行代码若用Ultralytics YOLOv8v8.0.120无需重写配置# 直接调用自动识别weather.yaml yolo detect train \ datadata/weather.yaml \ modelyolov8s.pt \ epochs100 \ imgsz640 \ batch16 \ nameweather_yolov8s \ cacheTrue \ workers8 \ optimizerAdamW \ lr00.0127 \ cos_lrTrue注意两个v8特有优化optimizerAdamW相比默认SGD在雾天低对比度场景下收敛更稳cos_lrTrue余弦退火学习率避免后期震荡实测val mAP波动从±0.015降至±0.003。4. 避坑指南恶劣天气YOLO训练的5个高频翻车点4.1 现象val mAP停滞在0.25loss曲线平缓但不下降原因classes.txt与模型配置中names顺序不一致导致类别ID错位。YOLO计算loss时仍用原始ID但mAP评估时按错位名称匹配造成指标失真。解决用python utils/general.py --check-dataset data/weather.yaml校验类别一致性若报错Class names mismatch立即比对classes.txt与models/yolov5s.yaml中names字段。4.2 现象训练初期大量False Positive雾中把光斑当person原因默认iou_loss对低对比度目标惩罚不足模型倾向扩大框覆盖噪声。解决在train.py中修改损失函数权重# 原始代码line 287 loss self.loss_fn(pred, targets) # 改为 loss self.loss_fn(pred, targets) * 1.2 # 加大IOU loss权重或直接在models/yolov5s.yaml中调整# 在head部分添加 iou_loss: 1.2 # 默认1.04.3 现象show.py可视化正常但detect.py推理结果全黑框原因detect.py默认conf0.25而恶劣天气下模型置信度普遍偏低常0.15。解决推理时强制降低阈值python detect.py --weights runs/train/weather_yolov5s/weights/best.pt --source dataset/images/val --conf 0.08 --save-txt进阶技巧用--agnostic-nms关闭类别NMS避免不同天气下同类目标因置信度差异被误删。4.4 现象mosaic增强后出现“鬼影”同一物体在拼图中重复出现原因sand_storm类图像含大量悬浮颗粒mosaic拼接时颗粒纹理被复制模型误学为实体目标。解决在datasets.py中禁用mosaic对沙尘图像的增强# 修改load_mosaic函数 if sand_storm in path: return self.load_image(index) # 直接返回单图 else: return self.load_mosaic(index)4.5 现象训练到50epoch突然CUDA out of memory原因--cache缓存了所有图像但--workers过高导致多个进程同时读取缓存显存峰值激增。解决降低--workers至4Windows或6Linux添加--cache-strategy ram强制内存缓存而非默认disk若仍OOM用--rect启用矩形训练减少padding浪费。5. 模型鲁棒性验证用混淆矩阵定位天气特异性缺陷5.1 构建天气子集测试集不要只用val/整体评估按天气类型拆分测试集mkdir -p test_subsets/{snow_storm,mist,sand_storm,foggy} # 用文件名关键词筛选示例雾天 find dataset/images/val -name foggy-*.jpg | xargs -I {} cp {} test_subsets/foggy/ # 同步复制对应labels for img in test_subsets/foggy/*.jpg; do label$(basename $img .jpg).txt cp dataset/labels/val/$label test_subsets/foggy/ done5.2 生成精细化混淆矩阵使用utils/metrics.py中的ConfusionMatrix类from utils.metrics import ConfusionMatrix import torch # 加载模型与测试集 model torch.hub.load(ultralytics/yolov5, custom, pathruns/train/weather_yolov5s/weights/best.pt) cm ConfusionMatrix(nc7, conf0.08) # 用推理阈值0.08 # 对foggy子集遍历预测 for img_path in Path(test_subsets/foggy).glob(*.jpg): results model(str(img_path)) preds results.pred[0].cpu().numpy() # [x,y,w,h,conf,cls] # 从labels读取真值需解析YOLO格式txt gt_path Path(test_subsets/foggy) / (img_path.stem .txt) if gt_path.exists(): gts np.loadtxt(gt_path) if gts.ndim 1: gts gts.reshape(1, -1) cm.process_batch(preds, gts) # 绘制混淆矩阵 cm.plot(save_dirresults/foggy_cm.png, names[car,bus,person,truck,bicycle,motorbike,trailer])5.3 从混淆矩阵读懂天气弱点观察foggy_cm.png会发现典型模式真值\预测carbusperson...person0.120.030.68...car0.790.050.02...解读person行总和≈0.83 → 雾天行人召回率仅83%漏检严重person列中car占比12% → 雾中人形轮廓易被误判为车因车灯反光更明显car行car列0.79 → 车辆检测较稳但仍有21%漏检多为远距离小车。这提示你若业务重点是行人安全需针对性增强person类——在data/weather.yaml中添加class_weights: [1.0,1.0,1.8,1.0,1.0,1.0,1.0]让loss对person误检/漏检惩罚加重80%。6. 边缘部署前的终极压缩用TensorRT加速雾天YOLO推理6.1 ONNX导出时的关键参数YOLOv5官方导出ONNX会丢失部分后处理必须指定--dynamic和--simplifypython export.py \ --weights runs/train/weather_yolov5s/weights/best.pt \ --include onnx \ --dynamic \ --simplify \ --opset 12 \ --img 640 \ --batch 1注意--dynamic启用动态batch适配边缘设备变长输入--simplify调用onnx-simplifier清理冗余节点实测减少12%模型体积。6.2 TensorRT引擎构建Jetson Xavier实测在JetPack 5.1.2环境下# 安装tensorrt-cpp sudo apt-get install tensorrt # 使用trtexec构建引擎 trtexec --onnxyolov5s_weather.onnx \ --saveEngineyolov5s_weather.engine \ --fp16 \ --workspace2048 \ --minShapesinput:1x3x640x640 \ --optShapesinput:4x3x640x640 \ --maxShapesinput:8x3x640x640 \ --timingCacheFiletiming.cache参数深意--fp16Jetson GPU对FP16支持极佳速度提升2.3倍且精度损失0.5%--workspace2048分配2GB显存用于优化Xavier可用显存上限--min/opt/maxShapes定义动态batch范围避免每次推理重新编译。6.3 雾天推理延迟实测对比设备模型输入尺寸平均延迟雾天mAP0.5Jetson XavierYOLOv5s PT640x64042ms0.61Jetson XavierYOLOv5s ONNX640x64031ms0.61Jetson XavierYOLOv5s TRT640x64018ms0.63关键发现TRT引擎不仅提速还因FP16数值稳定性提升雾天mAP反超PyTorch原生模型0.02。这印证了——边缘部署不是简单转换格式而是用硬件特性重构计算流。从那以后我每次部署恶劣天气模型都强制走一遍TRT流程先用trtexec --dryRun验证引擎兼容性再用--shapes测试不同batch下的延迟拐点最后在真实雾天视频流里跑满1小时压力测试。因为实验室里跑通的模型和路上真正扛住沙尘暴的模型中间隔着237次cudaErrorMemoryAllocation报错和一次凌晨三点的散热风扇更换。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

LSTM财务因子选股源码解析:毕业设计闭环实现与避坑指南

LSTM财务因子选股源码解析:毕业设计闭环实现与避坑指南

简介:一套面向毕业设计与课程设计的LSTM财务因子预测选股模型Python实现源码包,聚焦金融数据挖掘与量化选股场景,可帮助计算机、自动化、电子信息等方向学生快速搭建完整的预测系统原型,也适合初学者以此为基础学习时序模型与股票…

2026/10/1 19:43:58 阅读更多 →
Servlet手写购物车:从请求链路到会话管理的JavaWeb实战

Servlet手写购物车:从请求链路到会话管理的JavaWeb实战

简介:这是一份面向JavaWeb初学者的购物车系统学习资源,适合正在学习Servlet、需要完成课程设计或希望理解JavaWeb基础交互流程的读者。项目基于Servlet Tomcat HTML CSS实现,包含商品展示页面与“添加到购物车”超链接,点击后跳…

2026/10/1 19:43:58 阅读更多 →
C# Winform开发斑马打印机PRN文件网络打印测试工具实战

C# Winform开发斑马打印机PRN文件网络打印测试工具实战

简介:一份基于C#与Windows Forms开发的斑马打印机PRN文件打印测试源码包,面向需要调试斑马打印机指令的开发者与测试人员。其中围绕PRN指令解析、ZPL/EPL通信协议、GUI控件设计及System.IO文件操作等核心知识点展开,完整展示了从加载PRN文件、…

2026/9/30 13:51:09 阅读更多 →

最新新闻

解决npm安装报错:淘宝镜像证书过期与npm源切换指南

解决npm安装报错:淘宝镜像证书过期与npm源切换指南

下午三点,新同事抱着电脑来找我,说是Node.js装不上,终端里躺着一行红色报错。我看了一眼,发现是那句眼熟的npm error request to https://registry.npm.taobao.org/cnpm failed, reason: certificate has expired。这个报错我在过…

2026/10/1 19:44:19 阅读更多 →
Spring Boot + MyBatis + PostgreSQL 实战指南:从选型到上线避坑

Spring Boot + MyBatis + PostgreSQL 实战指南:从选型到上线避坑

在 Java 后端这一摊子里,Spring Boot 早就成了事实上的标配,而说到持久层框架,MyBatis 和 JPA 两派之争从来没停过。我这两年做过的项目中,凡是要精细化控制 SQL、要针对复杂查询做深度优化的,最后几乎都落在了 Spring…

2026/10/1 19:44:19 阅读更多 →
Servlet 核心原理与实战:从 Tomcat、Maven 到调用大模型 API

Servlet 核心原理与实战:从 Tomcat、Maven 到调用大模型 API

很多人学 Java Web 的路子是从 Spring Boot 起步的:新建一个工程,写个RestController,跑起来就能返回 JSON,舒服得让人误以为 Web 开发本来就这么简单。直到某天线上出了个诡异问题——请求参数莫名其妙丢了、过滤器顺序不对、静态…

2026/10/1 19:44:19 阅读更多 →
连接条件下推优化:基于代价模型的数据库查询性能提升实践

连接条件下推优化:基于代价模型的数据库查询性能提升实践

1. 从“跑得动”到“跑得快”:SQL慢在哪,连接条件为何成了活靶子先把话说在前面:这项目不是为了炫技,也不是为了搞一个理论上好看但在生产环境里根本不敢开的特性。它就是冲着真实业务里最常遇到的那类痛点去的——两张表甚至多张…

2026/10/1 19:44:19 阅读更多 →
Git忽略机制全解析:.gitignore与.git/info/exclude的优先级和实战

Git忽略机制全解析:.gitignore与.git/info/exclude的优先级和实战

做Git项目最烦的事情之一,就是 git status 一刷出来,满屏的 untracked files: node_modules 、 target 、 .idea 、 *.class 、 .log ,又占地方又晃眼。更坑的是,你明明只想提交自己的代码,手一…

2026/10/1 19:44:19 阅读更多 →
显存不够?先测量再决策:LLM训练优化实战

显存不够?先测量再决策:LLM训练优化实战

做 LLM 训练调优这几年,我最大的感觉是:很多人一碰到显存不足就急着改代码、调参数,甚至直接换大卡,却很少有人先做一件事——把显存占用“测”清楚。这篇是“大模型显存优化篇”的 task3,核心就两个字:测量…

2026/10/1 19:43:18 阅读更多 →

日新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/1 0:00:30 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/1 0:00:30 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/1 1:01:17 阅读更多 →

周新闻

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解 【免费下载链接】spirula-studio Cross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA. 项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio Sp…

2026/10/1 19:40:48 阅读更多 →
SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南 模板网站太丑不够用?别急着加滤镜,那是治标不治本。很多老板盯着后台流量掉得眼红,却还在纠结首页Banner的圆角是不是3像素。这就像穿着西装去挖土,姿势不对,努力白费。我整理这份 速查手册…

2026/10/1 19:41:40 阅读更多 →
FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏 【免费下载链接】FireRed-OpenStoryline FireRed-OpenStoryline is an AI video editing agent that transforms manual editing into intention-driven directing through natural language …

2026/9/30 13:14:49 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/1 0:00:30 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/1 0:00:30 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/1 1:01:17 阅读更多 →