SSD的网络结构能否详细讲一下,和VGG对比的差别具体在哪里?

来源:3-1 SSD系列算法介绍(主干网络、多尺度Feature Map预测)

慕莱坞6319307

2019-10-07

SSD的结构在VGG16网络的基础上进行修改,训练时同样为conv1_1,conv1_2,conv2_1,conv2_2,conv3_1,conv3_2,conv3_3,conv4_1,conv4_2,conv4_3,conv5_1,conv5_2,conv5_3(512),是不是继承了Vgg16 fc之前的所有的结构,然后后面做具体的修改?
具体修改的每一层的输入是啥,padding和stride具体都是多少?

写回答

1回答

会写代码的好厨师

2019-10-09

首先,SSD是一种目标检测框架结构,VGG是一种分类网络的结构。这两者存在很大的区别。

在SSD的框架结构中,可以简单的理解为它包括了特征提取的模块和检测的模块(Anchor和bbox回归和分类的部分),SSD中使用了VGG的部分是指特征提取的模块使用了VGG结构来进行特征提取。拿到不同的尺度的featuremap来作为检测模块的输入。

这里的重点是拿到不同尺度的feature map。拿到不同尺度的feature map可以使用VGG,也可以使用resnet等,任意的卷积神经网都可以。

再来看SSD用了VGG的哪些层?在最原始的SSD中,使用了前5个block提取特征,对应feature map的大小分别是

300(输入图片)->300->150->75->38->19->10->5->3->1,后面几个卷积层是通过:https://github.com/lzx1413/CAFFE_SSD/blob/master/python/caffe/model_libs.py

中的def AddExtraLayers(net, use_batchnorm=True, lr_mult=1)添加的。

具体抽取那一层的Feature map作为检测层的输入,则是在配置文件中指定。

再来看上面尺度的变化,检测层使用的是38-->1这6个尺度。

具体如何pad和设置stride,可以直接看这个文件

https://github.com/weiliu89/caffe/tree/ssd/python/caffe/model_libs.py

中的VGGNetBody函数

//img1.sycdn.imooc.com/szimg/5d9d5ede09d3b24909380734.jpg





0
0

深度学习之目标检测常用算法原理+实践精讲

从原理到场景实战,掌握目标检测核心技术

878 学习 · 221 问题

查看课程