【发布时间】:2019-08-19 01:59:13
【问题描述】:
我打算编写自己的 YOLOv3 实现,并提出损失函数的一些问题。原始论文提到他在类预测部分使用二元交叉熵,这就是我所做的。
我尝试通过原始暗网代码读取一些代码,但没有找到与 BCE 丢失相关的任何内容。我进一步阅读了一些使用 Keras、Pytorch 和 TensorFlow 的方法。每个人似乎对损失函数都有自己的看法。有些只使用 MSE 进行宽度和高度估计,其余使用 BCE,有些使用 x,y,w,h 使用 MSE,其余使用 BCE。
这是我的一些代码:
loss_x = self.mse_loss(x[mask], tx[mask])
loss_y = self.mse_loss(y[mask], ty[mask])
loss_w = self.mse_loss(w[mask], tw[mask])
loss_h = self.mse_loss(h[mask], th[mask])
loss_conf = self.bce_loss(pred_conf[conf_mask_false], tconf[conf_mask_false]) + self.bce_loss(pred_conf[conf_mask_true],tconf[conf_mask_true])
loss_cls = (1 / nB) * self.ce_loss(pred_cls[mask],torch.argmax(tcls[mask], 1))
loss = loss_x + loss_y + loss_w + loss_h + loss_conf + loss_cls
由于损失函数在训练中起着重要作用。我希望有人能帮我弄清楚。
【问题讨论】:
标签: machine-learning deep-learning computer-vision object-detection yolo