目标检测学习总结之SSD

  首先要明确SSD的motivation:要让目标检测任务又快又准。怎么快?那就是将two-stage改为one-stage。怎么准?尽可能多预测些box(当然这里也有trade-off,毕竟预测的box越多计算量就越大,越耗时)。针对这些,SSD的关键技术在于:

  1. one-stage(相对于Faster RCNN);
  2. 采用anchor box机制(相对于YOLOv1);
  3. 采用多尺度特征图预测(相对于Faster RCNN和YOLOv1)。

采用anchor box机制,为要预测的box加入一些先验,可以使得模型更加鲁棒,降低出现不收敛的风险。anchor box机制相对来说可以在提出少量的box的基础上保证检测任务的准确率和召回率,结合anchor机制SSD需要预测8千多个box(Faster RCNN则需要预测2万3千多个box,更多的box意味着更多的计算,从而降低了实时性;YOLOv1只需要预测98个box,但是在MAP上表现一般)。
采用多尺度特征图,尽可能引入不同接收野的特征。这样尽管每个gird对应的anchor box都是相同的size,但是由于不同层特征图的接收野不同,所以相同的anchor在不同层对应的image实际区域也不同。总的来说,大尺度特征图(比如1919)用来检测小的target,而小尺度特征图(比如11)用来检测大的target。
其他还需要注意的点:

  1. 匹配机制:首先,保证每个ground truth和一个anchor box匹配上(评判标准是最大的jaccard overlap);然后,将jaccard overlap值大于0.5的anchor box与ground truth也匹配上。也就是说,对于每个ground truth,至少有一个anchor box能匹配上。
  2. 损失函数分析:SSD的损失函数为,可见损失函数包含2项——置信误差和定位误差。定位误差公式是,可见定位误差只考虑了正样本(有object的anchor box)。置信误差公式是,其中,置信误差就是计算了正负样本的交叉熵,正样本考虑了粗分类误差(是否有object)和细分类误差(object具体类别),负样本只考虑了粗分类误差。
  3. 对比下SSD和YOLO的区别\begin{array}{|c|c|c|} \hline 比较项 & SSD & YOLO \\ \hline 匹配机制 & 一个ground \; truth至少匹配一个anchor \; box & 一个ground \; truth只能匹配一个anchor \; box \\ \hline 正负样本失衡问题 & 对负样本抽样 & 为负样本的置信误差加上权重\\ \hline \end{array}注:SSD负样本采样机制——按照置信度误差(预测背景的置信度越小,误差越大)进行降序排列,选取误差的较大的top-k作为训练的负样本,以保证正负样本比例接近1:3(也就是每次选择最容易误判的负样本)。

你可能感兴趣的:(目标检测学习总结之SSD)