目标检测:SSD之损失函数的改进

SSD 的损失函数改进

以下改进已经实现在github中: https://github.com/BOBrown/SSD-Centerloss

(1)centerl loss改进

centerloss的理解请参考博文 https://blog.csdn.net/zbzb1000/article/details/81001546

传统SSD目标检测算法是对每一个default生成一个4维的localization向量和一个output_number维度的分类向量。
例如,在21个类别的pascal voc数据集上,每一个default box需要生成4维的localization向量和21维的分类向量。
我们这里除了以上两种向量,我们还生成一种叫做center features的向量,加入到损失函数中。

center features:可以帮助每一个default box进行中心点回归。每一个default box都有一个中心点,不同类别的中心点相隔的远,相同类别的中心点相隔的近。具体技术细节参考 https://blog.csdn.net/zbzb1000/article/details/81001546

(2)focal loss改进

focal loss文章 Title:Focal Loss for Dense Object Detection
采用focal loss训练SSD不需要使用OHEM。
以下是focalloss的layer config

layer {
  name: "mbox_loss"
  type: "MultiBoxFocalLoss"
  bottom: "mbox_loc"
  bottom: "mbox_conf"
  bottom: "mbox_priorbox"
  bottom: "label"
  top: "mbox_loss"
  include {
    phase: TRAIN
  }
  propagate_down: true
  propagate_down: true
  propagate_down: false
  propagate_down: false
  loss_param {
    normalization: VALID
  }
  focal_loss_param {
    alpha: 0.5
    gamma: 2
  }
  multibox_loss_param {
    loc_loss_type: SMOOTH_L1
    conf_loss_type: SOFTMAX
    loc_weight: 1
    num_classes: 21
    share_location: true
    match_type: PER_PREDICTION
    overlap_threshold: 0.5
    use_prior_for_matching: true
    background_label_id: 0
    use_difficult_gt: true
    neg_pos_ratio: 3
    neg_overlap: 0.4
    code_type: CENTER_SIZE
    ignore_cross_boundary_bbox: false
    mining_type: NONE #注意这里不适用负样本挖掘方法
  }
}

猜你喜欢

转载自blog.csdn.net/zbzb1000/article/details/81154311