常用目标检测算法loss总结(持续更新)

R-cnn,Fast Rcnn

输入层设置

特征输入分别输出到两个并行的全连接层,即传统意义上的,分类+回归

  • cls_score层:分类层,输出K+1维的数组, pi p i 表示是分类还是背景的概率
  • bbox_predict层: 候选框需要调整层,输出4*K维数组,表示属于第K类时应该缩放平移的参数

Loss fuction

  • loss_cls : 对分类进行评估,采用真实分类概率决定: Lcls=logpu L c l s = − l o g p u
  • loss_bbox:对bbox定位进行评估,用于比较真实分类对应的预测参数 tu t u 和真实平移缩放参数为 v v 的差别: Lloc=Σ4i=1g(tuivi) L l o c = Σ i = 1 4 g ( t i u − v i )
    • 其中,g为L1正则,故对离群点不敏感: g(x)={0.5x2|x|0.5|x|<1otherwise g ( x ) = { 0.5 x 2 | x | < 1 | x | − 0.5 o t h e r w i s e

总代价为两个loss加权和: L={Lcls+λLlocLclsuu L = { L c l s + λ L l o c u 为 前 景 L c l s u 为 背 景
并且,当分类为背景的时候不考虑加权loss

Faster Rcnn

  • loss_cls : 分类loss和前者不同,这里是两类(是物体和不是物体)的loss, Lcls(pi,pi)=log[pipi+(1pi)(1pi)] L c l s ( p i , p i ∗ ) = − log ⁡ [ p i ∗ p i + ( 1 − p i ∗ ) ∗ ( 1 − p i ) ]
  • loss_bbox:同fast rcnn使用L1正则
    • 注:在bounding box regression中,对四个参数化坐标需要进行约束以防差值过大,即相减后还分别除以各自的宽高。

Yolo

所有的参数计算都纳入回归中, 每个格子都有B个bounding box信息,以及C个物体属于某类别的概率。且每个bounding box有五个参数 x,y,w,h,Confidence x , y , w , h , C o n f i d e n c e ,confidence反应的是bounding box是否包含物体和物体位置的准确性, Confidence=P(object)Iou C o n f i d e n c e = P ( o b j e c t ) ∗ I o u ,由于只有在包含物体 P(object)=1 P ( o b j e c t ) = 1 奏效,因此如果不包含则置信度为0

  • Loss=Σs2i=0coordError+iouError+classError L o s s = Σ i = 0 s 2 c o o r d E r r o r + i o u E r r o r + c l a s s E r r o r
    • 作者认为位置(坐标,IOU)相关误差和分类误差贡献不同, λcoord=5 λ c o o r d = 5 coordError c o o r d E r r o r 修正。之所以对 w,h w , h 开根号是因为图像宽高可能会很大,相减差距过大导致平方爆炸
    • 计算IOU误差时,将包含和不包含分成了两个部分进行概率计算,但二者IOU的误差会变相改变对立IOU的值导致难训练,因此使 λnoobj=0.5 λ n o o b j = 0.5 来修正不包含物体的IOU框。
    • 引用别人的一张图,解释的很好,重点是confidence的预测常用目标检测算法loss总结(持续更新)_第1张图片

参考博文:
https://blog.csdn.net/shenxiaolu1984/article/details/51036677
https://zhuanlan.zhihu.com/p/25236464
https://blog.csdn.net/u014381600/article/details/55505231

你可能感兴趣的:(机器学习笔记)