1. 引言
目标检测是光学遥感图像分析中的一个重要问题。同时,深度学习被应用到图像处理中,以海量的数据采集和现代GPU矩阵计算的发展取代了传统的方法。基于深度学习的目标检测任务可以应用于实际,在实时检测方面取得了很大进展。自从R-CNN [1] 第一次将深度学习应用于目标检测,目前为止已经发展了很多优秀的框架。其中代表性的二阶段方法Fast-RCNN [2] 对于R-CNN模型的最后一层卷积层后加了一个ROI pooling layer,并且将损失函数改成多任务损失函数(multi-task loss),将边框回归直接加入到CNN网络中训练。Faster-RCNN [3] 使用RPN (Region Proposal Network)代替原来的Selective Search方法产生候选窗口,产生候选窗口的CNN和目标检测的CNN参数共享。FPN [4] 提出一种不同分辨率特征融合的方式使得不同层次的特征增强,模型性能显著提升。Cascade-RCNN [5] 在二阶段的基础上引入级联几个检测网络达到不断优化预测结果的目的。D2Det [6] 通过引入密集的局部回归来预测一个目标建议区域的多个密集盒的偏移量,达到精确定位的目的。
YOLO [7] 是经典的非候选框的一阶目标检测方法,对于Faster R-CNN,其先通过CNN得到候选框,然后再进行分类与回归。相比YOLO,SSD [8] 采用CNN来直接进行检测,并且提取了不同尺度的特征图来做检测,大尺度特征图可以用来检测小物体,而小尺度特征图用来检测大物体。Few-shot [9] 利用少镜头支持集和查询集之间的相似性来识别新对象,减少了误识别。
由于遥感图像是高空拍摄采集,导致了目标的尺度非常小,对模型训练造成了很多问题,同时与传统的目标检测问题相比,遥感图像的目标检测过程中目标的密度非常高,针对以上问题,本文从损失函数和预选框后处理两个角度提出改进。对于SSD模型提出了二点改进;1) 为了平衡小目标和正常目标之间的梯度,本文提出了改进的SmoothL1损失函数来解决这个问题,并且模型可以收敛到更高的精度。2) 本文提出了Laplace-NMS来取代原始的NMS [10] 算法对预选框进行后处理,在不需要重新训练模型的基础上提高检测精度。
2. 相关工作
SSD是由Liu等人2015年提出的一种快速高效的检测方法,使用全卷积网络去提取特征并在多个特征层上预测不同尺度的目标。在生成预测框阶段,SSD先将所有经过卷积得到的预测偏移信息和与之对应的先验框进行解码,计算出预测框。SSD结构如图1所示。
SSD是一个基于前馈的卷积网络,基础网络采用了VGG [11],它产生一个固定大小的bounding box集合,以及这些框中对象类实例存在的分数,然后是一个非最大抑制步骤来产生最终检测。每个特征图连接到最终检测层,这样可以使得网络检测和定位在不同的尺度图像中的对象。此外,这种尺度定位发生在向前传递过程中。不需要重新采样特性映射,从而使SSD能够以完整的前馈方式操作,因此SSD比较快速。
SSD框架使用一种改进版的anchor算法来实现边界框建议。先验框是固定大小的边界框盒,其尺寸是根据数据集中每个类的地面真值包围盒的尺寸和位置预先计算的。因此称其为“先验”,因为依赖于贝叶斯统计推断,即先验概率分布。SSD为每个特性映射预测每个类的得分,这些特性映射指定每个框中是否存在一个类实例。
损失函数定义为位置误差与置信度误差的加权和:置信度误差部分采用交叉熵损失函数,位置误差部分采用SmoothL1损失函数。检测网络预测出多个候选框后,通过非极大抑制算法(NMS)去除重复叠加的候选框,并且通过设置阈值除去置信得分较低的候选框。
SSD算法损失函数定义为位置误差与置信度误差的加权和:置信度误差部分采用交叉熵损失函数,位置误差部分采用SmoothL1损失函数。总损失函数公式如下:
其中回归损失如下:
其中,l为先验框的所对应边界框的位置预测值,而g是ground truth的位置参数。
SmoothL1损失函数如下:
如下公式为分类损失函数:
3. 改进方法
3.1. 改进的SmoothL1
SSD中对于候选框的损失函数如果使用的是L2损失函数即MSE时,随着误差的增大的过程中,有MSE损失函数的梯度与误差值成比例增大。当训练过程中误差很大时带来的梯度同样非常的,在卷积神经网络的训练过程中如果梯度过大会导致训练过程不稳定,更有可能产生梯度爆炸,由于人工标注的数据有大量的异常值,MSE损失函数对于异常值特别敏感。这就导致了在训练过程中模型很难收敛,并且可能加大模型的训练难度。并且在训练初期,预测值与groud truth差异过于大时,损失函数对预测值的梯度十分大,使得训练不稳定。L1对x误差的梯度为常数,L1损失函数的优点在于对于异常和极端值不敏感,在训练初期使模型的梯度更新过程稳定。但是在训练的后期,提高模型精度的过程中,由于L1损失函数对于误差的不敏感的特点,预测值与ground truth差异很小时,L1损失对预测值的梯度的绝对值仍然为1,而learning rate如果不变,损失函数将在稳定值附近波动,难以继续收敛以达到更高精度。SmoothL1在x较小时,对x的梯度也会变小,而在x很大时,对x的梯度的绝对值达到上限1,也不会太大以至于破坏网络参数。因此本文针对回归问题中简单样本和困难样本的梯度和误差是线性关系的问题,提出了新的损失函数,可以通过调节系数
来控制简单样本和困难样本关于误差的梯度关系问题。公式如下:
3.2. Laplace-NMS算法
NMS算法是目标检测算法中一个经典的后处理方法,NMS算法流程如图2所示。
目标检测算法在训练完成以后,在测试阶段有两处需要计算矩形框的重叠度,第一处是计算先验矩形框和真实矩形框的重叠度,目的是根据重叠度确定先验框所属的类,包括背景类;第二处是计算预测矩形框和真实矩形框的重叠度,目的是根据重叠度筛选最优的矩形框,使用Iou计算重叠度,交并比等于两个矩形框交集的面积与矩形框并集的面积之比。
因模型预测阶段预测大量的重叠的预测框,并且每个框分别带有分数所以我们需要采用算法进行筛选,其中SSD算法采用的为NMS算法其实现严格按照搜索局部极大值,抑制非极大值元素的思想。
NMS是为了去除重复的预测框,算法在图片中只有单个物体被检测的情况下具有很好的效果,同时对于多个目标的时候,对于重叠物体无法很好的检测。当图像中存在多个重叠度很高的物体时,NMS会过滤掉其中置信度较低的一个。当overlap阈值越大、proposals boxes被压制的就越少,结果就是导致大量的FP (False Positives),进一步导致检测精度下降与丢失(原因在于对象与背景图像之间不平衡比率,导致FP增加数目远高于TP)当overlap阈值很小的时候,导致proposals boxes被压制的很厉害,导致recall大幅下降。
传统的非极大值抑制算法首先在被检测图片中产生一系列的检测框B以及对应的分数S。当选中最大分数的检测框M时,该框从集合B中移出并放入最终检测结果集合D。于此同时,集合B中任何与检测框M的重叠部分大于重叠阈值的检测框也将随之移除。如果一个物体在另一个物体重叠区域出现,即当两个目标框接近时,分数更低的框就会因为与之重叠面积过大而被删掉,从而导致对该物体的检测失败并降低了算法的平均检测率,例如检测算法本来应该输出两个检测框,但是传统的非极大值抑制算由于绿框的得分较低且绿框和红框的IOU大于设定的阈值,因此会被过滤掉,导致只检测出一个物体,显然这样的算法设计是不合理的。NMS直接粗暴的将和得分最大的box的IOU大于阈值的box的得分置零的方式,没有任何的缓和。
针对NMS算法无法对多类别并且重叠的物体无法很好的检测。非极最大抑制算法首先按照得分从高到低对建议框进行排序,然后分数最高的检测框被选中,其他框与被选中建议框有明显重叠的框被抑制。该过程被不断递归的应用于其余检测框。当图像中存在多个重叠度很高的物体时,NMS算法会过滤掉其中置信度比较低的一个物品,但是因为不同物品的置信度分布不同,直接对比会产生误删的情况。针对以上问题,本文采用了Laplace-NMS算法。
Laplace-NMS是用一个稍微小一点的分数替代原有的分数,而非直接粗暴的置零。Laplace-NMS与NMS算法一样,同样采用贪心算法的策略,并且在原有的模型的基础上可以直接使用不需要重新训练模型,Laplace-NMS算法吸取了NMS算法的整体历程,在置信度运算的时候进行了更改,在算法执行过程中不是简单的对IoU大于阈值的检测框删除,而是降低得分。使用的处理置信度的函数为本文提出加权。
本文将NMS算法中的加权系数改为:
通过衰减与检测框M有重叠的相邻检测框的检测分数是对NMS算法的改进。越是与M高度重叠的检测框,越有可能出现假阳性结果,它们的分数衰减应该更严重。与NMS算法一样Soft-NMS同样无法找到全局最优值,相对于NMS算法Laplace-NMS在有多种目标或者目标比较密集的情况会有一定的提升,同时在不需要重新训练模型的基础上可以提高检测效果,避免了资源的浪费。图3为Laplace-NMS算法与NMS算法对比的流程图。
因为NMS直接将和得分最大的box的IOU大于某个阈值的box的得分置零,Laplace-NMS用稍低一点的分数来代替原有的分数,而不是直接置零,Laplace-NMS仅需要对传统的NMS算法进行简单的改动且不增额外的参数。Laplace-NMS具有与传统NMS相同的算法复杂度,使用高效。同时Laplace-NMS不需要额外的训练,并易于实现,它可以轻松的被集成到任何物体检测流程中。
4. 实验与分析
在这一节中,我们将评估和比较本文中提出的方法的有效性。具体而言,本实验使用的是NWPU VHR-10 [12] 航空遥感影像数据集,该数据集包含从谷歌和Vaihingen数据集剪切并由专家手动标注的高分辨率遥感影像。遥感影像与常规自然影像的主要区别在于,首先,遥感影像的目标尺寸很小,常常聚集在一起。经过一定次数的采样后,目标在预测的特征层中只有大约1个像素,因此大小太小无法区分。其次,对于航空遥感影像,背景复杂,复杂的背景会对预测产生很大的影响。
在训练过程中,图像的输入大小是512 × 512,基础网络采用经过ImageNet [13] 数据集预训练的VGG模型,采用SSD原本的数据增强方式,并且考虑到航拍图像的特殊性加入了随机角度翻转的数据增强方式。优化方法采用随机梯度下降方法,最小批量为32,并设置动量为0.9,权重衰减为0.0005。对整个训练集迭代15,000次。下面实验都采取同样的数据增强和参数确保对照实验的准确性。
表1为SSD与使用改进后损失函数的SSD对比,SSD原始检测结果为0.8845,使用改进后的损失函数的SSD效果为0.9192,效果提升了3.47%。

Table 1. Comparison of loss function results
表1. 损失函数结果对比
图4为SSD + adsmoothl1的结果图,图5为SSD算法的结果图,图中对每个类别的AP值进行了展示。通过实验结果可知ship的AP值从0.6803提升到0.6956,storage的AP值从0.9074提升到0.9282对于这种小目标本文提出的损失函数对实验结果有明显的提升,特别是vehicle从0.7254提升到0.8066效果提升明显,可以发现越小的目标提升效果越明显。

Figure 4. The result of SSD + AdSmoothL1
图4. SSD + AdSmoothL1的结果图
表2为使用NMS方法去掉边界框和使用本文提出的Laplace-NMS方法的实验对比,效果提升了0.78%。

Table 2. Comparison of non-maximum suppression methods
表2. 非极大值抑制方法对比
图6为SSD使用本文提出的AdjustLoss损失函数和Laplace-NMS算法结果图,Laplace-NMS主要是对于重叠度高的目标有一定提升,对于airplane这种特别密集且重叠度比较高的目标AP值从0.9784提升到0.9978,提升了1.94%,证明了Laplace-NMS方法的有效性。

Figure 6. The result of SSD + AdjustLoss + Laplace-NMS
图6. SSD + AdjustLoss + Laplace-NMS结果图
5. 结论
本文提出了一种用于遥感图像中的小目标检测的非极大值抑制方法和损失函数。在分析SmoothL1损失函数的优缺点的基础上,本文提出了可调节的SmoothL1损失函数,本文提出的损失函数可以通过参数调节梯度,能够增加损失函数的灵活性,通过实验证明了本损失函数对于解决小目标难易样本训练过程中有显著作用。通过采用本文提出的Laplace-NMS算法相对于NMS算法在不改变模型的前提下有一定的提升。