giou的文献是CVPR2019 论文《Generalized Intersection over Union: A Metric and A Loss for Bounding Box Regression》,可参考
https://arxiv.org/abs/1902.09630
目前,在目标检测领域,有的学者直接回归了box的左上(xmin,ymin)和右下(xmax,ymax)的坐标,有的是回归一个box的中心点和宽,高,那么,这两种方式到底哪个会好一些呢?
先来看,
目前目标检测中,主流的边界框优化采用的都是BBOX的回归损失(mse loss, L1-smooth loss等),这些方式计算损失值的方式都是检测得"代理属性"-距离,而忽略了检测框本身最显著的性质--iou.如下图所示,
黑色框代表预测框,绿色框代表真实标注,假设预测框的两个顶点分别在以绿框的左上和右下顶点为圆心的圆周上.两个框的左上和右下顶点坐标分别为
所以由L2范数构造的损失值为
以giou论文中的图来说明
因为圆的半径相等,所以三个图的损失值
是相等的,但从图(a)可以看出,明显第一种情况iou较小,效果不好,说明在L2范数取到相同的值时,实际上检测效果确是差异巨大的,直接表现就是预测和真实检测框的iou值变化较大,这说明以L2范数来直接回归左上和右下坐标(x1,y1,x2,y2)的效果不是特别理想.
问题:
1. 我们网络回归的目的是loss比较小,当然在loss比较大的时候会出现上图的情况,但训练到最后,loss小的时候,iou都比较大了,也就不存在上图的情况了,所以基于上图来做改进,不会影响最终的模型的检测效果吧?
待解决,2019-9-17
再来看下回归一个box的中心点和宽,高,但这里会有正则化问题,因为中心点是在位置空间,而宽高(w,h)属于大小空间.
从图上直观理解,用iou来刻画损失值可能会更好些,但实际上为什么没有采用iou呢?这是由于iou有两个缺点,导致其不太适合做损失函数.
(1)若预测框y_pred与真实值y_true即ground truth(gt)之间没有重合时,iou为0,反映在损失函数,就是loss=0,意味着无法优化
2)在检测框与gt之间iou相同时,检测的效果也有很大差异,如下图所示
基于iou的优良特性和其作为损失函数时的致命缺点,作者提出了一个新的概念,giou,具体的需要看下论文.