目标检测 YOLOv5 - 损失函数的改进

类别是包含关系的
BCEWithLogitsLoss 可以用于多标签分类的,一个目标可以属于一个或者多个类别,例如一个目标可以是人,男人,儿童,类别存在一种包括关系。
因为BCEWithLogitsLoss = Sigmoid + BCELoss,BCEWithLogitsLoss将Sigmoid加入了损失函数中。Sigmoid概率和不需要是1。
例如sigmoid的计算结果取出一行看示例代码中的输出[0.5100, 0.6713, 0.5025]这个数累加起来不是1,如果定义阈值大于等于0.50。那么这个目标同时属于三个类,结果如果要求只属于一个类,可以取最大的那个。

类别是互斥关系的
如果检测的类别,类别是互斥关系,例如人,猫,狗这种互斥关系,如何改造呢?
CrossEntropyLoss = LogSoftmax + NLLLoss
Softmax概率和是1或者说接近1。Softmax 大值比其他值具有更大的概率。Sigmoid数值大则概率大,但概率不会比另一个数值的概率更大。
看示例代码中的输出[0.2543, 0.4990, 0.2467]这三个数加起来和是1。
————————————————
版权声明:本文为CSDN博主「TheOldManAndTheSea」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/flyfish1986/article/details/120534863

你可能感兴趣的:(深度学习笔记,yolov5-目标检测,目标检测,人工智能,计算机视觉)