Dan*_*iel 2 machine-learning object-detection deep-learning tensorflow object-detection-api
在最初的SSD论文中,他们使用 VGG16 网络进行特征提取。我正在使用 TensorFlow 模型动物园中的 SSD Inception v2 模型,我不知道架构上的区别是什么。这篇堆栈溢出帖子表明,对于 SSD MobileNet 等其他模型,VGG16 特征提取器被 MobileNet 特征提取器取代。
我认为这与 SSD Inception 的情况相同,但这篇论文让我感到困惑。从这里看来,Inception 被添加到模型的 SSD 部分,而 VGG16 特征提取器保留在架构的开头。
SSD Inception v2 模型的架构是什么?
在tensorflow object detection api中,ssd_inception_v2模型inception_v2用作特征提取器,即vgg16第一图(图(a))中的部分替换为inception_v2。
在ssd模型中,feature extractor(即vgg16,inception_v2,mobilenet)提取的特征层会被进一步处理,产生不同分辨率的额外特征层。在上图(a)中,有6个输出特征层,前两个(19x19)直接取自feature extractor. 其他 4 层(10x10、5x5、3x3、1x1)是如何生成的?
它们是由额外的卷积操作生成的(这些卷积操作有点像使用非常浅的特征提取器,不是吗?)。实现细节在这里提供了很好的文档。在文档中它说
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)
Run Code Online (Sandbox Code Playgroud)
这就是额外特征图减少 2 倍的原因,如果您阅读函数multi_resolution_feature_maps,您会发现slim.conv2d正在使用操作,这表明这些额外的层是通过额外的卷积层获得的(每个层只有一层!)。
现在我们可以解释您链接的论文中的改进之处。他们提议用 inception block 替换额外的特征层。没有inception_v2模型,只有一个初始块。该论文报告了使用初始块提高分类精度。
现在问题应该清楚了,ssd model with vgg16, inceptioin_v2ormobilenet都可以,但是论文中的inception只指inception block,而不是inception network。