Gogole MLKit 模型的处理时间比预期的要长

Gogole MLKit model takes longer than expected to process

提问人:Mary 提问时间:11/17/2023 最后编辑:Mary 更新时间:11/17/2023 访问量:31

问:

我想使用 Google MLKit Android SDK 进行细分,按照其官方教程,我使用最新的 API 版本()制作了这个简单的代码。我在三星 S10+ 上运行,它具有良好的 GPU,官方 MLKit 相机分割应用程序以 25-30 fps 流畅运行。但是,当我计算如下所示的模型处理所需的时间时,它显示几乎 100 毫秒,模型仅返回结果。更不用说口罩加工等了。这比实时处理所需的时间要长得多。我错过了什么吗?特别com.google.mlkit:segmentation-selfie:16.0.0-beta4

  1. 我计算分段处理时间的方法是否正确?

  2. 是否有任何技巧、窍门或方法可以进一步优化处理,也许可以换取较低质量的细分?

enter image description here

    SelfieSegmenterOptions options =
            new SelfieSegmenterOptions.Builder()
                    .setDetectorMode(SelfieSegmenterOptions.STREAM_MODE)
                    .build();
    Segmenter segmenter;
    segmenter = Segmentation.getClient(options);


    InputImage image;
        image = InputImage.fromBitmap(imageBitmap, Surface.ROTATION_0);

    long startTime = System.nanoTime();

    Task<SegmentationMask> result =
            segmenter.process(image)
                    .addOnSuccessListener(
                            new OnSuccessListener<SegmentationMask>() {
                                @Override
                                public void onSuccess(SegmentationMask segmentationMask) {
                                    // Task completed successfully

                                    long endTime = System.nanoTime();
                                    String time = "Time: "+(endTime - startTime)/1000000f +" ms";
                                    timeTextView.setText(time);

                                    ByteBuffer mask = segmentationMask.getBuffer();
                                    int maskWidth = segmentationMask.getWidth();
                                    int maskHeight = segmentationMask.getHeight();

                                    // the rest of code...mask processing and making it pink
                                }
                            })
                    .addOnFailureListener(
                            new OnFailureListener() {
                                @Override
                                public void onFailure(@NonNull Exception e) {
                                    // Task failed with an exception
                                }
                            });
}
java android 图像分割 google-mlkit 分割自拍

评论

0赞 Morrison Chang 11/17/2023
请编辑您的帖子,包括您正在测试的设备/操作系统版本,此外还请阐明输入图像的大小和方向。请注意,您已经选择了,但您似乎输入了一个静态图像,该图像应该使用SelfieSegmenterOptions.STREAM_MODESINGLE_IMAGE_MODE
0赞 Mary 11/17/2023
当我用单个图像切换它时没有变化。但在我的代码中,它最终需要一个接一个地处理帧。

答: 暂无答案