tensorflow 标准TFlite对象检测模型在MLKit中不工作

4zcjmb1e  于 2022-12-19  发布在  其他
关注(0)|答案(3)|浏览(210)

如果我在MLKit中使用Pre-Trained TFLite Object detection model,我会收到以下错误:

CalculatorGraph::Run() failed in Run: 
    Calculator::Open() for node "BoxClassifierCalculator" 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).

你知道我做错了什么吗?

izkcnapc

izkcnapc1#

ML Kit目前还不支持自定义对象检测模型。ML Kit目前只允许开发人员使用自定义图像分类模型。所有与ML Kit兼容的TFLite模型都列在这里:
https://tfhub.dev/ml-kit/collections/image-classification/1
如果您想进行对象检测,可以试用ML Kit的对象检测API:https://developers.google.com/ml-kit/vision/object-detection
如果您想使用自定义对象检测模型,您可以尝试TFLite任务库:
https://www.tensorflow.org/lite/inference_with_metadata/task_library/overview .

cgyqldqp

cgyqldqp2#

好吧,因为我发现通过这篇文章在这里的SO,我继续寻找其他的选择。和教程张贴在这里:Tensor Flow Lite OBJ检测很好地完成了这项任务。
首先添加了

implementation 'org.tensorflow:tensorflow-lite-task-vision:0.2.0'

这段简单的代码就像一个护身符,显然我必须做一些改变来反映我的特定需求,但它的检测没有错误。

val image = TensorImage.fromBitmap(bitmap)
val options = ObjectDetector.ObjectDetectorOptions.builder()
    .setMaxResults(5)
    .setScoreThreshold(0.5f)
    .build()
val detector = ObjectDetector.createFromFileAndOptions(
    this, // the application context
    "model.tflite", // must be same as the filename in assets folder
    options
)

在那个链接中给出了更深入的解释,太多了,不能扔在这里。希望这对其他人有帮助。

qjp7pelc

qjp7pelc3#

现在您可以使用Google的Vertex AI/AutoML Cloud服务创建MLKit自定义模型,它可以使用ImageAnalysis Analyzer与CameraX API配合使用。按照here指南,通过浏览器使用您自己的图像创建和训练TFLite模型(或者如果你有很多要上传的话,使用谷歌云CLI)。之后,this guide指导您完成将模型添加到项目中所需的几乎所有内容,以及如何使用MLKit检测和标记对象。

相关问题