网站建设小技巧,江都区城乡建设局网站马局,南昌专业的电商网站开发公司,湖北阳新县建设局网站1、总体概述 
基于深度学习的目标检测在常规条件的数据集可以获得不错的结果#xff0c;但是在环境、场景、天气、照度、雾霾等自然条件的综合干扰下#xff0c;深度学习模型的适应程度变低#xff0c;检测结果也随之下降#xff0c;因此研究在复杂气象条件下的目标检测方法… 
1、总体概述 
基于深度学习的目标检测在常规条件的数据集可以获得不错的结果但是在环境、场景、天气、照度、雾霾等自然条件的综合干扰下深度学习模型的适应程度变低检测结果也随之下降因此研究在复杂气象条件下的目标检测方法就显得尤为重要。现有的方法在增强图像和目标检测之间很难做到平衡有的甚至忽略有利于检测的信息。 
本文为了解决上述问题提出了IA-YOLO架构该架构可以自适应的增强图像以获得更好的检测结果。文中提出一个可微分的图像处理模块DIPDIP使用轻量级的深度学习网络CNN-PP学习其参数用以提高复杂天气状况下的目标检测性能。将DIP插入YOLOV3中直接使用原有检测模型的分类和回归损失来弱监督DIP模块的参数进而可以使用DIP模块进行图像增强。IA-YOLO代码tensorflow版本链接 
2、IA-YOLO整体架构 高分辨率的图像如1920*1080缩放到低分辨率的图像256*256低分辨率的图像通过一个轻量级的CNN-PP模块学习一组参数文中在去雾过程中参数为15个因此输出为【N15】高分辨率的图像依次通过去雾、白平衡、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的可微分设计作者采用如下三个公式完成 对于Tone滤波器作者将其设计成为一个单调分段函数学习Tone filter需要使用L个参数参数分别为tone曲线的点可表示为其中。最终的映射函数为 3.2 Sharpen Filter 
图像锐化可以凸显图像的细节信息作者使用如下公式进行图像的锐化 其中是输入图像是对图像进行高斯变换是一个大于0的缩放比例系数。 
3.3 Defog Filter 
去雾模型主要就是使用了大气散射模型结合暗通道先验进行推算初来的结果其中大气散射模型公式如下所示 其中A是全球大气光值t(x)是转换参数其定义如下: 去雾模型的具体过程参考之前的文章Single Image Haze Removal Using Dark Channel Prior(暗通道先验) 
4、CNN-PP模块 
由前述网络的整体框架可知CNN-PP是一个轻量级的全卷积网络其输入是一个低分辨率的256*256图像输出是一个【N15】的向量网络的具体结构可以看文中具体描述 作者使用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), trainabletrainable, nameex_conv0,downsampleTrue, activateTrue, bnFalse)net  convolutional(net, filters_shape(3, 3, channels, 2*channels), trainabletrainable, nameex_conv1,downsampleTrue, activateTrue, bnFalse)net  convolutional(net, filters_shape(3, 3, 2*channels, 2*channels), trainabletrainable, nameex_conv2,downsampleTrue, activateTrue, bnFalse)net  convolutional(net, filters_shape(3, 3, 2*channels, 2*channels), trainabletrainable, nameex_conv3,downsampleTrue, activateTrue, bnFalse)net  convolutional(net, filters_shape(3, 3, 2*channels, 2*channels), trainabletrainable, nameex_conv4,downsampleTrue, activateTrue, bnFalse)net  tf.reshape(net, [-1, 4096])features  ly.fully_connected(net,cfg.fc1_size,scopefc1,activation_fnlrelu,weights_initializertf.contrib.layers.xavier_initializer())filter_features  ly.fully_connected(features,output_dim,scopefc2,activation_fnNone,weights_initializertf.contrib.layers.xavier_initializer())return filter_features 
5、训练流程 
作者在构建数据集的时候需要区分是雾天数据还是低照度数据训练的每一个batch数据其中的每一张图片有的几率随机加上随机雾或者随机亮度变化这样可以使得模型对于雾天或者低照度环境有更大的适应性。由于在训练过程中随机生成雾天图像会让整个训练时长成倍增加因此作者在线下完成雾天图像的生成。 其中雾天生成数据的主要代码如下所示存疑的点是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——