Bootstrap

【目标检测】SSD算法--损失函数的详解(tensorflow实现,字节跳动资深面试官亲述

y_true shape:(batch_size, n_boxes, n_classes)

def log_loss(self, y_true, y_pred):

        # 确保y_pred中不含0,否则会使log函数崩溃的
        y_pred = tf.maximum(y_pred, 1e-15)
        # Compute the log loss
        log_loss = -tf.reduce_sum(y_true * tf.log(y_pred), axis=-1)
        return log_loss

3 hard negative mining

主要思路:

1.根据正样本的个数和正负比例,确定负样本的个数,negative_keep

2.找到confidence loss最大的negative_keep个负样本,计算他们的分类损失之和

3.计算正样本的分类损失之和,分类损失是正样本和负样本的损失和

4.计算正样本的位置损失localization loss.无法计算负样本位置损失 %>_<%

  1. 对回归损失和位置损失之和
def compute_loss(self, y_true, y_pred):
    self.neg_pos_ratio = tf.constant(self.neg_pos_ratio)
    self.n_neg_min = tf.constant(self.n_neg_min)
    self.alpha = tf.constant(self.alpha)

    batch_size = tf.shape(y_pred)[0] # Output dtype: tf.int32
    n_boxes &#
;