pytorch----retinaface(三种损失使用的函数)

pytorch----retinaface(三种损失使用的函数)

retinaface损失函数定义:
在这里插入图片描述
(1)L(cls)(面分类损失):

#计算交叉熵
loss_c = F.cross_entropy(conf_p, targets_weighted, reduction='sum')

1、交叉熵的公式:
在这里插入图片描述
其中P为真实值,Q为预测值。
2、计算交叉熵的步骤:
1)步骤说明:
①将predict_scores进行softmax运算,将运算结果记为pred_scores_soft;
②将pred_scores_soft进行log运算,将运算结果记为pred_scores_soft_log;
③将pred_scores_soft_log与真实值进行计算处理。
思路即:
scores→softmax→log→compute
(2)、L(box)(面盒回归损失):

loss_l = F.smooth_l1_loss(loc_p, loc_t, reduction='sum')#Smooth L1 损失

smooth L1 loss能从两个方面限制梯度:
当预测框与 ground truth 差别过大时,梯度值不至于过大;
当预测框与 ground truth 差别很小时,梯度值足够小。
pytorch----retinaface(三种损失使用的函数)_第1张图片
求导:
pytorch----retinaface(三种损失使用的函数)_第2张图片
(3)面部地标回归损失L(pts):

loss_landm = F.smooth_l1_loss(landm_p, landm_t, reduction='sum')#Smooth L1 损失

(4)稠密回归损失L(pixel):
代码中并没有写出。
简单介绍一下:
损耗平衡参数λ1-λ3分别设置为0.25、0.1和0.01,这意味着我们增加了监控信号中更好的箱位和标志位置的重要性。

你可能感兴趣的:(RetinaFace)