APP下载

目标检测中框回归损失函数的研究

2021-10-28张翠文张长伦王恒友

计算机工程与应用 2021年20期
关键词:损失框架面积

张翠文,张长伦,何 强,王恒友

北京建筑大学 理学院,北京 102600

近年来计算机视觉在行人车辆检测[1-2]、自动驾驶[3-4]、视频跟踪[5-6]、人脸识别[7-8]、视频检测[9-10]、物体分割[11-14]等方面有着广泛的应用,目标检测技术作为这些应用的基础算法得到了快速发展。

2012年AlexNet[15]在分类竞赛领域取得成功,卷积神经网络应用于目标检测领域成为研究热点。Girshick等人将AlexNet的目标识别能力迁移到目标检测中,于2014年提出区域卷积网络目标检测框架(Regions with CNN features,R-CNN)[16],整个模型由提取候选框、提取候选框图像特征和利用支持向量机(Support Vector Machine,SVM)[17]进行分类与回归三部分组成。这也是基于深度学习两阶段目标检测算法的开端。但R-CNN方法的三个阶段各自训练,计算损失较大。为提高算法速度和简化算法规模,Girshick等人先后提出Fast R-CNN[18]、Faster R-CNN[19],将网络分为寻找候选框与分类识别两部分,并且分类与识别共同训练,使得两阶段算法达到实时的检测速度和更高的检测精度。但在两阶段目标检测算法由于寻找框的过程消耗时间,且手动设计的锚框有长宽比例和大小的限制。为了达到更快的检测速度,Redmon等人在2015年提出YOLO(You Only Look Once)[20]算法,模型去掉两阶段算法中寻找框的步骤,直接设计网络输出带有框与分类置信度的图片,也是第一个一阶段目标检测算法,在速度上更是远超两阶段算法。但YOLO算法由于没有对于框的预先设定,导致其精度较低。Redmon等人受两阶段方法设定锚框的启发,为一阶段算法加入预设框,提出YOLO v2[21]、YOLO v3[22],既保持了算法的速度又进一步提升了算法精度。

目标检测的过程中,在模型最后惩罚预测框来进行位置优化时,框回归损失函数的设定直接影响优化的速度和定位的准确度。为了更加准确地预测出目标的位置,框回归损失函数的设定经历了一系列的发展。2015年Girshick等人在Fast R-CNN[18]中引入smooth L1损失函数,两阶段算法中多沿用此损失函数作为框回归优化算法。而YOLO[20]系列中使用的是均方误差(MSE)函数。两种损失函数的设计思路均为惩罚预测框与目标框四个坐标信息之间的欧式距离,而实际上在评判预测框定位准确性和保留预测框的过程中指标是IOU,但这两者之间非等价关系。即多个预测框可能有相同大小的smooth L1损失,但他们与真实框的IOU却相差很大,导致惩罚损失函数但不能对框之间的IOU进行直接优化。为了解决这个问题,Yu等人[23]引入IOU损失函数,最大化预测框与目标框之间的IOU来优化预测框位置,即拉大两框之间的重合面积,与评价预测框的指标函数相符合。但当预测框与目标框没有重叠部分面积时,目标损失函数值为1,无法进行梯度回传,且IOU也不能完全反应两个框的相交情况。于是2019年Rezatofighi等人提出广义的交并比GIOU[24](Generalized Intersection over Union),由两部分组成损失函数,最大化两框相交面积的同时最小化两框形成的最大框去掉两框的并之间的面积,模型避免了当两框不相交时梯度消失的问题。但当预测框与目标框互相包含时,GIOU损失函数的第二部分失效,GIOU退化为IOU损失函数。

本文提出RGIOU(Redefined Generalized Intersection over Union),即重新定义面积的GIOU损失函数。本文从以下几个部分展开陈述:第一部分对近年目标检测的损失函数进行综述。第二部分对GIOU存在的问题进行分析。第三部分提出RGIOU论证优化策略的性质合理性,并实验验证改进方法的有效性。最后与原方法在公开数据集上进行对比验证,验证了本文改进方法在精度上的提升。

1 GIOU问题分析

广义的交并比损失函数为了避免两框不相交时,梯度无法回传的问题,在损失函数中增加一项,如图1(a),A表示真实框,B表示预测框,C表示预测框与真实框形成的最小闭包区域,C去掉两框的并所形成的空白区域面积再除以C的面积即为GIOU损失函数的第二项。最大化两框相交部分的同时,最小化两框空白区域的面积,这样当两框不相交时,如图1(b),两框空白区域的面积依然存在,所以损失函数仍然有效。

图1 真实框与预测框相交情况Fig.1 Intersection of ground truth and prediction frame

GIOU的损失函数为公式(1):

公式的前半部分1-IOU的目的是最大化预测框与目标框的相交区域,即提高两框之间的重合度,公式的后半部分则是最小化最小闭包区域内除了预测框与目标框外的空白区域面积。但当预测框与真实框相互包含时,如图2,此时C=A⋃B,损失函数后半部分失效。

图2 真实框与预测框的包含情况Fig.2 Inclusion of ground truth and prediction box

GIOU损失函数的设定考虑两项面积的优化,且当两框为包含关系时,空白区域面积就退化为图2,所以GIOU损失函数的设定有以下缺陷:当预测框与目标框相互包含时,GIOU定义的空白区域面积为0,损失函数退化为IOU。损失函数进行优化时,不能具有GIOU相同的优化速度,且不能更准确反应两框的相交程度。

2 重新定义面积的GIOU损失函数(RGIOU)

基于以上问题的分析,本文提出RGIOU,将两框之间的并减去两框相交部分面积定义为非重叠区域面积,再除以两框形成的最小闭包C作为第一项,除以最小闭包C的平方为第二项,并以权重阈值相加成为新的损失函数。损失函数前半部分为惩罚两框的不相交部分面积,针对绝大多数预测框进行优化调整,而后半部分损失函数则是避免损失函数退化为IOU。对于两框相交的情况如图3(a),RGIOU定义的面积为两框的并去掉相交部分面积;对于两框相互包含的情况如图3(b),将非重叠部分区域定义为RGIOU。

图3 两框相交与包含的非重叠区域面积Fig.3 Area of non overlapping area where two boxes intersect and contain

RGIOU定义为公式(2):

其中,C表示预测框与目标框形成的最小闭包面积,λ为权重阈值,经过实验将其设定为0.9。由于两框是包含关系的情况在预测结果中占少数,所以设定损失函数的前半部分权重大,后半部分为了避免损失函数退化为IOU设定为较小的权重。其中第二项分母设置为平方项,是为了减小第二项所占的比重,同时能有效地避免函数退化问题。RGIOU损失函数最小化重新定义的非重叠区域面积,并且包含了最大化相交部分面积的思想,提高了损失函数的收敛精度。且在预测框与目标框是包含关系时,重新定义的非重叠部分面积如图2所示不为零,IOU损失函数与GIOU损失函数数值相同,但RGIOU可以进行区分,此时损失函数变为:

不会退化为IOU损失函数的情况,所以不会影响优化过程。所以RGIOU损失函数避免了GIOU损失函数存在的非重叠部分面积为零不能优化的问题。其中计算损失函数值的中间值如表1。

表1 损失函数的中间值Table 1 Intermediate values of loss function

3 实验分析

3.1 实验平台、实验数据和评价指标

实验实现系统为Ubantu 16.04,实验基于pytorch深度学习框架,开发语言为python,GPU型号为GeForce GTX 1080 Ti。

本文将RGIOU分别应用于Faster R-CNN、SSD以及YOLO v3三个目标检测框架,并在两个数据集上验证改进方法的精度。两个数据集为PASCAL VOC 2007以及MS COCO 2014。其中PASCAL VOC 2007数据集包括9 963张图片,共20类,其中包含24 640个带注释的对象,其中50%的图片用于训练,50%的图片用于测试,且在训练集和测试集中,按类别划分的图像和对象的分布大致相等。MS COCO 2014训练集共包含82 783张图片,共91类,其中50%用于训练,50%用于测试。

本文使用于2012年最新定义的平均精度mAP作为评估标准,即将IOU阈值设定为{0.5,0.55,…,0.95},分别计算出AP再除以10得到mAP,并将AP75单独作为一项评估标准。将λ设定阈值为{0.7,0.75,…,0.95},并实验选择λ的最优值,如图4所示,随着优化次数的增加,将λ设置为0.9时,函数最快达到最优。

图4 λ取不同阈值时随着迭代的损失值Fig.4 Loss value with iteration for different threshold valuesλ

为了验证改进方法RGIOU对预测框损失函数收敛速度的提高,本文手动设计目标框与预测框的位置,并将坐标作为输入,利用RGIOU损失函数基于Faster RCNN框架对预测框进行调优,将预测框与目标框的交并比作为评价损失函数优化速度的指标,记录迭代次数与IOU值对比关系,如图5所示。

由图5可知,RGIOU在迭代600次达到最高精度,而GIOU需要迭代700次。并且经过相同的迭代次数,RGIOU在总体上优化效果高于GIOU损失函数,对预测框的规范效果也高于GIOU效果。

图5 GIOU与RGIOU收敛速度对比Fig.5 Comparison of convergence rates between GIOU and RGIOU

3.2 在PASCAL VOC 2007上的实验结果对比

实验首先基于VOC 2007数据集,分别计算在三个目标检测框架下的平均精度与阈值设定为0.75的精度,如表2~4。

表2 基于YOLOv3框架精度对比(VOC 2007)Table 2 Comparison of frame accuracy based on YOLOv3(VOC 2007)

表3 基于Faster R-CNN框架精度对比(VOC 2007)Table 3 Comparison of frame accuracy based on Fast R-CNN(VOC 2007)

表2~4分别是基于YOLO v3、Faster R-CNN以及框架SSD,将其中损失函数部分由MSE、smooth L1分别更改为IOU、GIOU、RGIOU,分别计算了在VOC 2007数据集上的平均精度和阈值设定为0.75的精度。由表分析可知,RGIOU相较于GIOU在YOLOv3框架上平均精度增长了2%,在Faster R-CNN框架上增长1.1%,在SSD框架上增长1%。即RGIOU相较于GIOU的平均精度增长在1%~2%之间。可以证明将损失函数的设定进行改进,避免了两框互相包含存在的问题,使得框回归的精度提高。将IOU设定为0.75时,RGIOU将较于GIOU在YOLOv3框架上精度增长1.2%,在Faster R-CNN框架上增长1.8%,在SSD框架上增长为0.4%。即RGIOU相较于GIOU的精度增长为0.4%~1.8%之间。并且由表可知,当损失函数设定为MSE或者Smooth L1时,精度较低,这也是由于损失函数的设定与评价函数不相符导致。改进的方法相较于原始的基于欧式距离的方法在平均精度上有2.9%~3.3%的提升,这也证明了基于面积的方法比基于坐标点的方法能够更好地优化框的位置,提升目标检测的精度。由以上分析可知本文改进的方法能够提高目标检测的测试精度,具有可行性与泛化能力。为了进一步体现本文方法在精度上的提升,绘制精度趋势图如图6~8。

表4 基于SSD框架精度对比(VOC 2007)Table 4 Accuracy comparison based on SSD framework(VOC 2007)

图6 基于YOLOv3框架精度趋势图(VOC 2007)Fig.6 Accuracy trend chart based on YOLOv3 frame(VOC 2007)

图7 基于Faster R-CNN框架精度趋势图(VOC 2007)Fig.7 Accuracy trend chart based on Fast R-CNN framework(VOC 2007)

图8 基于SSD框架精度趋势图(VOC 2007)Fig.8 Accuracy trend chart based on SSD framework(VOC 2007)

图6~8分别绘制了各个损失函数机制在三种目标检测框架下的精度趋势图,由图可知,改进的算法在三个框架上精度均有提升趋势。

3.3 在MS COCO 2014上的实验结果对比

表5~7分别给出了在COCO 2014数据集上的精度。本文的RGIOU相较于GIOU在YOLOv3框架上平均精度增长了1.6%,在Faster R-CNN框架上增长了2%,在SSD框架上增长了0.5%,即增长在0.5%~2%之间。实验证明改进算法基于数量较大的数据集的回归仍然有效。将IOU阈值设定为0.75时,本文方法相较于原方法增长了0.1%~1%。且改进方法与基于欧式距离的方法相比,精度增长了1.9%~4%。为了更进一步体现改进方法在精度上的提升,绘制基于COCO 2014数据集的目标检测精度对比图,如图9~11。图12~14为实验仿真图,由图可知,RGIOU损失函数相较于GIOU对目标有更好的定位效果。

表5 基于YOLOv3框架精度对比(COCO 2014)Table 5 Comparison of frame accuracy based on YOLOv3(COCO 2014)

表6 基于Faster R-CNN框架精度对比(COCO 2014)Table 6 Comparison of frame accuracy based on Fast R-CNN(COCO 2014)

表7 基于SSD框架精度对比(COCO 2014)Table 7 Accuracy comparison based on SSD framework(COCO 2014)

图9 基于YOLOv3框架精度趋势图(COCO 2014)Fig.9 Accuracy trend chart based on YOLOv3 frame(COCO 2014)

图10 基于Faster R-CNN框架精度趋势图(COCO 2014)Fig.10 Accuracy trend chart based on Fast R-CNN framework(COCO 2014)

图11 基于SSD框架精度趋势图(COCO 2014)Fig.11 Accuracy trend chart based on SSD framework(COCO 2014)

图12 基于YOLOv3框架的检测图Fig.12 Object detection based on YOLOv3 framework

图13 基于Faster R-CNN框架的检测图Fig.13 Object detection based on Faster R-CNN framework

图14 基于SSD框架的检测图Fig.14 Object detection based on SSD framework

4 结束语

本文针对GIOU损失函数存在的问题提出改进方法RGIOU,重新定义预测框与目标框之间的非重叠部分面积,并定义为新的损失函数,避免了当预测框与真实框相互包含时,GIOU退化为IOU的情况。相较于原GIOU损失函数,提高了预测框的平均精度。RGIOU方法在公开数据集上相较于原方法的平均精度与AP75精度均有提升,体现出本文改进方法的有效性。

猜你喜欢

损失框架面积
怎样围面积最大
框架
最大的面积
巧用面积法解几何题
胖胖损失了多少元
广义框架的不相交性
玉米抽穗前倒伏怎么办?怎么减少损失?
巧用面积求坐标
关于原点对称的不规则Gabor框架的构造
一般自由碰撞的最大动能损失