安卓MLKit - 在执行Firebase ML任务时出现了内部错误

11

嗨,我有一个在Android应用中使用的自定义模型,但是当我尝试运行它时,会抛出MLkitExceptions异常,该错误的日志输出如下:

Internal error has occurred when executing Firebase ML tasks

我的应用程序的Java代码如下:

FirebaseLocalModel localModel = new FirebaseLocalModel.Builder("local_places_recommend")
                .setAssetFilePath("recsys.tflite").build();

FirebaseModelManager.getInstance().registerLocalModel(localModel);



FirebaseModelOptions options = new FirebaseModelOptions.Builder()
                .setLocalModelName("local_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, 1, 34})
                .build();

float[][] input = new float[1][3];

input[0][0] = d1;
input[0][1] = d2;
input[0][2] = d3;


FirebaseModelInputs inputs = new FirebaseModelInputs.Builder()
                .add(input)
                .build();
每当我尝试运行FirebaseModelInterpreter时,我就会收到该错误信息,除此之外没有别的提示。 输入张量和输出张量的形状分别如下:
[1 3]
<class 'numpy.float32'>
[ 1  1 34]
<class 'numpy.int64'>
任何关于此问题的帮助或见解将不胜感激。
4个回答

20
如果您正在使用CameraX,可能会遇到此错误。
I/CameraXBasic: Internal error has occurred when executing ML Kit tasks 
请确保在 MLKit 操作完成后,关闭 analyze 函数中的 ImageProxy 和 image。以下是一个简短的代码片段:
override fun analyze(imageProxy: ImageProxy) {

     val image:Image? = imageProxy.image

     image?.let {img->
               val iImage = InputImage
                 .fromMediaImage(img,imageProxy.imageInfo.rotationDegrees)
                textRecognizer.process(iImage)
                    .addOnSuccessListener { listener(it)}
                    .addOnFailureListener { Log.i(TAG,it.toString()) }
                    .addOnCompleteListener {
                        image.close()
                        imageProxy.close() }
     }

}

如果图像为空,关闭代理怎么样? - ceving

2

0
  1. 你需要为cameraX添加上述回调函数

  2. 更新功能依赖项,以通过以下硬件功能的必要检查来运行应用程序。


0
我曾经遇到过同样的问题,因为我的版本控制更改了我的tflite模型,但没有更新我的代码。我的模型输入形状是错误的。 我只更改了:
val inputOutputOptions = FirebaseModelInputOutputOptions.Builder()
                .setInputFormat(0, FirebaseModelDataType.FLOAT32, intArrayOf(1, **RightSize, RightSize**, 3))
                .setOutputFormat(0, FirebaseModelDataType.FLOAT32, intArrayOf(1, 4))
                .build()

来源:https://github.com/tensorflow/tensorflow/issues/30187


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接