Как изменить вход объекта java с (1,2,4) на (1,2) в Flutter? - PullRequest
0 голосов
/ 14 апреля 2020

Что ж, я пытаюсь интегрировать модель tflite в мое приложение флаттера, но у меня есть эта ошибка

Причина: java .lang.IllegalArgumentException: Невозможно скопировать между тензором TensorFlowLite с формой [1, 2] и Java объект с формой [1, 2, 4].

Я думаю, что я должен изменить ввод объекта java с (1,2,4) на (1,2), но не знаю, есть ли у кого-нибудь идея, как я могу это исправить?

предсказание (изображение файла) asyn c {if (image == null) return;

if (_model == detect) {

  await ssdMobileNet(image);
}

FileImage(image)
    .resolve(ImageConfiguration())
    .addListener((ImageStreamListener((ImageInfo info, bool _) {
  setState(() {
    _imageWidth = info.image.width.toDouble();
    _imageHeight = info.image.height.toDouble();
  });
})));

setState(() {
  _image = image;
  _busy = false;
});

}

ssdMobileNet(File image) async {
var recognitions = await Tflite.detectObjectOnImage(
    path: image.path, numResultsPerClass: 1);

setState(() {
  _recognitions = recognitions;
});

}

И это сообщение об ошибке

E/AndroidRuntime(25515): Caused by: java.lang.IllegalArgumentException: Cannot copy between a TensorFlowLite tensor with shape [1, 30] and a Java object with shape [1, 30, 4].
E/AndroidRuntime(25515):    at org.tensorflow.lite.Tensor.throwIfShapeIsIncompatible(Tensor.java:342)
E/AndroidRuntime(25515):    at org.tensorflow.lite.Tensor.throwIfDataIsIncompatible(Tensor.java:305)
E/AndroidRuntime(25515):    at org.tensorflow.lite.Tensor.copyTo(Tensor.java:183)
E/AndroidRuntime(25515):    at org.tensorflow.lite.NativeInterpreterWrapper.run(NativeInterpreterWrapper.java:166)
E/AndroidRuntime(25515):    at org.tensorflow.lite.Interpreter.runForMultipleInputsOutputs(Interpreter.java:311)
E/AndroidRuntime(25515):    at sq.flutter.tflite.TflitePlugin$RunSSDMobileNet.runTflite(TflitePlugin.java:622)
E/AndroidRuntime(25515):    at sq.flutter.tflite.TflitePlugin$TfliteTask.doInBackground(TflitePlugin.java:419)
E/AndroidRuntime(25515):    at sq.flutter.tflite.TflitePlugin$TfliteTask.doInBackground(TflitePlugin.java:393)
E/AndroidRuntime(25515):    at android.os.AsyncTask$2.call(AsyncTask.java:305)
E/AndroidRuntime(25515):    at java.util.concurrent.FutureTask.run(FutureTask.java:237)
...