SSD
动机
继YOLOv1之后的one stage检测方法,想要解决的是小目标在Yolo单阶段中召回不足的问题,然后就有了SSD。
方法概要
-
SSD使用了多尺度的feature进行最后的预测任务。具体来说,在浅层的,分辨率交高的featuremap和越往后越深的layer的featuremap中同时进行回归预测。他的预测也是anchor-based的,在每个featuremap中针对每个point产生ratio和scale不同的anchor,然后通过和GT物体计算IOU,通过IOU阈值为anchor分配要负责检出的物体。那么在不同size的featuremap中都会进行这样的逐点多框回归,其中这些框有正样本,有负样本。经过这样密集的多尺度预测后,最终把所有结果整合在一起。
-
Loss的设计上,还是和双阶段的loss是一样的,所要预测的量是相对于anchor的相对值,不管是在xy还是在wh上,具体公式如下:
细节及注意事项
- 在为物体分配好正负样本的anchor后,在最后计算loss反传梯度时也有一定的hard mining策略,具体的,所有的anchor正负样本会进行置信度score的排序,然后通过score得分,帅选出得分较高的bbox进行学习,保证参与loss计算的正负样本的个数在1:3.
- 数据增广:用的还是比较朴素的aug方法,将原始图片缩小后进行检测,补充数据集中小目标物体的个数。
评价
- 整体上是规避了Yolov1的问题,方案就是密集回归撞大运,最后对小目标物体的检出量其实也不敢说就非常有保障,原因在于小目标的检出结果大多源自浅层featuremap的贡献,这样提取不充分的特征做回归难免会有问题。
- 每一个尺度的featuremap上的anchor们的size和ratio都需要人工指定,细调时比较靠经验。
- 其实在label assignment的时候也可以拿现在的眼光来看问题,把正负样本的分配考虑的再好一些。