重要观点
1.GIoU和IoU损失收敛速度慢 回归不精确
2.本文提出一种Diou加入了预测box和targetbox之间的归一化距离并且总结了box回归中的三种几何参数:重叠面积,中心点距离和纵横比。同时Diou也能用于NMS中去。
3.GIoU的缺点,虽然GIoU能减轻无重叠case的梯度消失问题
(1)如下图所示,GIoU会倾向于去增加predbox的尺寸使得其和targetbox有更大的相交面积。从公式3可以看到,因为为了减小IOU损失,模型会尽可能的去增大相交面积。
GIoU在回归的过程中,从损失函数的形式我们发现,当IoU为0时,GIoU会先尽可能让anchor能够和目标框产生重叠,之后GIoU会渐渐退化成IoU回归策略,因此整个过程会非常缓慢而且存在发散的风险。而DIoU考虑到anchor和目标之间的中心点距离,可以更快更有效更稳定的进行回归。
(2)对于pred被target包围的情况,Giou会退化为IOU损失
(3)由于对IOU数值的高度依赖,IOU和GIou都需要大量的训练,并且对于某些形状的case会又较高的error,GIoU用于某些算法模型时会很难收敛,因为GIOU需要最小化C-A∩B,但这个面积往往很小甚至为0.
IoU:从IoU误差的曲线我们可以发现,anchor越靠近边缘,误差越大,那些与目标框没有重叠的anchor基本无法回归。
GIoU:从GIoU误差的曲线我们可以发现,对于一些没有重叠的anchor,GIoU的表现要比IoU更好。但是由于GIoU仍然严重的依赖IoU,因此在两个垂直方向,误差很大,基本很难收敛,这就是GIoU不稳定的原因。
DIoU:从DIoU误差的曲线我们可以发现,对于不同距离,方向,面积和比例的anchor,DIoU都能做到较好的回归
关于IOU和GIoU
部分内容在另一篇Giou博客可查
一些方法将来可能用到
画出不同iterations时候的锚框,预测矿和target来进行判可视化。
DIoU和CIou
Diou
在IoU损失中引入了一个惩罚项,直接最小化两个box的归一化距离。
简单来说 IoU损失可以被定义为:
直接用最小化两个box之间的距离的方式进行优化。
b是中心点,ρ是欧式距离,c是覆盖两个boxes的最小的封闭盒子的对角线长度。
DIoU可以定义为:
Diou和Giou和iou的比较:
CIou
能快速收敛,考虑了重叠面积,中心点距离和纵横比。
满足即使pred包含在target中依然有精确的收敛速度
即使是DIOU也没有考虑到box的纵横比!
加入了纵横比的一致性。
BP细节
使用Diou来作为NMS的方法
在原始的NMS中,iou度量会导致一些重叠的目标被错误的suppression。DIOU不仅考虑了iou还要考虑两个中心点的距离,。
本文认为有着较远的两个中心点的目标可能是不同的目标??(存疑)。