当前位置: 首页 > article >正文

雨雾天锥桶识别掉点50%?YOLOv11+轻量去雾实战,召回率从42%提升至92%

一、项目背景恶劣天气下的自动驾驶痛点上个月在做园区自动驾驶巡检项目时遇到了一个致命问题晴天时道路锥桶识别准确率能到98%但一到小雨或者大雾天召回率直接跌到42%经常出现漏检导致车辆撞上锥桶的情况。客户要求雨雾天气下识别准确率必须达到90%以上否则项目无法验收。我试过直接用官方YOLOv11预训练权重微调也试过各种复杂的去雾算法效果都不理想。踩了无数坑后总结出雨雾天识别差不是单一问题而是数据集偏差图像退化模型特征提取能力不足三者叠加的结果。单纯靠调参或者加数据根本解决不了必须从预处理、模型结构到训练策略做全链路优化。最终我采用了轻量MSRCR去雾YOLOv11小目标优化域自适应微调的方案经过两周的调优实现了晴天准确率98.7%小雨天94.3%大雾天91.5%单张1080P图片推理速度仅18ms完全满足自动驾驶实时性要求。本文将分享所有可直接复用的代码和经验。二、技术栈选型优先保证实时性和边缘设备部署能力目标检测YOLOv11n速度最快小目标检测能力优于前代图像去雾MSRCR多尺度Retinex轻量高效CPU即可实时运行数据增强Albumentations 1.4支持雨雾模拟增强训练框架PyTorch 2.4 Ultralytics 8.3部署框架TensorRT 10.2Jetson Orin NX部署三、系统整体架构专门针对雨雾天气设计的两级处理架构将去雾增强与目标检测解耦便于单独优化车载摄像头采集图像预处理模块MSRCR实时去雾增强对比度与亮度校正YOLOv11锥桶检测非极大值抑制结果输出给自动驾驶系统四、雨雾天识别难的核心原因很多人以为雨雾天识别差只是因为图像模糊其实远不止如此大气散射效应光线被水滴散射导致目标对比度下降边缘模糊远处的小锥桶几乎和背景融为一体伪目标干扰雨滴、雾气团、路面反光会产生大量类似锥桶的纹理导致误检率飙升数据集严重偏差COCO等公开数据集中雨雾样本占比不足1%模型根本没见过这种场景特征混淆雨雾会破坏目标的形状和颜色特征模型容易把锥桶误判成垃圾桶、路牌或者树木五、核心优化方案详解5.1 第一步构建高质量雨雾锥桶数据集这是所有优化的基础没有好的数据再复杂的模型也没用。我总共构建了1500张图片的数据集其中真实雨雾样本600张在不同天气条件下实地拍摄合成雨雾样本700张用晴天图片合成晴天样本200张保证晴天效果不下降关键技巧不要只拍清晰的锥桶多拍远处的小锥桶、被雾气半遮挡的锥桶、被雨水打湿的锥桶使用Albumentations自动合成雨雾效果参数要贴近真实场景importalbumentationsasA# 真实感雨雾增强rain_fog_transformA.Compose([A.RandomRain(slant_lower-10,slant_upper10,drop_length20,drop_width1,blur_value3,brightness_coefficient0.8,rain_typedrizzle,p0.7),A.RandomFog(fog_coef_lower0.1,fog_coef_upper0.5,alpha_coef0.1,p0.6),A.RandomBrightnessContrast(brightness_limit(-0.3,0.1),contrast_limit(-0.2,0.1),p0.8)])标注时特别注意小目标小于16×16像素的锥桶也要标注这是雨雾天漏检的重灾区5.2 第二步轻量实时去雾预处理我测试了Dark Channel Prior、DehazeNet、MSRCR等多种去雾算法最终选择了MSRCR它不需要训练纯CPU即可实时运行效果足够好非常适合边缘部署。MSRCR核心代码importcv2importnumpyasnpdefmsrcr_dehaze(image,sigma_list[15,80,250],G5.0,b25.0,alpha125.0,beta46.0):多尺度Retinex色彩恢复去雾算法imagenp.float32(image)1.0# 避免log(0)retinexnp.zeros_like(image)forsigmainsigma_list:gaussiancv2.GaussianBlur(image,(0,0),sigma)retinexnp.log(image)-np.log(gaussian)retinexretinex/len(sigma_list)# 色彩恢复img_sumnp.sum(image,axis2,keepdimsTrue)img_colornp.log(alpha*image/img_sum)retinexretinex*(G*img_colorb)# 归一化min_valnp.min(retinex)max_valnp.max(retinex)retinex(retinex-min_val)/(max_val-min_val)*255returnnp.uint8(retinex)效果对比仅加入这一步预处理雨雾天召回率就从42%提升到了67%而且推理速度只增加了2ms。5.3 第三步YOLOv11模型针对性优化针对雨雾和小目标的特点对YOLOv11做三处关键修改提升输入分辨率从640×640提高到800×800小目标检测精度提升明显速度只下降15%加入CBAM注意力机制在Backbone的最后三个C2f层加入CBAM让模型自动关注锥桶区域忽略背景噪声加强P3检测头将P3层的通道数从128增加到192提升小目标特征提取能力修改yolov11n-cone.yaml配置文件backbone:-[-1,1,Conv,[64,3,2]]-[-1,1,Conv,[128,3,2]]-[-1,2,C2f,[128,True]]-[-1,1,Conv,[256,3,2]]-[-1,2,C2f,[256,True]]-[-1,1,Conv,[512,3,2]]-[-1,2,C2f,[512,True]]-[-1,1,CBAM,[512]]# 加入CBAM-[-1,1,Conv,[1024,3,2]]-[-1,2,C2f,[1024,True]]-[-1,1,CBAM,[1024]]# 加入CBAMhead:-[-1,1,Conv,[512,1,1]]-[-1,1,nn.Upsample,[None,2,nearest]]-[[-1,6],1,Concat,[1]]-[-1,2,C2f,[512,False]]-[-1,1,CBAM,[512]]# 加入CBAM-[-1,1,Conv,[192,1,1]]# P3通道数从128增加到192-[-1,1,nn.Upsample,[None,2,nearest]]-[[-1,4],1,Concat,[1]]-[-1,2,C2f,[192,False]]# P3-[-1,1,Conv,[192,3,2]]-[[-1,12],1,Concat,[1]]-[-1,2,C2f,[512,False]]# P4-[-1,1,Conv,[512,3,2]]-[[-1,9],1,Concat,[1]]-[-1,2,C2f,[1024,False]]# P5-[[15,18,21],1,Detect,[nc]]5.4 第四步域自适应微调策略先在合成雨雾数据集上预训练30轮然后在真实雨雾数据集上微调20轮微调时冻结Backbone前5层只训练后面的特征提取层和检测头。这样既可以利用合成数据的多样性又能让模型适应真实雨雾场景避免过拟合。训练命令# 第一阶段合成数据预训练yolo traindatacone_synthetic.yamlmodelyolov11n-cone.yamlepochs30imgsz800batch16# 第二阶段真实数据微调yolo traindatacone_real.yamlmodelweights/last.ptepochs20imgsz800batch8freeze5六、最终效果对比所有测试均在包含300张雨雾天图片的独立测试集上进行方案雨雾天召回率雨雾天mAP0.5推理速度(ms)误检率原生YOLOv11n 64042.1%38.7%823.5%原生YOLOv11n 80051.3%47.2%1119.8%MSRCR去雾67.5%62.3%1312.7%模型结构优化82.4%78.6%167.3%域自适应微调92.1%89.5%183.2%可以看到每一步优化都带来了明显的效果提升最终方案在保证实时性的前提下将雨雾天召回率提升了50个百分点。七、踩坑避坑指南不要用复杂的深度学习去雾算法DehazeNet、FFA-Net等虽然去雾效果好但推理速度慢而且容易引入伪影反而降低检测精度。MSRCR是工业界的最佳选择不要只在合成数据上训练合成雨雾和真实雨雾还是有差距的必须有至少30%的真实样本否则模型在实际场景中会严重掉点不要盲目提高分辨率超过1280×1280后精度提升不到5%但速度会下降50%以上800×800是最佳平衡点不要忽略误检问题雨雾天误检率很高可以通过降低置信度阈值同时提高NMS的IOU阈值来平衡不要用大模型YOLOv11n足够用YOLOv11s的速度会慢一倍精度提升不到2%完全得不偿失八、总结与展望雨雾天气下的目标检测是自动驾驶落地必须解决的问题没有银弹必须从数据、预处理、模型三个方面同时入手。本文介绍的方案已经在多个园区自动驾驶项目中落地效果稳定可靠。未来可以探索的方向实现端到端的去雾检测一体化模型进一步提升速度加入多传感器融合结合毫米波雷达的点云数据提升极端天气下的鲁棒性引入自监督学习利用大量无标注的雨雾图片提升模型泛化能力最后提醒大家工业项目的核心永远是贴近真实场景的数据只要数据足够好简单的模型也能做出惊艳的效果。

相关文章:

雨雾天锥桶识别掉点50%?YOLOv11+轻量去雾实战,召回率从42%提升至92%

一、项目背景:恶劣天气下的自动驾驶痛点 上个月在做园区自动驾驶巡检项目时,遇到了一个致命问题:晴天时道路锥桶识别准确率能到98%,但一到小雨或者大雾天,召回率直接跌到42%,经常出现漏检导致车辆撞上锥桶的…...

016、LangChain进阶:Memory、Retriever与工程化组织,才是你真正该补的部分

上一篇我们讲的是:如何把LangChain放进RAG,怎样真正地将知识库问答组织成一条可以维护的工程链路。 如果你已经打通了最短的那条链路,那么接下来你大概率会遇到两个比较实际的问题: 用户追问第二句的时候,系统却好像突然忘记了? 为什么同样是“检索资料”,项目一复杂了…...

新能源汽车整车控制器VCU学习模型:初学者的快速入门指南

新能源汽车整车控制器VCU学习模型,适用于初学者。 1、模型包含高压上下电,行驶模式管理,能量回馈,充电模式管理,附件管理,远程控制,诊断辅助功能。 2、软件说明书(控制策略说明书&am…...

YOLO+ByteTrack路口违章抓拍实战:多目标稳定追踪与违章判定

一、项目背景与目标 路口违章抓拍是智能交通的核心应用,但传统方案存在两个痛点:一是多目标遮挡时追踪ID频繁切换,导致轨迹断裂;二是违章判定依赖复杂的硬件设备,部署成本高。 本文将用YOLOv11做检测ByteTrack做追踪&a…...

瑞萨RZN2L EtherCAT从机配置全流程:从TwinCAT3驱动到IO测试(避坑指南)

瑞萨RZN2L EtherCAT从机配置实战:从环境搭建到IO测试的完整避坑手册 工业自动化领域的技术迭代从未停歇,而EtherCAT作为实时以太网通信协议中的佼佼者,其配置过程却常常让工程师们头疼不已。特别是当面对瑞萨RZN2L这样的工业级MPU时&#xff…...

智能排版:核心功能解析与效率提升实践指南

当前内容产业进入多平台分发时代,据2024年内容创作者生存报告显示,平均每个运营人员每月要适配至少8个不同渠道的内容,排版相关工作占日常工作量的42%,大量本该投入内容创意的时间被机械劳动挤占。运营人员要反复调整图文比例适配…...

Android音频调试实战:用dumpsys media.audio_flinger揪出音频卡顿的元凶

Android音频调试实战:用dumpsys media.audio_flinger揪出音频卡顿的元凶 当你在开发一款音乐播放应用时,突然收到用户反馈说音频播放时有明显的卡顿和杂音。作为开发者,你可能会感到一头雾水——是应用层的问题?还是系统底层的问题…...

数据库基础概念与体系结构 - 软考备战(二十九)

数据库系统(一) 参考资料: 终于有人把数据库讲明白了 - 数据集成与治理 - 博客园 数据库基础知识总结 | JavaGuide 一文读懂数据库中的DB、DBMS、DBS、DBAS-云社区-华为云 数据库(一):三级模式与两级映…...

AI辅助排版:设计领域的应用方法与落地实践

数字化内容生产节奏不断加快,品牌方对内容输出的频率和质量要求同步提升。不少中小设计团队因为排版效率不足,无法承接高频次的内容输出需求。特别是电商大促节点,不少中小团队一周要承接近百套商品详情页、平台活动海报、新媒体种草内容的排…...

从Urbannav真值话题到NavSatFix:手把手教你转换GPS数据格式用于ROS定位评估

从Urbannav真值到NavSatFix:ROS定位评估中的GPS数据格式转换实战 在自动驾驶和机器人定位领域,数据格式的统一性常常成为算法评估中的"最后一公里"难题。当我们使用Urbannav这类专业数据集进行多传感器融合定位算法的精度评估时,经…...

如何把MAX31865的精度榨干?STM32驱动PT100三线制测温的校准与优化实战

如何将MAX31865的精度发挥到极致:PT100三线制高精度测温实战指南 在工业自动化、实验室设备以及精密仪器控制领域,温度测量的准确性往往直接影响整个系统的可靠性和产品质量。MAX31865作为一款专为RTD(电阻温度检测器)设计的信号调…...

不止于分词:用SpringBoot+HanLP 1.7.7快速构建一个简易文本分析服务

构建企业级文本分析服务:SpringBoot与HanLP深度整合实践 在数字化转型浪潮中,文本数据处理能力已成为企业智能化升级的基础设施。传统单机版NLP工具虽然功能强大,却难以满足分布式系统的调用需求。本文将展示如何将HanLP这一优秀的中文处理工…...

从冠军方案拆解:在Jane Street预测赛中,如何用AE+MLP+XGBoost玩转模型融合?

从冠军方案拆解:在Jane Street预测赛中,如何用AEMLPXGBoost玩转模型融合? 金融时序数据预测一直是量化交易领域的核心挑战。Jane Street Market Prediction竞赛提供了一个独特的实验场,让数据科学家们在匿名化市场数据上验证模型的…...

Swift学习笔记25-函数式编程

Array的常见操作//Array的常见操作 //注意:Map和FlatMap都是映射高级函数var arr [1, 2, 3, 4] //这是这块的基础 var arr2 arr.map { $0 * 2 } //每一个元素分别乘2 print(arr2)//[2, 4, 6, 8] //map:对数组的每个元素应用指定的函数,返回一个新数组。…...

从PWM到模拟信号:低通滤波器设计的工程实践与参数权衡

1. PWM DAC基础与低通滤波器的必要性 第一次接触PWM DAC这个概念时,我完全被它的巧妙设计震惊了。在嵌入式开发中,DAC(数模转换器)资源往往非常有限,而PWM(脉宽调制)却几乎每个MCU都自带多个通道…...

告别picamera!用Picamera2在树莓派上玩转计算机视觉:从拍照到实时视频分析

树莓派视觉革命:Picamera2从入门到实战全指南 去年夏天,我在为一个智能农业监控项目调试树莓派摄像头时,突然发现传统的picamera库在新款树莓派5上完全失效——这个意外让我踏上了Picamera2的探索之旅。作为树莓派基金会官方推荐的下一代摄像…...

操作系统6(系统调用)(TODO)

1 简介 这一篇主要是涉及到了不同的权限级切换,以及系统调用的原理。 内容还是来自:https://github.com/s-matyukevich/raspberry-pi-os/tree/master/docs/lesson05 之前写裸机的时候,其实接触到了一些层级切换,主要是异常处理&…...

不是SaaS,是你可以完全掌控的CRM系统:开源+可定制+多端支持(小程序/H5),附获取方式

温馨提示:文末有资源获取方式在SaaS产品大行其道的今天,很多企业逐渐发现一个尴尬的现实:数据不在自己手里,功能无法按需调整,每月的订阅费还像无底洞。有没有一种方案,既能拥有完整的系统能力,…...

AD20封装库疑难杂症:从“Footprint Not Found”到ECO一键修复

1. 当AD20大喊"Footprint Not Found"时,到底发生了什么? 每次看到AD20弹出"Footprint Not Found"的红色警告框,我都忍不住想吐槽:明明封装库就在那里,为什么软件就是找不到?这个问题困…...

表格解析问题第八届:高并发内存动态脱敏性能竞速一、课题背景 在数据动态脱敏业务场景中,数据在内存中的脱敏处理时间直接影响最终数据脱敏的效率,从而影响用户通过动态脱敏应用查询数据库的感

# K 知识库分类结果分析报告知识库id10088 杭州分行知识库 317387244825804800> 生成时间: 2026-04-17 17:39:22> 总记录数: 269> LLM 调用次数: 5## 0. 执行摘要**质量评分**: 4.0/5.0| 指标 | 数值 ||------|------|| 总文档数 | 269 || 有效知识 | 252 (93.7%) ||…...

012、张量与数据布局:内存模型与对齐策略

012、张量与数据布局:内存模型与对齐策略 上周调一个卷积性能问题,在某个边缘设备上跑得比预期慢了三倍。用perf抓热点发现大量时间花在非对齐内存访问上——明明数据尺寸都是4的倍数,为什么还会不对齐?最后定位到问题:张量在内存中的布局和编译器假设的不一致,导致生成…...

011、算子中间表示概述:计算图与算子抽象

011、算子中间表示概述:计算图与算子抽象 最近在优化一个推理引擎时遇到个头疼的问题:模型在GPU上跑得好好的,移植到边缘设备上就出精度问题。用传统调试手段跟了三天,最后发现是某个卷积算子在特定输入形状下触发了厂商驱动里的未公开量化行为。这件事让我重新审视算子中…...

别再让Copilot绕过你的Security Gate!:实时拦截高危生成代码的eBPF+LLM Guard联合审查方案(已通过ISO 27001渗透验证)

第一章:智能代码生成与代码审查流程整合 2026奇点智能技术大会(https://ml-summit.org) 现代软件工程实践中,智能代码生成已不再孤立运行于开发环境边缘,而是深度嵌入持续集成与代码审查(CI/CR)主干流程。当开发者提交…...

Python脚本驱动:AutoCAD Plant 3D中槽式垂直三通参数化建模实战

1. 为什么需要参数化建模槽式垂直三通? 在管道工程设计领域,槽式垂直三通是最常见的管件之一。传统手动建模方式需要反复绘制草图、拉伸实体、布尔运算,一个简单的三通模型可能要花费设计师半小时。当遇到非标尺寸或批量修改时,这…...

STM32调试进阶:在CLion中利用OpenOCD和SVD文件实现外设寄存器可视化调试

STM32调试进阶:在CLion中利用OpenOCD和SVD文件实现外设寄存器可视化调试 当STM32开发进入硬件调试阶段,传统的变量监视和断点调试往往难以满足深度需求。本文将揭示如何通过CLionOpenOCDSVD三位一体的方案,将调试视角从软件层面延伸到硬件寄存…...

AI辅助编程之生成测试用例

如大家所了解的,AI可以辅助生成测试用例。通过机器学习算法,AI能够理解代码的功能和逻辑,自动创建覆盖广泛的测试场景,确保软件的稳定性和可靠性。 让 AI 帮忙写测试用例着实是一种享受。我身边的一些程序员笑称:自己…...

043.Jetson上使用TensorRT加速YOLO模型推理:从踩坑到丝滑部署

一、深夜调不通的推理速度 上周三凌晨两点,我在Jetson Xavier NX上盯着终端输出发呆。明明已经转好了TensorRT模型,推理速度却只比原生PyTorch快了不到10%。风扇狂转,温度飙升,但性能提升微乎其微——这不对劲。 问题出在哪儿?是模型转换时精度损失太大导致后处理变慢?…...

低代码平台,开启企业数字化创新新时代!

低代码平台,引领企业数字化创新开发之路在当今数字化飞速发展的时代,企业对于应用程序的开发需求日益增长。然而,传统的开发方式往往面临着诸多挑战,如开发周期长、成本高、技术门槛高等等。低代码平台的出现,为企业带…...

从UML到LLM,AI设计模式生成全链路拆解,深度解析SITS2026现场验证的8项关键指标

第一章:SITS2026现场验证的AI设计模式生成全景图 2026奇点智能技术大会(https://ml-summit.org) 在SITS2026现场验证环境中,AI设计模式生成已突破传统模板驱动范式,演进为融合实时反馈、多模态约束解析与可验证性注入的动态生成系统。该全景…...

终极指南:如何用SuperPoint彻底解决视觉特征提取难题

终极指南:如何用SuperPoint彻底解决视觉特征提取难题 【免费下载链接】SuperPoint Efficient neural feature detector and descriptor 项目地址: https://gitcode.com/gh_mirrors/su/SuperPoint 你在处理图像匹配、SLAM或三维重建时,是否经常遇到…...