看了很多关于yolov3的算法讲解,但是对于损失函数一直没怎么看懂,再看代码,发现完全不懂,所以决定再仔细看看yolov3的损失函数。
由于是自己总结加分析,可能存在错误,如果有错误,请告诉我~
另外记录笔记只是为了自己学习,如果能帮助到别人很好,很开心~帮助不了,我也只是自己学习记录笔记,可以不看哦,请勿吐嘈谢谢感谢,因为不想打击 积极性啊哈~
先回顾下YOLOv1的损失函数:
L o s s = λ c o o r d ∑ i = 0 S 2 ∑ j = 0 B I i j o b j [ ( x i j − x ^ i j ) 2 + ( y i j − y ^ i j ) 2 ] + λ c o o r d ∑ i = 0 S 2 ∑ j = 0 B I i j o b j [ ( w i j − w ^ i j ) 2 + ( h i j − h ^ i j ) 2 ] + ∑ i = 0 S 2 ∑ j = 0 B I i j o b j ( C i j − C ^ i j ) 2 + λ n o o b j ∑ i = 0 S 2 ∑ j = 0 B I i j n o o b j ( C i j − C ^ i j ) 2 + ∑ i = 0 S 2 I i j o b j ∑ c ∈ c l a s s e s ( P i j ( c ) − P ^ i j ( c ) ) 2 Loss=\lambda_{coord} \sum_{i=0}^{S^2} \sum_{j=0}^B {I_{ij}^{obj} [(x_i^j-\hat x_i^j)^2+ (y_i^j-\hat y_i^j)^2 ] }+ \\ \lambda_{coord} \sum_{i=0}^{S^2} \sum_{j=0}^B {I_{ij}^{obj} [ ( \sqrt { w_i^j}-\sqrt{\hat w_i^j} )^2+ (\sqrt { h_i^j}-\sqrt{\hat h_i^j})^2 ] }+ \\ \sum_{i=0}^{S^2} \sum_{j=0}^B {I_{ij}^{obj} (C_i^j -\hat C_i^j)^2 } +\\ \lambda_{noobj} \sum_{i=0}^{S^2} \sum_{j=0}^B {I_{ij}^{noobj} (C_i^j -\hat C_i^j)^2 } +\\\sum_{i=0}^{S^2} { I_{ij}^{obj} } \sum_{c \in {classes}} (P_i^j(c) - \hat P_i^j(c))^2 Loss=λcoordi=0∑S2j=0∑BIijobj[(xij−x^ij)2+(yij−y^ij)2]+λcoordi=0∑S2j=0∑BIijobj[(wij−w^ij)2+(hij−h^ij)2]+i=0∑S2j=0∑BIijobj(Cij−C^ij)2+λnoobji=0∑S2j=0∑BIijnoobj(Cij−C^ij)2+i=0∑S2Iijobjc∈classes∑(Pi