多尺度非局部注意力网络的小目标检测算法*
2020-10-15梁延禹李金宝
梁延禹,李金宝,3+
1.黑龙江大学计算机科学技术学院,哈尔滨 150080
2.黑龙江大学黑龙江省数据库与并行计算重点实验室,哈尔滨 150080
3.黑龙江大学软件学院,哈尔滨 150080
1 引言
近几年随着深度学习的发展,越来越多的目标检测算法被提出。对于具有较高分辨率的大目标,目前的检测方法已经取得了较好的检测结果[1-3]。但是这些方法在对包含语义信息相对较少的小目标检测时效果较差。而小目标检测在日常生活普遍存在,例如远距离的人脸识别、自动驾驶中交通标志检测等。因此小目标检测仍然是目标检测中的一项具有挑战性的任务。
卷积神经网络目前广泛应用在目标检测中,它利用卷积核实现了局部连接,传递相邻两个特征层之间的信息。为了获取距离较远的局部特征之间的相关性,通常需要经过大量的卷积操作。对于在整个图像中占比较小、包含语义信息较少的小目标而言,卷积操作会损失大量的细节信息,在后续传播中可能造成小目标的细节特征丢失。
最近提出的基于深度学习的方法研究了小目标检测任务中目标的特征表达能力弱的问题。Chen等人[4]通过扩大输入图片的尺度进而增加小目标的分辨率,提高了小目标的检测准确率,但同时也降低了网络的检测速度。2016年,Liu等人[5]首次提出利用不同尺度特征图进行的目标检测方法(single shot multibox detector,SSD),使小目标能够在目标细节信息较为丰富的浅层特征图中进行检测。但是,浅层特征中缺乏目标的上下文语义信息,会导致检测到的小目标出现局部缺失等问题。为了解决此类问题,Zhu等人[6]利用特征金字塔结构将网络的深、浅层特征进行结合,以获取小目标的丰富特征。Li等人[7]提出利用感知生成对抗网络生成小目标的高分辨率表达特征,缩小小目标与大目标特征之间的差距以提升小目标检测效果,但该网络中包含的参数较多,增加了计算负担。
针对上述小目标检测存在的问题,本文提出一种多尺度非局部注意力网络(multi-scale non-local attention network,MSNAN)。首先,MSNAN利用浅层特征图中目标细节信息相对丰富的特点,在浅层特征中进行小目标的检测。其次,为了提高网络的特征获取能力,又在深层特征中利用密集连接结构实现特征的跨层连接,加强深层网络的信息传输能力。不仅提高了小目标检测的准确率,而且使模型具有实时性。为了弥补浅层特征中缺乏的目标上下文语义信息,本文设计了一个非局部通道注意力模块(non-local channel attention block,NLCA-Block)。该模块包括两个过程,在非局部操作过程中通过合并通道信息获取全局空间信息对局部特征的影响;在注意力机制过程中利用池化操作收集每个通道的全局信息,以生成通道间的非线性关系。该模块既利用空间域信息增强了局部特征表达能力,又利用通道域注意力机制对通道间的特征进行校准,将空间注意力机制与通道注意力机制相结合,丰富了浅层特征中小目标的上下文语义信息。本文提出的MSNAN在PASCAL VOC[8]、MS COCO[9]数据集上的实验结果表明,与现有目标检测方法相比,MSNAN能够有效提高小目标的检测效果,并且可以达到实时检测。
2 相关工作
2.1 多尺度特征检测
利用多尺度特征进行检测可以提高小目标的检测效果。其中多尺度特征通常可以通过多尺度的输入图片[10]或在网络结构中选择多尺度特征图实现,进而对不同大小的目标进行检测。
Shen等人[11]提出一种无需预训练模型的目标检测算法,利用密集连接结构[12]的思想实现模块间的特征传递,最终可以达到与使用预训练模型检测方法相近的检测精度。Cai等人[13]针对多尺度目标的检测问题,在不同检测层设计了不同的检测方法以检测相应的目标。利用反卷积操作增加浅层特征图的分辨率,虽然提高了小目标检测效果,但增加了模型计算量。Liu等人[14]模拟人类视觉的感受野,通过扩张卷积操作有效增大了感受野,提高了目标检测准确率。
为了获取目标更加丰富的语义信息,一些方法采用将卷积过程中的多个特征图相融合的方法增强特征的表达能力[15-16]。Lin等人[17]将深层特征和浅层特征进行融合,逐步增加了浅层特征的高级语义信息,进而提升了整个模型的检测效果。Zhou等人[18]采用自带高低层特征融合的DenseNet网络[12]作为特征提取网络,并融合各部分预测结果得到最终结果。其中特征融合过程采用类似特征金字塔的结构,利用尺度转移层生成尺寸较大的特征映射。Fu等人[19]利用反卷积模型将不同尺度特征进行融合,形成了类似沙漏型的网络结构,在多个检测层中独立进行检测,但引入大量参数,降低了模型检测速度。Cui等人[20]将浅层特征与深层特征进行融合,采用7个不同尺度特征图进行检测,在小目标检测任务中取得较好检测效果。
上述检测方法的目的是通过多尺度特征获取小目标的丰富信息,利用融合后的特征增强小目标特征表达能力,进而提高小目标检测准确率。然而,这些方法并没有在获取小目标上下文语义信息的同时兼顾模型的计算量,会产生降低网络检测速度的问题。
2.2 注意力机制
最近注意力机制受到了人们的广泛关注,这种方法常应用于图像分类、检测等方面。一些研究利用注意力机制增强特征的表达能力,提高目标检测任务的检测效果。
Hu等人[21]首次提出利用注意力机制对通道间的相互依赖关系进行建模。该方法获得特征图的每个通道的全局信息,并为每个特征通道重新分配权重,根据重要性提升或抑制相应的特征。Kong等人[22]在特征金字塔结构基础上,将全局注意力与局部注意力重新组合,进而在空间和通道间提取目标全局和局部的相关特征。Wang等人[23]提出了非局部神经网络,通过建立特征图中位置间的联系,增强空间局部特征的表达能力。然而,非局部操作仅利用特征的空间信息相关性,对每个通道内的特征进行相同处理,忽略了不同通道间的信息对目标特征的影响,无法充分提取小目标的细粒度特征,影响最终的检测效果。
本文在浅层特征的空间域和通道域两方面对目标特征进行增强和校准,利用全局信息对局部信息的影响,获取空间局部信息的远距离依赖关系,并利用通道注意力机制增强浅层特征中小目标的表达能力。同时,在深层特征中利用密集连接结构实现不相邻的特征层之间的信息传递,增强网络的特征获取能力。在实现深度网络的特征提取的同时减少模型的参数量,提高网络中特征的利用率和网络的运行速度。
3 本文方法
3.1 MSNAN网络结构
Fig.1 Architecture model of multi-scale non-local attention network图1 多尺度非局部注意力网络整体框架结构
针对目标检测任务中小目标上下文语义信息缺失的问题,本文提出了一个多尺度非局部注意力网络MSNAN,如图1所示。MSNAN是一个端到端的网络,它主要由两部分组成:一个是浅层网络中的非局部通道注意力模块;另一个是深层网络中的密集连接模块。整个网络以VGG-16作为基础部分,分别用两个卷积过程替换其两个全连接层。在Conv7层后利用连续的卷积层进行下采样操作,获取不同尺度的特征图,整个网络共包括11个卷积过程。选择基础网络中的2个卷积层作为检测层,在新添加的卷积过程中选择4个卷积层作为检测层,共利用6个不同尺度检测层构建多尺度目标检测网络。
非局部通道注意力模块:为增强浅层特征中小目标的上下文语义信息,在网络的浅层部分添加非局部通道注意力模块。该模块首先利用1×1的卷积操作对特征图的通道进行合并,以得到特征信息空间域的相关性。然后利用全局平均池化操作对特征图的空间维度进行压缩,添加Relu激活函数和Sigmoid函数重构通道间的非线性关系,弥补忽略的通道间的目标特征关系。使目标特征能够利用空间及通道间的全局信息得以增强。选取网络浅层部分中感受野较大的Conv4_3和Conv7两个检测层进行小目标检测,其中NLCA-Block将不改变特征图的大小,对应的特征图尺寸分别为38和19,通道数分别为512和1 024。
密集连接模块:利用NLCA-Block在浅层特征中得到了包含目标上下文信息的特征,同时还在网络的深层部分采用卷积层的密集连接(dense block)结构,进一步加强不相邻的特征层之间的信息传递,避免梯度消失问题。其中每个密集单元将之前所有层的特征作为输入特征,并将输出特征通过合并的方式与该单元的输入特征进行拼接,作为下一个密集单元的输入特征。选择在Conv8和Conv9卷积过程中使用密集连接结构,这种连接结构增强了网络中的特征传递。MSNAN中的密集连接模块共包含6个密集连接单元,如图1所示,X0作为密集连接模块的输入特征图,通道数为512,卷积核大小为1×1和3×3,增长率设定为32,得到了输出特征图X5。将密集连接模块替换卷积操作过程,提高了深层网络的特征获取能力并减少了模型的参数量。
最后,整个网络中选取了6个不同尺度的特征图对目标进行检测,特征图的大小分别为32、19、10、5、3、1。在每个检测层中生成默认目标候选框,并计算候选框与真实标签之间的损失。利用Softmax函数计算模型的分类损失,利用Smooth L1函数计算模型的回归损失。
3.2 NLCA-Block结构设计
NLCA-Block的目的是增强网络浅层部分小目标的上下文语义信息,然后在包含小目标上下文语义信息的特征层中进行小目标检测。同时该模块可增强整个网络前馈过程中的特征表达能力,提高模型的检测准确率。NLCA-Block如图2所示。
非局部模块(non-local block)[23]在图像和视频检测中表现出了较好效果,该模块可以压缩通道特征、聚合全局空间特征以增强目标局部特征。该过程首先计算了当前像素点与特征图内所有像素点间的相似性值,然后对相似性值进行加权求和以表示当前像素点特征信息,达到利用全局空间特征增强局部特征的目的。
NLCA-Block首先通过非局部操作获取特征在空间域的全局信息,进而增强小目标空间维度特征表达能力,具体计算过程如下:
Fig.2 Non-local channel attention block图2 非局部通道注意力模块
其中,X、Y分别为输入和输出特征,X∈ℝH×W×C(H、W、C分别为特征图的高度、宽度和通道数),X和Y具有相同维度。j为输入特征中所有的位置索引,i为输出特征的所有位置索引。F(Xi,Xj)函数用于计算Xi和Xj之间的相似性,g(Xj)函数计算位置j的特征表示,T(X)为归一化参数。本文采用嵌入式高斯函数作为相似性函数,可表示为:
其中,θ(Xi)=Wθ Xi,φ(Xj)=WφXj。Wθ、Wφ是通过学习得到的权重矩阵。
结合残差网络结构的优点,该模块将原始输入信息X与非局部操作得到的结果WzY进行叠加,得到通过空间全局信息得以增强的目标特征Z。该模块也可添加到其他的网络框架中,可表示为:
其中,Y由式(1)计算得到,Wz为权重矩阵。
由于非局部操作过程把特征图各通道进行了合并,忽略了特征图通道之间的相关性。因此提出了非局部通道注意力模块,进一步利用通道注意力机制获取特征图各通道间的依赖关系,使目标特征从空间和通道间均得以增强。该模块对特征图各通道进行全局平均池化,将特征图空间维度进行压缩,操作过程如下:
其中,H和W分别为特征图的高度和宽度,ZC表示第C个通道的特征,i和j分别为特征图高度和宽度的位置索引。通过式(4)对每个特征图进行归一化,将特征图空间维度进行压缩,在通道上响应全局分布。将H×W×C的输入特征转化为1×1×C的输出特征,输入与输出特征在通道数上相匹配,从而获取到每个通道域的全局信息。
对式(4)中得到的M重新计算通道的权重。利用两个全连接层、Relu激活函数和Sigmoid函数获取0~1之间的归一化权重,并将归一化后的权重加权到每个通道的特征上,完成通道维度上对特征Z的重新标定,并得到特征S,计算过程如下:
其中,特征Z由式(3)得到,M由式(4)得到;σ(∙)为Relu激活函数;δ(∙)为Sigmoid函数;W1、W2是权重矩阵。
最后,利用特征S与原始特征X进行像素点的叠加,如式(6):
4 实验结果与分析
4.1 实验方法与设置
为了评估本文方法的检测效果,在PASCAL VOC数据集和MS COCO数据集中进行实验。其中PASCAL VOC数据集包括20类目标,MS COCO数据集包括80类目标,使用平均准确率(mean average precision,mAP)和帧率(frame per second,FPS)作为评价指标。根据MS COCO数据集的标准,规定目标面积小于32×32为小目标,目标面积大于32×32且小于96×96为中等目标,目标面积大于96×96则为大目标。
采用与SSD类似的训练设置进行模型训练。首先,为了增强模型的性能,对数据集中原始图片进行数据增强,其方法包括随机裁剪、随机光照补偿、随机尺度变换、随机水平和垂直翻转等,此操作能够使模型在检测过程中更加稳定。其次,为检测不同尺度图像中包含的不同尺度、不同形状的目标,在每个检测层中设定不同尺度的先验框与真实标签进行匹配。参考SSD方法中先验框的设计原则,为每个先验框设定两种不同的长宽比,分别为2.0和3.0。其中在Conv10_2和Conv11_2检测层中每个检测点设置4个候选框,在其他4个检测层中每个检测点设置6个检测框。
实验环境为基于Windows 7操作系统的PyTorch深度学习框架,使用GPU进行训练,配置NVIDIA CUDA8.0+cuDNN6.0的深度学习库加速GPU运算。硬件配置为:Intel Core i7-7820X处理器,NVIDIA GeForce GTX 1080Ti GPU,Kingston DDR4 128 GB内存。
4.2 PASCAL VOC实验结果
在PASCAL VOC 2007和PASCLA VOC 2012数据集的训练验证集对模型进行联合训练(16 551张图片),并在PASCAL VOC 2007测试集中进行测试(4 952张图片)。其中当输入图片大小为300×300时,设定批次大小为32;当输入图片大小为512×512时,设定批次大小为16。使用初始学习率为10-3迭代60 000次,将学习率降为10-4迭代40 000次,最后将学习率降为10-5迭代20 000次。使用随机梯度下降优化方法优化参数,动量和权重衰减参数分别为0.9和0.000 5。
表1给出了本文方法与Faster R-CNN、R-FCN、SSD、DSSD和MDSSD等检测方法在PASCAL VOC 2007测试集中的检测准确率对比结果。在输入图片尺寸为300×300像素时,MSNAN方法的mAP为79%,将输入图片尺寸扩大为512×512像素时,MSNAN方法的mAP为80.5%。与SSD方法相比,MSNAN的检测精度分别提高了1.5个百分点和1个百分点。虽然MDSSD将网络中不同层特征进行融合,增强网络特征的表达能力,但其检测准确率仍低于本文方法。由此说明,本文利用非局部通道注意力模块和密集连接结构有效地提高了检测效果。
此外MSNAN与输入图片尺寸较大的两阶段目标检测算法,例如Faster R-CNN、MR-CNN、R-FCN等方法相比不仅检测速度快,而且检测准确率也得到较大提升。虽然DSSD513的mAP高于MSNAN 512,但由于DSSD513使用深层次的Residual-101结构作为网络基础部分,其训练和测试过程将造成大量时间消耗。而MSNAN512采用VGG-16作为基础部分,网络层次较少,检测速度可以达到22.4FPS。
在PASCAL VOC 2007数据集中将MSNAN模型在检测速度和检测准确率方面与现有的检测方法进行对比,结果如表2所示。MSNAN 300和MSNAN-512的运行速度分别为42.5 FPS和22.4 FPS。本文方法的检测性能在准确率和速度上均优于Faster RCNN、R-FCN等两阶段目标检测方法,其中MSNAN-512在更小输入图片条件下达到R-FCN检测的准确率,并且检测速度提升2.5倍。MSNAN方法在SSD模型基础上增加了非局部通道注意力模块,因此检测速度比SSD稍慢,但准确率得到了较大提升。由于DSSD513利用Residual-101结构作为基础网络,并且使用了特征融合过程,虽然检测准确率较高,但测试过程需要的时间是MSNAN512的4倍以上。而MDSSD采用VGG-16作为主干网络提高了DSSD的检测速度,但使用了效率较低的特征融合过程,其检测速度仍然慢于MSNAN。另外,相比于YOLOv2、YOLOv3方法,MSNAN采用多尺度特征图检测,并充分利用浅层特征中目标信息,提升了检测准确率,即使检测速度稍有降低,但仍具实时性。
Table 1 Detection results on PASCAL VOC 2007表1 PASCAL VOC 2007测试集检测结果 %
Table 2 Comparison of speed and accuracy on PASCAL VOC 2007表2 PASCAL VOC 2007测试集上检测速度与检测准确率对比
图3展示了本文的MSNAN在PASCAL VOC 2007数据集中的检测结果。在每列图片中,上面图片为SSD检测结果,下面图片为MSNAN检测结果。不同颜色的识别框标记出不同种类的目标。本文方法在以下两方面的检测结果优于SSD:第一个方面是对小目标的检测效果更好,图3中的图片显示,MSNAN在检测牛、汽车等小目标时的准确率更高。本文方法增强了浅层特征空间和通道间信息的相关性,弥补了一阶段目标检测任务中小目标检测效果差的缺点。第二个方面是在复杂背景条件下的检测效果更好。例如图3中MSNAN能更好地检测到遮挡条件下的瓶子、椅子等目标。因此非局部通道注意力模块和密集连接模块有效地利用全局特征增强了目标的上下文语义信息,提高了小目标检测准确率,并且能在相对密集的环境中检测出更多的目标。
4.3 MS COCO实验结果
MS COCO数据集包含80 000张训练图片,40 000张验证图片和20 000张测试图片。本文使用训练验证集进行训练,测试集进行测试,其中当输入图片尺寸为300×300像素时,批次大小设为32,输入图片尺寸为512×512像素时,批次大小设为16。使用初始学习率为10-3迭代160 000次,学习率降为10-4迭代40 000次,最后降为10-5迭代40 000次。
表3给出了本文方法在test-dev中的检测结果,分别使用不同交并比值检测的准确率(Avg.Precision,IoU)和不同尺度目标检测的准确率(Avg.Precision,Area)作为评价指标。MSNAN的检测效果明显优于Faster R-CNN、R-FCN等两阶段检测方法。MSNAN-300在AP@[0.50:0.95]、AP@0.50和AP@0.75时的结果分别为28.2%、46.3%、29.5%。MSNAN300与SSD300相比,AP分别提高3.1个百分点、3.2个百分点、3.7个百分点。MSNAN300与DSSD321相比,AP分别提高了0.2个百分点、0.2个百分点、0.3个百分点。在对小目标S(面积<32×32)进行检测时,MSNAN-300与MSNAN512检测准确率达到13.4%和17.2%。对中等目标M(32×32<面积<96×96)、大目标L(面积>96×96)进行检测时,本文方法也取得较好的检测效果。
通过实验对比发现,相比于SSD、DSSD和YOLOv2模型,MSNAN300检测方法的检测效果得到了明显提升。由于YOLOv3使用残差结构的Darknet-53作为基础网络,同时利用608×608像素图片进行模型训练,而本文方法使用深度较浅的VGG作为基础网络,并且输入图片尺寸不及YOLOv3的一半,因此针对部分目标的识别效果YOLOv3优于MSNAN300。但是本文方法在512×512像素图片中进行检测时,由于扩大了输入图片,MSNAN512的准确率相比于MSNAN 300提升到33.6%,并且高于YOLOv3方法的检测准确率,这是由于MSNAN利用非局部密通道注意力模块加强了对浅层特征的处理,同时在相对较大的输入图片中检测,小目标的检测准确率有所提升,因此总体上本文方法的检测精度高于YOLOv3方法。
Fig.3 Detection results on VOC2007图3 VOC2007数据集中检测结果
Table 3 Detection results on MS COCO test-dev表3 MS COCO测试集检测结果
图4展示了MSNAN在MS COCO数据集中对小目标的检测结果,说明了非局部通道注意力模块在网络浅层部分加强了目标的特征提取,获取了小目标的上下文语义信息,因此MSNAN能准确检测到人、橘子等小目标。同时网络利用密集连接结构,将丰富的图像特征传递到网络的深层,提高了网络对风筝、牛等大目标的检测准确率。
4.4 讨论
为了进一步研究非局部通道注意力模块和密集连接模块在网络架构中的有效性和必要性,设置不同的网络结构进行训练,并在PASCAL VOC 2007数据集中测试,表4列出了不同网络设置的检测结果。
Fig.4 Detection results of MSNAN on MS COCO dataset图4 MSNAN方法在MS COCO数据集的检测结果
Table 4 Ablation studies on PASCAL VOC 2007 dataset表4 PASCAL VOC 2007数据集上模型简化测试
非局部通道注意力模块(NLCA-Block):使用SSD方法进行目标检测的平均准确率为77.5%。在SSD网络架构的浅层部分添加一个非局部模块进行检测的平均准确率为78.3%,较SSD提高0.8个百分点。由此说明,通过非局部模块获取了特征图的全局信息,在空间维度增强目标的局部特征。在相同网络结构下使用本文提出的NLCA-Block的检测准确率得到进一步提升,证实了NLCA-Block不仅利用空间域的全局特征信息增强了目标的局部信息,而且弥补了通道域上忽略的特征信息,进而增强浅层特征中的小目标上下文语义信息。
多模块串行叠加(NLCA-Block(S)):为了研究多模块串行叠加结构进行检测的效果,在网络中将多个NLCA-Block叠加进行检测,其中在38×38和19×19像素的检测层前分别叠加了2个和3个NLCABlocks。结果如表4所示,可以发现使用多个NLCABlocks串行叠加结构提高了模型0.2个百分点的检测准确率。进一步证实该模块的叠加操作增强了远距离特征间的相关性,目标特征能够在不同位置间进行信息回传,同时可以在保证模型检测速度的同时提高检测准确率。
密集连接模块(Dense Block(S)):密集连接结构能够实现特征的跨层连接,如表4所示,在网络的深层部分使用密集连接结构进行特征提取,模型的mAP提高到79.0%,证明了网络中的密集连接模块有效地加强网络中的特征传递,增强特征的表达能力,进而提高模型的检测准确率。
5 结束语
本文提出了一个有效进行小目标检测的网络MSNAN。通过特征图空间和通道间的全局信息增强目标局部信息的表达能力,弥补了小目标检测所缺乏的上下文语义信息。并采用密集连接结构增强主干网络的特征提取能力,提高了网络的检测速度。在PASCLA VOC数据集和MS COCO数据集中的实验结果表明,本文方法在检测准确率和检测速度上均表现突出,有效地提高了小目标的检测精度,同时达到实时检测目的。未来的工作将继续探索复杂场景中的小目标的检测方法,包括模糊、强弱光照等低质量图像中进行检测。