Image-Adaptive YOLO for Object Detection in Adverse Weather Conditions(IA-YOLO)

1、总体概述

基于深度学习的目标检测在常规条件的数据集可以获得不错的结果,但是在环境、场景、天气、照度、雾霾等自然条件的综合干扰下,深度学习模型的适应程度变低,检测结果也随之下降,因此研究在复杂气象条件下的目标检测方法就显得尤为重要。现有的方法在增强图像和目标检测之间很难做到平衡,有的甚至忽略有利于检测的信息。

本文为了解决上述问题,提出了IA-YOLO架构,该架构可以自适应的增强图像,以获得更好的检测结果。文中提出一个可微分的图像处理模块DIP,DIP使用轻量级的深度学习网络(CNN-PP)学习其参数,用以提高复杂天气状况下的目标检测性能。将DIP插入YOLOV3中,直接使用原有检测模型的分类和回归损失来弱监督DIP模块的参数,进而可以使用DIP模块进行图像增强。IA-YOLO代码tensorflow版本链接

2、IA-YOLO整体架构

高分辨率的图像(如1920*1080),缩放到低分辨率的图像(256*256),低分辨率的图像通过一个轻量级的CNN-PP模块,学习一组参数,文中在去雾过程中参数为15个,因此输出为【N,15】;高分辨率的图像,依次通过去雾、白平衡、Gamma增强、Tone、对比度Contrast、锐化Sharpen进行图像的增强操作,这个过程可以看作是图像的预处理阶段,预处理增强过后的图片,送入传统的YOLOV3检测器进行目标物体的检测,使用预测框和GT框的之间的分类和回归损失进行整个网络结构的监督,进而使得DIP模块学到自适应的参数。

3、可微过滤器介绍

3.1 Pixel-wise Filters

像素级的过滤器实际上就是对输入图像每个像素R、G、B三个通道的数值通过一定的映射,输出相对应的R、G、B三个通道的数值。文中提到四个Pixel-wise Filters,它们的映射关系函数如表所示。

由表可知,WB和Gamma都是通过简单的乘法以及幂指数变化来进行像素值的转换,因此,它们对于输入图像和需要学习的参数来说都是可微分的。

对于contrast的可微分设计,作者采用如下三个公式完成:

Lum(P_{i}) = 0.27r_{i} + 0.67g_{i}+ 0.06b_{i}              EnLum(P_{i}) =\frac{1}{2}(1-\cos (\pi\times (Lum(P_{i})) ))

En(P_{i}) = P_{i} \times \frac{EnLum(P_{i})}{Lum(P_{i}) }

对于Tone滤波器,作者将其设计成为一个单调分段函数,学习Tone filter需要使用L个参数,参数分别为\left \{ t_{0},t_{1},...,t_{L-1} \right \},tone曲线的点可表示为\left ( k/L,T_{k}/T_{L} \right ),其中T_{k} = \sum_{i=0}^{k-1}t_{l}。最终的映射函数为:

P_{o} = \frac{1}{T_{L}}\sum_{j=0}^{L-1}clip(L.P_{i}-j,0,1)t_{k}

3.2 Sharpen Filter

图像锐化可以凸显图像的细节信息,作者使用如下公式进行图像的锐化:

F(x,\lambda )=I(x)+\lambda (I(x)-Gau(I(x)))

其中,I(x)是输入图像,Gau(I(x))是对图像进行高斯变换,\lambda是一个大于0的缩放比例系数。

3.3 Defog Filter

去雾模型主要就是使用了大气散射模型,结合暗通道先验进行推算初来的结果,其中大气散射模型公式如下所示:

I(x) = J(x)t(x)+A(1-t(x))

其中A是全球大气光值,t(x)是转换参数,其定义如下:

t(x) = e^{-\beta }d(x)

去雾模型的具体过程参考之前的文章:Single Image Haze Removal Using Dark Channel Prior(暗通道先验)

4、CNN-PP模块

由前述网络的整体框架可知,CNN-PP是一个轻量级的全卷积网络,其输入是一个低分辨率的256*256图像,输出是一个【N,15】的向量,网络的具体结构可以看文中具体描述:

作者使用tensorflow实现的具体代码如下:

def extract_parameters(net, cfg, trainable):output_dim = cfg.num_filter_parameters# net = net - 0.5min_feature_map_size = 4print('extract_parameters CNN:')channels = cfg.base_channelsprint('    ', str(net.get_shape()))net = convolutional(net, filters_shape=(3, 3, 3, channels), trainable=trainable, name='ex_conv0',downsample=True, activate=True, bn=False)net = convolutional(net, filters_shape=(3, 3, channels, 2*channels), trainable=trainable, name='ex_conv1',downsample=True, activate=True, bn=False)net = convolutional(net, filters_shape=(3, 3, 2*channels, 2*channels), trainable=trainable, name='ex_conv2',downsample=True, activate=True, bn=False)net = convolutional(net, filters_shape=(3, 3, 2*channels, 2*channels), trainable=trainable, name='ex_conv3',downsample=True, activate=True, bn=False)net = convolutional(net, filters_shape=(3, 3, 2*channels, 2*channels), trainable=trainable, name='ex_conv4',downsample=True, activate=True, bn=False)net = tf.reshape(net, [-1, 4096])features = ly.fully_connected(net,cfg.fc1_size,scope='fc1',activation_fn=lrelu,weights_initializer=tf.contrib.layers.xavier_initializer())filter_features = ly.fully_connected(features,output_dim,scope='fc2',activation_fn=None,weights_initializer=tf.contrib.layers.xavier_initializer())return filter_features

5、训练流程

作者在构建数据集的时候需要区分是雾天数据还是低照度数据,训练的每一个batch数据,其中的每一张图片有\frac{2}{3}的几率随机加上随机雾或者随机亮度变化,这样可以使得模型对于雾天或者低照度环境有更大的适应性。由于在训练过程中随机生成雾天图像会让整个训练时长成倍增加,因此,作者在线下完成雾天图像的生成。

其中雾天生成数据的主要代码如下所示:存疑的点是td = math.exp(-beta * d)这个公式,按照公式和自身理解,感觉应该是td = math.exp(-beta )d

def AddHaz_loop(img_f, center, size, beta, A):(row, col, chs) = img_f.shapefor j in range(row):for l in range(col):d = -0.04 * math.sqrt((j - center[0]) ** 2 + (l - center[1]) ** 2) + sizetd = math.exp(-beta * d)img_f[j][l][:] = img_f[j][l][:] * td + A * (1 - td)return img_f

6、实验结果

雾天检测效果:

低照度检测结果:

消融试验针对不同的filter进行的对比,可以看到具体结果如下:

 总体来说,IA-YOLO使用可微分的filter,使得图像在进入目标检测器之前进行增强操作,有效提高了最终的目标检出性能。

——END——

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/578602.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

代码随想录算法训练营 DAY 24 | 回溯理论基础 77.组合 + 剪枝优化

回溯理论 回溯法就是递归函数,纯暴力搜索 解决的问题 组合(无顺序) 1 2 3 4 给出大小为2的所有组合 切割字符串 子集问题 1 2 3 4,子集有1 2 3 4,12,13,14,…123 124… 排列(有顺序) 棋盘…

K8s Pod亲和性、污点、容忍度、生命周期与健康探测详解(中)

🐇明明跟你说过:个人主页 🏅个人专栏:《Kubernetes航线图:从船长到K8s掌舵者》 🏅 🔖行路有良友,便是天堂🔖 在上一章节中,我们详细探讨了Pod的亲和性&…

root_fs文件系统结构分析和内核加载流程

目录 概述 1 根文件系统下目录介绍 2 文件系统内容分析 2.1 etc/inittab代码分析 2.2 /etc/init.d/rcS 代码分析 2.3 /etc/mdev.conf代码分析 2.3.1 功能概述 2.3.2 /etc/mdev.conf的详细代码 2.4 /etc/init.d/rcS的源代码文件 3 分析内核中加载root_fs的流程 3.1 调…

centos7配置阿里云的镜像站点作为软件包下载源

目录 1、备份 2、下载新的 CentOS-Base.repo 到 /etc/yum.repos.d/ 3、测试 阿里镜像提供的配置方法:centos镜像_centos下载地址_centos安装教程-阿里巴巴开源镜像站 1、备份 [rootlocalhost ~]# mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentO…

[Linux]基础IO(上)--理解文件系统调用、文件描述符、万物皆文件

一、文件的理解 每种语言都有进行文件操作的函数接口,例如C语言的fopen、fwrite、fprintf等等,但是进行文件操作的前提是代码已经跑起来,因为文件的打开与关闭要通过CPU来运行程序代码,所以打开文件的本质是进程打开文件&#xff…

2024 ccfcsp认证打卡 2021 12 01 序列查询

2021 12-1 序列查询 题解1题解2区别第一种算法:第二种算法: 题解1 import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc new Scanner(System.in);// 输入n表示商品数目,N表示总数int n sc.n…

ChatGPT如何升级为GPT-4在国内

通过 WildCard 可以把ChatGPT升级为GPT-4 地址 1: 2155 Bailey Hill Rd 城市: Eugene 邮编: 97405 州: Oregon ChatGPT Plus/Team 一键升级,几分钟即可自动升级到 ChatGPT Plus。 选择我的邮箱账号符合要求 复制这个页面的链接即可 复制上面的link 到请在…

Harbor部署

Harbor部署 下载和安装 github下载地址:https://github.com/goharbor/harbor/releases 解压和配置 # 解压tgz包 tar -zxvf harbor-offline-installer-v2.10.1.tgz # 进入目录后进行复制配置文件 cd harbor/ # 创建一个配置文件 cp harbor.yml.tmpl harbor.yml …

Oracle利用BBED恢复崩溃实例(ORA-01092,ORA-00704,ORA-01578)

BBED修复数据损坏引起的数据库崩溃(ORA-01092,ORA-00704,ORA-01578)(2021年某苏州国企的案例) 1.Symptom 用户一个边缘系统出现数据文件损坏,且没有备份,数据库无法启动 报错如下,发现是oracle bootstra…

pnpm、monorepo分包管理、多包管理、npm、vite、前端工程化、保姆级教程

浅尝pnpm monorepo 多包管理方案 💡tips: 创建pnpm monorope多包管理框架流程 初始化 mkdir taurus & cd taurus pnpm init创建基础文件 创建文件pnpm-workspace.yaml packages:- packages/**创建文件夹packages/ -packages/ -package.json -pnpm-workspace…

Net8 ABP VNext完美集成FreeSql、SqlSugar,实现聚合根增删改查,完全去掉EFCore

没有基础的,请参考上一篇 彩蛋到最后一张图里找 参考链接 结果直接上图,没有任何业务代码 启动后,已经有了基本的CRUD功能,还扩展了批量删除,与动态查询 动态查询截图,支持分页,排序 实现原理…

《让你的时间多一倍》逃离时间陷阱,你没有自己想的那么懒 - 三余书屋 3ysw.net

让你的时间多一倍 今天我们来阅读法比安奥利卡尔的作品《让你的时间多一倍》。或许你会心生疑虑,这本书是否又是一本沉闷的时间管理指南?但我要告诉你的是,尽管时间管理这个话题已经为大众所熟知,这本书却为我们揭示了一个全新的…