Convert_model.tflite не кодирует допустимую модель TensorFlowLite: не удалось открыть file_path. Модель не является допустимым файлом Flatbuffer.

Я пытаюсь загрузить converted_tflite.tflite из каталога активов.
У меня выдает ошибку java.lang.IllegalArgumentException: Contents of /file:/android_asset/converted_model.tflite does not encode a valid TensorFlowLite model: Could not open '/file:/android_asset/converted_model.tflite'.The model is not a valid Flatbuffer file

File file = new File("file:///android_asset/converted_model.tflite");
        try (Interpreter interpreter = new Interpreter(file)) {
            interpreter.run(inputData, output);
            Log.d("TF LOG", output);
        }catch(Exception e){
            e.printStackTrace();
}

Что я пробовал на основе ответов stackoverflow

aaptOptions {
    noCompress "tflite"
}

tensoflow-lite ночная версия

implementation 'org.tensorflow:tensorflow-lite:0.1.2-nightly'
3 метода стилизации элементов HTML
3 метода стилизации элементов HTML
Когда дело доходит до применения какого-либо стиля к нашему HTML, существует три подхода: встроенный, внутренний и внешний. Предпочтительным обычно...
Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
0
0
3 802
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Как показывает ошибка model is not a valid Flatbuffer file. В вашей реализации модель выглядит как File. Предполагается, что он должен быть преобразован в файл flatbuffer, как показано ниже:

FileInputStream f_input_stream= new FileInputStream(new File("file:///android_asset/converted_model.tflite"));
FileChannel f_channel = f_input_stream.getChannel();
MappedByteBuffer tflite_model = f_channel.map(FileChannel.MapMode.READ_ONLY, 0, f_channel .size());

И затем вы можете использовать это tflite_model для создания интерпретатора tflite как New Interpreter(...).

все еще получаю ошибку Caused by: java.lang.IllegalArgumentException: ByteBuffer is not a valid flatbuffer model at org.tensorflow.lite.NativeInterpreterWrapper.createModelWith‌​Buffer(Native Method) at org.tensorflow.lite.NativeInterpreterWrapper.<init>(NativeIn‌​terpreterWrapper.jav‌​a:59) at org.tensorflow.lite.Interpreter.<init>(Interpreter.java:224) at org.tensorflow.lite.Interpreter.<init>(Interpreter.java:212)

Lalit Sharma 26.05.2019 08:09

Можете ли вы обновить свой вопрос с версией tensorflow? и часть скрипта, которая выдает эту ошибку.

Krunal V 27.05.2019 08:21
implementation 'org.tensorflow:tensorflow-lite:0.1.2-nightly' Тем не менее, у меня это сработало.
Lalit Sharma 27.05.2019 08:30
Ответ принят как подходящий

Я использовал градацию сборки tensorflow-nighty версии 0.1.2.

    implementation 'org.tensorflow:tensorflow-lite:0.1.2-nightly'

Чтобы загрузить модель

/** Memory-map the model file in Assets. */
private static MappedByteBuffer loadModelFile(AssetManager assets, String modelFilename)
        throws IOException {
    AssetFileDescriptor fileDescriptor = assets.openFd(modelFilename);
    FileInputStream inputStream = new FileInputStream(fileDescriptor.getFileDescriptor());
    FileChannel fileChannel = inputStream.getChannel();
    long startOffset = fileDescriptor.getStartOffset();
    long declaredLength = fileDescriptor.getDeclaredLength();
    return fileChannel.map(FileChannel.MapMode.READ_ONLY, startOffset, declaredLength);
}

Я пробовал это, но получил ошибку: Could not find org.tensorflow:tensorflow-lite-gpu:0.1.2-nightly. Required by: project :app

FFT 26.08.2020 00:56

В дополнение к существующим ответам, если вы создали модель tflite с последней версией Tensorflow (2.4.0) и столкнулись с аналогичной проблемой, добавьте следующую строку в зависимости файла build.gradle.

implementation 'org.tensorflow:tensorflow-lite:2.4.0'

и используйте функцию, предоставленную @LalitSharma, для загрузки модели из каталога «активы».

Можно найти самый последний выпуск здесь https://bintray.com/google/tensorflow/tensorflow-lite

Другие вопросы по теме