如何在没有 TF Lite 且不使用服务器的情况下在 Android 上部署张量流模型

问题描述 投票:0回答:2

这个问题是关于寻找如何在 Android 设备上运行经过训练的模型的解决方案,而不使用转换 TF Lite 且不使用外部服务。

我不拥有该模型,无法修改它。我只有经过训练的保存模型文件。

设备不在网络中,应嵌入经过训练的模型。无法连接到外部服务器。

Tensorflow Lite 不是一个选项,因为 TF Lite 不支持 5D 张量:https://github.com/tensorflow/tensorflow/issues/56946

为了进行测试,我将获取我在上述张量流问题中提供的基本模型来进行测试。

我找到了这篇博客文章,但还没有成功:https://medium.com/@vladislavsd/undocumented-tensorflow-c-api-b527c0b4ef6

您知道有什么更新的解决方案可以在 Android 上的 Java 或 C++ 库中加载模型吗?

Tensorflow 在其 GitHub 上没有提出任何示例:https://github.com/tensorflow/tensorflow/tree/master/tensorflow/examples/android

android tensorflow neural-network onnx
2个回答
1
投票

我已成功在 Android 模拟器上使用 5D 张量部署经过训练的模型。

为了做到这一点,我使用转换器将我的模型从 Tensorflow 转换为 ONNX:https://github.com/onnx/tensorflow-onnx

python -m tf2onnx.convert --saved-model tensorflow-model-path --output model.onnx

然后我创建了一个 C++ 库,它从转换后的文件加载 ONNX 模型并调用它。

为了复制手机存储上的资产,我遵循了这个主题:https://stackoverflow.com/a/69941051/12851157

您可以在此处找到 ONNX 示例:https://github.com/microsoft/onnxruntime-inference-examples/tree/main/c_cxx

最后我在 Android 中集成了 C++ 库,如下所示:https://github.com/android/ndk-samples/tree/master/hello-libs


0
投票

如果由于支持有限,TFLite 不适用于您的型号,您可以使用

Select TensorFlow ops
功能。 https://www.tensorflow.org/lite/guide/ops_select

它允许您在 TFLite 中使用 TF 操作,因此您可以克服 TFLite 有限的 5D 支持,但它会影响您的二进制大小。

© www.soinside.com 2019 - 2024. All rights reserved.