目标检测任务的损失函数由Classificition Loss和Bounding Box Regeression Loss两部分构成。本文介绍目标检测任务中近几年来Bounding Box Regression Loss Function的演进过程,其演进路线是Smooth L1 Loss IoU Loss GIoU Loss DIoU Loss CIoU Loss,本文按照此路线进行讲解。
1. Smooth L1 Loss
- 本方法由微软rgb大神提出,Fast RCNN论文提出该方法
1.1 假设x为预测框和真实框之间的数值差异,常用的L1和L2 Loss定义为:
1.2 上述的3个损失函数对x的导数分别为:
从损失函数对x的导数可知: 损失函数对x的导数为常数,在训练后期,x很小时,如果learning rate 不变,损失函数会在稳定值附近波动,很难收敛到更高的精度。 损失函数对x的导数在x值很大时,其导数也非常大,在训练初期不稳定。 完美的避开了 和 损失的缺点。
1.3 实际目标检测框回归任务中的损失loss为:
其中 表示GT 的框坐标, 表示预测的框坐标,即分别求4个点的loss,然后相加作为Bounding Box Regression Loss。
三种loss的曲线图如图所示,可以看到Smooth L1相比L1的曲线更加的Smooth
缺点:
- 上面的三种Loss用于计算目标检测的Bounding Box Loss时,独立的求出4个点的Loss,然后进行相加得到最终的Bounding Box Loss,这种做法的假设是4个点是相互独立的,实际是有一定相关性的
- 实际评价框检测的指标是使用IOU,这两者是不等价的,多个检测框可能有相同大小的 Loss,但IOU可能差异很大,为了解决这个问题就引入了IOU LOSS。