tensorflow - SSD Inception v2。 VGG16 特征提取器是否被 Inception v2 取代?

标签 tensorflow machine-learning deep-learning object-detection object-detection-api

原文SSD论文中他们使用了 VGG16 网络来进行特征提取。我使用的是 TensorFlow 模型库中的 SSD Inception v2 模型,我不知道架构上有什么区别。这个stack overflow post建议对于 SSD MobileNet 等其他模型,将 VGG16 特征提取器替换为 MobileNet 特征提取器。

我认为 SSD Inception 的情况也是如此,但是 this paper让我很困惑。从这里看来,Inception 被添加到模型的 SSD 部分,而 VGG16 特征提取器保留在架构的开头。 Figure from the paper - Inception Single Shot MultiBox Detector for object detection

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 提高了分类精度

现在问题应该很清楚了,带有 vgg16inceptioin_v2mobilenet 的 ssd 型号都可以,但是 inception 论文中仅指 Inception 区 block ,而非 Inception 网络。

关于tensorflow - SSD Inception v2。 VGG16 特征提取器是否被 Inception v2 取代?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56341240/

相关文章:

python - 无法使用 PyCharm 和 venv 导入 TF

python - 在自定义图像数据集上获取 InvalidArgumentError : NewRandomAccessFile failed to Create/Open while working with tf. 数据

tensorflow - 如何在 tensorflow tfrecords 中增加数据?

python - tensorflow - FutureWarning

python - 如何在 tensorflow 中累加1到10?

machine-learning - 在机器学习中,可以采取哪些措施来限制所需训练样本的数量?

machine-learning - 无法理解 Keras ConvLSTM2D - 已编辑

c++ - 咖啡转换图像集 : symbol lookup error

python - 禁用 `@tf.function` 装饰器进行调试?

python - 从 6GB csv 文件采样,无需在 Python 中加载