Android FirebaseML - Локальная модель не зарегистрирована: - PullRequest
0 голосов
/ 19 мая 2019

Привет, я создаю приложение для личного проекта. Я хочу использовать модель (.tflite), размещенную в Firebase MLKit, в моем приложении для Android.

Всякий раз, когда я хочу обратиться к своей модели, я вызываю функцию, которая содержит следующий код:

FirebaseModelDownloadConditions.Builder conditionsBuilder = new FirebaseModelDownloadConditions.Builder().requireWifi();

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
      conditionsBuilder = conditionsBuilder
             .requireCharging()
             .requireDeviceIdle();
}

FirebaseModelDownloadConditions conditions = conditionsBuilder.build();

FirebaseRemoteModel cloudSource = new FirebaseRemoteModel.Builder("places-recommend")
        .enableModelUpdates(true)
        .setInitialDownloadConditions(conditions)
        .setUpdatesDownloadConditions(conditions)
        .build();

FirebaseModelManager.getInstance().registerRemoteModel(cloudSource);

FirebaseModelOptions options = new FirebaseModelOptions.Builder()
        .setRemoteModelName("places-recommend")
        .setLocalModelName("places-recommend")
        .build();

FirebaseModelInterpreter firebaseInterpreter = FirebaseModelInterpreter.getInstance(options);

FirebaseModelInputOutputOptions inputOutputOptions =
        new FirebaseModelInputOutputOptions.Builder()
                .setInputFormat(0, FirebaseModelDataType.FLOAT32, new int[]{1, 3})
                .setOutputFormat(0, FirebaseModelDataType.FLOAT32, new int[]{1, 34})
                .build();

Однако строка интерпретатора:

FirebaseModelInterpreter firebaseInterpreter = FirebaseModelInterpreter.getInstance(options);

выдает исключение FirebaseMLEx:

Local model is not registered: places-recommend

Я следую руководству Firebase, но пока не нашел решения, любая помощь будет признательна.

1 Ответ

1 голос
/ 24 мая 2019

Вы, кажется, зарегистрировали удаленную модель, но не локальную.Когда вы объявляете свою модель options, вы пытаетесь setLocalModelName, но модель не была зарегистрирована.Добавьте следующую строку прямо перед установкой переменной options:

FirebaseModelManager.getInstance().registerLocalModel(localSource);

В качестве альтернативы, если вам не нужно использовать локальную модель и вы хотите использовать только ту, которую выопубликовав через консоль Firebase, вы можете удалить следующую строку: .setLocalModelName("places-recommend")

...