smoothL1 loss的tensorflow实现

Posted MachineLP

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了smoothL1 loss的tensorflow实现相关的知识,希望对你有一定的参考价值。

MachineLP的Github(欢迎follow):https://github.com/MachineLP




def smooth_l1_loss(bbox_pred, bbox_targets, bbox_inside_weights, bbox_outside_weights, sigma=1.0, dim=[1]):
    '''
    bbox_pred   :预测框
    bbox_targets:标签框
    bbox_inside_weights:
    bbox_outside_weights:
    '''  
    sigma_2 = sigma ** 2
    box_diff = bbox_pred - bbox_targets
    in_box_diff = bbox_inside_weights * box_diff
    abs_in_box_diff = tf.abs(in_box_diff)
    # tf.less 返回 True or False; a<b,返回True, 否则返回False。
    smoothL1_sign = tf.stop_gradient(tf.to_float(tf.less(abs_in_box_diff, 1. / sigma_2)))
    # 实现公式中的条件分支
    in_loss_box = tf.pow(in_box_diff, 2) * (sigma_2 / 2.) * smoothL1_sign + (abs_in_box_diff - (0.5 / sigma_2)) * (1. - smoothL1_sign)
    out_loss_box = bbox_outside_weights * in_loss_box
    loss_box = tf.reduce_mean(tf.reduce_sum(out_loss_box, axis=dim))
    return loss_box

以上是关于smoothL1 loss的tensorflow实现的主要内容,如果未能解决你的问题,请参考以下文章

深度学习目标检测回归损失函数合集:SmoothL1/IoU/GIoU/DIoU/CIoU Loss

损失函数(loss function)

[pytorch]pytorch loss function 总结

tensorflow记录训练和验证的loss

sklearn 的 log_loss 给出了 nan,而 tensorflow.losses.log_loss 有效

计算机视觉基础知识