我在这里尝试了高通提供的例子:
https://github.com/globaledgesoft/deeplabv3-application-using-neural-processing-sdk
它说,在GPU16上需要31ms才能完成这段代码:
// [31ms on GPU16, 50ms on GPU] execute the inference
outputs = mNeuralnetwork.execute(mInputTensorsMap);对于我来说,同样的例子需要14秒。我正在使用open-q 845 hdk开发工具包.
我问我的教授,他说我正在安装的应用程序不受开发工具包固件的信任,这就是为什么我需要这么多时间来执行。他建议我用我的应用程序作为系统应用程序来重建固件。还有什么其他原因吗?
发布于 2019-09-19 12:49:28
是的,这很让人困惑,我遇到了同样的问题。我注意到的是,在我的设备上,ResizeBilinear_2和ArgMax至少要花费大量的时间。如果禁用CPU回退,您将看到ResizeBilinear_2实际上是不受支持的,因为在deeplab实现中他们使用了align_corner=true。
如果你选择ResizeBilinear_1作为输出层,那么推理时间就会有一个很大的改善,因为你没有双线性调整层和argmax,这需要你自己去实现。
但是即使在那时,使用gpu I也只能达到200 ms的运行时。使用DSP,我确实获得了大约100毫秒。
还请确保您的工具包中有opencl支持,否则gpu运行时将无法运行afaik。
附带注意:我目前还在用deeplab + snpe测试一些东西。我注意到,比较这个和TFLITE委托在输出上有一些不同。虽然SNPE的速度通常是SNPE的两倍,但也存在大量的分割伪影错误,导致模型不可用。看看这个https://developer.qualcomm.com/forum/qdn-forums/software/snapdragon-neural-processing-engine-sdk/34844
到目前为止,我发现,如果你把输出步幅降到16,你不仅会得到两倍的推理速度,而且说的工件似乎不那么明显。当然,这样做会失去一些准确性。祝好运!
https://stackoverflow.com/questions/57963584
复制相似问题