首页 > 解决方案 > 如何使用 Flutter (tflite) 在图像中执行人脸检测

问题描述

我想检测图像上的人脸以模糊它们(当然是为了保密),我对此进行了一些研究(大多数文章都使用 Firebase ML Kit,这不是我的解决方案)。

我找到了 BlazeFace模型,看起来还不错,但是如何在 Flutter 中实现呢?我尝试使用 tflite 包指定它是一个“SSDMobileNet”模型,因为它说它有点像它的衍生物。但是,它根本不起作用(否则我不会在这里......),日志如下。因此,如果您有任何想法或建议,我将不胜感激。

E/AndroidRuntime(17809):    at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:243)
E/AndroidRuntime(17809):    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
E/AndroidRuntime(17809):    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
E/AndroidRuntime(17809):    at java.lang.Thread.run(Thread.java:762)
E/AndroidRuntime(17809): Caused by: java.lang.IllegalArgumentException: Cannot copy from a TensorFlowLite tensor (regressors) with shape [1, 896, 16] to a Java object with shape [1, 896, 4].
E/AndroidRuntime(17809):    at org.tensorflow.lite.Tensor.throwIfDstShapeIsIncompatible(Tensor.java:485)
E/AndroidRuntime(17809):    at org.tensorflow.lite.Tensor.copyTo(Tensor.java:255)
E/AndroidRuntime(17809):    at org.tensorflow.lite.NativeInterpreterWrapper.run(NativeInterpreterWrapper.java:216)
E/AndroidRuntime(17809):    at org.tensorflow.lite.Interpreter.runForMultipleInputsOutputs(Interpreter.java:374)
E/AndroidRuntime(17809):    at sq.flutter.tflite.TflitePlugin$RunSSDMobileNet.runTflite(TflitePlugin.java:651)
E/AndroidRuntime(17809):    at sq.flutter.tflite.TflitePlugin$TfliteTask.doInBackground(TflitePlugin.java:448)
E/AndroidRuntime(17809):    at sq.flutter.tflite.TflitePlugin$TfliteTask.doInBackground(TflitePlugin.java:422)
E/AndroidRuntime(17809):    at android.os.AsyncTask$2.call(AsyncTask.java:304)
E/AndroidRuntime(17809):    at java.util.concurrent.FutureTask.run(FutureTask.java:237)
E/AndroidRuntime(17809):    ... 4 more

标签: fluttertensorflowtensorflow-lite

解决方案


https://youtu.be/ymyYUCrJnxU

你可以在 Flutter 官方频道观看这个视频,了解如何在 Flutter 中轻松实现人脸检测。


推荐阅读