黄剑航,王振友
(广东工业大学 应用数学学院,广东 广州 510520)
随着深度学习的发展,图像所传递的信息比其他形式的信息更加丰富、形象、具体。21世纪信息技术时代,计算机网络、多媒体、人工智能等技术都离不开图像。目标检测(object detection)是计算机视觉和数字图像处理的一个热门方向,广泛应用于人工智能控制、视频监控、航空航天等领域,通过人工智能控制能有效减少人力资本的消耗,这种技术在现实生活中具有重要的意义。并且目标检测算法是计算机视觉任务当中的基础性算法,在语义分割(semantic segmentation)、实例分割(instance segmentation)、目标跟踪(object tracking)等高级视觉任务中发挥着至关重要的作用,因此目标检测成为了近年来视觉领域理论和应用重点关注的研究热点。
传统的目标检测方法一般分为3个阶段:首先在给定的图像上经过选择性搜索方法(selective search)选择一些候选区域,然后对这些候选区域经过卷积神经网络CNN (Convolutional Neural Networks)进行提取特征,最后使用已经训练好的分类器对提取的特征进行分类。但传统的目标检测方法主要依靠人工的先验知识来设计特征提取器,缺乏一定的客观存在性,所以在复杂的场景下传统的目标检测算法很难取得比较好的检测效果。随着深度学习的迅速发展,基于深度学习的目标检测算法陆续被众多学者提出,其中典型的方法是依靠CNN来提取特征[1-7],这些经过CNN提取的特征信息相比传统的方法在计算机视觉下语义性更强,因此模型通过网络的学习后拥有更强的泛化能力。
图像经过CNN多层级的特征提取后,相邻层级的特征图具有较大的相关性,但是随着卷积层数的增加,图像经过大量的特征处理后相关性会愈加弱化,导致在检测的过程中分类和回归的精度不高。因此本文针对网络各层之间特征信息的差异性和相关性,提出了一种基于Mask-RCNN二次特征融合的目标检测算法[1],弥补特征之间相关性的损失,融合丰富的有用信息,使得这种网络所提取的特征更具有表征能力。
在目标检测领域,多尺度问题一直是一项艰巨的任务,早期的检测算法是图像经过CNN特征提取出来特征图后直接进行预测[2-4],显然这种方法只能得到单一尺度的信息,这些模型对复杂背景下和小维度的目标检测性能并不好。当背景和目标的颜色相近或者检测目标较小的情况下,会出现正负样本难以区分和定位不准确的问题。为解决上述问题,近年来大量研究工作都集中在特征网络结构的设计上,后来有学者设计出能够输出多尺度特征图的网络结构,下列的研究表明对多尺度的特征图进行预测可以得到较好的检测效果。
在卷积神经网络出现之前,图像金字塔(featurized image pyramids)是传统的解决多尺度问题的思路,具有一定意义的尺度不变性。图像金字塔主要在人工特征中使用,比如算法DPM(Deformable Parts Model)就要用到它产生密集尺度的样本以提升检测水平。但是该方法对图像金字塔每一层的处理都具有耗时长、显存占用空间大等问题。近年来有学者提出网络结构TridentNet[5]和SNIPER[6](Scale Normalization for Image Pyramids with Efficient Resampling)来进行多分支多尺度训练,但采样到的图像分辨率过大,导致大样本难以区分,最终精度提升不明显。早期Liu等[7]借鉴了图像金字塔的思想提出了SSD(Single Shot MultiBox Detector),为了减少计算机能力的开销以及避免太多底层特征的利用,SSD重复使用了特征图并在偏后的卷积层conv4_3开始,又往后加了几层卷积层,分别抽取每层特征。但是SSD只利用了低分辨率的高层特征,而对于高分辨率的低层特征没有再利用,并且忽略了对特征之间的融合。而Kong等[8]提出了将不同阶段的特征图进行融合成单一图片,忽略了多尺度的效应。针对上述问题,Liu等[9]提出了RFB Net(Receptive Field Block Network)在SSD的基础上引入了RFB模块加强特征提取能力,在该模块最后使用concat操作达到融合效果,Lin等[10]提出了多尺度特征融合网络FPN,FPN是传统卷积神经网络对图片信息进行表达输出的一种增强,利用特征上采样来构建自顶向下的特征层级,融合了不同尺度的特征图。Li等[11]提出了利用融合基层特征后再经过卷积层来生成多尺度特征的单阶段FSSD(Feature Fusion Single Shot Multibox Detector)目标检测方法,将经过卷积层得到的不同层级、不同尺度的特征图进行上采样后将这些特征图进行特征融合成基层特征图,然后将基层特征图进行下采样构建多尺度特征层级。Fu等[12]借鉴FPN思想提出DSSD (Deconvolutional Single Shot Detector),在SSD的基础上增加了转置卷积模块和预测模块,从而使得对小目标的检测有着显著的提升。后来温捷文等[13]提出了一种改进SSD的小目标检测算法,该方法对多层次的特征图进行拼接融合操作,最终得到特征信息丰富的特征集合。高俊艳等[14]提出了结合注意力与特征融合的目标跟踪算法,利用特征融合的方式提高了跟踪模型的竞争力。He等[15]在Faster RCNN的基础上用ResNet替代VGG(Visual Geometry Group)网络并且利用FPN网络融合多层特征图挖掘了多尺度特征信息,后来YOLO V3[16](You Only Look Once, Version3)同样采用类似FPN的上采样和融合的方法在多个尺度上做检测。这些方法都基于特征融合的网络结构提取多尺度的特征信息,对漏检情况以及小目标的检测问题有着明显的改善。
通过对文献[9-16]所提出的方法进行研究,发现特征融合的方法对传统目标检测算法精度的提升有着重要的作用。卷积特征图中低层特征分辨率高,对检测小目标有较好的效果,高层特征分辨率小,但语义信息较强,利用多尺度的特征图进行融合互补特征信息可以明显提升检测效果。因此,本文提出一种基于Mask-RCNN进行二次特征融合的目标检测方法。
不同尺度的特征图信息互相融合可以提高目标检测任务的精度,低层的特征分辨率高,更多关注的是目标的细节,而缺少语义信息。高层的特征分辨率低,但语义信息较丰富,学习的是目标的轮廓或者更抽象的特征。目前特征图上采样的方式多为人工特定工程的插值方法,并没有参数进行学习。为了充分利用不同尺度的特征图的特征信息以及上采样操作能有参数被网络所学习,本文提出一种二次特征融合的CNN结构,融合模块的结构如图1所示。
图1 改进后融合模块图Fig.1 The improved fusion module
(1) 采用特征重复使用的方式,将学习高层抽象特征时已得到的低层特征进行重复使用,低层特征分辨率高,对小目标的检测发挥着重要的作用,本文二次特征融合的过程中都充分利用所有层级特征,在不牺牲表达能力、速度和额外内存开销的情况下达到更高的模型精度。
(2) 采用二次特征融合的方式,如图1所示,让过渡特征再次进行自底向上的融合,在一定程度上特征信息丰富的低层特征补充到高层特征中,得到更具表达能力的模型。
(3) 采用转置卷积的上采样方式替代原始的插值方法,使得上采样的过程中有参数可以被网络学习,从而提高检测任务的精度。
本文提出的模型是基于Mask-RCNN改进的,整体结构采取了two-stage的检测方法,特征提取模块选取ResNet50作为整个模型的骨干网络,将原始图片调整为1020×1024的分辨率输入骨干网络,把整个特征提取网络分为5个阶段,每个阶段大量交替使用尺寸为1×1和3×3的卷积核,其中每个1×1的卷积核都只改变特征通道的大小,不改变特征图的尺寸,特征提取的过程中利用3×3的卷积核对图像进行特征压缩,利用1×1的卷积核来增加通道数目从而扩大特征维度。深度卷积神经网络随着卷积层的增加,高层特征的语义信息更强,但其分辨率低,相反,低层特征的分辨率高,语义信息较弱。为了充分利用高层特征和低层特征的优势,采用重复使用特征的方式,将高层特征的抽象特征横向连接后自顶向下与复用的低层特征进行第一次特征融合,得到过渡特征集合,然后在第二次特征融合过程对过渡特征中的高层特征进行特征复用,将过渡特征中的低层特征横向连接后自底向上与复用的高层特征进行特征融合,最终得到多尺度特征集合。特征网络结构如图2所示。
图2 特征网络结构图Fig.2 Feature network structure
本文算法在ResNet50的网络结构中采用自底向上的路径进行特征提取,前向过程中分为5个阶段,每个阶段都是尺度步长为2的特征映射,其中在同一个阶段内都有许多同样输出大小的特征层级,结果表明,高层的特征输出表征能力更强,因此本文将采用每个阶段最后一层的输出作为组成特征集合的特征,如图2,C1~C5是每个阶段最后一层的输出组成的特征集合。
第一阶段特征融合的过程中,因为C1分辨率过大,语义信息较弱,考虑到训练过程中占用大量的显存,所以特征融合的过程中将摒弃第一阶段输出的特征C1。本文采用1×1的卷积核对C2~C5的特征横向连接进行深度修正,将所有特征图的通道数目都统一修正为256,然后在这基础上添加自顶向下的纵向连接,对每个特征图进行上采样,为了上采样操作都能有参数可以被网络学习,这里使用转置卷积进行上采样替代原来的双线性插值,本文在实验部分对比了双线性插值和转置卷积上采样的两种方法。
在经过第一阶段的特征融合后,得到5个尺度不一的特征图F2~F6,其中F6是由F5特征图下采样得到的。虽然经过了第一次特征融合,但是过渡特征中高层的特征信息相比低层特征较弱,低层特征中分辨率高,包含了更多细小目标的细节特征,这对于小目标的检测尤为重要。而且高层特征与低层特征之间的相对路径较长,直接融合会造成特征相关性的流失。
基于上述问题,本文作出了设想,对第一次融合后的过渡特征再进行第二次特征融合,采用1×1的卷积核对F2~F6特征图横向连接,首先对F2经过1×1的横向卷积得到L2,然后对L2进行最大池化下采样操作得到与F3同样尺寸的特征图,最后采用ele-sum方式融合得到L3。在这基础上,同样的操作方式添加自底向上的纵向连接,对每个特征图利用最大池化进行下采样,然后采用ele-sum的方式实现多尺度的特征融合。最后,对融合得到的L2~L6特征图通过3×3的卷积运算,去除混叠效应后输入到RPN网络进行分类和回归。
经过两次特征融合后,得到特征图L2~L6,本文将第二次融合的特征集{L2,L3,L4,L5,L6}输入到区域建议网络(Region Proposal Network,RPN)中,RPN进行分类和回归前先遍历输入的每张特征图的像素点,生成目标的候选区域,文中采用5种不同尺度面积{322, 642, 1282, 2562, 5122}分别对应3种比例为{1∶2, 1∶1, 2∶1}的矩形宽高,在每个像素点生成15个不同尺度的锚框(anchor)。
在所有特征图上得到锚框后,为平衡正负样本的数量,获得高质量的训练数据,RPN对所有锚框和目标的真实目标框进行IOU(Intersection over Union)计算来划分所有正负样本。由于产生的锚框数量较多,训练过程中选取128个正样本和128个负样本进行训练。RPN前向传播计算目标的分类得分和坐标点的偏移量,如图3展示了RPN网络的具体结构实际分为两条分支,上面一条分支表示锚框通过SoftMax二分类来获得前景和背景,下面一条分支用于计算锚框的坐标点偏移量以及框的宽高微调,从而获得精确的建议框(proposal)。RPN对锚框的回归计算如图4所示,本文设定IOU阈值为0.7,当锚框与真实目标IOU值大于0.7时,将被判定为正样本,由于被选取的正样本P坐标与真实目标G的坐标存在一定的差异,所以网络会通过对这些样本进行回归计算学习一种映射关系,使得训练样本P的坐标经过回归计算后得到与G更加接近的回归坐标Ĝ。对于候选框相对于图像的位置,本文使用(x,y,w,h)表示锚框的中心坐标和宽高,其中(x,y)表示候选框的中心点坐标,(w,h)表示候选框的宽高。回归的思路是:给定P=(Px,Py,Pw,Ph),寻找一种映射f,使得f(Px,Py,Pw,Ph)=(Ĝx,Ĝy,Ĝw,Ĝh),Ĝ中(Ĝx,Ĝy,Ĝw,Ĝh)≈(Gx,Gy,Gw,Gh)。
图3 RPN网络结构图Fig.3 RPN network structure
图4 边框回归过程图Fig.4 Border regression process
回归过程中先做平移(Δx,Δy),其中Δx=Pwdx(P),Δy=Phdy(P),方程表达式为
然后做尺度缩放(Sw,Sh),其中Sw=Pwdw(P),Sh=Phdh(P),方程表达式为
观察公式(1)~(4)可知,需要学习的是dx(P),dy(P),dw(P),dh(P)这4个变换。当输入的锚框与真实目标框相差较小时,这种变化可以被认为是一种线性变换,那么就可以用线性回归来对窗口进行建模微调。对于该问题,输入的特征向量被定义为Φ(P);用d*(P)表示dx(P),dy(P),dw(P),dh(P)这4个变换,所以目标函数可以表示为d*(P)=W*TΦ(P),符号*表示(x,y,w,h)内的其中一个,那么W*对应(x,y,w,h)中模型要学习的参数,也就是每个变换对应上述的目标函数。同时,训练模型还需要传入预测边界框A与真实边界框G之间的变化量,即(tx,ty,tw,th),为了让预测值d*(P)与真实值差距最小,设计了smooth L1损失函数,详见式(9)。
锚框(anchor)经过RPN的分类和回归后,得到一些候选区域(proposal),接下来的步骤是将这些候选区域(proposal)重新映射到原图的位置,并通过ROI(Region of Interest) Align使得每个候选区域生成同样尺寸的特征图,最后把这些特征图连接两个独立的全连接层,对其进行第二次精准的分类和回归,从而得到该候选区域的所属类别以及具体坐标,除此之外还添加了一条mask分支进行语义分割。本文的检测过程主要是two-stage,首先利用RPN网络进行二分类和回归,然后经过RCNN连接全连接层进行多分类、回归以及mask分支的语义分割。算法流程图如图5所示。针对这些地方本文采用cross entropy loss和smooth L1 loss,相关损失函数定义如下:L=Lbox+Lmask,mask分支在每个像素点上应用sigmoid函数代替SoftMax函数,整体Lmask损失函数定义为平均二值交叉熵,这样可以避免类别之间的竞争,其中Lbox表示目标的分类损失和回归损失和,表示为
图5 算法流程图Fig.5 Algorithm process
分类损失函数包括RPN分类损失和RCNN分类损失:
Ncls和Nreg分别表示分类和回归的样本个数,i代表第i个样本,表示样本的预测概率,当为正样本时,其值为1,否则为0;和为预测的变换值和真实的变换值。
本文实验所使用的环境配置为:LINUX 64 bit操作系统:Ubuntu16.04,Intel Xeon E5 V3 2600系列CPU,16 GB内存,NVIDIA GeForce RTX2080Ti 11 GB显卡。实验程序所在TensorFlow[17]深度学习框架下使用python编程语言实现。
MS COCO的全称是Microsoft Common Objects in Context,是目前最具有权威的数据集之一。COCO数据集是一个大型的、丰富的物体检测数据集。这个数据集以平常的视觉物体为目标,主要从复杂的日常场景中截取。图像包括91类目标,328000影响和2500000个标签。目前为止为语义分割最大的数据集,提供类别有80类,有超过33万张图片,其中20万张有标注,整个数据集中个体目标超过150万个。本文采用COCO2014的数据集作为训练和测试,2014年版本训练集拥有82783张图片,验证集拥有40504张,测试集40775张图片,有270 K的分割人物和886 K的分割物体。
本文采用COCO2014作为训练集和测试集,实验采取了端到端的训练方法,利用ImageNet[18]预训练的权重初始化ResNet50骨干网络,其余部分的网络权重采取随机初始化。网络训练的学习率为0.001,权重衰减系数为0.0001,优化动量参数为0.9。最大训练迭代次数为192000,验证迭代次数为9600,NMS阈值的设置为0.7。对于输入的图片尺寸都调整为最短边不小于800,最长边不超过1200,训练的过程中先对每个批次的训练数据进行数据增强。一定程度避免网络训练过拟合。
为比较上采样方法中双线性插值和转置卷积的性能,本文算法基于ResNet50+FPN的骨干网络,采用AP(Average Precision)作为定量的评估指标,其中AP表示IOU阈值在0.5~0.95之间每隔0.5计算一次,然后取平均值得到,AP50、AP75分别表示IOU阈值大于0.5和0.75的测量值。在COCO2014的数据集上,转置卷积相比于双线性插值分别在AP、AP50、AP75上取得了1.8%,0.6%,0.2%的提升,结果表明利用转置卷积进行上采样被网络学习有利于得到较好的检测效果,如表1所示。
表1 不同上采样方法的性能比较Table 1 Performance comparison of different upsampling methods
本文将主流的目标检测算法R-FCN[19]、FSSD、Mask RCNN与提出的算法进行性能比较,见图6和表2。从表2中可以看出,本文提出的方法是基于ResNet50+FPN的骨架网络中对过渡特征复用并进行二次特征融合,最终在各项评价指标AP、AP50、AP75中效果都优于以上3个算法。在APS、APM、APL的3项指标中也能取得较好的效果,分别得到了20.4%,36.1%,53.3%的预测值(指标APS表示为像素面积小于322的目标框的AP预测值,APM表示像素面积在322~962的目标框预测值,APL表示像素面积大于962的目标框预测值)。特别的,对于小目标的AP预测值相比于Mask RCNN有着3.5%的提升,结果表明特征融合对小目标的检测有着明显的提升,二次融合弥补了特征提取过程中特征之间相关性的损失,融合了各层级特征中丰富有用的信息,使得本文的网络所提取的特征更具有表征能力。
图6 本文算法和Mask RCNN的检测效果对比图Fig.6 Comparison of the detection effect of the algorithm in this paper and Mask RCNN
表2 经典算法的性能比较Table 2 Performance comparison of classic algorithms
多尺度问题一直是目标检测算法中关注的问题,文中提出了一种基于Mask RCNN二次融合的目标检测算法,该算法在FPN的基础上对过渡特征进行复用并采用二次特征融合的方式,让过渡特征的特征图再次进行自底向上的融合,在一定程度上特征信息丰富的低层补充到高层特征。最终在COCO2014的数据集上AP、AP50、AP75分别达到了35.3%,57.5%,36.6%,APS、APM、APL都达到了较好的效果,分别为20.4%,36.7%,47.0%,实验结果表明对卷积特征进行二次特征融合,弥补了特征提取过程中特征之间相关性的损失,融合了各层级特征中丰富的有用信息,使得网络所提取的特征更具有表征能力,对漏检的避免和小目标的检测有着显著的提升。但本文采取了转置卷积和二次特征融合,一定程度上影响了算法的训练速度,所以如何保持精度的同时优化模型的网络结构,从而提高训练速度是未来的研究方向。
(责任编辑:杨耀辉)