原作者:Hamid Rezatofighi等 笔记整理:ganyongdong 2021.02.03
论文:https://arxiv.org/pdf/1902.09630.pdf
代码:https://github.com/generalized-iou/g-darknet GIoU应用于yolov3
1.摘要
- IoU作为目标检测任务中的评价指标,常用的MSE损失或者smooth L1损失和IoU的变化并不是很一致
- 提出GIoU损失,解决上述问题
- 具有通用性,将GIoU损失替换当前先进的检测器中的IoU,在VOC或者COCO数据集上训练测试,性能都有提升
2.存在的问题
-
位置回归损失通常直接计算四个点的预测值与真实值之间的损失之和,然而在预测框与真实框不同情况下相交,这个损失存在不变的情况,也就是把损失优化到了一个较低的值,但是IoU却不一定小;
giou对比iou图.png -
从图中同一行可以看出,绿色是真实框,以右上顶点为圆心做圆,圆上任意点作为真实框右上角点,则顶点距离相同,L1或者L2损失也相同,但是IoU却是不同的
-
所以提出把IoU损失加到损失函数中,IoU损失函数表示如下,当预测框与真实框不相交的时候IoU为0,损失为1,没有梯度,存在无法优化的问题
3.GIoU 及 GIoU Loss
- 作者提出GIoU,一种新的度量标准和损失函数,解决2中所述问题
- 设包围A与B的最小矩形框为C,则GIoU表示为:
- IoU取值范围是[0,1],GIoU取值范围是[-1,1],当预测框与真实框没有交集且理论距离无限远,GIoU极限趋近于-1,当预测框与真实框形状接近且趋于重合时,,所以GIoU与IoU具有相似的变化特性,但是不重合时也是有值的,而且距离越远,GIoU越小。
- GIoU损失
-
IoU损失和GIoU损失计算算法流程图
GIoU和IoU损失计算算法流程图.png
4.实验
- 将最流行的几种2D目标检测器(faster rcnn, yolov3, mask rcnn)默认的损失函数替换成
- 数据集:VOC和COCO
-
a) yolov3测试
giou yolov3 train.png
giou yolov3 train.png -
b) faster-rcnn测试
giou faster-rcnn.png -
c) mask-rcnn测试
giou mask-rcnn.png
5.对自己的启发
- 文章提到不加IoU损失的话,L1或者L2损失最优不代表IoU指标最优,所以IoU损失加到损失函数中是有必要的,验证了想法。
- 作者同样提到IoU损失加进去也存在不足,从数学分析上提到IoU为0的时候不继续优化问题,进而提出的GIoU是一个很好的想法,既保留了IoU的优点,又弥补了缺陷,是一个理想的替代。
- GIoU是一个通用的trick。
网友评论