原文SSD论文中他们使用了 VGG16 网络来进行特征提取。我使用的是 TensorFlow 模型库中的 SSD Inception v2 模型,我不知道架构上有什么区别。这个stack overflow post建议对于 SSD MobileNet 等其他模型,将 VGG16 特征提取器替换为 MobileNet 特征提取器。
我认为 SSD Inception 的情况也是如此,但是 this paper让我很困惑。从这里看来,Inception 被添加到模型的 SSD 部分,而 VGG16 特征提取器保留在架构的开头。
SSD Inception v2模型的架构是怎样的?
最佳答案
在tensorflow对象检测api中,ssd_inception_v2模型使用inception_v2
作为特征提取器,即替换第一张图(图(a))中的vgg16
部分与inception_v2
。
在SSD模型中,由特征提取器
提取的特征层(即vgg16、inception_v2、mobilenet)将被进一步处理以产生不同分辨率的额外特征层。上图(a)中,有6个输出特征层,前两个(19x19)直接取自特征提取器。其他 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
操作,这表示这些额外的层是通过额外的卷积层获得的(每层只有一层!)。
现在我们可以解释您链接的论文中的改进内容。 他们建议用初始 block 替换额外的特征层。没有 inception_v2
模型,而只是一个 inception block 。 论文报告了通过使用 inception block 提高了分类精度。
现在问题应该很清楚了,带有 vgg16
、inceptioin_v2
或 mobilenet
的 ssd 型号都可以,但是 inception 论文中仅指 Inception 区 block ,而非 Inception 网络。
关于tensorflow - SSD Inception v2。 VGG16 特征提取器是否被 Inception v2 取代?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56341240/