李任斯, 石蕴玉, 刘 翔, 汤 显, 赵静文
(上海工程技术大学 电子电气工程学院, 上海 201620)
目标检测是计算机视觉中最基本、最重要的任务之一。搭配强大的主干网络,许多基于深度学习的目标检测算法在日常场景中都实现了较高的检测精度,YOLO(You Only Look Once)[1]、SSD(Single Shot Detector)[2]和区域卷积神经网络(Region Convolutional Neural Network, R-CNN)[3-5]均是目标检测的经典算法。为了加强对不同特征尺度的利用,Lin 等提出的FPN(Feature Pyramid Network)[6]以及Liu 等人提出的PANet[7]均利用特征层的自下而上和自上而下的路径级联对不同特征图提取到的信息进行学习。Libra R-CNN[8]通过对低层次特征和高层次特征的融合增强和正负样本的平衡处理使得网络具有更高的目标检测精度。Li 等人[9]通过特征融合以及混合注意对SSD 算法进行改进,提升检测精度。然而在真实的雾天场景中,拍摄的图像由于各种因素其图像质量显著下降,模糊、光照不足、物体遮挡会造成图像颜色失真、细节信息缺失等问题。普通的目标检测方法在雾天环境下无法准确定位和识别出目标,其检测性能大幅降低。因此,雾天环境下的目标检测方法研究显得意义重大。
Li 等人[10]提出了去雾算法AODNet,并将其与检测网络Faster R-CNN 结合进行训练,对去雾后的图像进行检测。但是这种图像预处理操作改变了图像的内部结构,且其模型的推理速度和训练速度非常慢,性能也没有得到提高。Wang等提出了FPVDNet[11],在网络中加入雾浓度判别模块和注意力机制。Xie 等提出了基于知识引导的方法KODNet[12],通过对数据预处理和目标分布问题分析实现有雾场景下的多目标检测。但是对于雾天图像特征提取过程,上述方法存在语义信息和细节缺失问题,特别是在浓雾图像中,对于一些模糊的目标,在网络中的特征映射关系较弱,深层特征图的目标峰值很低。有关端到端的雾天图像检测算法研究较少。在图像去雾算法暗通道先验法[13]中,作者发现统计的无雾彩色图像的非天空区域里,RGB 3 个颜色通道中总有一个通道的像素值很低,趋向于0;而对于有雾图像,其雾景区域的暗通道块的像素值都远大于0,具体的识别方法见第二章理论基础。受此启发,如果能借助雾天图像自身特点,获得更加全面有效的图像信息,提高检测网络对雾区域中目标物体的信息处理能力,则对提升雾天图像检测性能具有重大作用。
本文在Double-Head 目标检测模型框架的基础上,在特征增强方面,既融合了原始图像经过暗通道先验及处理后得到的先验权重矩阵,又加入了特征图自身的通道自注意力机制以及结合改进的解耦合预测头(Efficient Decoupled Detection Head, EDH),提出了一种新的端到端的目标检测方法来提高雾天场景中的目标检测性能。
Double-Head 算法[14]是由Wu 等人提出的新的二阶段检测算法。作者在网络预测头部对全连接头、全卷积头和目标的分类回归任务进行了彻底的分析,发现全连接头比全卷积头具有更高的空间敏感性。全连接头具有更强的区分完整目标和部分目标的能力,但对回归整个目标并不鲁棒。基于此,研究者提出了Double-Head 算法,设计了专注于分类的全连接头和目标框回归的全卷积头。在Faster R-CNN 中主要采用共享的全连接层进行最后的目标回归和分类,而在Double-Head 中采用全连接层进行类别分类,采用全卷积层进行目标的回归。在分类预测任务中,完成分类任务的子模块由2 个1 024 层的全连接层构成,而回归子模块的全卷积层共包含5 个残差卷积块和最后的池化输出1 024 维的向量。一个普通的残差卷积块由输入依次经过一个1×1 卷积,3×3 卷积和1×1 卷积后,再加上原始的输入构成,每个残差卷积块最后输出的激活函数为ReLu。Double-Head 算法在目标检测任务中具有较高的准确率,因此本文选择其作为基础框架。
为了更加有效地利用不同尺度的图像特征,PANet 在FPN 基础上利用特征层自上而下的信息,再次级联了自下而上的路径,进一步加强了网络对各个尺度的目标的提取能力。Double-Head 算法同样借鉴PANet 思想,级联不同尺度的特征层。本文通过添加通道和空间双维度的注意力模块对特征提取方面进行改进,并且在预测头部引入可分离卷积,利用设计的卷积模块改进原有解耦合预测头的性能。
在图像处理领域,有许多研究雾环境的光学模型。其中一个经典模型大气散射模型[15]的方程定义如式(1)所示:
式中:I(x)是观测图像,与自然雾图像相同;J(x)是场景亮度;t(x)代表介质透射;A代表全球大气光。t(x)定义为:
式中:β表示大气散射系数,d(x)表示场景深度。He 等将暗通道先验与大气散射模型结合提出了暗通道先验去雾算法。作者统计了大量的无雾图像,发现在每一幅图像的非天空区域里,彩色图像RGB 通道中至少有一个通道的像素值非常低,几乎趋近于0。暗通道块J的数学表达式如式(3)所示:
式中:Jc表示彩色图像暗通道块J在像素点x中的一个颜色通道,即RGB 通道中的一个;y是以像素点x为中心的矩形区域。
根据公式(3)可以得出Jdark=0,即非天空区域的图像块经过暗通道先验后像素值为0,暗通道先验处理后的图像从彩色图像变为灰度图像。雾天图像存在大量雾景区域,雾景区域的RGB 3 个通道的像素值都不低,因此其暗通道块Jdark远远大于0。
基于暗通道先验法处理后的雾天图像可以有效地将雾景区域和前景所分离,给目标检测任务提供了有效的信息。本文通过改进暗通道先验算法提升了检测网络获取雾天图像有效信息的能力。
图1 是本文所提方法的结构图,基于二阶段方法Double-Head 进行改进。在特征增强方面,网络利用原始输入图像经过暗通道先验得到的有效信息和主干网络提取的多尺度深层特征进行有效融合,得到增强的特征图。增强后的特征图经过区域建议网络[3]和ROI 池化模块[3]处理后输送至预测头部进行最终的预测。同时,为了使分类和回归都达到更高的精度,使用解耦合检测方法作为预测头部。预测头使用全连接层进行分类,卷积模块进行回归,并在卷积模块中引入了深度可分离卷积,减少了网络模型的参数。
在本文所提方法中,特征增强模块具体结构如图2 所示。首先,在主干网络ResNet101[16]和FPN 提取到的特征P1~P4的基础上,进一步级联了自下而上的结构,得到特征层N1~N4。其次,为了提高特征层N1~N4每个尺度的特征描述力,在P1、P2、P3的跳跃连接中加入了Enhance 模块。Enhance 模块主要包含两部分,如图3 所示。第一部分为特征自注意力,即在特征层P1~P4输入的基础上,加上了通道池化操作,增加了通道值响应;第二部分为先验权重矩阵的融合,即将原始图像经过暗通道先验法得到的有效信息进一步融合,增强了雾天图像中前景目标和背景的分辨。
图2 融合特征增强结构示意图Fig.2 Structure of the fusion feature enhancement
在图2 中的特征图部分,向下箭头是上采样操作,向上箭头是下采样操作,上、下采样操作分别使用双线性插值法和自适应池化法。N1将下采样生成的与N2具备同样尺度的特征和经过Enhance 模块增强后的特征图在通道方向拼接起来得到N2,依此类推,获得N3和N4。
图3中的通道池化分为最大池化和平均池化,都在输入特征X(256×H×W)的通道维度上进行。最大池化在X的256 维的通道上选择最大值作为表征,平均池化则是选取通道上平均为1×H×W的值作为表征。相加后系数经过Sigmoid激活函数与原始输入进行点积运算得到XC。共享的全连接层来计算权重,记为kf,在通道维度上拼接后使用Sigmoid 函数来生成通道信息输出矩阵FOC,数学表表达式如式(4)所示:
其中,φ(·)表示Sigmoid 激活运算。
第二部分先验权重的融合如图3 中左边分支所示。首先对输入图像进行尺寸缩放得到Y,使其与图3 中特征X的输入尺寸一样。然后Y通过暗通道先验法即利用公式(3)运算得到暗通道矩阵I,式(3)中c为Y的R、G、B 3 个通道,Ω取5×5大小的区域,即
接着对暗通道矩阵I中的所有像素值(假设其大小为n(0~255))进行取反操作,变为255-n,使矩阵中天空等背景区域具有较低的矩阵值,目标等前景具备较高的矩阵表征值。此时暗通道矩阵还存在一些冗余表征和背景噪声,需要对其进行滤波操作以增强待检测目标的矩阵响应,同时弱化非目标等背景区域的矩阵响应,即矩阵值的大小。滤波函数采用一阶微分算子sobel 算子,能有效降低图像噪声,锐化特征,其公式如式(6)、式(7)所示:
其中:I为暗通道矩阵,为灰度图像;WY为输出的权重矩阵;I和WY大小均为1×H×W。
在图3 中,WY和XC进行点积运算后,再次和经过1×1 卷积后的输入特征X相加,得到最终的输出Z(256×H×W)。
雾天图像中的目标对比度更低,纹理特征不清晰,普通的检测算法提取其中目标的能力较低。为了验证本文Enhance 模块和所提方法的有效性,如图4 所示,将原始的Double-Head 方法以及加入Enhance 模块后的特征热力图进行了可视化。特征热力图可以直观地展示网络在输入图像上的感受野和特征提取能力。从图4 可以看出,右侧图像中汽车和行人位置的热力图颜色更红,具有更大的激活值,而背景的激活值则更小,并且像素点对应目标类别的置信度得分更高,检测结果更加准确。高质量的雾天图像特征图的提取会进一步使预测头最终对目标完成更高质量的分类和回归任务,提升网络的雾天图像目标检测性能。
图4 热力图对比Fig.4 Comparison of feature heat activation map
经过RoIAlign 得到的7×7×256 大小的特征图最终由解耦合预测头进行分类和回归,具体结构如图5 所示。在分类任务分支中,应用两个全连接层进行分类。对于回归任务,全卷积层使用了5 个残差模块。第一个残差模块a 将输入从256 维升至1 024 维,具体内部结构对应图6(a),另4 个残差模块b 如图6(b)所示。图6(b)中5×5 表示卷积核大小为5×5 的深度可分离卷积块,在减少网络参数量的同时,增加了深层特征的感受野,保证了最终目标框位置回归的精度,其余为普通卷积。深度可分离卷积是轻量化网络Xception[17]的主要结构,主要思想是将标准卷积分解为深度卷积和逐点卷积,即在输入的每个通道独立执行空间卷积,再进行逐点卷积,将深度卷积的通道输出映射到新的通道空间。EDH 模块的最终输出是一个k+1 维向量用于分类,k×4维的向量用于定位,其中k表示类别个数。
图5 解耦合预测头结构Fig.5 Structure of the decoupled prediction head
图6 卷积模块结构图Fig.6 Structure of the convolution module
在区域建议网络RPN 中,分类任务使用二值交叉熵损失。在预测头EDH 中,分类任务使用的是交叉熵损失。对于样本训练过程中的回归任务,均使用SmoothL1损失。SmoothL1损失函数公式如式(8)所示:
式中:对于RPN,β设置为1/9;在EDH 中,β设置为1。所以
RPN 的二值交叉熵损失表示为:
在一个训练批次中,选取部分特征图作为训练样本,其中N是二元分类中的样本数,yi是样本i的标签,正样本为1,负为0,pi是预测样本为正的概率。RPN 总损失函数如式(12)所示:
预测头EDH 的交叉熵损失如式(13)所示:
其中:N是多类别样本的数量;k是类别的数量;yic是一个符号函数,如果样本的预测类别是c,则取1,否则取0;Pic是样本i被预测为c 类别的概率。整个网络的损失函数L如式(14)所示:
式中:LRPN是区域建议网络RPN 的损失函数;λ1和λ2是预测头中回归损失和分类损失的权重参数,它们平衡了各部分的功能,实现了更好的检测性能。
实验平台硬件为AMD Ryzen Threadripper 1900X 8-Core Processor 3.80 GHz CPU,Nvidia GTX 2080 Ti 显卡,64G 内存。
实验中,网络由随机梯度下降优化器进行训练,动量和权重衰减分别设置为0.9 和0.000 1。大多数二阶段检测器,包括本文提出的网络,学习率初始化为0.002 5。式(14)中的λ1和λ2分别设置为2.0 和1.5。
本节比较了一些现有的主流目标检测方法以验证本文所提出的网络的鲁棒性和高精度。不仅在自然雾天数据集RTTS[18]上进行了评估,还在合成雾天数据集S-KITTI 和S-COCOval 上进行了评估。
S-KITTI和S-COCOval为本文利用大气散射模型分别对KITTI[19]和MS COCO 数据集[20]进行雾合成得到的合成数据集。在KITTI 和MS COCO 的子数据集COCO 2014 val 中分别选用7 481 和10k 余张图像进行雾合成模拟处理,应用大气散射模型和原始清晰图像合成雾天图像,以此得到式(1)中的I(x)。在合成处理中,式(1)和式(2)中的A和β设置为0.6 和0.28,以此模拟出逼近真实雾天的图像。
RTTS 数据集属于自然雾天环境的目标检测数据集,图像主要来源于交通道路等场景。它包含4 322 副图像;带有5 个类别的标签,即汽车、人、公共汽车、自行车和摩托车,包括大约41 000 个目标。对于KITTI 数据集,使用其2D 数据集进行目标检测任务,包含7 481 张图像,包括6 个类别:汽车、面包车、行人、有轨电车、卡车和自行车。MS COCO 数据集有80 个类别,为了使实验检测对象一致,本文在COCO 2014 val 中选择了1 万张图像,包括摩托车、汽车、公共汽车、火车、自行车和卡车等类别。
在RTTS 数据集中,采用PASCAL VOC[21]指标平均精度(mean Average Precision, mAP)来评估该方法的检测性能。准确率和召回率的计算公式如式(15)、式(16)所示:
其中:TP 表示正样本被识别正确的个数,FP 表示负样本被识别为正样本的个数,FN 表示正样本被识别为负样本个数。将计算得到的P、R值绘制P-R曲线,计算曲线下的面积,即为AP 值,公式如式(17)所示:
对于多个类别N,平均精度mAP 公式为:
在S-KITTI 数据集和S-COCOval 数据集中,使用指标AP、AP75、AP50、APS、APM和APL来评估目标检测的性能。其中AP 指标的IoU 从0.5 依次增加到0.95。AP75和AP50是指其IoU 分别设置为0.75 和0.5。APS、APM和APL是根据图像中对象的大小设置的AP 度量,分别对应图像中相对的小目标、中型目标和大目标。
RTTS 数据集的标签分布不均,在某些特定角度上的不同类别相似。本文方法在一定程度上克服了这些困难,并取得了较高的性能。如表1所示,每一行记录了不同方法的mAP 值和5 个类别的AP 值,其中指标中IoU 的值设定为0.5。
表1 不同算法在RTTS 数据集上的性能对比Tab.1 Performance comparison of different algorithms in the RTTS dataset
在不增加额外数据的情况下,本文方法实现了最高的mAP 值49.37,比FPVDNet 高3.97,比KODNet 高2.71,比Yolov3[22]高12.98。Double-Head 方法在公交车类别中达到了最高的AP 值51.53,本文方法在其余类别中达到了最高的性能,汽车类别为66.41 AP 值,自行车类别为33.62AP 值,摩托车、行人分别达到了50.12 和46.92 AP 值。本文方法在通过数据增强操作后,mAP值可以提升至50.33,均高于其他算法。数据增强操作主要包括对训练图像进行翻转、旋转和缩放等。通过数据增强生成的额外图像大约1 000 张,这些图像与原始数据一起训练。除摩托车类别外,其他所有类别都处于较高的水平。结果表明,与其他方法相比,本文方法的检测准确率更高,说明本文方法能有效地提取雾天图像中的特征。
图7(a)是从RTTS 数据集中选择的一幅自然雾天图像,(b)、(c)、(d)是分别使用Double-Head、Cascade R-CNN[25]和本文方法进行检测后的具体结果。在图7(b)中,Double-Head 方法错误地将图片右下角的三轮车识别为汽车,并忽略了图片左侧的行人。图7(c)的Cascade R-CNN 方法很难检测到汽车,也忽略了左边的行人。图7(d)为本文方法的检测结果,结果表明本文方法可以克服这些问题,生成更准确的检测结果。
图7 RTTS 数据集图像的检测结果示例图Fig.7 Examples of RTTS image detection results
S-KITTI 数据集中出现的小目标物体和遮挡目标较多,使得目标检测任务变得更具挑战性,尤其是在雾天环境中。S-KITTI 数据集实验结果如表2 所示,除APM指标之外,所提出方法性能均优于其他方法。本文方法的AP、AP75、AP50、APS、APM和APL指标分别为66.7、77.1、90.9、65.6、66.2 和71.4,AP75和AP 分别比第二高的方法高出1.7 和0.8。
表2 不同算法在S-KITTI 数据集上性能对比Tab.2 Performance comparison of different algorithms in the S-KITTI dataset
如表3 所示,当主干网络使用ResNet101 时,本文方法的AP、AP75、AP50、APS、APM和APL值分别为57.7、65.1、79.6、41.1、51.1 和69.3。AP75、APS和AP 分别比第二高的方法高1.5、1.7 和0.9,除了AP50之外其余数据均为最高。Double-Head 在AP50取得了最大值79.8,仅比本文所提方法高出0.2。结果表明,本文模型在合成雾天数据集S-COCOval 上也取得了良好的检测结果,并且应用不同的主干网络仍然具有有效性和鲁棒性。
表3 不同算法在S-COCOval 数据集上性能对比Tab.3 Performance comparison of different algorithms in the S-COCOval dataset
表4 对预测头的卷积部分进行了实验,通过设定不同数量的卷积块得到不同的AP 结果。表4 中的模块a 和模块b 代表图6 中的提取模块a和b,模块a 主要是将特征图从256 维升至1 024维,数量为一个,大小为1.06M;模块b 大小为0.81M。考虑到准确率和参数量的平衡,本文的预测头部卷积部分最后选择一个模块a 和4 个模块b。
表4 增加不同数量模块b 后的参数和AP 值比较Tab.4 Comparison of the parameters and AP values after adding different number of modules b
在RTTS 数据集上分别使用不同注意力模块进行实验,结果如表5 所示。在不添加注意力模块的情况下,使用Double-Head 方法作为基线的mAP值为51.5,分别添加注意力模块SE(Squeezeand-Excitation)[27]、CA(Coordinate Attention)[28]和CBAM(Convolutional Block Attention module)[29]后,mAP 值为51.6、52.2 和52.7。使用本文的注意力模块达到了最高的mAP 值为53.6,参数量仅增加0.45M。结果表明,与其他注意力模块相比,本文设计的注意力模块具有更高的目标检测性能。
表5 使用不同注意力模块的实验结果Tab.5 Ablation study of proposed component
表6 展示了提出的特征增强模块和解耦合预测头EDH 消融实验的结果。在ResNet50-FPN基线上,对特征图应用本文的注意力模块mAP值提高了0.8,融合改进暗通道先验得到的先验权重mAP 值提高了2.4,证明所提出的特征增强模块对检测雾天图像中的目标的有效性。解耦合预测头EDH 模块将mAP 值从52.9 提高到54.3,比ResNet50-FPN 基线高出1.4。与基线相比,提出的模块对网络的改进mAP 值共提升了3.6。在模型复杂度方面,改进前Double-Head 方法模型参数为48.14 MB,推理时间为0.105 s;改进后方法模型参数为52.25 MB,推理时间为0.126 s。
表6 各个模块的消融实验结果Tab.6 Ablation study of proposed component
从数据集中选取了几组代表性的图像分别使用不同的算法进行目标检测结果展示,如图8 所示,从上至下依次为原始图像、本文算法、Double-Head 算法、Cascade R-CNN 算法、FPVDNet 和Yolov5 算法检测的结果。第一组图像中,除了本文算法外,其余算法都出现了自行车漏检的情况,且行人检测不够准确。在其他组图像中,Double-Head、Cascade R-CNN、FPVDNet 和Yolov5 均存在对小目标物体漏检的问题,Double-Head算法在第三组图像中更是将卡车错误识别为汽车。本文算法在这些雾天图像中展示出了更精准的检测结果,具有更强的检测性能和鲁棒性。
图8 不同算法的检测结果Fig.8 Detection results of different algorithms in different scenarios
本文所提方法在合成数据集不同雾浓度下的检测结果如表7 所示。大气散射系数β取不同值分别对应不同程度的雾。在实际雾天场景下,所提方法的目标检测结果如图9 所示。场景中的小目标车辆以及遮挡目标仍可以准确检测出来,并进行有效分类,进一步证明本文方法在实际场景中的高目标检测性能。
表7 所提方法在不同雾天程度下的实验结果Tab.7 Experimental results of the proposed method under different foggy conditions
图9 实际雾天场景检测结果图Fig.9 Detection results in the actual foggy scene
本文针对雾天场景下的目标检测任务,提出了一种新的高效且鲁棒的方法。在Double-Head网络上融合了改进暗通道先验法得到的先验权重以及通道和空间双维度的复合注意力,并且改进了预测头部的全卷积层,利用设计的高效解耦合预测头对目标进行最终的分类和回归,提高了在雾天图像上的目标检测精度。本文算法在自然雾天数据集RTTS 上取得了49.37%的mAP 值,较改进前提升了4.63%。在合成数据集S-KITTI和S-COCOval 上AP 值分别为66.7%和57.7%。实验结果优于其他主流检测方法,进一步验证了本文算法的适用性和鲁棒性。在未来的工作中,将进一步优化网络,均衡检测精度和速率,使其应用更加灵活。