【CV】请问 faster R-CNN 和 SSD 中为什么用smooth L1 loss,和L2有什么区别

看到这个面试题的时候,我还真没注意到原论文中用的损失函数,因为我都是跳过。。。看到一堆公式,就把我劝退了。。。只知道肯定用到了损失函数,反正我也懒得手推公式,到时候直接调用就好了。。。QAQ。。。

心血来潮,今天来整理一下,面试答案吧,不一定准确,从知乎、博客上抄过来的。。。

面试官:请问 faster R-CNN 和 SSD 中为什么用smooth L1 loss,和L2有什么区别

小菜:在Fast R-CNN论文(这里提的是Fast 不是Faster,他们用了Smooth L1)中:a robust L1 loss that is less sensitive to outliers than the L2 loss used in R-CNN and SPPnet
理解为:
Smooth L1 Loss相比于L2 Loss对于离群点、异常值(outliers)更不敏感,或者说是更加鲁棒,避免发生梯度爆炸(可控制梯度的量级使训练时不容易跑飞)。

假定x为预测框和真实框groud truth之间的差异,L2、L1、smooth L1损失定义如下:
在这里插入图片描述
观察 (4),当 x增大时L2损失对x的导数也增大。这就导致训练初期,预测值与 groud truth 差异过于大时,损失函数对预测值的梯度十分大,训练不稳定。

观察(5),L1对x的导数为常数。这就导致训练后期,预测值与 ground truth 差异很小时, L1损失对预测值的导数的绝对值仍然为 1,而 learning rate 如果不变,损失函数将在稳定值附近波动,难以继续收敛以达到更高精度。

观察 (6), smooth L1在x较小时,对x的梯度也会变小,而在x很大时,对x的梯度的绝对值达到上限 1,也不会太大以至于破坏网络参数。 smooth L1完美地避开了L1和L2损失的缺陷。在这里插入图片描述
由图中可以看出,smooth L1在远离坐标原点处,图像和 L1 loss 很接近,而在坐标原点附近,转折十分平滑,不像 L1 loss 有个尖角,因此叫做 smooth L1 loss。

注:
缺点:

上面的三种Loss用于计算目标检测的Bounding Box Loss时,独立的求出4个点的Loss,然后进行相加得到最终的Bounding Box Loss,这种做法的假设是4个点是相互独立的,实际是有一定相关性的
实际评价框检测的指标是使用IOU,这两者是不等价的,多个检测框可能有相同大小的[公式] Loss,但IOU可能差异很大,为了解决这个问题就引入了IOU LOSS。

牛客上看到的面经原题:
https://www.nowcoder.com/discuss/566957

知乎回答的:
https://www.zhihu.com/question/58200555

https://blog.csdn.net/ytusdc/article/details/86659696

SmoothL1/IoU/GIoU/DIoU/CIoU Loss总结
https://zhuanlan.zhihu.com/p/104236411

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

机器不学习我学习

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值