cnn经典网络-SSD

参考:https://blog.csdn.net/a8039974/article/details/77592395

            https://blog.csdn.net/ytusdc/article/details/86577939

结构:

SSD以vgg16为基网络,SSD采用了特征金字塔的结构进行检测,即检测时利用了conv4-3,conv-7(FC7),conv6-2,conv7-2,conv8_2,conv9_2这些大小不同的feature maps上同时进行softmax分类和位置回归进行预测,不同的特征层的feature map上的每个点同时获取6个(有的层是4个)不同的prior Box,然后将这些8732个prior Box结合起来,最后经过NMS处理获得最后的BBox。

SSD采用VGG16作为基础模型,并且做了以下修改:

  • 将VGG16的全连接层FC6和FC7转换成 3x3 的卷积层 Conv6和 1x1 的卷积层Conv7。
  • 去掉所有的Dropout层和FC8层
  • 同时将池化层pool5由原来的 stride=2 的 2x2 变成stride=1的 3x3 (猜想是不想reduce特征图大小)
  • 添加了Atrous算法(hole算法),目的获得更加密集的得分映射
  • 然后在VGG16的基础上新增了卷积层来获得更多的特征图以用于检测

 

优点:

  1. 提取了不同尺度的特征图来做检测,SSD使用低层feature map检测小目标,使用高层feature map检测大目标。提高检测的精度。

特点:

在faster RCNN与YOLO之后提出来,

  1. 从YOLO中继承了将detection转化为regression的思路,同时一次即可完成网络训练
  2. 基于Faster RCNN中的anchor,提出了相似的prior box
  3. 加入基于特征金字塔(Pyramidal Feature Hierarchy)的检测方式,相当于半个FPN思路

缺点:

  1. 需要人工设置prior box的min_size,max_size和aspect_ratio值。网络中prior box的基础大小和形状不能直接通过学习获得,而是需要手工设置。而网络中每一层feature使用的prior box大小和形状恰好都不一样,导致调试过程非常依赖经验。
  2. 虽然采用了特征金字塔的思路,但是对小目标的recall依然一般,并没有达到碾压Faster RCNN的级别。作者认为,这是由于SSD使用conv4_3低级feature去检测小目标,而低级特征卷积层数少,存在特征提取不充分的问题。
  3. SSD正负样本不均衡。正负样本区分:(通过定位信息(iou)初步划分,而后通过loss把hard example留下,loss越大越hard)。在训练时会依据confidience score排序default box,挑选其中confidience高的box进行训练,控制positive:negative=1:3。
posted @ 2021-05-13 14:29  谷阿幻  阅读(334)  评论(0编辑  收藏  举报