1

我已经训练了一个基于 Tensorflow 的模型。该模型应该可以在手机上运行,​​但是在将冻结图(pb)转换为深度学习容器(dlc)时遇到了问题。我必须将输入大小设置为常数。这导致该模型无法使用任何输入大小。我正在尝试找到一种方法来调整 DLC 模型的输入形状的大小,而无需使用“snpe-tensorflow-to-dlc --input_dims 1,512,512,3”初始化模型,因为这种方式很消耗。实际上,我想在 dlc 模型中调整输入形状的大小。有谁能够帮我?

4

1 回答 1

0

通常部署解决方案使用固定的输入形状,因为它们采用一些广泛认可的使用模型——调整所有相同大小的图片并进行推理。由于这种使用模型,部署解决方案的开发人员不会优先考虑模型加载时间,而他们通常会优先考虑推理时间。在 SNPE、OpenVINO、TFLite 等中也会发生同样的情况。

为了说明时间,这里是 Snapdragon 820 的一些结果。将 Inception v3 加载到 CPU 需要 715 毫秒,将模型加载到 DSP 需要 3 秒。CPU 推理需要 1 秒,DSP 推理需要 100ms。您会看到 DSP 上的加载时间比 CPU 上的要长,但推理时间要好得多。

同时,通常允许在加载模型之前更改形状,假设所有输入图片将具有与训练模型的形状不同的大小(但同样,所有图片都相同)。对于 SNPE,它是SNPEBuilder::setInputDimensions 如果模型允许进行重塑并且如果 SNPE 实现中没有错误,则可以重塑和加载模型。

不确定您的使用模型是否符合第一段中描述的愿景。同时,要从不同的输入大小中受益,您需要开发 SNPE 不太可能支持的特殊拓扑。如果您只使用常规 SSD 并将其重塑为不同的大小并在验证集上测量准确性,那么您最有可能在训练模型的 shpaes 上获得最佳结果。

于 2020-07-08T21:36:38.463 回答