问题描述
我将模型训练为: https://www.google.com.au/amp/s/blog.roboflow.com/training-a-tensorflow-object-detection-model-with-a-custom-dataset/amp/ 并将其转换为tflite。然后,我尝试将AI模型放入android APP。我跟着: https://developers.google.com/ml-kit/vision/object-detection/custom-models/android?fbclid=IwAR07uNgzQ2c5PTp13TiPVeKGQsXaJnJR9jzyvtviXCRegFFJlM-_G799TlY 将位图转换为Inputimage对象。并进行所有配置。 我转换了图像,然后加载模型以尝试打印结果:
// getting bitmap of the image
Bitmap photo = (Bitmap) data.getExtras().get("data");
//convert image
Inputimage image = Inputimage.fromBitmap(photo,0);
//load local model
LocalModel localModel =
new LocalModel.Builder()
.setAssetFilePath("mobilenet_v1_1.0_224_quant.tflite")
// or .setAbsoluteFilePath(absolute file path to tflite model)
.build();
// Multiple object detection in static images
CustomObjectDetectorOptions customObjectDetectorOptions =
new CustomObjectDetectorOptions.Builder(localModel)
.setDetectorMode(CustomObjectDetectorOptions.SINGLE_IMAGE_MODE)
.enableMultipleObjects()
.enableClassification()
.setClassificationConfidenceThreshold(0.5f)
.setMaxPerObjectLabelCount(3)
.build();
ObjectDetector objectDetector =
ObjectDetection.getClient(customObjectDetectorOptions);
objectDetector
.process(image)
.addOnFailureListener(e -> {System.out.println(e.getMessage());})
.addOnSuccessListener(results -> {
for (Detectedobject detectedobject : results) {
Rect boundingBox = detectedobject.getBoundingBox();
Integer trackingId = detectedobject.getTrackingId();
for (Detectedobject.Label label : detectedobject.getLabels()) {
String text = label.getText();
int index = label.getIndex();
float confidence = label.getConfidence();
System.out.println(text);
System.out.println(index);
System.out.println(confidence);
}
System.out.println(boundingBox);
System.out.println(trackingId);
}
});
但是我遇到了错误:
“无法初始化检测器。的尺寸意外 输出索引0:具有3D,预期为2D。“
你有什么主意吗 关于这个问题?非常感谢,如果您能给我一些解决方案。
完整错误:
E/native: calculator_graph.cc:776 INVALID_ARGUMENT: Calculatorgraph::Run() Failed in Run:
Calculator::open() for node "[BoxClassifierCalculator,BoxClassifierCalculator with output stream: detection_results0]" Failed: #vk Unexpected number of dimensions for output index 0: got 3D,expected either 2D (BxN with B=1) or 4D (BxHxWxN with B=1,W=1,H=1).
pipeline_jni.cc:62 Calculatorgraph::Run() Failed in Run:
Calculator::open() for node "[BoxClassifierCalculator,H=1).
E/native: pipeline_jni.cc:209 Graph has errors:
Calculator::open() for node "[BoxClassifierCalculator,H=1).
E/MobileVisionBase: Error preloading model resource
com.google.mlkit.common.MlKitException: Failed to initialize detector. Unexpected number of dimensions for output index 0: got 3D,H=1).
at com.google.mlkit.vision.vkp.PipelineManager.start(com.google.mlkit:vision-internal-vkp@@16.0.0:68)
at com.google.mlkit.vision.objects.custom.internal.zzd.load(com.google.mlkit:object-detection-custom@@16.0.0:79)
at com.google.mlkit.common.sdkinternal.ModelResource.zza(com.google.mlkit:common@@16.0.0:22)
at com.google.mlkit.common.sdkinternal.zzn.call(com.google.mlkit:common@@16.0.0)
at com.google.mlkit.common.sdkinternal.zzm.run(com.google.mlkit:common@@16.0.0:5)
at com.google.mlkit.common.sdkinternal.zzq.run(com.google.mlkit:common@@16.0.0:3)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at com.google.android.gms.internal.mlkit_common.zzb.dispatchMessage(com.google.mlkit:common@@16.0.0:6)
at android.os.Looper.loop(Looper.java:154)
at android.os.HandlerThread.run(HandlerThread.java:61)
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)