,ssd是之前看的论文,但记性太差理解力太差,忙一段时间别的事,之前看过的就差不多忘光了。。。故做一个记录贴,以便加深记忆和理解。
目前基于深度学习的目标检测算法主要分为两类,分别是one-stage和two-stage,其中,two-stage算法典型算法有R-CNN,先通过启发式方法或者CNN网络产生一系列稀疏的候选框,然后对这些候选框进行分类与回归;one-stage典型算法有SSD和yolo系列算法,很明显的可以从名字看出,是通过单个神经网络完成bounding box和class的预测,一步到位。相对的,two-stage的准确率就会较高,one-stage的速度会较快。
网络结构
SSD的基础网络部分采用了VGG16,并且在其基础上有进一步的改进,
(1)将全连接层FC6和FC7变成了两个分别为33和11的卷积层,
(2)后续层移除,新加了4个卷积层
(3)池化层pool5由原来的2×2−s2变成3×3−s1
(4)conv6层卷积层采用了空洞卷积
其中,将VGG16的6个层作为用于检测的6个特征图,都将用于对bounding box和class进行预测,分别为Conv4_3,Conv7,Conv8_2,Conv9_2,Conv10_2,Conv11_2,大小分别是(38,38),(19,19),(10,10),(5,5),(3,3),(1,1)。
大尺度特征图用于检测小目标,小尺度特征图用于检测大目标
这个理解方法是从B站一个大佬的视频中学来的!
在如上图例中,目标为检测两个特征图中的长方形。
第一张图为8×8大小的特征图,其中有两个长方形;第二张图中为4×4大小的特征图,其中有一个长方形。现假设利用第三张图中的卷积核进行卷积,如果卷积结果为3,则认为检测到所需长方形。
若每个feature map中的每个小格中数为1,通过加权求和的卷积运算,在第一张图中,橙色的长方形与卷积核卷积后的结果为2;而蓝色长方形与卷积核卷积后的结果为3,因此在8×8的特征图中,检测到了相对较小的一个长方形。将8×8的特征图通过pooling操作得到第二张图中4×4的特征图ÿ