李国强,孙英家
燕山大学, 秦皇岛 066000
随着时代发展与科技进步,无人机技术发展愈加成熟,遥感图像的像素分辨率越来越高,无人机地面航拍成像在军事侦察、地质勘探和罪犯追踪等领域得到了广泛应用[1-2].无人机目标检测属于目标检测与无人机技术的交叉技术领域.通过机身搭载的光学元件,无人机可以方便地获得各种环境下的航拍图像,将这些图像传入内置嵌入式系统,可确定所检测物体的位置坐标和类别[3].通常,无人机图像所包含的视野很大,但由于其拍摄高度原因,待检测的目标物体在图像中占比很小,融入复杂背景中难以区分,不容易准确识别[4-5],传统的目标检测方法难以获得好的结果并且现有的目标检测算法针对图像中的小物体识别效果均不理想,直接将现有算法应用于无人机领域效果较差[6].因此,研究适用于无人机图像的目标检测算法是当今的一个重点课题.近年来,深度学习领域快速发展,基于卷积神经网络 (convolution neural network,CNN)产生了一系列的目标检测方法[7],主要的目标检测模型大致分为Two-Stage和One-Stage 两种模型.前者通常用选择性搜索或者区域生成网络产生感兴趣的区域,再通过卷积神经网络对该区域进行特征提取,对提取到的特征进行分类与回归,最后得到边界框的位置[8].其代表如R-CNN系列算法[9-11];后者直接通过主干网络给出物体类别和位置信息,没有候选框提取这一步骤,其代表如Yolo系列[12-14]、SSD等及其衍生算法.One-Stage检测的速度明显优于Two-Stage,但精度略低于Two-Stage.2016年LIU等[15]提出SSD算法,其采用多尺度检测的方法,使网络具有较高检测精度的同时也具有较快的检测速度.但SSD网络使用浅层特征图检测小物体,深层特征图检测大物体.由于浅层特征没有较强的语义信息,对小目标物体的特征提取能力较弱容易出现漏检、误检的情况,导致检测小物体精度不高[16].
针对上述问题,在不损失网络检测实时性的情况下,有效提升无人机航拍图像中小物体检测的准确率,本文在SSD算法模型的基础上,提出了一种RCBnet网络模型,在该模型中,主要有以下创新:1)为了加深网络增强网络的特征提取能力和合理利用低层特征信息与高层特征信息,RCBnet将主干网络VGG16替换为Resnet-50,通过特征融合方式融合低层和高层信息;2)为了更好地学习无人机航拍情况下多尺度目标特征,构建一种联合注意力的多分支卷积结构对融合后的卷积层继续进行特征提取;3)为了处理正负样本不平衡问题,该算法通过引入Focal Loss损失函数使算法侧重训练困难分类样本,抑制容易分类样本[17].
SSD是典型的One-Stage目标检测算法,其采用特征金字塔结构进行检测,主干网络为VGG16,但对VGG16进行了一些修改[18],将全连接层变成卷积层,同时在后面增加一些卷积层用于特征提取,共生成6个有效特征层,其结构如图1所示,对这6个有效特征层输出的特征图进行处理,每个有效特征层中产生数量不等且不同长宽比的默认先验框,后续对这6个有效特征层同时进行两次卷积操作,一次对其进行通道数为num_priors×4的卷积,作用是预测该特征层上每一个网格点每一个先验框的变化情况;另一次卷积作用是预测该特征层上每一个网格点每一个预测框对应的种类,其通道数为num_priors×num_classes.从中同时输出类别置信度和位置数据,最后通过非极大值抑制得出预测结果.(num_priors是该特征层每个网格点的先验框数量,num_classes是预测物体的种类).
Resnet(residual neural network)是2015年由HE等[19]提出的一种用于图像分类的卷积神经网络结构,且参数量比VGGnet低,训练效果优于VGG等其他网络,识别准确率也有较大地提升.随着其发展,近年来Resnet更广泛地应用在图像分类、目标检测和分割等领域.卷积神经网络结构越深,能提取到的特征越多,信息越复杂,效果越好.但随着网络深度的增加,会出现网络的退化问题,其精度没有提升,这是因为网络加深后在反向传播过程中深层梯度越来越小直至消失.
Resnet-50有2个基本的残差块,分别为Conv Block和Identity Block,结构如图2所示.
图1 SSD网络结构Fig.1 Network Structure of SSD
图2 残差结构Fig.2 Residual structure
在残差网络结构中,记输入为x,残差结构学习到的特征为H(x),网络原始学习特征为F(x).则残差结构能学习到的特征,如式(1)所示:
H(x)=F(x)+x
(1)
这种残差跳跃式结构,与传统的神经网络n-1层的输出只能给n层作为输入的特点不同,使某一层的输出可以直接跨过中间的卷积层作为后面某一层的输入,这种跨越式的连接很好地解决了由于网络层数加深所产生的梯度消失问题.
依据传统神经网络结构特点,在此基础上重复使用残差单元,即可搭成用于特征提取的残差网络.选取Resnet-50作为SSD的主干网络.图3为Resnet-50的网络结构图.
图3 Resnet-50网络结构Fig.3 Network structure of Resnet-50
Resnet-50由5个阶段构成,其中2~5层都经过一个Conv Block和若干个Identity Block的残差块,Conv Block输入和输出的维度不一样,不能连续串联,作用是改变网络的维度;Identity Block输入维度和输出维度相同,可以串联,用于加深网络.
类似人类视觉系统,卷积神经网络中感受野是输出特征图上的点映射到输入图片所对应的区域大小.大感受野较好的提取大尺寸目标的语义信息,小感受野较好的提取小目标的细节信息.传统卷积由于其尺寸预先设定好,使用不灵活,映射区域较为有限.航拍图像往往包含多尺度物体,且每个类别的物体所具有的像素大小也与其拍摄距离的变化而变化,固定尺寸的传统卷积核对不同尺度的目标特征提取能力较差.
为了解决此问题,本文借鉴了Inception的思想[20],引入一种多尺度卷积结构代替传统卷积块,该卷积结构的前端用不同尺寸的卷积核模拟不同大小的人眼感受野;各个分支的后端加入比率不等的空洞卷积模拟视觉中不同偏心率对感受野的影响,来模拟人眼提取事物的过程;同时模块的另一侧引入了残差结构.由于多尺度卷积中卷积核尺寸大小不固定,使较大的目标获得较大的感受野使网络捕捉其完整的特征,较小的目标使用较小的感受野保证具有足够的细节信息,故对不同类型的卷积核进行权重学习,使重点关注的信息获得更大的权重.在卷积模块中引入注意力机制CBAM[21](convolutional block attention module),使网络更加注重于目标区域的细节信息,使相关区域在学习中改变原有的权重分布获得更大的权重.CBAM模块结合空间注意力和通道注意力,空间注意力关注目标的位置信息,通道注意力关注目标的语义特征,增强有效特征,抑制无效特征.尤其对小物体检测,加入注意力模型后,防止小物体由于提取特征较少而被误识别为背景,有效提高识别精度.
图4 联合注意力的多尺度卷积块(basic block)Fig.4 The multi-scale convolution block of attention
联合注意力的多尺度卷积块如图4所示,多分支卷积层其中的3个分支使用了1×1、3×3多种尺寸的卷积核,使用2个3×3卷积核代替5×5的卷积核,在这些卷积之后分别进行3×3的不同膨胀率的空洞卷积,将3个分支的结果进行堆叠再进行1×1的卷积,在其结果后嵌入CBAM进行特征优化,再与一个残差结构进行相加,最后得出该卷积结构的输出.该卷积结构可以有效地提高网络模型的特征提取能力.
SSD算法使用不同尺寸的特征层进行检测,各个卷积层之间采用级联方式连接,相邻的卷积层之间存在影响关系,与之前的卷积层毫无关联,这样的网络结构并没有充分地将之前的卷积层提取计算得到的大量特征数据加以利用.低层特征虽有细节信息,但没有较强的语义信息.由于低层特征用于检测小物体,这使检测小物体的精度较低,为了提升精度,本文提出的RCBnet是基于SSD网络模型的改进,保留SSD部分结构,整体网络结构如图5所示.由于航拍目标多存在小物体,小目标物体在图像中占有极少的像素点,使网络对其检测难度加大,导致某些类别检测精度较低.
本文改进了传统的SSD算法,思想是更改SSD的主干网络VGG16为深度残差网络Resnet-50,并将网络中ReLU激活函数替换为LeakyReLU同时加入归一化层BN (batch normalization).在神经网络中,在输入小于0的情况下,ReLU输出恒为0,导致反向传播过程中对应权重无法更新,影响学习效果.而LeakyReLU函数在输入小于0时也具有一定的输出值,仍可以更新权重学习特征.BN层的作用是加快模型的收敛速度.更改后网络的图片输入尺寸不变,仍为300×300.去掉原网络的全连接层,同时对主干网络Resnet-50提取出的尺寸19×19的Conv4_x、尺寸10×10的Conv5_x进行上采样操作,进而与尺寸38×38的Conv3_x进行特征融合,使其具有丰富的语义信息和细节信息,其尺寸为38×38;在新生成的特征图后加入5个额外卷积模块,所有的卷积结果共产生6个检测层用于后续的物体检测操作.在额外增加的卷积模块中,每个部分都存在2个卷积结构,1×1卷积核用于调整通道数,降低运算量,在其后加入BN层,激活函数为LeakyReLU;Basic Block卷积块用于特征提取.整体结构图如图5所示.
图5 RCBnet网络结构Fig.5 Network structure of RCBnet
在RCBnet算法模型中,Conv6、Conv7、Conv8、Conv9、Conv10、Conv11共6个特征层用于物体检测.由于低层特征对小物体检测至关重要,把每层每个网格中先验框数量设置为6、6、6、6、4、4个,实验发现,这样设置效果会更好.每层先验框数量见表1.
表1 特征图先验框数量Tab.1 Prior box numbers of feature maps
SSD的损失函数包含用于分类的Log Loss和用于回归的SmoothL1,以及模型的总体损失基于两部分损失的加权和,此损失函数如式(2)所示
(2)
其中,N是先验框的正样本数量,α表示回归损失的权重系数.
对位置误差,采用SmoothL1Loss,如式(3)所示
(3)
SmoothL1的公式如式(4)所示
(4)
对于置信度误差,采用Softmax Loss,定义如式(5)所示
(5)
原SSD网络一张图片会生成几千个先验框,在RCBnet网络中先验框数量成倍增长,一张图片会生成一万个先验框,但只有很少一部分包含目标,此为正样本,其余均为负样本,这会导致正负样本比例严重失衡.针对检测类别不均衡的问题,引用了一种新的损失函数:Focal Loss, 此损失函数在交叉熵函数的基础上做了改进.
交叉熵如式(6)所示
(6)
Focal Loss对交叉熵函数做了一些修改,实现控制正负样本的权重和控制容易分类和困难分类样本的权重.式中:αt为加权因子,作用是控制正负不平衡样本对总损失的权重,平衡不同类别样本的数量;γ是一个大于等于0的参数,控制分类样本难易程度的权重;(1-pt)γ为调制系数.
具体实现方式如式(7)所示
FL(pt)=-αt(1-pt)γln(pt)
(7)
本文αt取0.25,γ取2.当样本为容易分类样本时,pt趋近于1,(1-pt)γ趋于0,对总体损失贡献较小;当样本为困难分类样本时,pt趋近于0,(1-pt)γ趋于1,对总体损失贡献较大;Focal Loss通过增大难分类样本的损失值,减少容易分类样本的损失值,使SSD检测网络加大难分类样本的权重,侧重于难分类样本的训练,使网络训练效果更好.
此处数据集采用TGRS-HRRSD-Dataset航拍数据集,无人机在航拍过程中飞行高度和拍摄角度不断变化,数据集包含大量的多尺度目标,小目标也居多,故该数据集是一个场景丰富,目标多尺度且以小目标为主的航拍数据集.共计21761张不同场景下的图像及其13个对象类别,其中小物体包括停车位、汽车和篮球场等类.选取19585张图片作为RCBnet的训练集,剩余2176张图像作为测试集.本文使用 NVIDIA Tesla P100 GPU进行实验训练,使用NVIDA GTX1080Ti进行测试,代码框架为Keras1.15,Python版本为3.6.12.
首先在基础实验进行多次调参,以获得准确率最高的实验结果.网络训练时,分为冻结训练和解冻训练2个部分,各为50个epoch.冻结训练时学习率设置0.000 5,解冻训练时学习率设置为0.000 2.锚框尺寸和其相关参数设置见表2.
RCBnet模型加入Focal Loss损失函数前后对比如图6所示.
表2 锚框尺寸参数Tab.2 Size parameters of prior box
图6 RCBnet模型损失曲线Fig.6 Loss curves of RCBnet
整个训练过程共迭代100个epoch.对于RCBnet,网络中加入Focal Loss损失函数与未加Focal Loss损失函数进行了对比.在冻结训练时,部分权重不更新,网络中加入Focal Loss损失函数后,使网络侧重于困难样本训练,相比于未加Focal Loss,训练前期Loss快速下降后趋于平缓下降幅度更为明显.解冻训练时,网络中所有权重均在更新,Loss继续下降逐渐趋于收敛,加入Focal Loss的网络收敛效果更好,使网络更好地关注样本中的有效信息,网络最终收敛在1.212.未加Focal Loss的网络只收敛在2.267.
训练后评估RCBnet目标检测模型的各项性能指标,使用平均准确率均值(mean average precision,mAP)作为此算法的评价指标.检测过程中计算每个类别的召回率和准确率,则准确率均值(AP)为该曲线与x轴、y轴所围成的面积,mAP是13个类别AP的平均值,AP、P、R的计算如式(8)~(10)所示
(8)
(9)
(10)
其中,TP为真正例,FN假反例,FP假正例.
为验证改进网络模型的有效性,设计消融实验对网络中各个算法模块性能进行有效评估.其中实验I为原SSD网络,即在VGG16的6个尺度预测层上进行预测和回归.实验II为将主干VGG16更改为Resnet-50未进行融合操作,后续的额外卷积层普通卷积核做特征提取.实验III为在实验II基础上进行融合操作.实验IV为在实验II基础上将普通卷积替换为联合注意力的多尺度卷积块.实验V为在实验II基础上进行特征融合和嵌入联合注意力的多尺度卷积块.实验结果如表3所示.
表3 算法各模块有效性对比试验Tab.3 Comparison trial of the effectiveness of each module
从表3中可以看出,在原算法的基础上,实验II-V的检测效果均有提升,实验II相比实验I的mAP提高1.68%,表明更改结构更深的主干网络Resnet50,目标特征提取效果变好,进而精确度与召回率有小幅提升.实验III和IV分别在II基础上进行融合操作和更改所使用的卷积结构,精度均有小幅提升,但提升幅度不同,可以看出嵌入多尺度卷积块更加有效,该卷积块使网络更注重有效特征,有效调节感受野,使网络更是用于检测多尺度物体.实验V在实验II基础上将特征融合和多尺度卷积结构结合,使物体检测更精确,相比原始mAP提高了3.46%,平均精度提高了4.32%,平均召回率提高了1.77%.
验证本文算法在实际场景中检测效果,取航拍遥感数据集中具有代表性和检测难度较大的部分图片并使所取出的验证图片包含所有类别,对检测结果进行可视化操作.检测结果如图7所示,观察结果可以发现,现有SSD对图像中某些小物体检测率较低,经常存在漏检情况,有时也会出现误检情况,并且大多数物体检测的置信度偏低;改进后的RCBnet对物体的检测效果明显优于原SSD网络,对于无人机俯瞰角度下的小物体也能正确检测出,检测精度提升明显.在检测大物体时,原SSD网络与RCBnet整体检测精度相当,很少出现漏检、误检情况,置信度也较高.总体上,改进网络对航空遥感图像中的小物体的检测效果相比于原SSD网络有明显改善,改进后的模型具有更强的鲁棒性.在困难的航拍环境下,俯瞰角度的大中小物体均有很好的检测效果,将本文改进算法与当前主流算法进行对比试验,在同一个环境下,对不同的算法进行训练,并对训练得到的模型进行评估,判断各类网络在无人机航拍情况下检测地面物体的能力,将改进网络实验结果和原始SSD网络、DSSD、Center-Net以及YoloV3进行比较,对比结果如表4.
图7 SSD和RCBnet物体检测效果Fig.7 The results of object detection between SSD and RCBnet
表4 实验对比图(单位:%)Tab.4 Experimental comparison map
从检测结果可以看出:在对SSD主干网络进行优化后,与其他模型相比,RCBnet具有更高的检测精度,并略优于检测效果最好的YoloV3,mAP比原始SSD网络高3.46%,可以看出本网络的特点,飞机、十字路口和港口等大物体检测精度略优于其他网络;在篮球场、汽车和停车位等小物体识别效果明显优于其他4类经典网络.精度提升的主要原因是多尺度特征融合使检测小物体的低层特征图具有更深层次的语义信息,合理利用了层与层之间的联系;引入联合注意力的多尺度卷积块,不同尺寸的卷积核并行计算,带来互补信息,增强网络的表达能力;总体上,改进后的网络具有更好的检测效果.
本文提出一种无人机航拍物体的改进SSD算法,该算法在不影响大物体检测精度的同时对小物体更加敏感,提高了某些小物体类别的检测精度.
采用特征融合方式,更改SSD主干网络VGG16为Resnet-50,优化网络结构,增强部分特征层的语义特征;在特定的特征图后引入联合注意力机制的卷积块,有效提升网络的特征提取能力和预测能力.引入Focal Loss使模型侧重于困难样本的训练.实验结果表明,对比其他经典的目标检测网络结构,该算法具有更好的检测性能,无人机航拍物体的检测精度增加至90.84%mAP,误检、漏检的情况减少.此网络能够适应准确率更高的检测任务要求.如何在无人机自身硬件的局限和某些限制条件下,提高无人机的物体检测速度和检测准确率,也是下一步的研究方向.