APP下载

基于无锚框网络的航拍航道船舶检测算法

2021-08-06光睿智安博文潘胜达

计算机工程与应用 2021年15期
关键词:骨干网边框尺度

光睿智,安博文,潘胜达

上海海事大学 信息工程学院,上海 201306

伴随着国内航运事业的迅猛发展,内河航道愈发拥挤,给海事部门的监管带来许多困难。随着无人机技术的快速进步,采用无人机航拍影像进行航道船舶目标检测已经成为较有成效的辅助手段,其优势在于覆盖面广,可以实现目标航道无死角的监控。然而,无人机影像中船舶目标较小,尺度变换较大,具有易抖动、易模糊和航道两边背景特征复杂的问题,进行船舶目标检测的难度较高。传统的目标检测算法一般基于人工设计特征,如HOG[1]、SIFT[2]、SURF[3]等,因此在实际使用时检测效果不够理想,且泛化能力较弱。

现今计算机视觉领域中基于深度学习的目标检测算法已经在目标检测方向得到广泛的应用。这类算法若根据网络结构上的差异进行划分,依照是否有候选区域网络分为单阶段和两阶段两类。单阶段目标检测算法的检测精度普遍较之两阶段算法稍差,但其一般具有更快的检测速度,更适合工程应用。此外,依据不同的边框回归策略,基于深度学习的目标检测算法也分成基于锚框(anchor-base)和无锚框(anchor-free)两类。锚框是由数据集预处理产生的一种超参数,通过预先规范检测框的形状来提高网络召回率和精度。虽然使用锚框可以在一定程度上的优化算法性能,但是其存在并不符合人眼视觉特性,也不利于算法的泛化。因此,设计基于无锚框的算法实现目标检测已经成为该领域的重要方向。对于单阶段目标检测算法,基于锚框的算法有YOLOV3[4]、SSD[5]、RetinaNet[6]等,无锚框的算法也有FoveaBox[7]、FCOS[8]等算法。

作为目标检测中的重要分支,基于深度学习的航拍图像船舶检测是当前目标检测领域的研究热点之一。但航拍影像中目标普遍偏小、物体尺度变化较大,因此需要对这类算法进行一些有针对性的改进。在小目标检测精度提升方面,裴伟等[9]使用基于SSD 的方法,改进了算法的特征提取网络和检测网络的结构;史文旭等[10]在SSD算法上增加特征增强模块,同时采用候选框匹配的方式改善检测框的定位问题。这两种方式均在目标数据集获得了较好效果,但受限于算法中特征提取网络的分类性能,其小目标检测精度仍有待提高。对于待测目标大范围尺度变换方面,谢学立等[11]基于RetinaNet 算法,使用网络旁路构造动态感受野改善尺度变换问题;李晓光等[12]使用改进的Faster R-CNN[13]算法进行多尺度检测;Gui等[14]在Faster R-CNN中添加尺度变换模块,对残差网络的输出特征进行处理。这三者均在检测对象尺度变换较大的情况下实现算法精度提高,但其定位匹配方式均基于锚框,需要借助较多的超参数,限制了算法迁移。对于待测目标背景复杂方面,王健林等[15]基于R-FCN 网络通过在残差块中混合卷积尺度提高检测精度;于野等[16]使用改进的A-FPN网络改善特征提取方式,提高了复杂背景下的算法性能。这类算法着重于提高船舶检测准确率,但算法复杂度较高。

由上述分析可知,面对航道船舶目标较小、尺度变换大、背景复杂等问题,目前存在的大部分单阶段算法的检测精度稍显不足,两阶段算法虽提高了准确率却使网络结构复杂化,同时这两类算法多数基于锚框实现回归策略。为此,本文提出了一种无锚框的单阶段目标检测算法FoveaSDet。首先,FoveaSDet算法为提高小目标和整体检测精度,在算法特征提取部分提出了基于残差网络[17](Residual Network,ResNet)的骨干网SEResNeXt-I,该网络在ResNeXt[18]的基础上改进了输入数据的特征提取结构,同时也优化了网络特征层中数据的空间关联性;其次,为改善尺度变换对检测精度的影响,同时实现无锚框的边框回归,算法中引入了FoveaBox中的Foveahead模块实现目标分类和定位;最后,为增加复杂背景下的定位精度和检测框的交并比(Intersection over Union,IOU),使用完全交并比损失[19](Complete-IOU,CIOU)作为边框回归损失。

1 FoveaSDet目标检测算法

1.1 FoveaSDet算法检测流程

本文所提出的FoveaSDet 算法主要由三个模块构成:特征提取网络、无锚框检测模块和损失函数。

特征提取网络,即骨干网,负责提取图像中包含的不同层次的特征信息。旨在提高FoveaSDet 算法整体的检测精度及小目标检测性能,本文优化了基于ResNeXt的骨干网及网络块的内部结构两个部分,并称改进后的骨干网为SEResNeXt-I。同时,为了适配多尺度检测,进一步提升算法的整体性能,在骨干网中增加了特征金字塔网络[20](Feature Pyramid Network,FPN)结构。

无锚框检测模块旨在抛却传统算法基于锚框的边框回归的策略,使得算法的检测方式更符合人眼视觉,预设的超参数更少,并拥有更好的泛化能力。本文选择Foveahead 实现该目标,其优势在于该算法使用了语义分割的思想设计正负样本区域划分,并与FPN 相结合,用简洁的方法实现了无锚框的边框回归。

损失函数对算法的学习能力有决定性影响,可将其分为两类:分类损失函数及边框损失函数。针对本文要实现的船舶检测任务,选择分类损失函数FocalLoss 实现分类,同时引入边框损失函数CIOU。

FocalLoss用以缓解数据集样本不平衡的问题,CIOU旨在进一步挖掘图像特征信息与样本真值(GroundTruth,GT)之间的联系,提升算法检测框的定位精度。

FoveaSDet 算法实现目标检测的流程如图1 所示。首先将待测图片输入特征提取网络,通过SEResNeXt-I及FPN完成对图片基本特征的提取,获得5层不同尺度的特征映射,每层的数据均需通过Foveahead 分成两个子网络,分别完成目标的分类和检测框的预测。最后在各层完成检测之后按尺度融合,并对检测框进行软非极大值抑制[21](Soft Non-Maximum Suppression,Soft-NMS)获得最后的检测结果。

图1 FoveaSDet船舶检测流程Fig.1 Process of FoveaSDet ship detection

1.2 SEResNeXt-I骨干网

残差网络作为现今常用的特征提取网络,其特点在于通过在网络块中构造恒等映射的方式,缓解了深层网络学习能力退化的问题。同时在残差块中增加批量归一化[22](Batch Normalization,BN)层及Relu 激活函数,降低了学习成本,并且改善了网络的训练环境。然而,即便残差网络具有很多良好的特性,其对于小目标的特征提取能力稍显逊色。为此,本文对骨干网的网络结构和残差块的内部结构两部分内容进行了改进。

首先,本文优化了骨干网用来处理输入数据的网络结构,旨在减少输入特征损失,保留更多特征信息,提高对小目标的检测精度,其改变如图2(a)所示。左侧为主流的残差网络结构ResNeXt101,在进入残差网络前使用步长为2的7×7卷积处理输入图片。虽然这种方式使用大小为7的卷积核来提高感受野,但是较大的步长仍使网络在处理输入数据时便损失了许多图片特征。为了减少特征损失,并且保留充足的感受野,将网络结构改进为图2(a)右侧所示。将7×7卷积核拆分成3个3×3卷积核,同时步长变为1,输入通道缩减为16。这样既能保留网络的空间感知能力,又增加了输出特征数量。此外,通过降低网络的初始通道数,后续网络输入参数也随之减少。随后在网络结构中增加了2 个跳跃连接结构,这使得网络中添加了更多的非线性映射,同时令不同层次的特征在块之间流动。本文将完成结构改进后的网络称为ResNeXt-I。当设定其网络深度为101时,用ResNeXt-I101 表示,文中的骨干网名称均采用此类方式命名。

图2 骨干网结构和残差块结构改进Fig.2 Improvement of backbone and residual block structure

其次,为了提高网络层中不同特征的利用率,建立通道之间的依赖关系,同时改善网络全局的检测精度,本文对网络残差块的内部结构进行改进,将压缩激励[23](Squeeze and Excitation,SE)模块引入残差块中,其样式如图2(b)所示。SE模块能使特征提取网络在学习过程中不断更新各个特征通道的重要程度,筛选出重要特征并抛弃掉无用的特征,这一步也剔除了冗余的参数,降低网络整体的计算开销。SE模块可分为压缩和激励两个部分。首先为压缩部分,对于ResNeXt残差块输出的数据,使用全局平均池化完成对二维数据的空间压缩,将特征通道压缩成一个实数,该实数映射了对应特征通道的全局表达。令该值为zc,通道的高为h,宽为w,二维平面的数据为xc(i,j),则压缩部分的表达式为:

完成压缩操作后,算法将要实现的是激励操作。对特征通道压缩后获得了当前通道的特征权重,为了平衡数据集整体的特征权重,使用全连接层建立不同通道的相关性。此外,为降低计算量,第一个全连接层将输入降低为原来1/16,随之再经过一个全连接层用以实现特征通道在整体上的关联。这种方式也为输入输出增添了更多非线性元素,有助于更好地呈现特征。在完成激励操作后,通过Sigmoid激活函数完成归一化,并通过缩放操作将获得的权重加权到各个特征上,完成SE 模块的整体流程。

最后,在特征提取网络的末端使用FPN结构。FPN在原始的特征映射上进行步长为2 的下采样,缩放出4个不同尺度的特征层。每个特征层不仅包含原始输入层的特征信息,还与经过上采样的下一层特征层相融合。这使得每层特征映射既包含了当前尺度的特征细节,又结合了来自上层的更抽象的语义信息。这4层特征与原始特征一起构成了5个不同尺度的特征映射,其输出数据将用于之后的无锚框模块,完成目标的分类和定位。相较而言,进行过两点改进并添加FPN 结构的SEResNeXt-I 网络比单纯的ResNeXt 有更低的分类误差。

1.3 无锚框检测模块

传统的基于锚框的目标检测算法,在检测前首先通过聚类等手段计算与数据集相适应的N组锚框,随后在检测时根据锚框的大小进行边框回归。为实现无锚框边框回归策略,同时更好地处理船舶检测时尺度变换较大的问题,引入FoveaBox算法中Foveahead的实现无锚框检测,具体的检测流程如图3所示。Foveahead首先对特征施行尺度划分。对于由FPN结构输出的5类尺寸的特征层,Foveahead设定每层用于检测的基础大小为Sl,Sl∈{322,642,1282,2562,5122} 。该检测面积可以通过常数η控制缩放,使得每层的尺寸范围为[Sl/η2,Sl⋅η2]。本文设定η=2,这会使不同特征层的尺度范围存在相交的现象。因此Foveahead将根据GT的尺寸,在一个或多个符合尺度的特征层中完成检测并融合结果。

图3 Foveahead检测流程Fig.3 Process of Foveahead prediction

在确定各个特征层的尺度划分后,Foveahead 将特征映射划分为正、负样本两部分,辅助完成目标的分类和回归。Foveahead 先通过样本的GT 计算出在第l个尺度的特征映射中,位于目标中心的位置(c′x,c′y),其公式如式(2)所示:

样本划分完成后,对于正样本区域上每一个坐标,Foveahead都将回归其分类结果和检测框。因各个特征层上坐标点位于不同尺度的特征映射,需要将坐标变换到原始图像。随后引入损失函数计算分类结果及检测框的定位结果,并衡量与GT 的差异。最后通过大小为0.05 的置信度阈值筛选出排名前1 000 的检测框,并使用阈值为0.5的Soft-NMS获得最终的检测结果。

1.4 损失函数

对于FoveaSDet 算法的分类损失,本文采用的是FocalLoss,旨在缓解正负样本区域的不平衡,降低分类误差,其公式为:

式中,y为GT的标签,代表样本正负,y′为检测分类置信值。α用于区分样本的重要性,γ用来分辨样本的难易度,此两者共同约束了训练时获得的损失,本文设定α=0.5,γ=4。对于容易训练的样本,其损失Lfl相对较小,反之难于训练的样本的分类损失将会放大。

FoveaSDet算法的边框回归损失选取CIOU,该损失函数属于IOU 损失函数中的一类。CIOU 损失继承了IOU 损失具有的尺度不变性、非负性等优点,同时也克服了IOU损失无法反映检测框之间状态的缺点,该损失函数的优势为:

(1)衡量了IOU=0 时的情况,使不相交的目标之间也存在梯度损失进行计算。

(2)考虑了边框重合时的情况,通过计算中心点距离使检测框更好地趋向GT中心移动。

(3)引入宽高比概念,使得检测框和GT有更相近的矩形框形状。

若令检测框为P,GT 框为T,则IOU 的公式为式(5)所示:

为评估在框的集合S中不相交的框P和T,设C为S集合中包含P、T的最小框,则广义交并比损失函数[24](Generalized-IOU,GIOU)的公式为:

该公式计算出C中P、T以外的部分与C的比值,修正了IOU 损失的计算值,可以更好反映检测框相交的情况,可将其视作IOU的下界。

在GIOU 基础上,为了提升损失函数的整体性能,CIOU 引入了对检测框与GT 框的中心点距离和宽高比的计算,在相交面积和形状比例两方面实现对检测框的约束。设ρ为中心点的距离,b,bgt为两框的中心点,c为最小包围框C的对角线距离,α为比例平衡系数,v为一致性系数,则CIOU损失的表示式为:

该算式首先将GIOU 设定的区域比值转化为距离比值,这能更好地反映两框之间的关系。其次,该方法降低了训练所需的计算量,使得函数收敛得更快,边框能较快地移动到目标位置。最后,为更好地获得边框形状,进一步提高检测结果,CIOU增加参数v来评估两框一致性,同时使用α控制尺度及梯度移动方向,规范边框的收敛样式。

2 实验及结果分析

2.1 实验环境

本文采用的数据集源自于大疆M100无人机在黄浦江上空的实景拍摄,共5 743 张图片,分辨率均大于1 280×720,包含船舶和背景两类,其样本示例如图4 所示。相较于目前的许多公开数据集而言,本文数据集的检测难度较高,目标的尺度会随无人机的航迹发生变化,船舶目标较小且样本数量偏少。通过考虑上述因素,选择扩大训练集的比例,将数据集的训练集、验证集和测试集划分比例为7∶1∶2,同时将数据集标注为COCO格式方便进行更细致的结果展示。

图4 数据集样本示例Fig.4 Samples of dataset

本文实验在Ubuntu16.04 操作系统下完成,算法部署于Pytorch1.1框架,使用RTX2080Ti进行训练及测试,并基于CUDA10.0 及CUDNN7.3 完成计算加速和算法优化。

本文在训练时采取了一系列数据增强[25]手段,旨在改善部分特征的展现形式,提高算法最终的检测精度。首先,通过对样本进行上下、左右翻折,图像随机旋转和抖动,图像扭曲模糊及亮度调整等操作,完成了数据集的增广。这些手段也能使训练出的权重更加鲁棒,抗干扰失真的能力更强。其次,在训练中增加了多尺度训练、随机剪裁等技巧。多尺度训练通过在训练时缩放输入数据改变算法输入,既提高了算法的训练速度,又增强了鲁棒性。输入图像的随机剪裁变相扩大了数据集的样本数,也使样本展现的形式更加丰富。最后,使用预热学习率(warm-up)的方式设定学习率,提高了算法学习的上限。

此外,为减少超参数及训练样本数据差异对算法的影响,在对各类算法进行测试时均未使用预训练权重,旨在单纯测试算法在设定环境下的学习能力。本文算法选取随机梯度下降法完成梯度计算,初始学习率为0.001,动量为0.9,衰减系数为0.000 1,迭代轮数为24轮。

2.2 评价标准

本文使用平均准确率(Average Precision,AP)、召回率(Recall)、交并比(IOU)及PR曲线来评估算法检测结果。平均准确率展示算法的检测精度;召回率表征样本被正确检测的概率;交并比作为衡量检测精度的门限,影响边框回归与检测精度的关系;PR 曲线展示不同IOU 阈值下准确率和召回率之间的比例关系,该曲线闭合区域的面积数值即为对应算法的平均准确率。准确率P、召回率R和平均准确率AP的公式如式(8)、(9)所示:

其中,NTP表示算法检测正确的正样本数,NFP表示算法检测错误的正样本数,两者相和为总的正样本数,NFN指代检测错误的负样本数。

2.3 消融实验

将FoveaSDet 的骨干网和损失函数部分进行消融实验,旨在测试算法对小目标的检测优势及其边框定位性能。首先对骨干网的性能进行测试,主要比较SEResNeXt-I 和残差网络对小目标检测精度APS、网络中所含参量及Flops。当骨干网深度为101,分组数为32且宽度为4 时,SEResNeXt-I 与各网络的对比结果展示在表1中。

表1 骨干网对算法性能影响Table 1 Influence of backbone on algorithm performance

由表1中可知,将骨干网从ResNeXt改进为ResNeXt-I时,小目标检测精度提高了约0.7%。增加SE 模块后,SEResNeXt-I 小目标精度相较原版ResNeXt 提高6.4%,其中SE 模块贡献约5.7%的准确率增益。SEResNeXt-I通过改变网络结构,并使用SE模块进行特征筛选,两者相结合降低了网络整体的参量。

随后测试边框损失CIOU损失对FoveaSDet算法目标检测性能的影响。为了衡量在较高IOU 阈值下边框回归的检测精度,使用IOU 阈值为0.75 的AP 及边框平均召回率进行评估。将CIOU损失与L1[26]损失、GIOU损失比较,其结果如表2所示。经测试证明采用CIOU对算法的整体性能有一定提高,其检测精度提升了2.9%,平均召回率上升了1.5%。使用CIOU 损失改善了网络的训练效率,同时也对算法检测精度提升做出了贡献。

表2 边框损失函数对算法性能影响Table 2 Influence of bounding box loss function on algorithm performance%

消融实验的测试结果证明,本文改进所得的骨干网及边框损失两个模块均在原有基础上提高了算法的检测精度。骨干网SEResNeXt-I 在提高小目标检测精度的同时降低了网络参量,损失函数CIOU为算法的边框定位提供了增益。

2.4 算法对比结果及分析

将FoveaSDet算法与基于锚框的算法SSD、YOLOV3、RetinaNet,无锚框的算法FCOS 及FoveaBox 进行比较,其测试结果如表3所示。FoveaSDet在使用网络深度为101,分组数为32且宽度为4时的骨干网SEResNeXt-I101-32×4d时,其在整体AP上相较于使用ResNeXt101-32×4d的FoveaBox上升了4.9%。对于高IOU判决下的检测精度,两算法的差异更为明显,FoveaSDet算法的AP75较后者提高了约8.6%,同时对小目标的准确率APS也提高了约6.2%,各项性能均实现了对FoveaBox 的超越。随后比较FoveaSDet 算法使用L1、GIOU 和CIOU 回归损失的性能差异。GIOU相比L1损失对于算法整体AP均有提升,而算法采用CIOU 相较于GIOU 而言虽然各项数值提升较小,但改善了算法的训练及收敛情况,其测试结果受数据集及骨干网性能影响。最后分析FoveaSDet算法的计算效率。在骨干网相同的情况下,该算法相较于FoveaBox的帧率提高了23%,在使用SEResNeXt-I骨干网后,其帧率相较ResNeXt 版本降低了0.5 至1 帧。虽然SEResNeXt-I 使用SE 模块提高了检测性能,同时压缩了网络参数,但其较为复杂的数据处理方式仍对检测速率产生了影响。

将FoveaSDet 与常用的一些单阶段检测算法,如YOLOV3和SSD算法进行比较,本文算法的AP较其中性能最好的SSD512提升了约9.6%。与同样使用Focal-Loss 进行分类的RetinaNet 相比,本文算法在整体精度上也有较大提升,同时拥有更快的检测速率。相较于另一种较好的无锚框单阶段检测算法FCOS,其AP比之高了2.2%,检测速率也与之基本持平。

图5显示FoveaSDet算法在使用不同骨干网的情况下,与表3中其余算法在IOU阈值分别为0.5和0.75时的PR曲线,该图表明本文算法相较于其他算法在检测精度和召回率两部分都有一定优势。图6展示了FoveaSDet算法对测试集部分数据的检测结果。从图中可以看出,本文算法在航道两边的背景极为复杂,光线、阴影、视角及船舶尺度因素各不相同的情况下,仍能很好地实现船舶的目标检测,其对于小目标的检测效果较好。并且FoveaSDet算法在尺度变换较大并且背景较复杂的情况下,检测框的定位良好。

图5 两种阈值IOU下PR曲线比较Fig.5 Comparison of PR curves under two thresholds IOU

图6 FoveaSDet航道船舶目标检测样例Fig.6 Samples of FoveaSDet channel target detection

表3 多种算法船舶检测精度及召回率Table 3 Multiple algorithms for ship detection accuracy and recall rate

图7展示了在不同环境下,YOLOV3、SSD与Fovea-SDet 三种算法的检测结果。图中错检漏检的部分用红框标注,检测框偏移等问题用黄框标出。对于不同背景分布、光照环境不同、船舶数量尺度不一的四类图片中,YOLOV3 和SSD 因精度等问题出现了一定的错检漏检情况,同时伴有检测框堆叠的情况。相较而言,FoveaSDet算法在相同场景下实现了更好的检测结果,其检测框的定位相对较好。对小目标检测精度和检测框定位精度的提升得益于算法对骨干网和边框回归损失的改进。

图7 三种算法对不同环境场景检测结果比较Fig.7 Comparison of prediction results of three algorithms for different environmental scenarios

3 结束语

本文提出了一种单阶段的无锚框目标检测算法FoveaSDet,旨在解决复杂背景下船舶目标小、尺度变换大、难以检测定位的问题,提高对航拍航道船舶小目标的检测精度。对于船舶目标较小的特点,改善了特征提取网络的结构,并在残差块内增加SE模块实现对于小目标提升;针对目标尺度变换较大的问题,使用Foveahead无锚框检测模块实现多尺度检测;针对检测框难以定位的问题,使用了CIOU 损失函数予以改善,使检测框的定位精度更高,提升算法的整体性能。经过实验证实,FoveaSDet 算法能够很好地实现航道船舶检测功能,算法的鲁棒性和泛化能力较强,可以推广到更广泛的应用场景。下一阶段的任务为使FoveaSDet 算法更为轻量化,需要提高其检测速率,使其能部署在边缘计算设备上,更好地实现落地应用。

猜你喜欢

骨干网边框尺度
财产的五大尺度和五重应对
有轨电车信号系统三层骨干网传输方案分析
用Lightroom添加宝丽来边框
NGB骨干网中QoS 保证实现机制研究
给照片制作专业级的边框
外出玩
宇宙的尺度
摆脱边框的束缚优派
OTN和PTN技术在高速公路骨干网中的应用
9