meituan / YOLOv6

YOLOv6: a single-stage object detection framework dedicated to industrial applications.
GNU General Public License v3.0
5.67k stars 1.02k forks source link

请教关于训练loss的设计 #534

Closed lapvision closed 1 year ago

lapvision commented 1 year ago

Before Asking

Search before asking

Question

看代码训练loss只有iou_loss+cls_loss,如果要加入负样本(无标注框)的图片抑制部分误检,是否要重新设计loss啊?把之前的那个obj_loss要加上?谢谢!

Additional

No response

mtjhl commented 1 year ago

并不需要,在 cls loss 里面加大负样本的权重也可以抑制 FP。 具体可参考BCEWITHLOGITSLOSS 中的 pos_weight 参数。

lapvision commented 1 year ago

新版本代码里好像都没有用BCEWITHLOGITSLOSS loss = self.loss_weight['class'] loss_cls + self.loss_weight['iou'] loss_iou + self.loss_weight['dfl'] * loss_dfl 其中 loss_cls = self.varifocal_loss(), loss_iou, loss_dfl = self.bbox_loss

mtjhl commented 1 year ago

的确是,如果是要用 pos_weights 参数的话,就得稍微改写一下分类的损失函数,或者手动实现 F.binary_cross_entropy 这个函数,在里面加上 pos_weights 这个参数。