张 杰
(安徽理工大学计算机科学与工程学院,淮南 232001)
伴随着深度学习的快速发展,小目标检测技术在军事、遥感等领域得到了广泛的应用[1]。计算机视觉领域通常对小目标的定义有两种:一种是相对尺寸大小,在256×256 像素图中目标面积小于80 像素(即目标面积小于图像面积的0.12%)定义为小目标;二是绝对尺寸大小,以COCO 数据集为例,尺寸小于32×32像素目标定义为小目标。小目标由于其分辨率低,在图像中占比低,特征信息得不到很好的利用,容易受到信息混淆等因素的影响,相对于常规目标检测任务来说,目前的主流模型对小目标的检测效果往往不佳。因此如何改善小目标的检测效果,一直是计算机视觉领域的重难点问题。
近些年来,随着深度学习和目标检测任务的结合,让目标检测在各个领域都获得了很好的发展前景,基于深度学习的目标检测算法主要分为两类:第一种是以SSD[2]、YOLO[3]系列为代表的单阶段检测算法,这类算法的检测速度通常比较快,但检测精度较低;第二种是以Faster-RCNN[4]、Mask-RCNN[5]等RCNN 系列为代表的双阶段检测算法,检测精度得到了不错的提升,但网络参数比较大,导致检测速度劣于单阶段算法的检测速度。针对小目标容易被忽略,携带的信息有限等特点,提出了许多有效的改进模型。Qu 等[6]把膨胀卷积和特征融合一起使用,增强深层特征的语义信息来加强对遥感小目标的检测效果。Li等[7]引入一种特征融合模块加入到特征金字塔中,改善对小目标的检测效果。亢洁等[8]提出了新的多尺度融合模块,通过通道注意力机制重新分配通道权重,增强浅层感受野来提高小目标的检测效果。在PANet 当中,Liu 等[9]对特征金字塔网络不同特征图进行二次融合,这样可以使特征金字塔的高层特征图同时包含低层的特征信息和高层的特征,从而达到提高小目标检测精度的目的;以上的方法通过不同的改进,直接或间接使小目标的检测效果得到了提高,但仍有一些不足。
本文基于Faster-RCNN 算法,提出了一种改进的小目标检测算法:
(1)采用ResNet 替换传统的VGG 提取网络,减少VGG 池化造成的语义特征丢失等问题,加强模型对小目标信息的提取能力。
(2)提出改进后的特征金字塔模型MC-FPN,通过扩充上下文特征信息和引入通道注意力机制来提高整个模型对小目标的检测精度。
本文针对传统的Faster-RCNN 算法对小目标检测精度不佳的问题,提出改进Faster-RCNN 的小目标检测算法,使用ResNet50 替换传统的VGG16 作为新的特征提取网络,其次融合改进后的特征金字塔MC-FPN多尺度特征以提高整体模型对小目标的检测能力。
Faster-RCNN 是一种基于候选区域的端到端的两阶段目标检测算法,是以Fast-RCNN 模型作为基础,加入新的区域建议网络(RPN),通过滑动窗口在相应的特征图上生成所需要的候选区域,即锚框,紧接着通过锚框得到输出类别以及预测框,最后在使用非极大抑制算法对前面的预测结果进行分析,最终获得所需要的候选区域,总体框架如图1所示。
图1 Faster-RCNN总体框架
Faster-RCNN 网络架构主要是由特征提取模块、区域建议网络(RPN)、ROI Pooling 层和分类回归层四部分组成,首先对输入的图片进行特征提取,获得所需特征图,再将特征图传输到区域建议网络从而生成一系列预选框,同时再将生成的预选框与特征图一起传输到ROI Pooling 层,目的是从一系列预选框当中选出最适合特征图的候选框,最后将选出的候选框传送到分类和回归层,这就是Faster-RCNN 算法的流程。
自AlexNet 发展以来,网络结构一直朝着深度进行研究,大家便认为随着网络深度的增加,特征提取网络的拟合能力也会不断变强,从而模型取得一个较好的结果。但逐渐发现,并不是网络层数越深,模型的检测效果越好,精度会一直提升,反而在训练甚至是测试的时候误差都开始变大;在这种情况下,ResNet 于2015年被提出,ResNet 网络可以在加深网络层数提取更多特征信息的同时解决之前深度增加所导致的训练精度下降的问题。ResNet50 采用的是跳跃连接,其输入和输出端直接相连,如图2所示,其中两个1×1 卷积的作用是降维和升维,3×3卷积的作用是提取特征信息。
图2 ResNet50残差网络
特征金字塔(feature pyramid network,FPN)通过引入自下而上,自顶向下的路径和横向连接的方式,将高层特征图的语义信息和低层特征图的位置信息相结合,从而提升小目标的检测能力,但P5仅通过C5得到,而特征金字塔的高层主要用于大中目标的检测,这就导致对小目标的检测效果较差。为解决上述问题,本文提出一种改进后的特征金字塔MC-FPN,如图3 所示,对FPN 的改进主要有以下两个部分:①在C5 和P5直接添加一个多分支空洞卷积模块MCCM(multibranch cavity convolution module),如图4 所示,此模块是由三个不同大小空洞率的空洞卷积并联而成,其作用是通过扩大感受野来捕获更多的小目标特征信息,然后注入到特征金字塔当中,使上下文信息得到更加充分的利用。②引入CBAM(convolutional block attention module)[10]注意力机制,如图5所示,注意力机制CBAM 是结合了空间和通道的注意力模块,由通道注意力模块和空间注意力模块组成,通过融合这两个模块,对特征图进行细化处理。CBAM 注意力机制对最后输出的特征图进行处理,是因为深层特征图含有较多的小目标信息,而特征金字塔信息融合过程导致的信息混淆对深层的小目标信息不太友好,存在漏检等问题,所以在深层P2和P3处引入注意力机制,可以使模型更好地关注小目标信息,从而提高整个模型对小目标的检测效果。
图4 多分支空洞卷积模块(MCCM)
图5 CBAM注意力机制
本文实验采用的是基于深度学习框架的PyTorch1.7.1,操作系统为Ubuntu18.04,CUDA为11.0,GPU型号为NVIDIA GeForce RTX 3090,Python 的使用版本为3.7。模型训练时采用随机梯度下降(stochastic gradient descent, SGD)作为优化器。
本文选择中国科学院发布的高分辨率遥感图像公共数据集HRRSD,该数据集共含有图像21761张,13个类别,分别是飞机、棒球场、篮球场、桥梁、十字路口、田径场、港口、停车场、船、存储罐、丁字路口、网球场和汽车。各个类别之间样本的数量比较均匀,其中大部分类别是以密集排布的小目标形式进行分布,可以用来验证算法模型对小目标的检测效果。以数据集划分,选用1∶1∶2的方式选取图像进行训练,评估以及最后的测试,并对数据集样本进行简单地水平、垂直翻转,以提高模型的泛化能力。
本文的评价指标是目标检测领域常用的平均精度(mAP),表示所有类别AP的平均值。AP的定义为
mAP的定义为
特征提取网络的优越性对于一个模型检测性能的好坏和分类结果有着直接的影响,为了证明改进后模型对于小目标的检测效果,在参数相同的情况下做了多组对比实验,首先验证了ResNet50 特征提取网络与传统VGG16,实验结果见表1。
表1 特征提取网络的比较
从表1 可以看出,两种特征提取网络当中,ResNet50 表现出来的性能优于VGG16,mAP 达到82.7%,比VGG16 高出1.2 个百分点,其中各种类别的检测精度也有不同程度的提升,表明在Faster-RCNN 模型当中,ResNet50特征提取网络对小目标的检测效果略优于VGG16 特征提取网络。
单一地替换特征提取网络对小目标的检测效果提升不是很高,因此我们对FPN 改进,提取一种改进后的特征金字塔MC-FPN,使之与特征提取网络相融合,这对于小目标的检测效果有很好的提升,改进后的模型对比实验见表2。
表2 改进模型的比较
从表2 可以看出,本文算法(ResNet50+MCFPN)与传统的Faster-RCNN 算法和使用ResNet50特征提取网络的Faster-RCNN 算法在HRRSD 数据集上检测结果的对比,mAP 较改进之前提升了4.7 个百分点,其中汽车、存储罐、飞机、网球场等小目标检测精度都有显著的提升,进一步验证本文模型的优越性。
图6 展示了Faster-RCNN 算法改进前后的检测效果图,可以明显看出改进后的算法对于小目标的检测明显比改进前更优。
图6 检测效果
本文主要针对传统的Faster-RCNN 算法对小目标检测效果不佳的问题做出改进,首先用ResNet50 残差网络替换传统的VGG16 网络,以便提取丰富的特征信息,一定程度上提升了模型对小目标的检测精度;紧接着提出MC-FPN模型,减少特征融合过程带来的信息混淆和冗余,从而增强模型对小目标的检测效果。通过前后对比实验证明,改进后的算法对于小目标的检测效果优于改进前的算法,证明改进算法的鲁棒性。