基于卷积神经网络的小型建筑物检测算法
2021-11-10赵若辰王敬东林思玉顾东泽
赵若辰, 王敬东, 林思玉, 顾东泽
(南京航空航天大学自动化学院, 江苏 南京 211106)
0 引 言
建筑物作为航空图像中的提取重点,精确的检测建筑物对于城市与农村建设的变化监测、基础设施规划、土地利用与管理等任务至关重要[1-4]。但是建筑物的识别检测一直以来存在诸多难点,例如树木与阴影对目标的遮挡、建筑物外观颜色复杂、小型建筑物易受道路汽车等背景干扰等问题,造成了建筑物的漏检错检。这些问题也成为了建筑物检测研究的热点。
建筑物检测目前主要采用深度学习方法,深度学习中的卷积神经网络不仅可以自主提取特征,还能提取到更多图像深层次的抽象特征[5]。众多目标检测任务结果表明,深层次特征对目标检测精度有很大提升,因此目前大部分的目标检测任务都采用了深度学习的方法,建筑物检测也不例外。Liu等人[6]使用图像金字塔技术构建多级训练的图片样本,之后运用候选区域检测建筑物,但是由于图片尺寸逐级减少,造成了部分特征信息的丢失,导致小尺寸建筑物检测效果不佳。李大军等人[7]使用先进的Mask-区域卷积神经网络(Mask-region convolutional neural networks, Mask-RCNN)[8]模型检测建筑物,进一步提高了航拍图像中建筑物检测的整体准确性。文献[9]提出一种利用不同尺度的卷积核网络预测不同尺寸的遥感图像中建筑物的方法,虽然小尺度建筑物检测准确率有所提升,但相比其他尺寸的建筑物还有很大差距。除了目标检测外,建筑物检测的另一种方向是利用全卷积网络在图像上进行语义分割[10],提取出建筑物的轮廓。伍广明等人提出[11]使用U型卷积神经网络(U-convolutional neural networks, U-net)[12]对遥感影像进行建筑物特征提取,对建筑物区域与背景进行了分割。相比于Mask-RCNN进一步提升了检测速度。但是由于网络层数较深,深层网络的感受野较大,因此对于小型建筑物的检测效果不佳。Zuo等人[13]针对全卷积神经网络模型进行改进,将底层卷积中的不同序列感知野中的特征融合到高层卷积层,对不同语义层次的特征进行融合,提高了检测速度,但在小尺寸建筑物的识别分割上准确率不高。于洋等人[14]将全卷积网络的连接结构改进为跳层链接,有效防止了因为网络加深引起的梯度爆炸,同时利用数字地表模型(digital surface model, DSM)图像数据对网络进行训练,细化了建筑物的轮廓边缘提取结果。李强等人[15]将U-net与Segnet[16]网络结合对图像进行分割,利用不同扩张率的空洞卷积[17]提取图中建筑物的轮廓,方法有效提高了建筑物轮廓提取精度,但是由于空洞卷积感受野太大,小尺寸的建筑物提取效果不佳。文献[18]在Segnet的基础上提出了多任务级联损失函数的概念,改善了不同尺寸建筑物的轮廓的检测精度。
虽然深度学习算法比传统算法效果有了很大提升,但是在现有的研究中普遍对小于图像尺寸十分之一的小型建筑物检测效果不佳。在实际应用中,小型建筑物的准确检测对于违章建筑物检测、新建军事设施检测等民用和军事方面有着重要意义,并且在航拍图像中这种尺寸的小型建筑物具有相当一部分数量。因此,针对现有模型在小型建筑物检测方面存在的问题进行了进一步研究。在基于深度学习的Mask-RCNN目标检测算法上进行改进,设计了一种基于注意力机制的多尺度组卷积特征提取网络,以提高小型建筑物检测的准确率。
1 问题分析与改进方向
基于深度学习的目标检测模型有很多,其中基于二阶段的Mask-RCNN模型由于准确率较高,被广泛应用在各种目标检测任务中。因此,本文选用Mask-RCNN检测模型作为基础并对其在小型建筑物检测上存在的问题进行研究改进。Mask-RCNN模型训练和检测流程如图1所示。其目标检测流程主要由特征提取网络、特征融合网络以及目标预测网络3个阶段组成。首先,通过深度残差网络(residual network,Resnet)[19]逐步提取到不同网络层的特征图,如图1中所示的C1~C5层。再将这些特征图通过模型中的特征金字塔网络(feature pyramid networks,FPN)[20]进行特征融合使每层获得其他层次的特征,得到P2~P5的4层特征图。之后,将这些特征图分别送入后续的预测网络,通过特征图上的特征筛选出可能含有建筑物的区域。最后,使用全连接层分支来检测建筑物。训练过程在其基础上通过损失函数即检测误差反馈指导模型的训练,使模型提取的特征和后续的分类操作更好地拟合数据。Mask-RCNN虽然整体检测准确率较高,但是小目标检测准确率低的问题依然没有解决,因此本文在此算法模型的基础上进行了分析改进。
图1 Mask-RCNN算法流程
从深度学习检测算法流程可以看出,一开始卷积神经网络中提取到的特征质量对检测结果有着直接影响,因此本文主要研究特征提取网络方面存在的问题。由于特征提取网络中高层提取到的抽象语义特征对目标检测很重要,因此将原始Mask-RCNN中的卷积神经网络的C5层的特征图和检测结果进行了输出。结果如图2所示。
图2 特征图与输出结果可视化
其中第1行为原图。第2行为C5层输出特征图,图中像素点颜色亮度与建筑物类别正相关,即越亮代表网络认为该处特征对建筑物检测越关键,反之则认为是背景特征。第3行为检测结果,红色区域为检测出的建筑物,黄色圈出的为漏检错检的部分。从输出的特征图中可以看出,建筑物关键特征点集中在大型建筑物所在的区域上,而提取到的小目标特征明显较少,这可能会造成小建筑的漏检。另外,网络还提取了大量非建筑物的背景特征,这些特征可能成为“噪声”对建筑物的检测进行干扰,产生错检。而从检测结果上也可以看出,1、2两幅图片中存在小建筑物漏检的情况,3、4两幅图片中还存在错检的现象,3号图片中将与小建筑物类似的汽车识别成了建筑物,而4号图片则将道路识别成了建筑物。从对应的特征图中可以发现,漏检的小建筑物所在的区域提取到的特征较少,而本该是背景的地方被特征提取网络认为存在着建筑物特征。这说明传统的卷积神经网络对于特征提取还存在着不足,结合网络结构进行分析,原始Mask-RCNN的特征提取网络存在以下不足:一是特征提取网络的网络层连接方式,特征仅在一层或少数几层中被提取和学习,导致在卷积过程中对特征的利用率不高。二是卷积层中仅使用单一的固定尺寸卷积核提取特征,无法充分提取到图像中的所有特征。三是卷积核不同通道提取到的特征权重是相同的,在卷积过程中卷积核无法分辨提取到的特征对检测任务是否相关,因此有部分通道会提取学习到与目标不相干的背景特征。
以上这些问题导致了原始的卷积神经网络在提取特征时无法有效提取小型建筑物特征,导致小目标可用特征少,并且易与提取的背景特征混淆。这也是小目标检测准确率低的根本原因。因此,为了解决这个问题,本文对原始的Mask-RCNN模型中的特征提取网络进行了改进。首先将原始Resnet网络替换为密集连接的卷积神经网络(densely connected convolutional neural networks, Densenet);接着对网络中卷积层中的单一尺寸的卷积核进行改进,设计了一种具有多个尺度的组卷积核;最后将注意力机制加到网络层中指导卷积核提取关键特征。
2 特征提取网络的改进
2.1 卷积神经网络的选取
原始Mask-RCNN中使用的是Resnet。Resnet解决了网络加深导致的梯度消失问题,从而可使用更多的层数提取深层次的语义特征。如图3所示,与早期卷积神经网络卷积层线性的输入输出图相比(见图3(a)),Resnet使用“残差结构”将每个层与前面的某些层(一般是2~3层)短路连接在一起(见图3(b))。
图3 卷积层连接对比
Resnet网络的卷积层输出表达式为
xl=Hl(xl-1)+xl-1
(1)
式中:xl为卷积层的输出;l表示网络层数;Hl表示非线性型转化函数,其中包括多次卷积、正则化、池化等一系列操作。但是从图3可以看出,Resnet提取到的特征依然仅在相邻的几层中被提取和学习,存在着第1节所说的特征利用率不高的现象。这种现象在较少的小型建筑物特征上更为明显。
为了解决这个问题,本文将其替换成Gao等人[21]提出的基于Densenet的结构,如图3(c)所示。在该网络中,将残差结构升级为密集连接的方式,不同于残差结构仅将网络中相邻的几层进行连接,Densenet每层之间都有直接的链路连接,这使得每一层的输入都是前面所有层输出结果的总和。Densenet输出的表达式为
xl=Hl([x0,x1,…,xl])
(2)
因为Densenet中每一层学到的特征图都能够被之后所有层直接使用,这使得学习到的特征可以在整个网络中复用,较好地利用了所有提取到的特征。不多的小目标特征也可以多次在网络中被学习,较好地解决了小型建筑物特征利用率不高的问题。同时由于特征复用,高层卷积层也使用了低级特征,低级特征得以完整地保留,较好地解决了深层网络中底层特征逐渐消失的问题。因此,本文使用Densenet替换原始的Resnet作为Mask-RCNN的基础特征提取网络。表1为原始Resnet和替换后的Densenet结构对比。
表1 网络结构比较
其中,网络后面的数字为含有计算参数的网络层数。K为特征通道数,本文设为32。送入Densenet网络的图片首先经过C1网络层,其中包括一个步长为2的7×7的卷积层和一个3×3的MaxPooling层,其作用在于缩小输入图片大小以减少计算量。然后图像依次经过C2、C3、C4和C5这4个网络层以逐步提取不同层次的特征信息。每一个网络层中包含着不同数量的1×1和3×3卷积和一个由一个1×1卷积和2×2的AveragePooling层组成的转换层。前者用于提取特征信息,后者用于减小特征图大小并连接两个网络层。从表1中可以看出,相较于Resnet的特征通道数逐层变大,Densent在各层提取特征时特征通道数保持为k不变,这是因为Densent各层需要直接连接,因此要保证通道数相同。
2.2 多尺度分组卷积
虽然Densenet依靠特征复用的方式基本解决了小目标特征利用率不高的问题,但是由于Densenet的卷积层如图4(a)所示,与Resnet相同依然使用单一3×3尺寸的卷积核提取特征,在各卷积层进行卷积操作时,仅对图像固定范围的区域提取一次特征,所以其本质上小目标的特征并没有变多。因此,本文设计了一种可以多尺度多次提取特征的卷积核来改善这一问题。
图4 Densenet卷积层结构改进前后对比
较深的网络层中特征图尺寸通常较小,而其中的小型建筑物特征更是细微。因此,为了准确地提取到小型建筑物所在区域的特征,本文增加了一种更小的1×1尺寸的卷积核来解决这个问题。另外从文献[22]可知,目标除了自身特征外,周围还存在着丰富的上下文信息,例如房屋阴影等建筑物周围特有的一些特征。这些特征信息可以有效补充小型建筑物的特征,并帮助网络更好地定位到小型建筑物所在区域。为了提取建筑物周围不同面积的上下文特征信息,需要使用不同尺寸的卷积核在特征图上提取特征。而在Densent中具有抽象语义特征的C4和C5高层特征图尺寸为32×32和16×16,因此使用大于7×7的卷积核提取特征会造成浪费,且效果不会有所提升。故本文如图4(b)所示,选用1×1、3×3、5×5、7×7这4种尺寸的卷积核以提取不同范围地更丰富的特征。不过在实际训练过程中却发现模型不仅训练时间有很大程度的增加,训练效果也随之下降。经分析,这是因为较大的卷积核导致了模型的参数计算量变大,而过多的参数使网络产生了过拟合的现象[23]。单一卷积核参数量计算公式为
P=kernel_size2·input_channel·output_channel
(3)
式中:kernel_size为卷积核尺寸;input_channel为输入的特征图通道数;output_channel为输出的特征图通道数。尺寸越大的卷积核所带来的参数量和计算量就越大,不利于训练以及数据的拟合。因此在不改变感受野的前提下,需要降低模型的参数量。感受野即卷积神经网络从卷积核中能看到输入图像的区域大小,感受野的计算公式为
RFl+1=RFl+(kernel_sizel+1-1)·feature_stride
(4)
式中:RF表示特征感受野大小;feature_stride表示卷积核在图像上的滑动步长。可以推出一个5×5卷积核的感受野与两个串联的3×3卷积核相同,一个7×7卷积核可以被3个3×3卷积核串联所代替。同时串联的卷积核参数量为
(5)
output_channel=α·input_channel
(6)
式中:α为输入输出特征图通道数的倍数。以5×5卷积核为例,如α为1,输入输出通道数为Ci和Co时,5×5卷积核参数量为5×5×Ci×Co,而串联的两个3×3卷积核的参数量为2×3×3×Ci×Co,参数量少了28%,有效缓解了网络参数的冗余。因此,本文最终使用多卷积串联的方式,实现了如图4(c)的多尺度卷积核的构建。
多尺度卷积核有效解决了单一尺寸卷积核在图像中不能提取不同尺度的特征的问题,但是每种尺寸的卷积核在卷积层中依然只提取了一次特征。为了达到多次提取特征的目的,本文借鉴Krizhevsky等人[24]提出的分组卷积的概念,利用多组卷积分别对特征图提取特征。分组卷积将一个卷积核按通道分成多组,分别对特征图进行卷积操作,如图5所示,图中C为输入通道数,输入的特征图被分成g组,卷积核也相应地分成g组,分别在对应的组内做卷积。由上文卷积核参数式(3)可知,在相同的参数下,g越大越可以获得更多的特征图。因此,本文将4个尺寸的卷积核分为一组,共32组。32为Densenet的通道数,即g理论上的最大值。多尺度分组卷积的结构如图4(d)所示。由于使用分组卷积后提取的每组特征图是由卷积核不同通道所提取的,其中包含的特征并不重复,因此可以提取到比以往更多的特征。多尺度组卷积实现了多种尺寸、多次的特征提取,解决了之前单一尺度卷积核提取建筑物特征不充分、小型建筑物特征较少的问题。
图5 分组卷积
2.3 SKnet注意力机制模块
多尺度组卷积核有效解决了小目标特征提取不充分的问题,但是由于网络中每个卷积核通道之间权重是相同的,这会造成网络学习到部分卷积核“错误”提取的背景特征。不仅造成了卷积核的“浪费”,同时第1节的实验也表明背景特征容易对建筑物检测产生误检。为了使特征提取网络更准确地提取建筑物特征而非背景特征和噪声,将注意力机制应用在了卷积核上。注意力机制[25]由Bahdanau等人提出,本质类似于人类的视觉机制,使卷积核提取特征时倾向于关注图像中的高价值信息,并忽略掉不相关的信息。其通过对卷积核提取的特征信息进行权重标定,依据权重大小在训练过程中保留关键特征并抑制无用信息。本文将带有注意力机制的SKnet模块[26]加入Densenet的网络层中。SKnet可以获得不同卷积核和通道的权重,再将其加权到对应的输出特征图中,SKnet模块如图6所示。
图6 SKnet模块
对于网络层的输入特征图X∈RH′×W′×C′,其中H′×W′×C′为特征图尺寸,首先通过本文设计的多尺度组卷积核(仅以其中一组为例)进行非线性卷积操作得到:
F1:X→U1∈RH×W×C
(7)
F2:X→U2∈RH×W×C
(8)
F3:X→U3∈RH×W×C
(9)
F4:X→U4∈RH×W×C
(10)
由此得到U1、U2、U3、U4共4个特征图,其中H×W×C为卷积后的特征图尺寸。接着通过元素对位相加求和的方式将4个特征图融合成一个特征图U:
U=U1+U2+U3+U4
(11)
下一步对U通过全局平均池化降成一维的数组s∈RC,其将每个通道上整个空间特征编码为一个全局特征,如下所示:
(12)
式中:Uc代表对应通道的特征图。然后通过全连接层中的激活、正则操作学习各个通道之间的非线性关系,得到一个更为紧凑的实数特征z,并由softmax函数得到U1、U2、U3、U4各自的权重概率矩阵ac,bc,cc,dc:
(13)
(14)
(15)
(16)
ac+bc+cc+dc=1
(17)
式中:Ac代表U1中对应c通道的向量元素,Bc、Cc、Dc同理。最后通过加权操作将得到的4个权重矩阵ac,bc,cc,dc加权到U1、U2、U3、U4并求和得到最终的输出向量Vc:
Vc=acU1+bcU2+ccU3+dcU4
(18)
V=[V1,V2,…,VC],VC∈RH×W
(19)
由此4个卷积核得到了不同的权重,实现了给卷积层添加“注意力”的目的。Sknet考虑了通道和卷积核两个方面的权重,根据多尺度特征图汇总得到的加权信息来指导网络如何给不同尺寸的卷积核分配权重,因此实现了通过权重信息来指导网络,更侧重于提取到有用特征的卷积核,忽略学习到无用背景特征或噪声的卷积核的目标。Sknet被安插在Densenet网络层中多尺度分组卷积的后面用来指导卷积核的特征提取,最终本文改进后的Densenet网络层结构如图7所示。
图7 改进后卷积层结构
3 试验及分析
3.1 实验准备
本文在谷歌地球图像软件中采集了美国中部地区的2 000张尺寸为1 024像素×768像素的含有建筑物的航拍图像作为数据集,其中训练集验证集和测试集的比例为8∶1∶1。并使用Labelme图像标注软件对训练集和验证集图像进行标注,标注效果如图8所示。
图8 原图与标注图像
本文基于建筑物在图像中所占像素大小,划分大、中、小3种尺寸的建筑物。由于不同数据集图像尺寸不一,因此对图中目标大小没有明确的尺寸定义。目前,广泛使用的多种公开数据集如微软发布的COCO数据集[27]将目标尺寸为32×32的目标定义为小目标。另一种划分方法是利用目标与图像的相对大小关系,将边长小于图片边长1/10的目标定义为小型目标,本文同样采用这种定义方法。另外,通过对本文数据集图像中的建筑物进行观察分析,绝大部分建筑物尺寸小于图片边长的3/10,如图9所示。因此,在本文尺寸为1 024×768的航拍图像中,尺寸小于70×70的建筑物为小型建筑物,中型建筑物的尺寸为图片尺寸的1/10~1/5,大于图片尺寸2/10的建筑物为大型建筑物。数据集中训练集和测试集中所含的建筑物样本数量如表2所示,本文后续的实验均在此数据集上进行。
图9 建筑物尺寸定义
表2 数据集中建筑物数量
在后续实验中对建筑物检测精度使用目标检测任务中常用的平均精度(average precision,AP)指标来评估。区分正负样本的交并比IOU阈值为0.5。
软件环境基于windows10系统下的keras和tensorflow深度学习框架。硬件环境为:Intel i7-7200H@2.7 Hz×8 CPU和GTX1080Ti GPU。
3.2 实验结果与分析
为了验证上文对特征网络的改进措施的有效性,进行了多项对比实验。
首先对改进前后的特征提取网络进行了准确率的对比,如表3所示。其中AP表示所有建筑物的整体准确率。APs、APm、APl分别表示小、中、大尺寸建筑物的准确率。网络后面的数字代表网络层数。
表3 改进前后准确率比较
从表3中可以看出,经过本文对特征提取网络的3项改进,建筑物整体检测准确率有了14.1%的提升,其中小型建筑物检测准确率提升更加明显,提升至0.663,相比于原始的0.514提升了28.9%。进一步分析发现,Densenet和多尺度组卷积这两项改进对小型建筑物检测准确率提升作用较大,这说明增加小型建筑物特征可以较大提升其检测准确率。Sknet对整体检测准确率有较大提升,说明SKnet通过抑制背景特征和噪声,使网络更关注于建筑物特征,因此各尺寸的建筑物检测准确率都有所提升。
对改进前后网络训练损失函数的对比如图10所示,图中横坐标为训练轮次,每一轮中随机训练1 000张图片,纵坐标为损失函数数值。从图10中可以看出,3种不同方法改进后的网络损失函数在下降速度上均快于原始的Resnet网络,且最终数值也比之要小。这反映出改进后的网络更快地拟合了数据集,进一步说明了改进后的网络更多更好地提取到了对建筑物检测效果有帮助的特征。但同时不难发现,加入SKnet后网络损失函数刚开始高于densenet+多尺度组卷积的曲线,且最终在第25轮时实验效果比后者要差。经过分析,这是因为网络的参数量变大,在不改变学习率等超参数的情况下,需要更多的训练轮次来拟合数据。但另一方面,其收敛速度要快于其他曲线,说明该方法能够更有效地提取有用特征。
图10 损失函数曲线
如图11所示,将改进前后网络输出的C5层特征图进行了对比。其中第1行为原图,黄色框中为建筑物,第2行为原始Resnet提取的特征图,第3行为改进后的输出特征图。可以看出,相比于原始的Resnet,改进后的特征提取网络在提取特征时更集中在建筑物上,提取到的背景特征变少,提取的小型建筑物区域特征更多。进一步说明了本文对特征提取网络改进的有效性。
图11 改进前后特征图对比
本文提出的改进后的卷积神经网络与其他卷积神经网络的运算效率和计算复杂度对比如表4所示。本文选用了VGG16[28]、Resnet101、InceptionV4[29]、Resnext101[30]、Densenet169共5种目前广泛使用的网络与本文网络在本文数据集上进行比较。其中,每秒传输帧数(frames per second,FPS)代表该算法每秒钟可以处理图像的帧数,浮点运算数(floating point operations,FLOPs)可以理解为计算量,数值越大代表模型复杂度越高。
表4 网络检测速度与计算复杂度对比
从表4中可以看出,InceptionV3网络的检测速度和浮点计算量都要优于其他网络,但是其准确率仅有0.755。得益于Densenet密集连接的结构、小型卷积核级联以及组卷积,本文网络在检测速度和计算复杂度上均比Resnet等网络有所减少。增加了注意力机制后,本文的浮点计算量虽然相比Densenet增加了1%,但是准确率提高了8%,满足本文主要提升检测准确率的需求。
图12为改进前后的检测结果对比图,黄色圈中为改进后被正确检测的部分。与改进前的检测结果相比,第1~3号图像中部分小建筑物的漏检情况以及第4号图像中将道路误检成建筑物的情况都得到了有效的改善。
图12 改进前后检测结果对比
4 结 论
为了解决小型建筑物检测准确率低的问题,本文针对Mask-RCNN模型中的特征提取网络进行了改进,首先将原始的Resnet特征提取网络替换为密集连接的Densenet特征提取网络,之后将Densenet网络中卷积层结构改为了具有多尺度的组卷积结构,并加入了SKnet注意力机制模块。这些对特征提取网络的改进,经实验证明有效解决了原始网络特征利用率不高,提取到的小型建筑物特征较少且易被噪声或背景特征干扰等问题。各尺寸建筑物整体检测准确率达到了0.843,小尺寸建筑物的准确率达到了0.663,提升了28%。
不过本文仅对Mask-RCNN模型中特征提取网络部分进行了论证改进,因此在后续的工作中可以关注模型其他部分对检测结果的影响,例如特征融合网络和预测网络部分,并对其进行改进从而进一步提升对建筑物检测的准确率。另外,本文的检测对象为离线的航拍图像,在后续的工作中还需对模型进一步改进以满足实时性要求更高的视频检测任务。