谢 梦,刘 伟,2,杨梦圆,柴 琪,吉 莉
(1. 江苏师范大学地理测绘与城乡规划院,江苏 徐州 221116; 2. 资源与环境信息系统国家重点实验室,北京 100101)
随着遥感影像空间分辨率的提高,对高分遥感影像的处理和应用正变得日益紧迫。飞机检测在军用和民用领域均具有相当广泛的应用,近年来已经成为高分遥感影像目标检测中一个极其重要的研究方向[1]。关于飞机检测的研究方法,多数是利用飞机的基本特征来识别目标,通过获取飞机的基本特征后送入分类器分类[2-4],这些方法对人工选择目标特征具有很强的依赖性。
深度学习是机器学习领域一个新的研究方向,其目的在于建立模拟人脑进行分析学习的神经网络,模仿人脑的神经机制来解释数据,如图像、声音和文本。近年来,深度学习算法在图像分类[5]、自然语言处理[6]、人工智能[7-8]等领域取得前所未有的成果。通过低层滤波器来获取图像局部特征,利用高层滤波器将这些局部特征组合成全局特征。整个过程都是通过网络训练大量样本来自动提取影像特征,有效地提高了执行效率和检测精度。因此,深度学习在遥感应用中引起了广泛关注,并在场景分类[9]、高光谱图像分类[10-11]、目标检测[12-13]等方面取得了显著成效。
基于深度学习的飞机检测克服了传统检测方法中目标特征难以选取、泛化能力差等问题,但也面临巨大挑战,主要为训练样本不足、网络难以训练[14]。同时,为了得到较高的识别率,网络设计越来越复杂,网络参数增大,飞机所处的遥感影像背景复杂且飞机形态存在差异[13],因此准确而快速地检测出遥感影像中飞机仍然十分困难[1]。
深度学习在目标检测方面主要分为两类:一类是基于候选区域的分步式目标检测方法,代表性的有R-CNN[15]、SPP[16]、Fast R-CNN[17]、Faster R-CNN[18];另一类是基于回归思想的直接目标检测方法,代表性的有YOLO[19]、SSD[20]。前者定位精度高,但检测时间长,后者检测速度快、正确率高。很多学者都青睐YOLO算法,通过对其网络结构进行改进来提高网络性能。文献[21]提出一种Dense-YOLO网络,通过特征复用提高对遥感影像中飞机的识别效果,但内存占用较大,文献[22]提出一种SENet结构嵌入YOLOv3网络中,融合YOLOv3(you look only once)与SENet的优点,增强了网络感受野,但网络训练参数较多。
由于YOLOv3算法对原图做缩放处理,造成网络高层的感受野减小,导致“相对尺寸小”的目标检测困难,其中相对尺寸小的目标是相对原图的长宽。本文为扩大网络高层的感受野,提高特征图的分辨率,将扩张卷积[23-24]引入YOLOv3网络,为减少需要计算的可训练权重参数,实现通道和区域的分离,再将深度可分离卷积[25]引入网络。试验结果表明:相比于YOLOv3算法,优化的YOLOv3算法能够降低漏检率,提高小目标的检测精度。
YOLO是一种多目标检测算法,在训练和预测时将整张图像输入网络模型,直接回归出目标中心位置、目标长宽和类别,以实现端到端的目标检测。
(1)
(2)
本文首先使用K-means聚类算法计算出适用于数据集的锚框,然后用扩张率为2的扩张卷积取代YOLOv3网络第76、78、80层卷积核为3×3的普通卷积,并用深度可分离卷积取代原网络残差模块中的普通卷积,算法的优化主要体现在以下3个方面。
由于YOLOv3算法中的anchorbox是由VOC20和COCO80数据集聚类得到,而本文数据集中的飞机相对较小,不适合使用原定义的anchorbox[21],因此需要对本文数据集的目标候选框进行维度聚类分析,使用K-means聚类算法获取适合本文数据集的anchorbox。
扩张卷积是向卷积层引入一个称为扩张率(dilation rate)的新参数,该参数定义卷积核处理数据时各值的间距。传统的骨干网络基于大的下采样因子可以生成更高的感受野,有利于图像分类,但牺牲了空间分辨率,从而使网络难以准确地定位大型目标和识别小型目标[26]。YOLOv3算法对原图做了缩放,造成网络高层感受野减小,本文引入扩张卷积层增加网络高层感受野,以改善小目标检测效果。扩张卷积的原理如图1所示。
图1中灰度点标记位置同正常卷积核,其他位置为0,其中图1(a)为3×3扩张率为1的卷积,与普通卷积一样,感受野为9;图1(b)为扩张率为2的卷积,感受野为49;图1(c)为扩张率为4的卷积,感受野为225,从图中可以看出卷积核的参数个数保持不变,感受野的大小随着扩张率的增加呈指数增长。
深度可分卷积[25]是在输入的每个通道独立执行空间卷积,然后进行逐点卷积,即1×1卷积,将深度卷积的通道输出映射到新的通道空间。深度可分离卷积比普通卷积减少训练参数,而且它先只考虑区域,然后再考虑通道,以实现区域和通道的分离。深度可分离卷积的过程如图2所示。
从图2可以看出,每一个通道用一个卷积核卷积之后得到对应一个通道的输出,然后再进行信息融合。假设输入通道数为3,输出通道数为32,用一个3×3卷积核进行卷积,则普通卷积需要计算的参数为3×3×3×32=864,深度可分离卷积要计算的参数为: 3×3×3+3×1×1×32=123, 深度可分离卷积明显降低了参数量。本文优化的YOLOv3算法模型结构如图3所示。
本文试验环境为在Ubuntu16.04操作系统下,安装配置Cuda9.1.85和Python3.6.5,并搭建Keras和Tensorflow深度学习平台,算法的训练和测试均在GPU加速下完成。
在遥感影像飞机目标检测的应用研究方面,目前几乎没有公开的符合深度学习训练的数据集,这也是制约该方向应用的主要问题之一。本文研究的影像来自DOTA(http:∥captain.whu.edu.cn/DOTAweb/)、UCAS-AOD(http:∥www.ucassdl.cn/resource.asp)、RSOD-Dataset(https:∥github.com/RSIA-LIESMARS-WHU/RSOD-Dataset)3个遥感影像数集,影像的尺寸一般是1044×944。在制作数据集的过程中,依据VOC2007的数据集格式,对影像进行统一格式的命名,再利用labelImg(https:∥github.com/tzutalin/labelImg)图片标注工具对影像进行标注,生成包含有目标类别位置信息的XML文件。试验共制作446张数据集,其中386张训练集,42张验证集,18张测试集,飞机样本如图4所示。
对YOLOv3算法和优化的YOLOv3算法分别迭代200次进行训练,飞机在影像中属于小目标,经过多次对比试验,算法采用按步长衰减学习率的策略,设置基础学习率为0.001,在迭代120次、180次时学习率变成基础学习率的0.1倍和0.01倍。选取Batch_size(每批数据量的大小)为10,冲量常数为0.9,权值衰减系数为0.000 5,从而避免出现过拟合现象。
将YOLOv3算法和优化的YOLOv3算法在本文测试集上进行对比测试,分别计算准确率、召回率和F1-score。精确率的公式为
(3)
召回率的公式为
(4)
F1-score的公式为
(5)
式中,TP为正确检测出的飞机个数;FP为误检的飞机个数;FN为漏检的飞机个数。
F1-score是使用调和平均结合召回率和精度的指标。从表1可以看出,本文优化YOLOv3算法的召回率比YOLOv3算法高出11.86%,精确率下降7.27%。此时需要F1-score来进行总体衡量。试验结果表明本文在使用K-means聚类算法和扩张卷积后,其F1-score比YOLOv3高出1.33%,网络中再加入深度可分离卷积后,其F1-score比YOLOv3高出2.99%。由此可见,本文算法明显优于YOLOv3算法。图5是YOLOv3算法和优化YOLOv3算法对2张相同图像的检测结果。从图5中可以看出YOLOv3算法不能准确检测出影像中的小目标,出现较多漏检情况,框上没字是漏检,框上有字是算法检测出的飞机。优化的YOLOv3算法增强了网络高层的感受野,能够准确检测出影像中的小目标,有效地降低漏检率,提高小目标检测的精度。
(%)
本文针对YOLOv3算法对小目标检测效果较差、出现较多漏检的情况,使用K-means聚类算法计算出适合本文数据集的锚框,在YOLOv3算法的网络结构中引入扩张卷积,用来增强网络高层的感受野,改善对小目标的检测效果,并在网络结构中引入深度可分离卷积来减少计算参数和分别学习空间特征和通道特征。试验结果表明,优化的YOLOv3算法比YOLOv3算法的召回率提高了11.86%,而且F1-score提高了2.99%,能准确检测到更多目标,提高小目标的检测精度。由于遥感影像目标检测作为图像解译的一个重要研究方向,其对于资源调查、灾害监测、资源勘探及军事目标的识别判读等都具有重要的意义。在今后的研究工作中,会增加训练集以提高样本多样性,而且在继续提升召回率的同时,提高精确率。