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函数
00
相似问题