#python #tensorflow #tensorflow2.0 #coreml #coremltools
#python #tensorflow #tensorflow2.0 #coreml #coremltools
Вопрос:
Я пытаюсь преобразовать модель лицевой сетки TFLite в 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
Смотрим на CoreMLTools, предоставляемые Apple (https://coremltools.readme.io/docs/introductory-quickstart ) кажется, что это возможно, но все примеры кодов демонстрируют диалог из Keras
, а не из TFLite
(хотя это явно поддерживается):
Как преобразовать модель TFLite в модель MLModel?
Ответ №1:
Насколько я знаю, прямого преобразования из TFLite в Core ML не существует. Кто-то мог бы создать такой конвертер, но, по-видимому, ни у кого нет.
Два варианта:
-
Сделайте это сами. Существует Python API для чтения файла TFLite (flatbuffers) и API для записи основных файлов ML (NeuralNetworkBuilder в coremltools). Пройдите по слоям модели TFLite один за другим и добавьте их в NeuralNetworkBuilder, затем сохраните как файл .mlmodel.
-
Позвольте TFLite сделать это за вас. Когда вы используете CoreMLDelegate в TFLite, он фактически выполняет преобразование модели «на лету» и сохраняет файл .mlmodel (или скомпилированную версию, .mlmodelc). Затем он использует Core ML для запуска этой модели. Вы можете написать некоторый код для загрузки модели с помощью TFLite, используя CoreMLDelegate, затем возьмите файл .mlmodel, созданный этим из пакета приложений, и используйте его.
Комментарии:
1. Я пробую второй подход, пока безуспешно. Можете ли вы подсказать мне, как получить mlmodel? Я запускаю этот проект ( github.com/rusito-23/CartoonGan-iOS ) в качестве примера. Находится ли это в каталоге simulator или я должен увидеть это в Xcode (аналогично .app в разделе products?)?
2. Я не знаю, где это хранится. Хм, похоже на временный файл. Код находится здесь, в
saveModel
: github.com/tensorflow/tensorflow/blob /…3. @RoiMulia Привет, ты можешь получить модель coreml из TFLite? По какому пути он сохраняется?
4. Я попытался выполнить 2-й вариант, я получаю несколько файлов .mlmodelc в каталоге tmp. Как мне объединить их в одну .mlmodel?
Ответ №2:
По состоянию на 2023 год, я думаю, существует старый способ преобразования tflite в модель coreml. Сначала вам нужно преобразовать его в onnx-модель. Подробная инструкция здесь:https://github.com/zhenhuaw-me/tflite2onnx . Этот инструмент может содержать недостаточно операций глубокого обучения. Если вы обнаруживаете ошибки, возможно, вам захочется попробовать Microsoft tf2onnx с флагом «—tflite». После этого вы можете преобразовать его в coreml. К сожалению, Apple устарела от поддержки модели onnx в coremltool версии 6, вместо этого вам нужно будет использовать версию 5. Удачи