首页 > 解决方案 > YOLO 的损失函数

问题描述

我可以将这个损失函数用于 YOLO

    def myLoss(y_actual,y_pred):
        a = tf.keras.losses.BinaryCrossentropy()(y_actual[:,:,:,0],y_pred[:,:,:,0])
        b = tf.keras.losses.MeanSquaredError()(y_actual[:,:,:,1:], y_pred[:,:,:,1:]*y_actual[:,:,:,:1])
      
    
        loss= a + b 
        return loss

其中y_actual = [Pc,bx,by,bw,bh,c1,c2,c3]
pc = c1,c2,c3 之一存在于特定网格中的概率,
bx,by,bw,bh 是 a 的边界框参数特定的网格,
c1,c2,c3 是我要预测的 3 个类,例如:3 类的 0,0,1

我在某处读到,当 Pc_actual=0 时,损失不关心边界框和类预测,因此我将它们与 Pc_actual 相乘,这样当 pc_actual 为 0 时,对应于这些项的损失为 0。

如果我错了请纠正我

标签: tensorflowkerasdeep-learningloss-functionyolo

解决方案


Pc_actual=0损失不关心边界框和类预测时,你是对的,但它关心结果,Pc_pred因为你需要模型来学习它,所以当Pc_actual=0损失函数应该在(Pc_actual - Pc_pred)**2预测模型时惩罚模型时是一个对象,而没有对象。


推荐阅读