我试图修改YoloV1来处理我的任务,每个对象只有一个类。(例如:obj不能同时是猫和狗)
由于架构(其他输出,如定位预测,必须使用回归),因此sigmoid应用于模型的最后一个输出(f.sigmoid(接近最后一个输出))。对于分类,yolo 1也使用MSE作为损失。但据我所知,MSE有时比不上交叉熵,对于一个我想要的热点
和specific:GT类似:0 0 0 0 1
(假设我们总共只有5个类,每个类只有一个类,所以其中只有一个数字1,当然在本例中这是第5个类)
分类部分的输出模型:0.1 0.1 0.9 0.2 0.1
我发现一些关于使用nn.BCE
/nn.BCEWithLogitsLoss
的建议,但我认为我应该在这里要求更多的正确答案,因为我不擅长数学,也许我在某个地方错了,所以只要要求了解更多,确定我应该正确使用什么
MSE
损失通常用于回归问题对于二进制分类,可以使用
BCE
或BCEWithLogitsLoss
BCEWithLogitsLoss
将sigmoid与BCE丢失结合起来,因此如果在最后一层上应用了sigmoid,则可以直接使用BCE
在您的案例中提到的GT涉及“多类”分类问题,并且显示的输出实际上并不对应于
multi-class
分类。因此,在这种情况下,您可以应用CrossEntropyLoss
,它结合了softmax和log loss,适用于“多类”分类问题相关问题 更多 >
编程相关推荐