最后一个是类别带来的误差, 也就是class带来的loss 在代码中分别对应lbox, lobj, Icls,yolov3中使用的loss公式如下: lbox=λcoord ∑i=0S2∑j=0B1i,jobj(2−wi×hi)[(xi−xi^)2+(yi−yi^)2+(wi−w^i)2+(hi−hi^)2]lcls=λclass ∑i=0S2∑j=0B1i,jobj ∑c∈classes pi(c)log(p^i(c))lobj=λnoobj ∑i=0S2∑j=0B1i,jnoobj(ci−c^i)2+λobj∑i=0S2∑j=0B1i,jobj(ci−c^i)2loss=lbox+lobj+lcls\begin{aligned} l b o x &=\lambda_{\text {coord }} \sum_{i=0}^{S^{2}} \sum_{j=0}^{B} 1_{i, j}^{o b j}\left(2-w_{i} \times h_{i}\right)\left[\left(x_{i}-\hat{x_{i}}\right)^{2}+\left(y_{i}-\hat{y_{i}}\right)^{2}+\left(w_{i}-\hat{w}_{i}\right)^{2}+\left(h_{i}-\hat{h_{i}}\right)^{2}\right] \\ l c l s &=\lambda_{\text {class }} \sum_{i=0}^{S^{2}} \sum_{j=0}^{B} 1_{i, j}^{\text {obj }} \sum_{c \in \text { classes }} p_{i}(c) \log \left(\hat{p}_{i}(c)\right) \\ l o b j &=\lambda_{\text {noobj }} \sum_{i=0}^{S^{2}} \sum_{j=0}^{B} 1_{i, j}^{n o o b j}\left(c_{i}-\hat{c}_{i}\right)^{2}+\lambda_{o b j} \sum_{i=0}^{S^{2}} \sum_{j=0}^{B} 1_{i, j}^{o b j}\left(c_{i}-\hat{c}_{i}\right)^{2} \\ l o s s &=l b o x+l o b j+l c l s \end{aligned} lboxlclslobjloss=λcoord i=0∑S2j=0∑B1i,jobj(2−wi×hi)[(xi−xi^)2+(yi−yi^)2+(wi−w^i)2+(hi−hi^)2]=λclass i=0∑S2j=0∑B1i,jobj c∈ classes ∑pi(c)log(p^i(c))=λnoobj i=0∑S2j=0∑B1i,jnoobj(ci−c^i)2+λobji=0∑S2j=0∑B1i,jobj(ci−c^i)2=lbox+lobj+lcls 其中: SSS: 代表grid size BBB: box 1i,jobj1_{i, j}^{o b j}1i,jobj : 如果在i,j 处的box有目标,其值为 1 ,否则为 0 1i,jnoobj 1_{i, j}^{\text {noobj }}1i,jnoobj : 如果在i,j 处的box没有目标,其值为 1 ,否则为 0