这个问题是关于寻找如何在 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 模拟器上使用 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
如果由于支持有限,TFLite 不适用于您的型号,您可以使用
Select TensorFlow ops
功能。 https://www.tensorflow.org/lite/guide/ops_select
它允许您在 TFLite 中使用 TF 操作,因此您可以克服 TFLite 有限的 5D 支持,但它会影响您的二进制大小。