为什么在 deeplab 中 xception_71 推理时间比 xception_65 快?

Why is xception_71 inference time faster than that of xception_65 in deeplab?

我正在使用基于 xception_65 和 xception_71 架构的预训练(在 cityscapes 数据集上)DeepLab 模型进行语义分割推理。我观察到:

    与 xception_71. 相比,
  1. xception_65 在创建分割掩码方面更好
  2. xception_71 明显快于 xception_65.

因为 xception_71 有 71 层,比 xception_65 中的层数(65 层)多,它不应该有更长的推理时间吗?或者我哪里错了?

(xception_65 are fewer compared to that in xception_71中的块数)

您可以在 colab:segmentation_deeplab.ipynb 查看代码以重现结果。

%%time

print('Model:', MODEL_NAME)
seg_map = MODEL.run(original_im)

xception_65

Model: xception65_cityscapes_trainfine
CPU times: user 1.08 s, sys: 815 ms, total: 1.89 s
Wall time: 1.71 s

xception_71

Model: xception71_cityscapes_trainfine
CPU times: user 146 ms, sys: 28 ms, total: 174 ms
Wall time: 649 ms

来自你的笔记本:

_DOWNLOAD_URL_PREFIX = 'http://download.tensorflow.org/models/'
_MODEL_URLS = {
    'xception65_cityscapes_trainfine':
        'deeplabv3_cityscapes_train_2018_02_06.tar.gz',
    'xception71_cityscapes_trainfine':
        'deeplab_cityscapes_xception71_trainfine_2018_09_08.tar.gz',
}

注意 exception65 如何链接到 deeplabv3 tag.gzxeception71 链接到原版 deeplab tar.gz

Deeplab 是 whole series of models。您的 exception65 是一个更小的 backbone,在更新更强大的分段器下,这就是它性能更好的原因。


要确认模型的内容,试试这个(来自 1, 2):

%load_ext tensorboard

def graph_to_tensorboard(graph, out_dir):
  with tf.Session():
    train_writer = tf.summary.FileWriter(out_dir)
    train_writer.add_graph(graph)


graph_to_tensorboard(MODEL.graph, out_dir="logs")

%tensorboard --logdir logs