【问题标题】:SSD Inception v2. Is the VGG16 feature extractor replaced by the Inception v2?SSD 盗梦空间 v2。 VGG16 特征提取器是否被 Inception v2 取代?
【发布时间】:2019-10-13 22:12:12
【问题描述】:
在原始的SSD 论文中,他们使用 VGG16 网络进行特征提取。我正在使用来自 TensorFlow 模型动物园的 SSD Inception v2 模型,但我不知道架构上有什么区别。这个stack overflow post 建议对于 SSD MobileNet 等其他模型,VGG16 特征提取器被 MobileNet 特征提取器取代。
我认为这与 SSD Inception 的情况相同,但 this paper 让我感到困惑。从这里看来,Inception 被添加到模型的 SSD 部分,而 VGG16 特征提取器保留在架构的开头。
SSD Inception v2 模型的架构是什么?
【问题讨论】:
标签:
tensorflow
machine-learning
deep-learning
object-detection
object-detection-api
【解决方案1】:
在tensorflow object detection api中,ssd_inception_v2模型使用inception_v2作为特征提取器,即将第一图(图(a))中的vgg16部分替换为inception_v2。
在ssd模型中,feature extractor提取的特征层(即vgg16、inception_v2、mobilenet)会被进一步处理,产生额外的不同分辨率的特征层。上图(a)中有6个输出特征层,前两个(19x19)直接取自feature extractor。其他 4 层(10x10、5x5、3x3、1x1)是如何生成的?
它们是由额外的卷积操作生成的(这些卷积操作有点像使用非常浅的特征提取器,不是吗?)。实现细节here提供了很好的文档。在文档中它说
Note that the current implementation only supports generating new layers
using convolutions of stride 2 (resulting in a spatial resolution reduction
by a factor of 2)
这就是额外的特征图如何减少2倍,如果你阅读函数multi_resolution_feature_maps,你会发现slim.conv2d正在使用操作,这表明这些额外的层是通过额外的卷积层获得的(只是每层一层!)。
现在我们可以解释您链接的论文中的改进之处。 他们建议用 inception 块替换额外的特征层。没有inception_v2 模型,而只是一个初始块。 论文报告了通过使用 inception 块提高分类准确度。
现在问题应该很清楚了,带有vgg16、inceptioin_v2 或mobilenet 的ssd 模型没问题,但论文中的inception 仅指inception 块,而不是初始网络。