YOLOv1的loss函数

1.网络的output

YOLOv1的网络结构是包含20个卷基层的basemodel+4个新增卷积层。当选取7*7的grid和2个bounding box之后,输出为7*7*30的tensor。其中每个30d向量包括:5d长度的bbox1预测+5d长度的bbox2预测+该grid属于20个class的概率。bbox的预测五元组 ( x , y , w , h , c o n f i d e n c e ) (x,y,w,h,confidence) (x,y,w,h,confidence)解释原文:

The ( x , y ) (x, y) (x,y) coordinates represent the center of the box relative to the bounds of the grid cell. The width and height are predicted relative to the whole image. Finally the confidence prediction represents the IOU between the predicted box and any ground truth box.

解释一下: ( x , y ) (x, y) (x,y)表示box的中心在grid cell中的相对位置(即 x , y ∈ [ 0 , 1 ] x,y\in[0,1] x,y[0,1]
w 、 h w、h wh表示该box的长和宽相对于input的长和宽(448)的比例(即 w , h ∈ [ 0 , 1 ] w,h\in[0,1] w,h[0,1]
这四个元素即可还原出原图的一个bbox:
设左上角为(0,0),grid cell左上角坐标为 ( x 0 , y 0 ) (x_0,y_0) (x0,y0),则bbox的宽高为: 448 × w 、 448 × h 448\times w、448\times h 448×w448×h
左上角坐标为: x 0 + 448 7 × x − 1 2 × 448 × w ,   y 0 + 448 7 × y − 1 2 × 448 × h x_0+\dfrac{448}{7}\times x-\dfrac{1}{2}\times448\times w,\ y_0+\dfrac{448}{7}\times y-\dfrac{1}{2}\times448\times h x0+7448×x21×448×w, y0+7448×y21×448×h
c o n f i d e n c e = P r ( O b j e c t ) × I O U confidence=Pr(Object)\times IOU confidence=Pr(Object)×IOU中,按照作者的意思, P r ( O b j e c t ) Pr(Object) Pr(Object)仅可能为0或者1,所以 c o n f i d e n c e confidence confidence要么为0,表示此bbox中不包含对象,要么不为0,表示该bbox和ground truth的IOU。
20d的分类概率类似于base model,不再赘述:

Each grid cell also predicts C conditional class probabilities, P r ( C l a s s i ∣ O b j e c t ) Pr(Class_i|Object) Pr(ClassiObject)

2.loss函数

L = λ c o o d ∑ i = 1 S 2 ∑ j = 1 B 1 i j o b j [ ( x i − x i ^ ) 2 + ( y i − y i ^ ) 2 ] + λ c o o d ∑ i = 1 S 2 ∑ j = 1 B 1 i j o b j [ ( w i − w i ^ ) 2 + ( h i − h i ^ ) 2 ] + ∑ i = 1 S 2 ∑ j = 1 B 1 i j o b j ( C i − C i ^ ) 2 + λ n o o b j ∑ i = 1 S 2 ∑ j = 1 B 1 i j n o o b j ( C i − C i ^ ) 2 + ∑ i = 1 S 2 1 i j o b j ∑ c ∈ c l a s s e s ( p i ( c ) − p i ^ ( c ) ) 2 \begin{array}{rcl} L&=\lambda_{cood}\sum_{i=1}^{S^2}\sum_{j=1}^{B}1_{ij}^{obj}[(x_i-\hat{x_i})^2+(y_i-\hat{y_i})^2]\\ &+\lambda_{cood}\sum_{i=1}^{S^2}\sum_{j=1}^{B}1_{ij}^{obj}[(\sqrt{w_i}-\sqrt{\hat{w_i}})^2+(\sqrt{h_i}-\sqrt{\hat{h_i}})^2]\\ &+\sum_{i=1}^{S^2}\sum_{j=1}^{B}1_{ij}^{obj}(C_i-\hat{C_i})^2\\ &+\lambda_{noobj}\sum_{i=1}^{S^2}\sum_{j=1}^{B}1_{ij}^{noobj}(C_i-\hat{C_i})^2\\ &+\sum_{i=1}^{S^2}1_{ij}^{obj}\sum_{c\in classes}(p_i(c)-\hat{p_i}(c))^2 \end{array} L=λcoodi=1S2j=1B1ijobj[(xixi^)2+(yiyi^)2]+λcoodi=1S2j=1B1ijobj[(wi wi^ )2+(hi hi^ )2]+i=1S2j=1B1ijobj(CiCi^)2+λnoobji=1S2j=1B1ijnoobj(CiCi^)2+i=1S21ijobjcclasses(pi(c)pi^(c))2
上次见到这么丑的公式还是电磁场的课上,不过幸好这个公式花点工夫还是能看懂的。
首先我们明确一下几个符号: ∑ i = 1 S 2 \sum_{i=1}^{S^2} i=1S2是在遍历grid cell, ∑ j = 1 B \sum_{j=1}^{B} j=1B是在遍历每个grid cell的bbox。而 1 i j o b j 1_{ij}^{obj} 1ijobj表示选取 S 2 ∗ B S^2*B S2B个bbox中框出了ground truth的那几个bbox,意味着和input中的对象数量在同一数量级(不完全相等是因为每个grid cell的若干个bbox可能选出了同一个对象)。剩下未选出的,就给了 1 i j n o o b j 1_{ij}^{noobj} 1ijnoobj λ n o o b j \lambda_{noobj} λnoobj λ c o o d \lambda_{cood} λcood是用于调节类别不平衡的超参数。基于这些认识,我们把上式综合一下:
L = ∑ i = 1 S 2 ∑ j = 1 B 1 i j o b j [ λ c o o d ( x i − x i ^ ) 2 + λ c o o d ( y i − y i ^ ) 2 + λ c o o d ( w i − w i ^ ) 2 + λ c o o d ( h i − h i ^ ) 2 + ( C i − C i ^ ) 2 ] + ∑ i = 1 S 2 ∑ j = 1 B 1 i j n o o b j [ λ n o o b j ( C i − C i ^ ) 2 ] + ∑ i = 1 S 2 1 i j o b j ∑ c ∈ c l a s s e s ( p i ( c ) − p i ^ ( c ) ) 2 \begin{array}{rcl} L&=\sum_{i=1}^{S^2}\sum_{j=1}^{B}1_{ij}^{obj}[\lambda_{cood}(x_i-\hat{x_i})^2+\lambda_{cood}(y_i-\hat{y_i})^2+\lambda_{cood}(\sqrt{w_i}-\sqrt{\hat{w_i}})^2+\lambda_{cood}(\sqrt{h_i}-\sqrt{\hat{h_i}})^2+(C_i-\hat{C_i})^2]\\ &+\sum_{i=1}^{S^2}\sum_{j=1}^{B}1_{ij}^{noobj}[\lambda_{noobj}(C_i-\hat{C_i})^2]\\ &+\sum_{i=1}^{S^2}1_{ij}^{obj}\sum_{c\in classes}(p_i(c)-\hat{p_i}(c))^2 \end{array} L=i=1S2j=1B1ijobj[λcood(xixi^)2+λcood(yiyi^)2+λcood(wi wi^ )2+λcood(hi hi^ )2+(CiCi^)2]+i=1S2j=1B1ijnoobj[λnoobj(CiCi^)2]+i=1S21ijobjcclasses(pi(c)pi^(c))2
论文中作者设置两个超参数 λ \lambda λ是因为input中的对象数量很少,所以会产生大量的无对象bbox,所以作者设置了10倍差距的 λ \lambda λ来抵消巨大的不平衡。

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值