改进YOLOv3!IA-YOLO:恶劣天气下的目标检测
恶劣天气条件下从低质量图像中定位目标还是极具挑战性的任务。现有的方法要么难以平衡图像增强和目标检测任务,要么往往忽略有利于检测的潜在信息。本文提出了一种新的图像自适应YOLO (IA-YOLO)框架,可以对每张图像进行自适应增强,以提高检测性能。实验结果证明了IAYOLO方法在雾天和弱光情况下的有效性。

Image-Adaptive YOLO for Object Detection in Adverse Weather Conditions论文: https://arxiv.org/abs/2112.08088
代码: https://github.com/wenyyu/Image-Adaptive-YOLO
虽然基于深度学习的目标检测方法在传统数据集上取得了良好的效果,但在恶劣天气条件下从低质量图像中定位目标仍然具有挑战性。现有的方法要么难以平衡图像增强和目标检测任务,要么往往忽略有利于检测的潜在信息。
为了缓解这一问题,本文提出了一种新的图像自适应YOLO (IA-YOLO)框架,可以对每张图像进行自适应增强,以提高检测性能。针对YOLO探测器的恶劣天气条件,提出了一种可微分的图像处理(DIP)模块,并利用小型卷积神经网络(CNN-PP)对其参数进行预测。
IA-YOLO以端到端的方式学习CNN-PP和YOLOv3,这确保CNN-PP可以学习适当的DIP,以弱监督的方式增强图像进行检测。

本文提出的IA-YOLO方法可以在正常和恶劣天气条件下自适应处理图像。实验结果证明了IAYOLO方法在雾天和弱光情况下的有效性。
一、所提方法
在恶劣天气条件下拍摄的图像,由于特定天气信息的干扰,能见度较差,导致目标检测困难。为了解决这一挑战,本文提出了一种图像自适应检测框架,通过去除特定天气信息并揭示更多潜在信息。如图2所示,整个管道由一个基于cnn的参数预测器(CNNPP)、一个可微分图像处理模块(DIP)和一个检测网络组成。首先调整输入图像的大小为256x256,并将其输入到CNN-PP,以预测DIP的参数。然后,将经过DIP模块滤波后的图像作为YOLOv3检测器的输入。作者提出了一种端到端的混合数据训练方案,该方案具有检测损失,使CNN-PP能够学习适当的DIP,以弱监督方式增强图像的目标检测。

DIP Module
图像滤波器的设计应遵循可微性、分辨率独立的原则。对于基于梯度的CNN-PP优化,滤波器应该是可微的,以允许通过反向传播训练网络。由于CNN在处理高分辨率图像(如4000×3000)时会消耗大量的计算资源,所以在本文中,从下采样的大小为256×256的低分辨率图像中学习滤波器参数,然后将相同的滤波器应用到原始分辨率的图像中。因此,这些过滤器需要独立于图像分辨率。
我们提出的DIP模块由六个可微滤波器组成,具有可调超参数,包括Defog、White Balance(WB)、Gamma、Contrast、Tone和Sharpen。标准的颜色和色调操作符,如WB、Gamma、Contrast和Tone,可以表示为像素级滤波器。因此,设计的滤波器可以分为雾化、像素化和锐化。在这些滤波器中,除雾滤波器是专门为大雾场景设计的。具体情况如下。
1、像素级滤波器
像素级滤波器映射一个输入像素值 ��=(��,��,��) 转换为输出像素值 ��=(��,��,��),其中 (�,�,�)分别表示红、绿、蓝三个颜色通道的值。表1列出了四个像素级过滤器的映射函数,其中第二列列出了在本文的方法中要优化的参数。WB和Gamma是简单的乘法和功率变换。显然,它们的映射函数对于输入图像和参数都是可微的。

设计了可微对比度滤波器,输入参数设置原始图像和完全增强图像之间的线性插值。所示表1,映射函数中 ��(��) 的定义如下:

这里将tone 滤波器设计为一个单调的分段线性函数。用 � 参数学习tone 滤波器,用 {�0,�1,...,��−1} 表示,tone 曲线的点记为 (�/�,��/��),其中 ��=∑�=0�−1��。此外,映射函数用可微参数表示,这使得函数对于输入图像和参数都是可微的,如下所示

2、锐化滤波器
图像锐化可以突出图像的细节。就像未锐化掩模技术(Polesel, Ramponi, and Mathews 2000),锐化过程可以描述如下:
![]()
其中 �(�) 为输入图像, ���(�(�)) 为高斯滤波器, � 为正缩放因子。这个锐化操作对于 � 和 � 都是可微的。注意,锐化程度可以通过优化 � 调优目标检测性能。
3、除雾滤波器
基于暗通道先验方法设计了一个具有可学习参数的除雾滤波器。基于大气散射模型,朦胧图像的形成可以表述为:

其中 �(�) 为雾天图像, �(�) 为场景亮度。A为全球大气光, �(�) 为介质透射图,定义为:
![]()
其中 � 为大气的散射系数, �(�) 为场景深度。
为了恢复干净图像 �(�) ,关键是获取大气光A和透射图 �(�) 。为此,首先计算暗通道图,并选择最亮的1000个像素。然后,对雾霾图像 �(�) 的1000个像素平均估计A。
根据上式,可以推导出 �(�) 的近似解如下:

进一步介绍一个参数 � 除雾程度控制方法如下:

由于上面的操作是可微的,可以优化 � 通过反向传播使除雾滤波器更有利于雾天图像的检测。
CNN-PP Module
在相机图像信号处理(ISP)管道中,通常使用一些可调滤波器进行图像增强,其超参数由经验丰富的工程师通过视觉检查手动调整。
通常,这样的调优过程是非常笨拙和昂贵的,以找到合适的参数,广泛的场景。为了解决这一局限性,建议使用一个较小的CNN作为参数预测器来估计超参数,这是非常有效的。
以雾天场景为例,CNN-PP的目的是通过了解图像的全局内容,如亮度、颜色和色调以及雾的程度来预测DIP的参数。因此,下采样图像足以估计这些信息,可以大大节省计算成本。对于任意分辨率的输入图像,我们简单地使用双线性插值将其采样到256×256分辨率。如图2所示,CNN-PP网络由5个卷积块和2个全连接层组成。
每个卷积块包括一个带有stride=2的3 × 3卷积层和一个LeakyRelu。最后的全连接层输出DIP模块的超参数。这5个卷积层的输出通道分别为16、32、32、32和32。当参数总数为15时,CNN-PP模型只包含165K个参数。
Detection Network Module
在本文中,选择one-stage检测器YOLOv3作为检测网络。与之前的版本相比,YOLOv3基于ResNet的思想设计了darknet-53,由连续的3×3和1×1卷积层组成。通过对多尺度特征图进行预测,实现多尺度训练,从而进一步提高检测精度,特别是对小目标的检测精度。采用了与原来相同的网络结构和损失函数。
Hybrid Data Training
为了在正常和恶劣天气条件下都能达到理想的检测性能,采用了IA-YOLO混合数据训练方案。算法1总结了提出方法的训练过程。
在输入到网络进行训练之前,每一幅图像都有2/3的概率被随机添加某种雾或被转换为微光图像。无论是普通的还是合成的低质量训练数据,整个过程都是端到端训练,使用YOLOv3检测损失,确保IA-YOLO中的所有模块都可以相互适应。

因此,CNN-PP模块在不手动标注GT真实图像的情况下,受到检测损失的弱监督。混合数据训练模式确保IA-YOLO可以根据每张图像的内容自适应处理图像,从而实现较高的检测性能。
二、实验
指标如下:

可视化结果:



参考文献
[1].Image-Adaptive YOLO for Object Detection in Adverse Weather Conditions
Illustrastion by By Marina Mogulskaya from icons8
相关文章:
改进YOLOv3!IA-YOLO:恶劣天气下的目标检测
恶劣天气条件下从低质量图像中定位目标还是极具挑战性的任务。现有的方法要么难以平衡图像增强和目标检测任务,要么往往忽略有利于检测的潜在信息。本文提出了一种新的图像自适应YOLO (IA-YOLO)框架,可以对每张图像进行自适应增强,以提高检测…...
Vue路由跳转的几种方式
1.this. $router.push( ) 跳转到指定的URL,在history栈中添加一个记录,点击后退会返回上一个页面。 1. 不带参数// 字符串this.$router.push(/home)this.$router.push(/home/first)// 对象this.$router.push({path:/home})this.$router.push({ path: /…...
TiDB x 汉口银行丨分布式数据库应用实践
汉口银行是一家城市商业银行,近年来专注科技金融、民生金融等领域。在数据库国产化改造中,汉口银行引入了 TiDB 数据库,并将其应用在重要业务系统:头寸系统中,实现了一栈式的数据服务,同时满足了高并发、低…...
uci机器学习数据库简介
UCI(University of California, Irvine)机器学习数据库是经过精心整理的、用于研究和开发机器学习算法的数据集合。UCI机器学习数据库是一个公开的、广泛使用的数据集合,它由加州大学欧文分校的计算机科学系维护。该数据库中包含了许多数据集…...
多人协作使用git如何解决冲突?
什么情况会产生冲突 git merge XXX(合并分支时的冲突): 当你尝试将一个分支的更改合并到另一个分支时,如果两个分支都修改了相同的文件的相同部分,Git 将无法自动解决冲突,因此会发生冲突。你需要手动解决这些冲突,然后…...
基于【逻辑回归】的评分卡模型金融借贷风控项目实战
背景知识: 在银行借贷过程中,评分卡是一种以分数形式来衡量一个客户的信用风险大小的手段。今天我们来复现一个评分A卡的模型。完整的模型开发所需流程包括:获取数据,数据清洗和特征工程,模型开发,…...
企业拉美跨境出海面对时延情况怎么办?
随着全球化不断发展,中国企业也不断向海外拓展业务,开拓市场,增加收入来源,扩大自身品牌影响力。然而出海企业面临不同以往的困难和挑战,在其中不可避免面临的跨境网络时延问题,如何选择区域进行部署企业业…...
【vector题解】只出现一次的数字 | 电话号码的数字组合
只出现一次的数字 力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 给你一个整数数组 nums,其中恰好有两个元素只出现一次,其余所有元素均出现两次。 找出只出现一次的那两个元素。你可以按 任意顺序 返回答案。 你必须设计并…...
VS2022 开发方式
使用 C# 在VS 2022 上开发时,发现有多种项目类型可以创建。这些类型放一起容易搞混,于是记录一下各种类型的区别。 这里主要介绍windows控制台程序、MFC程序、WPF程序、WinForm程序的特点。 创建哪种应用? 创建控制台应用 Windows控制台程序…...
【Python语言速回顾】——数据可视化基础
目录 引入 一、Matplotlib模块(常用) 1、绘图流程&常用图 编辑 2、绘制子图&添加标注 编辑 3、面向对象画图 4、Pylab模块应用 二、Seaborn模块(常用) 1、常用图 2、代码示例 编辑 编辑 编辑 …...
java实现pdf文件添加水印,下载到浏览器
java实现pdf文件添加水印,下载到浏览器 添加itextpdf依赖 <dependency><groupId>com.itextpdf</groupId><artifactId>itextpdf</artifactId><version>5.5.8</version> </dependency>文件下载到浏览器和指定路径 …...
代码随想录算法训练营第四十一天丨 动态规划part04
01背包理论基础 见连接:代码随想录 416. 分割等和子集 思路 01背包问题 背包问题,大家都知道,有N件物品和一个最多能背重量为W 的背包。第i件物品的重量是weight[i],得到的价值是value[i] 。每件物品只能用一次,求解…...
PyCharm免费安装和新手使用教程
简介 PyCharm是一款由JetBrains公司开发的Python集成开发环境(IDE)。它提供了一系列强大的功能,包括自动代码完成、语法高亮、自动缩进、代码重构、调试器、测试工具、版本控制工具等,使开发者可以更加高效地开发Python应用程序。…...
使用Python的Scikit-Learn进行决策树建模和可视化:以隐形眼镜数据集为例
决策树是一种强大的机器学习算法,它在数据挖掘和模式识别中被广泛应用。决策树模型可以帮助我们理解数据中的模式和规则,并做出预测。在本文中,我们将介绍如何使用Python的Scikit-Learn库构建决策树模型,并使用Graphviz进行可视化…...
开源软件:释放创新的力量,改变数字世界的游戏规则
在充满活力的技术领域,创新是至高无上的,有一种方法已获得显著的吸引力——开源软件。开源软件凭借其透明、协作和无限可能性的精神,彻底改变了我们开发、共享和定制应用程序的方式。从操作系统到数据分析工具,其影响跨越了多个领…...
【QT】鼠标常用事件
新建项目 加标签控件 当鼠标进去,显示【鼠标进入】,离开时显示【鼠标离开】 将QLable提升成自己的控件,然后再去捕获 添加文件 改继承的类名 提升类 同一个父类,可以提升 效果 现在代码就和Qlabel对应起来了。 在.h中声明&…...
LuatOS-SOC接口文档(air780E)--mlx90640 - 红外测温(MLX90640)
常量# 常量 类型 解释 mlx90640.FPS1HZ number FPS1HZ mlx90640.FPS2HZ number FPS2HZ mlx90640.FPS4HZ number FPS4HZ mlx90640.FPS8HZ number FPS8HZ mlx90640.FPS16HZ number FPS16HZ mlx90640.FPS32HZ number FPS32HZ mlx90640.FPS64HZ number FPS6…...
java连接本地数据库可以简写为///
java连接数据库配置文件写为: server:port: 8091 spring:application:name: user-managerdatasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/user?serverTimezoneAsia/Shanghai&characterEncodingutf-8username: root…...
基于springboot漫画动漫网站
基于springbootvue漫画动漫网站 摘要 基于Spring Boot的漫画动漫网站是一个精彩的项目,它结合了现代Web开发技术和漫画爱好者的热情。这个网站的目标是为用户提供一个便捷的平台,让他们能够欣赏各种漫画和动漫作品,与其他爱好者分享他们的兴趣…...
autoFac 生命周期 试验
1.概述 autoFac的生命周期 序号名称说明1InstancePerDependency每次请求都创建一个新的对象2InstancePerLifetimeScope同一个Lifetime生成的对象是同一个实例3SingleInstance每次都用同一个对象 2.注 InstancePerLifetimeScope 同一个Lifetime生成的对象是同一个实例&#x…...
国防科技大学计算机基础课程笔记02信息编码
1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制,因此这个了16进制的数据既可以翻译成为这个机器码,也可以翻译成为这个国标码,所以这个时候很容易会出现这个歧义的情况; 因此,我们的这个国…...
云计算——弹性云计算器(ECS)
弹性云服务器:ECS 概述 云计算重构了ICT系统,云计算平台厂商推出使得厂家能够主要关注应用管理而非平台管理的云平台,包含如下主要概念。 ECS(Elastic Cloud Server):即弹性云服务器,是云计算…...
解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八
现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet,点击确认后如下提示 最终上报fail 解决方法 内核升级导致,需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...
linux 下常用变更-8
1、删除普通用户 查询用户初始UID和GIDls -l /home/ ###家目录中查看UID cat /etc/group ###此文件查看GID删除用户1.编辑文件 /etc/passwd 找到对应的行,YW343:x:0:0::/home/YW343:/bin/bash 2.将标红的位置修改为用户对应初始UID和GID: YW3…...
vue3 定时器-定义全局方法 vue+ts
1.创建ts文件 路径:src/utils/timer.ts 完整代码: import { onUnmounted } from vuetype TimerCallback (...args: any[]) > voidexport function useGlobalTimer() {const timers: Map<number, NodeJS.Timeout> new Map()// 创建定时器con…...
UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)
UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中,UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化…...
docker 部署发现spring.profiles.active 问题
报错: org.springframework.boot.context.config.InvalidConfigDataPropertyException: Property spring.profiles.active imported from location class path resource [application-test.yml] is invalid in a profile specific resource [origin: class path re…...
基于Java Swing的电子通讯录设计与实现:附系统托盘功能代码详解
JAVASQL电子通讯录带系统托盘 一、系统概述 本电子通讯录系统采用Java Swing开发桌面应用,结合SQLite数据库实现联系人管理功能,并集成系统托盘功能提升用户体验。系统支持联系人的增删改查、分组管理、搜索过滤等功能,同时可以最小化到系统…...
Proxmox Mail Gateway安装指南:从零开始配置高效邮件过滤系统
💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「storms…...
【SpringBoot自动化部署】
SpringBoot自动化部署方法 使用Jenkins进行持续集成与部署 Jenkins是最常用的自动化部署工具之一,能够实现代码拉取、构建、测试和部署的全流程自动化。 配置Jenkins任务时,需要添加Git仓库地址和凭证,设置构建触发器(如GitHub…...
