YOLO v1介绍

YOLO v1算法介绍

 YOLO v1是将整个图片作为网络的输入,直接在输出层对BBox的位置和类别进行回归。实现方法分为如下步骤:

  • 一幅图像首先被分为 S × S \mathrm{S \times S} S×S个网格,如果某个 O b j e c t \mathrm{Object} Object的中心落在这个网格中,则这个网格就负责预测这个 O b j e c t \mathrm{Object} Object。
  • 每个网格需要预测 B \mathrm{B} B个BBox的位置信息和置信度信息,一个BBox对应着四个位置信息和一个置信度信息。其中置信度信息的公式如下所示 P r ( O b j e c t ) ∗ I O U \mathrm{Pr}(\mathrm{Object})*{\bf{IOU}} Pr(Object)∗IOU其中如果 O b j e c t \mathrm{Object} Object落在一个网格里,则 P r ( O b j e c t ) \mathrm{Pr}(\mathrm{Object}) Pr(Object)取1,否则取0。
  • 每个BBox要预测 ( x , y , w , h ) (x,y,w,h) (x,y,w,h)和置信度共5个值,每个网格还要预测一个类别信息共 C \mathrm{C} C类。则最终输出的维度为 d i m = S × S × ( 5 B + C ) \mathrm{dim}=\mathrm{S\times S}\times (5 \mathrm{B+C}) dim=S×S×(5B+C)
  • 在测试的时候,每个网格预测的类信息和BBox的预测置信度信息相乘,就得到了每个BBox的类别置信度分数
    C S = P r ( C l a s s i ∣ O b j e c t ) ∗ P r ( O b j e c t ) ∗ I O U = P r ( C l a s s i ) ∗ I O U \begin{aligned}\mathrm{CS}&=\mathrm{Pr}(\mathrm{Class}_i|\mathrm{Object})*\mathrm{Pr}(\mathrm{Object})*{\bf{IOU}}\\&=\mathrm{Pr}(\mathrm{Class}_i)*{\bf{IOU}}\end{aligned} CS​=Pr(Classi​∣Object)∗Pr(Object)∗IOU=Pr(Classi​)∗IOU​这个公式表示了预测某个BBox属于某一类的概率。

损失函数

 损失函数共包括三部分 L t o t a l = L c o o r d + L b c + L c L_{total}=L_{coord}+L_{bc}+L_{c} Ltotal​=Lcoord​+Lbc​+Lc​

  • L t o t a l L_{total} Ltotal​表示的是对坐标的预测 L c o o r d = λ c o o r d ∑ i = 0 S 2 ∑ j = 0 B I i j o b j [ ( x i − x ^ i ) 2 + ( y i − y ^ i ) 2 + ( w i − w ^ i ) 2 + ( h i − h ^ i ) 2 ] L_{coord}=\lambda_{coord}\sum\limits_{i=0}^{S^2}\sum\limits_{j=0}^{B}\mathbb{I}_{ij}^{\mathrm{obj}}[(x_i-\hat{x}_i)^2+(y_i-\hat{y}_i)^2+(\sqrt{w_i}-\sqrt{\hat{w}_i})^2+(\sqrt{h_i}-\sqrt{\hat{h}_i})^2] Lcoord​=λcoord​i=0∑S2​j=0∑B​Iijobj​[(xi​−x^i​)2+(yi​−y^​i​)2+(wi​ ​−w^i​ ​)2+(hi​ ​−h^i​ ​)2]其中 I i j o b j \mathbb{I}_{ij}^{\mathrm{obj}} Iijobj​表示的是第 i i i个网格中的 j j j个box是否负责这个object。
  • L b c L_{bc} Lbc​主要负责预测box的置信度 L b c = ∑ i = 0 S 2 ∑ j = 0 B I i j o b j ( C i − C ^ i ) 2 + λ n o o b j ∑ i = 0 S 2 ∑ j = 0 B I i j n o o b j ( C i − C ^ i ) 2 L_{bc}=\sum\limits_{i=0}^{S^2}\sum\limits_{j=0}^{B}\mathbb{I}_{ij}^{\mathrm{obj}}(C_i-\hat{C}_i)^2+\lambda_{noobj}\sum\limits_{i=0}^{S^2}\sum\limits_{j=0}^{B}\mathbb{I}_{ij}^{\mathrm{noobj}}(C_i-\hat{C}_i)^2 Lbc​=i=0∑S2​j=0∑B​Iijobj​(Ci​−C^i​)2+λnoobj​i=0∑S2​j=0∑B​Iijnoobj​(Ci​−C^i​)2
  • L c L_{c} Lc​主要负责类别预测
    L c = ∑ i = 0 S 2 I i j o b j ∑ c ∈ c l a s s e s ( p i ( c ) − p ^ i ( c ) ) 2 L_{c}=\sum\limits_{i=0}^{S^2}\mathbb{I}_{ij}^{\mathrm{obj}}\sum\limits_{c \in \mathrm{classes}}(p_i(c)-\hat{p}_i(c))^2 Lc​=i=0∑S2​Iijobj​c∈classes∑​(pi​(c)−p^​i​(c))2
上一篇:[PKUWC2018] 猎人杀


下一篇:15python大宝藏