美文网首页
(13)目标检测的Loss

(13)目标检测的Loss

作者: 顽皮的石头7788121 | 来源:发表于2018-12-26 11:39 被阅读0次

    faster-RCNN、SSD目标函数分为两个部分:对应默认框的位置loss(loc)和类别置信度loss(conf)。Fast R-CNN网络有两个同级输出层(cls score和bbox_prdict层),都是全连接层,称为multi-task。

multi-task任务

(1) clsscore层:用于分类,输出k+1维数组p,表示属于k类和背景的概率。对每个RoI(Region of Interesting)输出离散型概率分布,p由k+1类的全连接层利用softmax计算得出。p = {p_{0}, p_{1},....p_{k}},loss_cls层评估分类损失函数。由真实分类u对应的概率决定:L_{cls} (p_{i},p_{i}^*  ) = - Log[p_{i}^*p_{i} + (1 - p_{i}^*)(1-p_{i}) ],p_{i}为anchor预测为目标的概率。p_{i}^* 表示target是否有物体,有物体为1 没有为0。i是mini-batche anchor的索引。

(2) bbox_prdict层:用于调整候选区域位置,输出bounding box回归的位移,输出4*K维数组t,表示分别属于k类时,应该平移缩放的参数。t^k = { t_{x}^k, t_{y}^k,t_{w}^k,t_{h}^k } ,k表示类别的索引,t_{x}^k, t_{y}^k表示目标的坐标,t_{w}^k,t_{h}^k表示相对于object proposal的高与宽。L_{reg} (t_{i},t_{i}^*  ) = R(t_{i}-t_{i}^*),t_{i}是预测的四点坐标,t_{i}^*是真实坐标。L_{reg} 使用的是SmoothL1Loss。具体公式为smooth_{L1} (x) = {0.5x^2,if|x| <1 ;|x|-0.5,otherwise(x= t_{i} - t_{i}^*  )}(即R函数的公式)。可以使用p_{i} * L_{reg} (t_{i} ,t_{i}^* )实现只有前景才会有回归损失。

    设P代表预测类别,U代表真实类别,t代表预测位置,V代表真实位置,则整个模型的损失可以表示为                  
L(p,u,t,v) =  L_{cls} (p,u) + \lambda L_{reg} (t,v),(u为前景);L_{cls} (p,u),(u为背景)

详细描述为L({p_{i} },{u_{i} }) = \frac{1}{N_{cls} } \sum_{i}^{N_{cls}  }L_{cls} (p_{i},p_{i}^*  )+ \lambda \frac{1}{N_{reg} } \sum_{i}^{N_{reg} } L_{reg} (t_{i},t_{i}^*  )

(3)那么为什么要使用smoothL1Loss呢

    smooth_{L1} (x) = {0.5x^2,if|x| <1 ;|x|-0.5,otherwise}其曲线为

作者这样设置的目的是想让loss对于离群点更加鲁棒,相比于L2损失函数,其对离群点、异常值(outlier)不敏感,可控制梯度的量级使训练时不容易跑飞。

    

    

相关文章

网友评论

      本文标题:(13)目标检测的Loss

      本文链接:https://www.haomeiwen.com/subject/csaclqtx.html