将TFLiteTensorFlow转换为MLModelApple

问题描述

我正在尝试将TFLite Face Mesh模型转换为MLModel(Apple)。

TFLite模型说明: https://drive.google.com/file/d/1VFC_wIpw4O7xBOiTgUldl79d9LA-LsnA/view

TFLite实际的.tflite文件https://github.com/google/mediapipe/blob/master/mediapipe/models/face_landmark.tflite

看似由Apple(https://coremltools.readme.io/docs/introductory-quickstart)提供的CoreMLTools似乎是可行的,但是所有示例代码都演示了来自Keras而非来自TFLite的对话(尽管显然受到支持):

enter image description here

如何将TFLite模型转换为MLModel模型?

解决方法

据我所知,没有从TFLite到Core ML的直接转换。有人可以创建这样的转换器,但显然没有人。

两个选项:

  1. 自己动手做。有一个Python API可以读取TFLite文件(flatbuffers)和一个可以写入Core ML文件的API(coremltools中的NeuralNetworkBuilder)。逐一浏览TFLite模型的各层,然后将它们添加到NeuralNetworkBuilder中,然后另存为.mlmodel文件。

  2. 让TFLite为您做到这一点。当您在TFLite中使用CoreMLDelegate时,实际上它会即时执行模型转换并保存一个.mlmodel文件(或已编译的版本.mlmodelc)。然后,它使用Core ML运行此模型。您可以编写一些代码来使用CoreMLDelegate用TFLite加载模型,然后获取从应用程序捆绑包创建的.mlmodel文件并使用它。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...