网格单元边界框置信度解析: 置信度 C C C用于评估模子预测的边界框内包罗某个对象的可能性以及该边界框的正确性。
C = Pr ( O b j e c t ) × I O U p r e d t r u t h C = \Pr (O{\rm{bject}}) \times IOU_{{\rm{pred}}}^{{\rm{truth}}} C=Pr(Object)×IOUpredtruth
包罗对象的可能性 P r ( O b j e c t ) Pr (O{\rm{bject}}) Pr(Object):指的是模子对于某个边界框内存在特定对象的确信程度,反映了模子认为该边界框确实包罗了某个对象的信心水平,认为在当前边界框内有一个或多个对象存在的概率。这个概率,并非指详细某个种别对象在边界框内的概率,而是任意一个种别对象在边界框内的概率,只要不是配景的;
边界框的正确性 I O U p r e d t r u t h IOU_{{\rm{pred}}}^{{\rm{truth}}} IOUpredtruth:通过计算预测边界框与真实边界框(ground truth)之间的交并比(Intersection over Union, IoU)来衡量的,IoU是介于0到1之间的值,表现两个边界框重叠面积占它们归并面积的比例。值越接近1,说明预测的边界框与真实边界框越吻合。同时在非极大值抑制计算中IOU作为此中的重要指标。
种别置信度筛选: 在有物体的情况下,对应种别的物体的置信度,其公式为:
C i = Pr ( C l a s s i ∣ O b j e c t ) × Pr ( O b j e c t ) × I O U p r e d t r u t h {C_i} = \Pr (Clas{s_i}|O{\rm{bject}}) \times \Pr (O{\rm{bject}}) \times IOU_{{\rm{pred}}}^{{\rm{truth}}} Ci=Pr(Classi∣Object)×Pr(Object)×IOUpredtruth
从公式中不难理解论文作者表达的含义:置信度即表现一种自尊程度,包罗了边界框内有物体的自尊程度、物体归属于某个类型的自尊程度以及边界框将将整个物体包罗进来的自尊程度。下图中框上的数值表现种别置信度的值,可以通过设置种别置信度阈值,剔除一部门置信度低于阈值的边界框。
丧失函数: YOLOV1原论文作者提供的丧失函数公式为:
L o s s = λ c o o r d ∑ i = 0 S 2 ∑ j = 0 B 1 i j o b j [ ( x i − x i ∧ ) 2 − ( y i − y i ∧ ) 2 ] + λ c o o r d ∑ i = 0 S 2 ∑ j = 0 B 1 i j o b j [ ( w i − w i ∧ ) 2 − ( h i − h i ∧ ) 2 ] + ∑ i = 0 S 2 ∑ j = 0 B 1 i j o b j ( C i − C i ∧ ) 2 + λ n o o b j ∑ i = 0 S 2 ∑ j = 0 B 1 i j n o o b j ( C i − C i ∧ ) 2 + ∑ i = 0 S 2 1 i j o b j ∑ c ∈ c l a s s e s ( p i ( c ) − p i ∧ ( c ) ) 2 L{\rm{oss}} = {\lambda _{{\rm{coord}}}}\sum\limits_{{\rm{i}} = 0}^{{S^2}} {\sum\limits_{{\rm{j}} = 0}^B {1_{ij}^{obj}} } \left[ {{{\left( {{x_i} - \mathop {{x_i}}\limits^ \wedge } \right)}^2} - {{\left( {{y_i} - \mathop {{y_i}}\limits^ \wedge } \right)}^2}} \right] + {\lambda _{{\rm{coord}}}}\sum\limits_{{\rm{i}} = 0}^{{S^2}} {\sum\limits_{{\rm{j}} = 0}^B {1_{ij}^{obj}} } \left[ {{{\left( {\sqrt {{w_i}} - \sqrt {\mathop {{w_i}}\limits^ \wedge } } \right)}^2} - {{\left( {\sqrt {{h_i}} - \sqrt {\mathop {{h_i}}\limits^ \wedge } } \right)}^2}} \right] + \sum\limits_{{\rm{i}} = 0}^{{S^2}} {\sum\limits_{{\rm{j}} = 0}^B {1_{ij}^{obj}} } {\left( {{C_i} - \mathop {{C_i}}\limits^ \wedge } \right)^2} + {\lambda _{{\rm{noobj}}}}\sum\limits_{{\rm{i}} = 0}^{{S^2}} {\sum\limits_{{\rm{j}} = 0}^B {1_{ij}^{{\rm{noobj}}}} } {\left( {{C_i} - \mathop {{C_i}}\limits^ \wedge } \right)^2} + \sum\limits_{{\rm{i}} = 0}^{{S^2}} {1_{ij}^{obj}\sum\limits_{c \in classes} {{{\left( {{p_i}\left( c \right) - \mathop {{p_i}}\limits^ \wedge \left( c \right)} \right)}^2}} } Loss=λcoordi=0∑S2j=0∑B1ijobj[(xi−xi∧)2−(yi−yi∧)2]+λcoordi=0∑S2j=0∑B1ijobj (wi −wi∧ )2−(hi −hi∧ )2 +i=0∑S2j=0∑B1ijobj(Ci−Ci∧)2+λnoobji=0∑S2j=0∑B1ijnoobj(Ci−Ci∧)2+i=0∑S21ijobjc∈classes∑(pi(c)−pi∧(c))2
∑ i = 0 S 2 \sum\limits_{{\rm{i}} = 0}^{{S^2}} {} i=0∑S2表现遍历全部网格单元并举行累加;
∑ j = 0 B \sum\limits_{{\rm{j}} = 0}^B {} j=0∑B表现遍历全部预测边界框并举行累加;
∑ i = 0 S 2 ∑ j = 0 B 1 i j o b j \sum\limits_{{\rm{i}} = 0}^{{S^2}} {\sum\limits_{{\rm{j}} = 0}^B {1_{ij}^{{\rm{obj}}}} } i=0∑S2j=0∑B1ijobj表现第 i i i个网格中第 j j j个边界框有对象时为1,否则为0;
∑ i = 0 S 2 ∑ j = 0 B 1 i j n o o b j \sum\limits_{{\rm{i}} = 0}^{{S^2}} {\sum\limits_{{\rm{j}} = 0}^B {1_{ij}^{{\rm{noobj}}}} } i=0∑S2j=0∑B1ijnoobj表现第 i i i个网格中第 j j j个边界框没有对象时为1,否则为0;
∑ i = 0 S 2 1 i j o b j ∑ c ∈ c l a s s e s \sum\limits_{{\rm{i}} = 0}^{{S^2}} {1_{ij}^{obj}\sum\limits_{c \in classes} {} } i=0∑S21ijobjc∈classes∑表现第 i i i个网格中有对象时为1,否则为0;
λ c o o r d {\lambda _{{\rm{coord}}}} λcoord和 λ n o o b j {\lambda _{{\rm{noobj}}}} λnoobj是均衡系数(分别是5和0.5),通常情况下,图片中只有少数几个目标,而绝大部门区域是没有目标的,因此加上均衡系数以制止过渡学习到没有目标的区域。
坐标丧失: 包罗了两个丧失值,一个是边界框中央点坐标丧失,一个是边界框大小丧失。
λ c o o r d ∑ i = 0 S 2 ∑ j = 0 B 1 i j o b j [ ( x i − x i ∧ ) 2 − ( y i − y i ∧ ) 2 ] + λ c o o r d ∑ i = 0 S 2 ∑ j = 0 B 1 i j o b j [ ( w i − w i ∧ ) 2 − ( h i − h i ∧ ) 2 ] {\lambda _{{\rm{coord}}}}\sum\limits_{{\rm{i}} = 0}^{{S^2}} {\sum\limits_{{\rm{j}} = 0}^B {1_{ij}^{obj}} } \left[ {{{\left( {{x_i} - \mathop {{x_i}}\limits^ \wedge } \right)}^2} - {{\left( {{y_i} - \mathop {{y_i}}\limits^ \wedge } \right)}^2}} \right] + {\lambda _{{\rm{coord}}}}\sum\limits_{{\rm{i}} = 0}^{{S^2}} {\sum\limits_{{\rm{j}} = 0}^B {1_{ij}^{obj}} } \left[ {{{\left( {\sqrt {{w_i}} - \sqrt {\mathop {{w_i}}\limits^ \wedge } } \right)}^2} - {{\left( {\sqrt {{h_i}} - \sqrt {\mathop {{h_i}}\limits^ \wedge } } \right)}^2}} \right] λcoordi=0∑S2j=0∑B1ijobj[(xi−xi∧)2−(yi−yi∧)2]+λcoordi=0∑S2j=0∑B1ijobj (wi −wi∧ )2−(hi −hi∧ )2
边界框中央点坐标丧失接纳的是平方差,容易理解的通例操作,不再解释。边界框大小丧失则先对宽 w w w,高 h h h举行开根
号,然后再计算平方差。原因如下图所示,以宽 w w w为例,宽度相差同等的情况下,不开根号计算标注框和预测框的丧失,大目标检测和小目标检测没有任何区别,丧失都是一样的;但在开根计算丧失时,小目标检测的丧失是比大目标检测的丧失大,加强了小目标丧失的影响,抑制了大目标丧失的影响,这种计划更符合现实情况。
举个例子,满分10分和满分100分的俩种评价体系中,9分和8分之间1分的影响,远比90分和89分的之间1分的影响更为突出,更应该关注8分到9分的提升。
置信度丧失: 当有对象时, P r ( O b j e c t ) = 1 Pr (O{\rm{bject}})=1 Pr(Object)=1,因此置信度的标签值 C i ∧ {\mathop {{C_i}}\limits^ \wedge } Ci∧是预测框和标注框之间的交并比 I o U IoU IoU;当没对象时, P r ( O b j e c t ) = 0 Pr (O{\rm{bject}})=0 Pr(Object)=0,因此标签值 C i ∧ {\mathop {{C_i}}\limits^ \wedge } Ci∧为0。
注意!!!这里并非是有对象时置信度的标签值 C i ∧ = 1 {\mathop {{C_i}}\limits^ \wedge }=1 Ci∧=1。但后续yolo版本会对这里作出了调整,改成了 C i ∧ = 1 {\mathop {{C_i}}\limits^ \wedge }=1 Ci∧=1。
∑ i = 0 S 2 ∑ j = 0 B 1 i j o b j ( C i − C i ∧ ) 2 + λ n o o b j ∑ i = 0 S 2 ∑ j = 0 B 1 i j n o o b j ( C i − C i ∧ ) 2 \sum\limits_{{\rm{i}} = 0}^{{S^2}} {\sum\limits_{{\rm{j}} = 0}^B {1_{ij}^{obj}} } {\left( {{C_i} - \mathop {{C_i}}\limits^ \wedge } \right)^2} + {\lambda _{{\rm{noobj}}}}\sum\limits_{{\rm{i}} = 0}^{{S^2}} {\sum\limits_{{\rm{j}} = 0}^B {1_{ij}^{{\rm{noobj}}}} } {\left( {{C_i} - \mathop {{C_i}}\limits^ \wedge } \right)^2} i=0∑S2j=0∑B1ijobj(Ci−Ci∧)2+λnoobji=0∑S2j=0∑B1ijnoobj(Ci−Ci∧)2 概率丧失: 全部网格单元中,只让有目标对象的网格单元参与计算。
∑ i = 0 S 2 1 i j o b j ∑ c ∈ c l a s s e s ( p i ( c ) − p i ∧ ( c ) ) 2 \sum\limits_{{\rm{i}} = 0}^{{S^2}} {1_{ij}^{obj}\sum\limits_{c \in classes} {{{\left( {{p_i}\left( c \right) - \mathop {{p_i}}\limits^ \wedge \left( c \right)} \right)}^2}} } i=0∑S21ijobjc∈classes∑(pi(c)−pi∧(c))2 总结