动态损失与加强特征融合的目标检测算法

2023-12-08 11:48肇启明
计算机与生活 2023年12期
关键词:边界损失动态

肇启明,张 涛,孙 俊

江南大学 人工智能与计算机学院,江苏 无锡 214122

目标检测任务就是要找出图像当中所包含的感兴趣的物体,包括它们在图像当中的位置以及所属类别。一些计算机视觉的其他方向,例如目标跟踪、行人重识别等,其前置任务也都是目标检测,因此不论是学术界还是工业界,目标检测都是最热门的方向之一。随着深度学习的迅猛发展,目标检测也从传统的数字图像处理算法转向了基于深度学习的目标检测算法,目前基于深度学习的目标检测算法可以分为两类。第一类是以Fast R-CNN(fast regions with convolutional neural network features)[1]系列为代表的双阶段(Two-Stage)检测方法,此类方法将检测任务分为两个阶段,即第一阶段通过提议网络提出候选区域集合,第二阶段对候选区域使用卷积神经网络(convolutional neural network,CNN)进行分类和边界框回归进而得到最终结果,其特点是准确率高,但是速度较慢。第二类则是以YOLO(you only look once)[2-4]系列为代表的单阶段(One-Stage)检测方法,此类方法提取图像特征之后直接对边界框做回归并得到类别,几乎实现端到端的检测,其特点是速度快,但起初准确率不高。随着算法的不断改进,目前One-Stage 检测算法既拥有比Two-Stage 算法更快的速度,同时还能保证较高的精度。

尽管目前各种各样的目标检测算法被提出,但几乎所有One-Stage检测网络都可以抽象地看作由骨干网络(Backbone)、颈部(Neck)、检测头(Head)三个部分组成。如图1所示,Backbone部分用来抽取图像当中不同尺度大小的特征,Neck 部分对Backbone 抽取的多尺度特征进行特征融合等操作,Head 部分则是使用Neck 融合处理过的特征进行预测,最终输出图像中物体的边界框位置以及物体所属类别。

图像当中物体尺寸差别大一直以来都是目标检测任务中的一大挑战,起初的One-Stage 检测器例如YOLOv1,只采用单尺度的特征图进行检测(图2(a)),导致网络对小目标检测效果很差,后来YOLOv3使用了FPN(feature pyramid network)[5](图2(b))作为Neck融合多尺度特征,使得检测效果得到了极大提升。后续各种Neck 例如SPP(spatial pyramid pooling)[6]、PAN(path aggregation network)[7]被提出,可见Neck 部分在检测网络当中起着承上启下的关键作用。

图2 不同尺度的检测方法Fig.2 Methods for detection at different scales

目标检测的损失函数一般由两部分组成,分别为类别损失和位置损失。YOLO 系列还额外需要一个置信度损失。类别损失即用来计算目标预测类别与实际类别的误差,位置损失即用来计算目标预测边界框与实际边界框的坐标位置误差。

One-Stage 算法之所以准确率不理想,一方面是因为设计的Neck 融合特征能力有限,导致小目标检测效果很差。另一方面则是由于位置损失函数的不足,现有的位置损失函数并没有考虑到损失函数内部各组成部分之间的关系,导致网络优化的过程不够准确。针对目前目标检测任务这两个部分存在的不足,本文首先提出了一个基于IoU 的动态交并比损失函数,能够根据真实边界框与预测边界框之间不同的位置状态,动态地给予位置损失中各组成部分不同权重,让网络能够在不同的阶段更有针对性地去优化边界框位置。其次本文将可变形卷积应用到Neck 部分,基于PAN 结构设计了一个可以即插即用的结合可变形卷积的Neck 来进行特征融合,提升网络对小目标检测能力。

实验部分本文使用YOLOv6作为基线网络。为了评估方法的性能,本文在与原论文相同的COCO2017数据集上进行训练与测试。本文主要的贡献如下:

(1)设计了针对目标检测的位置损失函数和Neck部分,可以即插即用应用于各种目标检测网络当中。

(2)将本文方法应用于三种体量的YOLOv6 模型上以实现其性能的提升。

(3)在COCO2017 数据集上验证本文方法的有效性。

1 相关工作

1.1 目标检测

目标检测任务要检测出图像当中目标的位置和类别。传统的目标检测主要基于数字图像处理提取目标区域的传统特征,例如方向梯度直方图(histogram of oriented gradient,HOG)[8]和尺度不变特征变换(scale invariant feature transform,SIFT)[9]等,再利用分类器例如支持向量机(support vector machine,SVM)对区域进行分类,存在着精度低、鲁棒性差等问题。近年来,随着深度学习的迅猛发展,基于深度学习的目标检测方法[10-11]在速度和精度方面都远超传统目标检测,取得了巨大成功。一般可以根据检测流程将算法分为两类:先提取物体区域,再进行分类识别的双阶段方法和直接做回归得到目标位置坐标与类别的单阶段方法。双阶段检测算法的代表为Fast RCNN[1]系列。R-CNN[12]网络率先将深度学习应用到目标检测任务当中,先使用选择性搜索算法(selective search)在图像上生成大量的提议区域,这对应着双阶段当中的第一个阶段,再使用CNN 提取每一个提议区域的特征,最后对每一个类别训练一个SVM 作为分类器,来预测提议区域的类别,这也对应着双阶段的第二阶段。由于R-CNN对每一个提议区域都需要重新输入到CNN 中提取特征,导致速度极慢。后来的Fast R-CNN 只使用CNN 提取一次特征,得到图像的特征图,再将原图像当中的提议区域直接映射到特征图上,而不用重新提取特征,节省大量计算时间,并且把最后的回归与分类也放入了CNN当中,速度较R-CNN 提升显著。Faster R-CNN[13]则是成功地将区域提议、特征提取、回归与分类融合到了整个模型当中,速度和精度又得到了较大提升。双阶段检测算法的优点是精度高,但因为双阶段检测结构固有的局限性,导致速度远不如单阶段检测。

单阶段检测算法则是抛弃了繁重的区域提议阶段,端到端地进行检测,代表算法为YOLO 系列。YOLOv1[2]使用CNN 提取原图像特征并直接对边界框做回归与分类,速度较双阶段有极大提升但是精度却不理想。YOLOv2[3]则是提出了锚框机制,对位置的预测不再是盲目暴力地回归,而是基于预先给定的锚框大小,计算与实际边界框的偏移,极大地提升了收敛速度和检测精度。YOLOv3[4]则是加入了FPN 作为Neck,融合多尺度特征进行预测,使得模型在速度和精度都得到了进一步提升,YOLOv3也一度成为了工业界使用最为广泛的模型之一。近期某团队基于RepVGG 的思想设计出了更高效的EfficientRep Backbone、RepPAN NECK 与Efficient Decoupled Head,并且使用了全新的SIoU Loss 作为位置损失函数,提出了YOLOv6[14],在速度与精度上超过其他同体量的算法。

1.2 损失函数

目标检测任务的损失函数一般由两部分构成,分别是类别损失和位置损失。而YOLO 额外多出一个置信度误差,所谓置信度就是指模型预测的边界框中包含物体的概率。

常见的类别损失有Cross Entropy Loss、Focal Loss[15]等。而对于位置损失,YOLOv1 使用均方误差来计算预测框与真实框中心点坐标以及宽高的误差,由于均方误差损失约束能力有限,并且对边界框尺度比较敏感,导致模型精度不高。目前的位置损失大多是基于交并比(intersection over union,IoU)而发展出来的,如IoU Loss[16]、GIoU Loss(generalized IoU loss)[17]、DIoU Loss(distance IoU loss)[18]、CIoU Loss(complete IoU loss)[18]等。而所谓IoU 就是指两个边界框之间交集与并集的比值。IoU Loss定义为:

然而IoU Loss存在着弊端,当两个边界框不相交时,无论两个边界框相距多远损失恒为1,即无法衡量两个不相交边界框之间距离的大小。为了解决这个问题,GIoU Loss被提出。GIoU Loss定义为:

其中,C表示预测框A与真实框B的最小外接矩形面积,这样解决了边界框不重合时存在的问题。然而当两个框呈包含关系时,GIoU Loss 便退化为了IoU Loss,进而DIoU Loss 又被提出以解决此问题。DIoU Loss定义为:

其中,ρ(b,bgt)表示两个边界框中心点的距离,c表示最小外接矩形框的对角线长度。

一个好的位置损失函数要考虑到三种因素,即IoU、中心点距离以及边界框形状,于是又提出了CIoU Loss,定义为:

其中,w、h、wgt、hgt分别为预测边界框的宽、高和真实边界框的宽、高。可以看出,CIoU Loss 在DIoU Loss的基础上,又引入了宽高比,使得损失函数更加完善。

而YOLOv6 中则是使用了最新的SIoU Loss(scylla IoU loss)[19]作为位置损失函数,SIoU Loss 进一步引入了两个边界框之间的角度信息如图3。损失函数中应该考虑到边界框之间的角度α,当α小于π/4 时去约束α,使其等于0,即让预测边界框中心点向真实框中心点所在X轴靠拢,大于π/4 则最小化β,向Y轴靠拢。

图3 SIoU Loss角度损失Fig.3 Angle cost of SIoU Loss

角度损失Λ定义为:

SIoU距离损失定义为:

其中,Cw、Ch、W、H如图3 中所示。可见SIoU 中角度损失最后是以距离损失组成部分的形式存在的。加上衡量形状的形状损失Ω,最终SIoU Loss定义为:

然而最新的SIoU Loss 仍存在一些问题:首先,对于角度小于π/4 的情况,向X轴优化,反之向Y轴优化,这种不一致的优化行为不利于网络的训练;其次,将角度损失融合进了距离损失当中,不能够清晰地体现角度损失对网络的约束作用;最后一点也是这一系列IoU 损失函数的共同问题,就是没有充分考虑到损失函数内部各组成部分之间的内在联系,不能使网络在训练的不同阶段有针对性地进行优化,这些正是本文要解决的问题。

2 本文方法

2.1 动态交并比损失(DYIoU Loss)

观察整个目标检测任务训练过程,不难发现在训练的初期如图4,真实边界框和预测边界框之间距离往往较远甚至不相交,此时即使是两个边界框形状完全相同,预测效果仍然很差,因此此时网络应该更多去关注角度损失,对角度的约束可以让两个边界框中心点能够更快地贴近。反映在损失函数上就是应该增大角度损失的权重,而适当降低形状损失的权重。到了训练的中后期如图5,边界框相距较近,即使不按照约束的角度,网络也有能力对中心点距离进行优化,如果此时还过分关注角度损失,反而会对训练造成干扰。而此时形状成为了影响检测效果的主要因素,因此网络应该更多去关注形状损失。反映在损失函数上就是要降低角度损失权重,提高形状损失的权重。这种现象是各种目标检测任务中普遍存在的。

图4 训练初期边界框状态Fig.4 Bounding box status at beginning of training

图5 训练中后期边界框状态Fig.5 Bounding box status in middle and late training

基于这种想法,本文设计了基于IoU Loss的动态交并比损失函数(dynamic intersection over union loss,DYIoU Loss)来动态调整不同训练阶段位置损失函数各组成部分的不同权重。损失函数由IoU 损失、距离损失、角度损失、形状损失四部分构成。

(1)角度损失

对于角度损失不再分情况进行优化,不论夹角α是否小于π/4,均让其向π/4优化,即约束预测边界框沿着夹角π/4的方向朝真实边界框靠近。

角度损失Λ定义为:

其中,bx、by分别表示边界框中心点横、纵坐标,gt代表真实边界框,Cw、Ch分别表示真实边界框中心点与预测边界框中心点的水平、竖直距离,如图6 所示。当x=1 时,即α=π/4 时,角度损失为0。与SIoU 中分情况的角度损失相比,本文中这种一致性的行为更有助于网络训练。

(2)距离损失Δ与形状损失Ω

其中,距离损失中的ρ、c分别表示预测边界框与真实边界框之间中心点距离、最小外接矩形框对角线长度(如图7)。形状损失中的w、h、wgt、hgt分别代表预测边界框和真实边界框的宽、高。θ用以控制形状损失的全局权重,本文沿用SIoU当中的设定,取4。

图7 DYIoU Loss距离损失和形状损失Fig.7 Distance cost and shape cost of DYIoU Loss

(3)DYIoU Loss

其中,λ为全局参数,用来权衡IoU 和距离、角度、形状三个损失的贡献,在整个训练任务中并不改变。而对于角度损失和形状损失,分别给予权重γ和v,而这两个权重随着距离损失Δ的减小而分别减小和增大,即在网络训练过程中动态地减小角度损失的贡献,增大形状损失的贡献。

DYIoU Loss有效地解决了其他位置损失函数当中存在的共同问题。首先保证了网络的一致性,不再根据角度的不同向不同坐标轴优化。其次角度损失不再与位置损失融合在一起,而是以独立组成部分的形式存在,使得角度对网络的约束更直观。最后给予了损失动态权重,在网络训练的不同阶段动态调节不同损失的贡献,更加符合目标检测任务训练逻辑。

2.2 融合可变形卷积的Neck结构

目前主流Neck的设计思想都是让不同尺度的特征图进行融合。融合的方式有对应元素相加,例如FPN、SPP等,也有在通道维度的拼接,例如YOLOv4[20]中改进的PAN等。高层特征往往包含图像的高级语义信息,特征图小,因此要先进行上采样后才能与低层特征融合。低层特征往往包含图像低级形状信息,特征图较大,因此要先进行下采样再与高层特征融合。

由于卷积的感受野有限,并且卷积模式固定,不能灵活调整采样位置(图8(a))。因此在Neck当中使用的卷积往往不能够有效地保留不同维度特征图中信息,而可变形卷积(deformable convolution)[21]则是通过训练一个偏置矩阵,让卷积能够自适应地调整采样位置,增大感受野,能够捕捉到图像中更有用的特征,提升特征抽取能力(图8(b))。基于这种特性,本文对YOLOv6的Neck进行改进,结合可变形卷积提出了DePAN Neck(deformable path aggregation network neck)结构(如图9)来对不同尺度的特征进行融合。

图8 卷积与可变形卷积采样方式Fig.8 Sampling methods of convolution and deformable convolution

图9 DePAN Neck结构Fig.9 Structure of DePAN Neck

对于Backbone 与Head 部分沿用原YOLOv6 中的EfficientRep Backbone 和Efficient Decoupled Head,流程上DePAN Neck 接收Backbone 提取出的不同尺度特征,对于高层特征,先通过一个1×1 的卷积然后通过转置卷积进行上采样,与相邻低层特征在通道维度进行拼接操作,再通过DeConvBlock对特征进行融合,即图9当中自上而下的融合过程。对于低层特征,通过3×3卷积下采样再与相邻高层特征在通道维度做拼接,通过DeConvBlock对拼接后的特征进行融合,即图9当中自下而上的融合过程。最终得到融合后的特征用以输入到Head部分进行分类与回归的预测。而DeConvBlock 结构则是通过重复堆叠12 个DeConv Cell(图10)组成。类别损失沿用YOLOv6中使用的VarifocalLoss,位置损失部分则是使用本文的DYIoU Loss。DePAN Neck 结构与DYIoU Loss 并不局限于某个模型,而是可以即插即用,拓展到各种类型目标检测任务当中。

图10 DeConv Cell结构Fig.10 Structure of DeConv Cell

3 实验与分析

3.1 数据集

为了评估提出方法的有效性,本文选用与基线网络YOLOv6 原论文中相同的COCO2017[22]数据集。COCO2017是由微软提供的一个包含118 278张训练图片和5 000 张验证图片的大型数据集,共80 个类别,平均每张图片当中包含3.5 个目标,是计算机视觉领域使用最为广泛的数据集。此外,本文还在公开数据集PASCAL VOC2012[23]数据集上进行了丰富的实验来进一步验证方法的有效性,VOC2012 包含5 717 张训练图片和5 823 张验证图片,共20 个类别。

3.2 评价指标

本文使用目标检测中最常用的mAP作为评价指标。对于其计算方法,准确率与召回率定义分别为:

其中,TP、FP、FN分别表示真正例、假正例、假反例。AP(average precision)即为Precision-Recall 曲线下面积。而mAP 则等于所有类别的平均AP 值。mAP0.50表示当IoU 阈值为0.50 时的mAP 值,mAP0.50:0.95表示IoU 阈值从0.50 到0.95 步长为0.05 所求得10 次mAP的平均值。

3.3 实验细节

本文将所提出方法应用到YOLOv6-N、YOLOv6-T、YOLOv6-S 3 个体量的YOLOv6 模型上,基于Pytorch 深度学习框架实现。实验设备为RTX-3090显卡。优化器使用SGD,图像输入大小以及数据增强部分均沿用原始YOLOv6 设置。由于原YOLOv6中Batch size 为256,而本文设置为64,学习率缩小为原设置的1/4。使用余弦退火策略调整学习率,epochs设置400,不使用任何预训练权重。

3.4 实验结果与分析

本文将所提出方法应用到YOLOv6-N、YOLOv6-T、YOLOv6-S 3 个体量的网络当中,在与原论文相同的COCO数据集上进行训练与验证。

3.4.1 定量分析

表1 为不同体量模型在COCO2017 数据集上检测精度,其中*表示在原有模型基础上使用本文方法,3 个体量网络的mAP0.50:0.95分别提升2.9、2.1、0.8 个百分点,mAP0.50分别提升3.0、2.3、0.9 个百分点。同时为了检验算法对小目标的检测效果,本文统计了小目标检测精度如表2 所示,mAP0.50:0.95分别提升1.2、1.3、0.6 个百分点。通过定量对比可以发现模型总体检测精度以及对小目标的检测精度均有所提升。

表1 不同模型在COCO2017验证集上检测精度对比Table 1 Comparison of detection accuracy of different models on COCO2017 validation dataset

表2 小目标物体检测精度对比Table 2 Comparison of detection accuracy on small target 单位:%

3.4.2 定性分析

为了更直观地展示算法性能的提升,图11 给出了使用原算法和改进后的算法对图片的推理结果可视化对比。定性分析实验结果,观察图11 可以发现,加入本文方法后,算法能够更加准确地检测到图中的小目标物体,并且对于原来检测错误的类别也有了一定的修正。从实验结果可以看出,使用本文提出的DePAN Neck 以及DYIoU Loss 进行训练,可以显著提升模型的性能。

图11 YOLOv6-N与改进后的YOLOv6-N推理结果对比Fig.11 Comparison of reasoning results between YOLOv6-N and improved YOLOv6-N

3.5 消融实验

3.5.1 各模块有效性验证

为了验证各个模块的有效性,本文设计了一系列的控制变量实验,首先使用YOLOv6-N和YOLOv6-T两种体量的模型来测试使用或不使用本文提出的各方法对模型性能的影响,实验设置与3.3 节相同,在COCO 训练集上训练。结果如表3 所示,其中+表示在原模型基础上只使用DYIoU Loss作为位置损失训练,++表示同时使用DYIoU Loss 和DePAN Neck 改进模型进行训练。如图12为YOLOv6-N 训练过程位置损失、mAP 曲线图。从表3 结果可以看出,在原有的模型基础上逐步加入本文提出的方法可以明显提升模型的精度,特别是使用DePAN Neck 融合特征之后效果更为显著。为了排除数据集影响,本文又使用了VOC2012 数据集进行训练与测试,结果如表4所示。其中*表示在原模型基础上加入本文方法。从表4 可以看出,本文方法在VOC2012 数据集上仍有较大提升。

表3 消融实验对比结果Table 3 Comparative results of ablation experiments 单位:%

表4 VOC2012验证集上精度对比Table 4 Comparison of detection accuracy on VOC2012 validation dataset 单位:%

图12 训练过程位置损失、mAP0.50:0.95、mAP0.50曲线Fig.12 Curves of position loss,mAP0.50:0.95and mAP0.50 during training process

3.5.2 动态位置损失函数有效性验证

为了进一步验证本文提出的动态位置损失的有效性,本小节在VOC2012 数据集上设计了一系列消融实验对DYIoU Loss进行深入分析。

对于式(19)中的角度损失动态权重γ和形状损失动态权重v,分别使用和不使用各动态权重,观察对检测精度的影响,结果如表5 所示,其中×和√分别表示使用和不使用相应的动态权重。从实验结果可以看出,当同时使用动态权重γ和v时检测精度最高,当只使用动态权重γ不使用v时精度有所降低,但损失仍然是收敛的。然而当不使用动态权重γ时,无论使用还是不使用动态权重v,损失均无法收敛,检测精度极低。这也可以解释SIoU中作者为何提出了角度损失却将其融合进了距离损失中,因为如果直接作为独立组成部分,角度损失反而会对模型造成干扰,导致损失无法收敛。因此在DYIoU Loss 中为角度损失分配动态权重是必要的。

表5 使用和不使用各动态权重检测精度对比Table 5 Comparison of detection accuracy with and without each dynamic weight 单位:%

为了验证式(19)中不同的全局参数λ对模型精度的影响,本文选取4 个值0.25、0.50、0.75、1.00 进行了实验,实验结果如表6 所示。当λ等于0.50 时,检测精度最高。

表6 使用不同λ参数的检测精度对比Table 6 Comparison of detection accuracy with different parameters λ 单位:%

为了进一步验证动态损失的有效性,本文还将其他主流的位置损失函数DIoU、CIoU、SIoU 应用于YOLOv6-N 上对比观察模型精度,实验结果如表7 所示。当使用DYIoU Loss进行训练时精度最高。其次为了验证方法的普适性,本文选取了目标检测使用最广泛的模型YOLOv3 和单阶段目标检测的另一类经典模型SSD,以及双阶段检测的代表Faster R-CNN做对比实验,实验结果如表8 所示。其中*表示使用DYIoU Loss 进行训练。从表8 结果可以发现,对于单阶段目标检测算法,检测效果会有所提升,尤其是对于原本使用GIoU Loss 作为位置损失的YOLOv3,而对于双阶段检测算法Faster R-CNN,检测精度也能比较接近。

表7 不同位置损失的检测精度对比Table 7 Comparison of detection accuracy with different position losses 单位:%

表8 其他模型使用动态交并比损失检测精度对比Table 8 Comparison of detection accuracy of other models with DYIoU Loss 单位:%

3.5.3 动态位置损失函数可视化分析

为了更直观地体现动态位置损失函数对目标检测任务正确性的影响,本小节主要对损失函数进行可视化分析,观察边界框收敛过程。

可视化不同位置损失函数的收敛过程如图13 所示,其中红色矩形表示真实边界框,黑色矩形表示初始边界框,蓝色矩形表示优化过程中的边界框。结果表明与其他主流位置损失相比,本文提出的DYIoU Loss 对边界框收敛速度更快,在迭代200 轮时边界框基本收敛,而对于SIoU Loss,存在一个向坐标轴靠拢的趋势,对收敛速度造成一些影响,迭代260轮时基本收敛,对于GIoU Loss则是需要迭代380轮才能基本收敛。

图13 不同位置损失函数收敛过程可视化Fig.13 Visualization of convergence process of different position loss functions

此外本文对目标检测实例进行可视化分析,使用DYIoU Loss 和SIoU Loss 在VOC2012 数据集上进行150轮的训练,观察训练初期、中期、后期边界框收敛情况,结果如图14 所示。对于DYIoU Loss,在训练后期,形状损失被给予较大的权重,因此边界框形状更加精确,相比之下SIoU Loss 在训练后期对于边界框形状的约束则不如本文方法。

图14 目标检测实例边界框收敛过程可视化Fig.14 Visualization of bounding box convergence process of object detection instance

4 结束语

为了解决多尺度预测时特征融合能力有限的问题,本文基于可变形卷积设计了新的Neck 来进行特征融合,自适应调整采样点位置,增大感受野有效提升了特征融合能力。其针对目标检测算法中位置损失函数存在的局限性,本文提出了动态交并比损失函数,能够在训练的不同阶段动态调整不同损失的贡献,更符合目标检测训练逻辑,有针对性地约束网络。本文基于上述方法改进了YOLOv6 模型,显著提升了模型精度,并且可以即插即用,方便地应用到其他目标检测模型的训练任务中去。

对于动态交并比损失函数,本文通过分析目标检测任务整个流程的边界框特点,首先提出了动态损失这个想法,然而具体的动态权重即式(19)中的γ和v的设计仍是需要后续深入研究的问题。

猜你喜欢
边界损失动态
国内动态
国内动态
国内动态
拓展阅读的边界
胖胖损失了多少元
动态
玉米抽穗前倒伏怎么办?怎么减少损失?
论中立的帮助行为之可罚边界
一般自由碰撞的最大动能损失
损失