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 #注意这里不适用负样本挖掘方法
}
}