点击下方“深度学习爱好者”,选择加p"星标"或“置顶”
演进路线:Smooth L1->IoU->GIoU->DIoU->CIoU->EIOU Loss
Smooth L1 Loss
L1 Loss的问题:损失函数对x的导数为常数,在训练后期,x很小时,如果learning rate 不变,损失函数会在稳定值附近波动,很难收敛到更高的精度。 L2 Loss的问题:损失函数对x的导数在x值很大时,其导数也非常大,在训练初期不稳定。
IoU Loss(2016)
检测评价的方式是使用IoU,而实际回归坐标框的时候是使用4个坐标点,如下图所示,是不等价的;L1或者L2 Loss相同的框,其IoU 不是唯一的; 通过4个点回归坐标框的方式是假设4个坐标点是相互独立的,没有考虑其相关性,实际4个坐标点具有一定的相关性; 基于L1和L2的距离的loss对于尺度不具有不变性;
当预测框和目标框不相交,即 IoU(bbox1, bbox2)=0 时,不能反映两个框距离的远近,此时损失函数不可导,IoU Loss 无法优化两个框不相交的情况。 假设预测框和目标框的大小都确定,只要两个框的相交值是确定的,其 IoU 值是相同时,IoU 值不能反映两个框是如何相交的。
GIOU Loss(2019)
GIoU 取值范围为 [-1, 1],在两框重合时取最大值1,在两框无限远的时候取最小值-1; 与 IoU 只关注重叠区域不同,GIoU不仅关注重叠区域,还关注其他的非重合区域,能更好的反映两者的重合度。
DIoU Loss(2019)
第一:直接最小化预测框与目标框之间的归一化距离是否可行,以达到更快的收敛速度。 第二:如何使回归在与目标框有重叠甚至包含时更准确、更快。
针对问题一,作者提出了DIoU Loss,相对于GIoU Loss收敛速度更快,该Loss考虑了重叠面积和中心点距离,但没有考虑到长宽比; 针对问题二,作者提出了CIoU Loss,其收敛的精度更高,以上三个因素都考虑到了。
CIoU Loss(2019)
长宽比不能取代单独的长宽,比如 都会导致v=0; 从v的导数可以得到 ,这说明 和 在优化中意义相反。
EIoU Loss(2021)
总结:
好的目标框回归损失应该考虑三个重要的几何因素:重叠面积,中心点距离,长宽比, 对边框间的物理描述愈发准确。 注意,使用时各种Loss算法的各个模块之间的配合,例如IoU Loss与NMS算法的组合。
下载1:Pytoch常用函数手册 在「深度学习爱好者」公众号后台回复:Pytorch常用函数手册,即可下载全网第一份Pytorch常用函数手册,涵盖Tensors介绍、基础函数介绍、数据处理函数、优化函数、CUDA编程、多线程处理等十四章章内容。 下载2:Python视觉实战项目52讲 在「小白学视觉」公众号后台回复:Python视觉实战项目,即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。 交流群 欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉驶、计算摄影、检测、分割、识别、医学影像、GAN、算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~