YOLOv3 损失函数主要分为loss_xy,loss_wh,loss_confidence,loss_class
loss_xy: darknet与kreas稍有不同。
darknet是sse,kreas是二值交叉熵。一种解释如下:bounding box回归是Square Error Loss,分类 and object confidence都是交叉熵 我的理解:作者使用(包括bounding box的位置回归和Logistic 二分类)delta的平方。注意的是,对于Logistic回归,正好方差损失和交叉熵损失的求导形式是一样的,都是output - label的形式。也就是说,本来我们这里应该用(二元分类的)交叉损失熵的,不过作者这里直接用方差损失代替了,因为数值趋势上是一样的。
loss_wh:基本一致,主要联合上面的对小物体回归损失乘了一个系数,scale=2-w*h,越小的物体,回归损失越大,有利于模型更好的检测小物体。
loss_confidence: 分为obj和no_obj两种情况计算。对于obj(该检测框有对应的真实框),二值交叉熵;对于no_obj(该检测框无对应的真实框),当检测框和真实框的iou低于0.5,需要计算no_obj_confidence_loss,也是二值交叉熵。
loss_class:二值交叉熵
主要参考以上两篇文章