CV目标检测-化劲儿-损失函数设计

目标检测的损失函数
匹配策略

  1. 从ground truth boxes出发,寻找与每个ground truth boxes有最大的jaccard overlap(IOU)的proior bbox,这样就能保证每一个ground box一定与一个prior bbox对应起来。反之,若一个prior bbox没有与任何ground truth进行匹配,那么该prior bbox只能与背景匹配,就是负样本。
    一个图片中ground truth是非常少的,而prior bbox却很多,如果仅按第一个原则匹配,很多prior bbox会是负样本,正负样本极其不平衡,所以需要第二个原则。
  2. 从prior bbox出发,对剩余的还没有配对的prior bbox与任意一个ground truth box尝试配对,只要两者之间的jaccard overlap大于阈值(一般是0.5),那么该prior bbox也与这个ground truth进行匹配。这意味着某个ground truth可能与多个Prior box匹配,这是可以的。但是反过来却不可以,因为一个prior bbox只能匹配一个ground truth,如果多个ground truth与某个prior bbox的 IOU 大于阈值,那么prior bbox只与IOU最大的那个ground truth进行匹配。
    损失函数
    将总体的目标损失函数定义为定位损失(loc)和置信度损失(conf)的加权和:
    损失函数
    损失函数的整体理解可以见下图:
    损失函数理解
    这里说一下smooth L1 loss(本处参考Brook_icv大佬的文章:https://www.cnblogs.com/wangguchangqing/p/12021638.html):
    L1损失函数
    其中,x = f(xi) - yi为真实值和预测值的差值。
    Smooth L1能从两个方面限制梯度:
    1.当预测框与ground truth差别过大时,梯度值不至于过大;
    2.当预测框与ground truth差别很小时,梯度值足够小。
    从L1,L2,和Smooth L1损失函数图像中可以看出,Smooth L1 loss实际上是一个分段函数,在[-1,1]之间实际上就是L2损失,这样解决了L1的不光滑问题,在[-1,1]区间外,实际上就是L1损失,这样就解决了离群点梯度爆炸的问题。
    Smooth L1的优点:
  • 相比于L1损失函数,可以收敛的更快。
  • 相比于L2损失函数,对离群点、异常值不敏感,梯度变化相对更小,训练时不容易跑飞。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值