SSD和SSD Lite有什么不同?(Tensorflow)

时间:2018-06-04 06:24:08

标签: python tensorflow

我已阅读论文MobileNetV2(arXiv:1801.04381​​)

并从Tensorflow model zoo运行模型。

我注意到SSD Lite MobileNetV2的推理时间比SSD MobileNetV2快。

在MobileNetV2论文中,以下句子中只有关于SSD Lite的简短说明:

'我们用可分离的卷积(深度方向)替换所有常规卷积 然后在SSD预测层中进行1×1投影。

所以我的问题是,SSD和SSD Lite有什么区别?

我不明白其中的区别,因为当MobileNetV1(arXiv:1704.04861v1)发布并应用于SSD时,它已经将所有卷积层替换为上面提到的深度可分卷积。

2 个答案:

答案 0 :(得分:3)

正如已经指出的答案之一,配置中的主要区别是box_predictor和feature_extractor的两个use_depthwise选项。基本的更改已经在代码库中实现,它基本上将SSD层中的所有常规卷积和最后一个box + class预测层替换为深度+点向可分离卷积。我们的MobilenetV2论文中介绍了理论参数和触发器保存。

也要回答@Seongkyun Han的问题,我们没有在v1论文中替换SSD层中的所有conv(只有属于mobilenet的所有层都是可分离的conv)。

答案 1 :(得分:2)

令人沮丧的是,所有对SSDLite的搜索都会导致“我们称之为SSDLite的新颖框架”,因此我期待有一个结果。但是,我怀疑SSDLite只能通过对通用SSD模型文件进行一次修改(kernel_size)和两次添加(use_depthwise)来实现。

比较模型文件 ssd_mobilenet_v1_coco.config sdlite_mobilenet_v2_coco.config 会产生以下结果:

model {
  ssd {
    box_predictor {
      convolutional_box_predictor {
        kernel_size: 3
        use_depthwise: true
      }
    }
    feature_extractor {
      use_depthwise: true
    }
  }
}

我必须尝试一下。