范新南,严炜,史朋飞,张学武
河海大学物联网工程学院,常州 213022
遥感图像目标检测旨在确定遥感图像中是否存在感兴趣的地物对象,同时对地物对象进行分类和确定其在图像中的位置(刘小波等,2021;姚艳清等,2021;周培诚 等,2021),如在遥感图像中检测船只(姚红革等,2020;于野等,2020);现如今,遥感图像目标检测被应用于诸多领域,在军事安全、交通安全、应急救援等方面都具有重要作用(姚群力等,2019)。
传统遥感图像目标检测算法可分为基于模板匹配的算法和基于传统机器学习的算法(Cheng 和Han,2016)。基于模板匹配的算法主要包括模板生成和相似性度量两个步骤,例如Weber和Lefèvre(2008)用多元图像分析方法作为海岸线模板以检测石油罐。该类算法简单易行,但鲁棒性差,无法适应目标的多变性。基于传统机器学习的算法是近年来的研究热点。其主体思想是先通过滑动窗口的方法获取图像中感兴趣的区域,然后对区域提取底层特征,再通过统计分析等手段得到如局部二值模式LBP(Local Binary Pattern)(郭少军 等,2017)、尺度不变特征变换SIFT(Scale−Invariant Feature Transform)(周德云等,2015)、奇异值分解SVD(Singular Value Decomposition)(Zou 等,2016)等中层特征,接着用中层特征训练出支持向量机SVM(Support Vector Machine)等分类器,最后利用分类器判断感兴趣区域中是否含有待检测目标。例如Cheng等(2013)利用滑动窗口和方向梯度直方图HOG(Histogram of Oriented Gradient)特征进行遥感图像目标检测;Zhang 等(2015)、Sun 等(2012)利用滑动窗口和词袋BOW(Bag of Words)特征对地物进行检测。基于传统机器学习的算法虽然在准确性和鲁棒性上优于基于模板匹配的算法,但是该类算法在获取感兴趣区域步骤上过于繁琐,而且只能提取浅层特征,因而在复杂遥感图像中的描述能力较差。而近年来迅猛发展的深度学习技术正好能解决这一问题。深度学习技术通过深层网络训练可获得更深层特征,进而实现更加准确的目标检测,例如张磊等(2019)在Faster R−CNN 网络的基础上通过数据增广的方法提升了遥感图像目标检测的性能;李红艳等(2019)在Faster R−CNN 网络的基础上加入注意力机制模块以获得更多需要关注的信息,并使用弱化的非极大值抑制方法Soft−NMS(Soft Non−Maximum Suppression)抑制目标的旋转来提升遥感图像目标检测的性能;Cheng 等(2016)提出了旋转不变的卷积神经网络RICNN(Rotation Invariant Convolutional Neural Networks),该算法在卷积神经网络CNN(Convolutional Neural Networks)基础上加入旋转不变层来提升遥感图像目标检测性能;王生生等(2019)提出给深度神经网络剪枝的两阶段目标检测网络ODDP (Object Detection Based on Deep Pruning),该方法在平均准确率上有所提升;Xu和Wu(2020) 将YOLOv3 算法应用于遥感图像目标检测中,并通过在原始YOLOv3 算法中加入DenseNet 特征提取网络来提升目标检测性能。上述方法在一定程度上提升了遥感图像目标检测的性能,但是依然存在对遥感图像中的特征提取不够充分的问题,因而无法应对目标尺度的大差异性问题,尤其对于小目标的检测性能很差,导致最后得到的多类平均准确率较低。
本文针对上述方法的不足提出一种基于多尺度深度特征融合网络的遥感图像目标检测算法。本文的主要改进之处在于:首先,提出把原算法中的VGG16 特征提取网络替换为ResNet50 特征提取网络以更加充分地提取图像中的深层特征;其次,为了解决遥感图像目标检测中目标尺度差异大的难点问题,提出在算法中加入特征金字塔网络,即用高层语义信息和低层细节信息相加的方式得到多尺度特征图,这有助于提升小目标的检测准确率;然后,提出将原算法中的交叉熵损失函数替换为焦点损失函数以减小易分类样本在总损失中所占权重,让网络更加关注难分类样本以进一步提升准确率;最后对NWPU VHR−10 数据集和RSOD数据集进行数据增广以克服数据集样本少的缺点并提升算法的泛化性能。本文起本质性作用的改进点在于加入特征金字塔网络,这一改进有效地解决了遥感图像目标检测中目标尺度差异大的难点问题,对提升小目标的检测准确率至关重要。而替换特征提取网络和损失函数作为辅助改进点能进一步提升检测准确率。
Girshick Ross团队在2015年提出Faster R−CNN算法(Ren 等,2017);该算法在快速区域卷积神经网络Fast R−CNN(Fast Region Convolutional Neural Networks)(Girshick,2015)的基础上用区域提议网络替代选择性搜索方法,有效地改善了选择性搜索方法生成候选框过慢的缺点。本文在Faster R−CNN 算法的基础上对其进行改进,首先替换其特征提取网络,再加入特征金字塔网络,接着替换其损失函数,最后应用于经数据增广的数据集上验证本文算法的性能。
Faster R−CNN 算 法 应 用VGG16 基 础 网 络(Simonyan 和Zisserman,2014)对输入图像提取特征得到特征图,该网络的网络结构示意图如图1所示。
图1 VGG16的网络结构示意图Fig.1 VGG16 network structure chart
VGG16 网络可以认为是AlexNet 和ZF−Net 的改进,改进之处在于用多个3×3的卷积核堆叠的方式替代以往用大核卷积堆叠的方式提取特征,这种方式能获取更细节且更深层次的特征;另外,VGG16 网络进一步加深了网络的深度。在当时,许多研究工作都把该网络当成基础网络,这让研究人员认为卷积神经网络的深度越深,精度就越高。但后来发现当网络达到一定深度之后,精度不升反降。经研究发现,这种现象的原因在于网络过深导致反向传播时梯度逐渐消失,无法调整前面网络层的权重(He 和Sun,2015;Srivastava 等,2015)。为了解决该问题,He 等(2016) 提出ResNet,该网络在2015 年的ImageNet 竞赛中获得冠军。ResNet 主要由两种学习单元组成:两层残差学习单元和3层残差学习单元,而两种学习单元又是由1×1 和3×3 的卷积核堆叠而成。两种学习单元的结构示意图如图2所示。
图2 两种典型残差学习单元结构示意图Fig.2 Structure charts of two typical residual learning units
由图2 中可以看出,当学习单元没有学习到任何新特征时,学习单元的输入不经过中间的卷积层而直接输出,即输出等于输入。通过这种恒等映射方式保证网络的性能不会随着网络的加深而退化的同时还能提取到更深层次的特征(He等,2016)。常用的ResNet 系列包括ResNet18、ResNet34、ResNet50、ResNet101、ResNet152 等,这些网络都是由上述残差学习单元以不同方式堆叠而成。在ResNet 网络之后,虽然有其他卷积神经网络被提出,但由于VGG 系列和ResNet 系列具有结构简单且性能较好的优点,所以,研究人员往往还是选取这两类网络作为基础网络。本文通过对比实验发现,在遥感图像目标检测中把ResNet50当成Faster R−CNN 算法的基础网络能够取得最佳效果。
区域提议网络是Faster R−CNN 算法中的核心部分,这一网络使得Faster R−CNN算法相较于Fast R−CNN 算法有更快的速度和更高的精度(Ren 等,2017;Girshick,2015)。区域提议网络首先将输入的特征图利用锚机制和回归框机制进行训练得到候选框。然后将候选框输出给区域卷积神经网络RCNN(Region Convolutional Neural Networks)做进一步的分类与定位。但是原Faster R−CNN 算法中是将单一尺度特征图输入区域提议网络,如图3(a)为获得单一尺度特征图的方式,该方式通过不断下采样获得高层语义信息。这种方式存在明显缺陷,即小物体本身具有的像素信息较少,在下采样的过程中极易被丢失,导致网络对大目标物体的检测准确率较高,而对小目标的检测准确率很低,而特征金字塔网络(Lin 等,2017a)恰能弥补这一缺点。因此本文采用特征金字塔网络获取多尺度特征图,如图3(b)所示,先用ResNet50 网络对输入图像提取特征并对特征图下采样得到第1、2、3 层,然后将第3 层采用上采样操作得到第4 层,再将第2 层与第4 层相加得到第5 层,接着将第1 层与第5 层相加得到第6 层,最终得到第4、5、6 层;之后将第4、5、6 层作为特征图输入到区域提议网络中,由区域提议网络得到候选框。通过将高层语义信息和低层细节信息相加的方式得到的多尺度特征图可兼顾类别信息和位置信息,这种方式能有效解决遥感图像目标检测中目标尺度差异大的难点问题,尤其对提升小目标的检测准确率至关重要。
图3 两种提取特征图的网络Fig.3 Two kinds of networks for extracting feature maps
迄今为止,精度较高的目标检测算法是类似于Faster R−CNN 的双阶段检测算法,而导致SSD(Liu 等,2016)之类的单阶段检测算法检测精度不高的主要原因在于该类检测器不具有初步筛选候选框的区域提议网络,而是将所有候选框一起送入分类器中,这样会使得正负样本比例严重失衡,即负样本比例远远超过正样本;而绝大多数负样本都是易分类的背景样本,易分类样本比例过高导致在优化损失函数时无法收敛到最优结果。因为双阶段检测算法中有区域提议网络,所以不存在正负样本比例严重失衡的问题。但原Faster R−CNN 算法依然没有考虑难分类样本和易分类样本的权重(Shrivastava 等,2016)。为了减小易分类样本在总损失中所占权重,本文将Faster R−CNN算法中的交叉熵损失函数替换为焦点损失函数(Lin 等,2017b),让网络更加关注难分类样本以进一步提升准确率。原Faster R−CNN 算法采用交叉熵损失函数,交叉熵损失函数定义式如式(1)所示:
式中,y∈{0,1}代表真实值,p∈[0,1]代表预测概率,为了方便表示式(1),定义p'如式(2)所示:
式中,y和p的含义与式(1)中相同,y∈{0,1}代表真实值,p∈[0,1]代表预测概率,p'是为了方便表示式(1)而定义的新变量,那么式(1)可重新表示为式(3):
交叉熵损失函数的代价函数如图4中蓝色曲线所示:由蓝色曲线中可以看出,即使是易分类样本的损失依然较大,大量易分类样本的损失相加占据总损失的比重则很大,这将导致易分类样本的损失主导梯度,最终导致优化损失函数时无法收敛到最优结果。本文引入的焦点损失函数的定义如式(4)所示:
式中,p'的定义如式(2)所示,γ为指数。不同γ值下焦点损失函数的可视化效果如图4 所示。由图4中可以看出,在一定范围内,易分类样本的损失值随着γ值的增大而变小,虽然在易分类样本的损失值减小的同时难分类样本的损失值也在减小,但是运用焦点损失函数的本质作用在于:相较于交叉熵损失函数而言,易分类样本的总损失占全部损失的比重将减小,难分类样本的总损失占全部损失的比重将增大,这使得网络更加关注于难分类样本以提高检测准确率。
图4 针对多种γ值下损失函数的代价对比示意图Fig.4 The cost of loss functions on multi γ settings
充足的训练样本是保证深度学习方法性能的前提。现有的大多数遥感图像数据集中的样本数量都较少,普遍只有几百张,远未达到深度学习方法对训练样本数量的要求。采用数据增广的方法能最大限度地利用小样本数据集中的数据,增强模型的泛化性能(Liu 等,2016)。常用的数据增广方法有调整颜色、翻转、加噪声、仿射变换等。本文采取水平翻转、垂直翻转、调整亮度和加高斯噪声这4种方式随机组合的方式进行数据增广,并对图片标签用同等方式映射。原始NWPU VHR−10 数据集包含650 张图像,数据增广后的NWPU VHR−10数据集包含3550张图像;原始RSOD数据集包含936 张图像,数据增广后的RSOD 数据集包含4122 张图像。以NWPU VHR−10 数据集和RSOD 数据集为例,经数据增广后的图像如图5所示。
图5 NWPU VHR−10和RSOD数据集部分数据增广结果图Fig.5 Partial data augmentation result images of NWPU VHR−10 dataset and RSOD dataset
实验所用计算机处理器为Intel Core i7−7700,内存为128 GB,显存为11G,GPU 为NVIDIA TITAN V。基于python3.6编程实现,深度学习框架为pytorch0.4.0。
本文选用西北工业大学团队标注的NWPU VHR−10数据集(Cheng和Han,2016)和武汉大学团队标注的RSOD数据集(Long等,2017;Xiao等,2015)作为实验所用数据集。其中NWPU VHR−10数据集共有650 张包含目标的图像,涵盖10 类目标,分别是:飞机、船只、油罐、棒球场、网球场、篮球场、田径场、港口、桥梁和车辆。RSOD数据集共有936 张包含目标的图像,涵盖4 类目标,分别是:飞机、油罐、立交桥和操场。但由于两个数据集的样本较少,所以分别对两个数据集采取水平翻转、垂直翻转、调整亮度和加高斯噪声4种方式随机组合的方法进行数据增广;数据增广后的NWPU VHR−10 数据集包含3550 张包含目标的图像,RSOD 数据集包含4122 张包含目标的图像。
本实验采用单类平均准确率AP(Average Precision)、多类平均准确率mAP(mean Average Precision)、P−R(Precision−Recall)曲线等目标检测常用评价指标对本文算法进行性能评估。在目标检测中,查准率precision和查全率recall如式(5)、式(6)所示:
式中,TP(True Positive)为真正例,即被预测为正例的正样本,FP(False Positive)为假正例,即被预测为正例的负样本,FN(False Negative)为假反例,即被预测为负例的正样本。根据查准率和查全率可画出P−R曲线,而P−R曲线下的面积即为单类平均准确率AP,如式(7)所示:
式中,p代表查准率precision,r代表查全率recall。多类平均准确率mAP如式(8)所示,其中C为类别数。
本文重要的实验参数如下:初始学习率(Initial learning rate) 设为0.001,衰减率(Learning rate decay)设为0.1,学习率衰减步数(Learning rate decay step)设为5,即每训练5 轮学习率变为原来的0.1 倍;批处理大小(Batch size)设为1,即每次只训练1张图片,轮次(Epoch)设为20,动量(Momentum)设为0.9,优化方法(Optimizer)为随机梯度下降算法SGD (Stochastic Gradient Descent)。
本实验首先通过对比实验选取合适的特征提取网络,结果见表1。由表1 可以看出,原Faster R−CNN 算法采用VGG16 网络进行特征提取,在NWPU VHR−10 数据集和RSOD 数据集中的多类平均准确率mAP分别为82.8%和85.2%;而本文改用ResNet50 网络进行特征提取,在NWPU VHR−10数据集和RSOD数据集中能取得最佳效果,mAP分别为85.2%和89.9%,相比原算法分别提高2.4%和4.7%。由此可见,采用深度残差网络并适当加深网络深度可提升检测准确率。分析其原因在于,ResNet50 深度残差网络通过恒等映射的方式来提取特征,相比于VGG16 特征提取网络能提取到更深层次的特征,而且网络深度适中,可兼顾精度与速度。因此本文采用ResNet50 作为算法的特征提取网络。
各模块间的消融实验结果如表2 所示。由表2中的消融实验结果可以看出,本文提出的每一个改进模块对提升多类平均准确率mAP都有一定的作用。对于NWPU VHR−10 数据集,在加入特征金字塔网络、焦点损失函数和数据增广策略后,mAP分别提升2.6%、4.8%和0.8%;而在RSOD 数据集上分别加入特征金字塔网络、焦点损失函数和数据增广策略后,mAP分别提升0.6%、1.6%和0.9%,这一结果证明了改进模块的有效性。
表2 针对各模块mAP的消融实验对比Table 2 mAP ablation comparisons on the different modules
原算法与改进之后的算法在NWPU VHR−10数据集和RSOD 数据集上的P−R 曲线见图6。由图6可以看出,相较于原算法而言,本文改进之后的算法在船、储油罐、网球场、车辆等尺寸较小物体的单类平均准确率AP得到明显提高,并且本文算法对应的P−R 曲线总面积,即多类平均准确率mAP明显大于原Faster R−CNN 算法。从原因上分析:首先,本文用特征提取能力更为强大的ResNet50特征提取网络替换VGG16特征提取网络。ResNet50 深度残差网络通过恒等映射的方式保证网络的性能不会随着网络的加深而退化的同时还能提取到更深层次的特征(Lin 等,2017b),其中也包括小目标的特征;另外本文加入了特征金字塔网络,该网络通过将高层语义信息和低层细节信息相加的方式得到的多尺度特征图可兼顾类别信息和位置信息,这种方式能有效解决遥感图像目标检测中目标尺度差异大的难点问题,尤其对提升小目标的检测准确率至关重要(Lin 等,2017a);而且本文用的是焦点损失函数,这使得网络更加关注难分类样本,其中也包括小目标样本。以上这3个方面的改进使得本文的算法对于待检测目标,特别是小目标的检测准确率得到较大幅度的提升,最终提升了mAP。而数据增广的目的在于增强网络的泛化性能,改进后的网络在两个不同数据集上的mAP都得到提升也证明了该网络的泛化性能较好。
图6 P−R曲线对比图Fig.6 P−R curve comparisons
为了验证算法改进后确实提升了遥感目标的检测准确率,图7(a)是本文从NWPU VHR−10和RSOD 数据集中选取的部分图像,包含了储油罐、网球场、车辆等小目标,分别对其用改进前后的算法进行检测,结果如图7(b)和7(c)所示。由图7(b)组图像可以看出,原算法对于诸如储油罐、网球场、车辆等小目标的检测能力较差,经常性的出现漏检或错检等情况,而且检测框重叠现象严重,造成这些问题的主要原因有:原算法对小目标特征提取不足;获得的单一尺度特征图无法解决遥感图像目标尺度差异大的难题,尤其在小目标检测的性能上较差;对难分类目标关注不够。而本文通过加入ResNet50 特征提取网络、特征金字塔网络和焦点损失函数等策略使得上述问题得到明显改善,如图7(c)组图像可以看出,本文算法检测到的物体更加全面,不再出现漏检的情况,而且检测框更加准确。
图7 算法改进前后目标检测效果对比图Fig.7 Images of target detection before and after algorithm improvement
为进一步验证本文算法的有效性,在NWPU VHR−10 数据集上,将本文算法与BOW(Xu 等,2010)、部分检测器集合的方法COPD(Collection of Part Detectors)(Cheng 等,2014)、RICNN(Cheng 等,2016)、Faster R−CNN(Ren 等,2017)、ODDP(王生生 等,2019)、Mask R−CNN(He 等,2017)等算法进行对比实验,实验结果见表3和表4。
表3 为7 个算法在NWPU VHR−10 数据集上的多类平均准确率mAP对比表。由表3 可以看出,传统算法BOW 的检测效果最差,mAP仅为24.6%;原Faster R−CNN 算法虽然在检测效果上有很大的提升,但在检测船、储油罐、网球场、车辆等小目标时,漏检、错检情况严重,单类平均准确率AP分别只有80.8%、49.1%、79.2%、85.5%;本文算法通过加入ResNet50 特征提取网络,特征金字塔网络和焦点损失函数之后,很好地优化了该问题,使得船、储油罐、网球场、车辆等小目标的AP高于原Faster R−CNN算法和其他几种对比算法,分别达到90.7%、89.5%、99.2%、90.3%。最终,本文算法在mAP上相较于BOW、COPD、RICNN、原Faster R−CNN、ODDP、Mask R−CNN 分别提升68.8%、12.7%、20.8%、10.6%、6.7%、9.5%。表4为7 个算法在NWPU VHR−10 数据集上的平均测试时间对比表,从中可以看出,本文算法相较于原算法而言,测试时间增加了0.02 s,对比精度的提升,这细微时间的增加可以接受。而相较于其他算法而言,本文算法的测试时间相对较少,原因在于Faster R−CNN 算法中有区域提议网络,能生成更少的候选框,并且网络结构较简单。
表3 7个算法在NWPU VHR-10数据集上的mAP对比Table 3 mAP comparisons on the NWPU VHR-10 dataset for 7 algorithms/%
表4 7个算法在NWPU VHR-10数据集上的平均测试时间对比Table 4 Testing time comparisons on the NWPU VHR-10 dataset for 7 algorithms
现有的一些遥感图像目标检测算法对遥感图像中的特征提取不足且无法很好地解决遥感图像中目标尺度差异大的问题,这将导致图像中错检漏检问题严重,进而影响目标检测精度。针对以上问题,本文在Faster R−CNN 算法的基础上对其做出改进,提出了一种新的遥感图像目标检测算法。具体来说,先把VGG16 特征提取网络替换为ResNet50 特征提取网络以提取更深层次的特征;接着引入特征金字塔网络,通过将高层语义信息和低层细节信息相加的方式得到的多尺度特征图可兼顾类别信息和位置信息,这种方式能有效解决遥感图像中目标尺度差异大的问题,进而有效提升小目标的检测准确率;然后把交叉熵损失函数替换为焦点损失函数以使得难分类样本得到更多关注。为了验证所提算法的有效性,本文做了两组实验,包括所提算法中各模块间的消融实验以及所提算法与其他算法间的对比实验。其中,消融实验结果表明,对于NWPU VHR−10 数据集,在加入特征金字塔网络、焦点损失函数和数据增广策略后,mAP分别提升2.6%、4.8%和0.8%;而在RSOD 数据集上分别加入特征金字塔网络、焦点损失函数和数据增广策略后,mAP分别提升0.6%、1.6%和0.9%,证明了采用深度残差网络能够提取到更深层次的特征而提升目标检测准确率,采用特征金字塔网络能够在一定程度上解决遥感图像中目标尺度差异大的问题以提升目标检测准确率。而对比实验结果表明,本文算法在NWPU VHR−10数据集和RSOD 数据集上的多类平均准确率分别达到93.4%和93.0%,比Faster R−CNN 算法提高了10.6%和7.8%。说明所提算法相较于对比算法在遥感图像中具有较好的目标检测性能。总体来说,本文提出的算法在一定程度上解决了遥感图像中存在的目标尺度差异大的难点问题,在实际的遥感图像目标检测中具有较高的检测准确率。尽管如此,由于本文使用水平检测框来检测目标,该方式使得部分检测框之间将出现重叠现象,这将在一定程度上影响目标的分类准确性。因此,下一步将进一步研究把目标方向考虑在内的遥感图像目标检测问题。