![58d4aaeba30ae7596d53a81b4401a110.png](https://i-blog.csdnimg.cn/blog_migrate/743c524924b0e9211b4ef0eb698a1101.jpeg)
loss上的改进,大部分的思路,是找出那些原本的loss(包括regression和classification)可能会不合理的情况,修正这些不合理。总的来说,有用ranking来解决正负样本不平衡的问题(如DR loss、AP-loss,一个从分布角度,一个从AP角度);有考虑当前的Smooth L1 Loss中偏移分布假设可能不太合理,重新考虑设计偏移分布的KL loss;也有考虑multi-scale的样本loss不平衡,而用IoU作为loss的IoU loss,以及后续的改进GIoU、DIoU;
首先,在Faster R-CNN中,使用的是smooth L1 loss。而smooth L1 loss,可以理解为,当|x|<1时,为L2损失(即假设样本服从标准高斯分布),当|x|>1时,为L1损失(即假设样本服从拉普拉斯分布),这样的好处在于训练时|x|>1时快速下降,|x|<1时精细调整。对于各种损失函数的介绍具体参看机器学习常用损失函数小结 - 王桂波的文章 - 知乎
另外的一个细节是,预测的偏移值为(tx,ty,tw,th),具体如下所示
通过除以边长,消除不同边长大小间量级差异,而tx,ty中用直接减,而tw,th用log之后减,是考虑tw,th的量级比tx,ty要大?
KL loss
cvpr2019:https://arxiv.org/pdf/1809.08545.pdf
这篇文章是为了解决边界不确定的box的regression问题(不被模糊样例造成大的loss干扰)。KL loss是regression的loss。文章预测坐标(x1,y1,x2,y2)的偏移值,对于每个偏移值,假设预测值服从高斯分布,标准值为狄拉克函数(即偏移一直为0),计算这两个分布的距离(这里用KL散度表示距离)作为损失函数。参考smooth L1 loss,也分为|xg-xe|<=1和>1的两段,>1部分用L1 loss接上(为保证=1部分两个阶段相等,故很容易得到>1部分的公式。
另,
这