FirebaseMLVision 无法识别来自 CameraImage 的人脸

FirebaseMLVision doesn't recognize face from CameraImage

我正在使用 firebase_ml_vision 检测相机图像流中的人脸。为此,我正在使用

controller.startImageStream((CameraImage image) => detectFace(image)))

void detectFace(CameraImage image) {
   final firebaseImage = FirebaseVisionImage.fromBytes(
    _concatenatePlanes(cameraImage.planes), // Convert from YUV_420_888 to NV21
    _buildMetaData(cameraImage, rotation),
  );
} 

_concatenatePlanes, _buildMetaData, _rotation 取自 Flutter 插件示例 (link)。

但不幸的是,它没有检测到任何这样的面孔。但是,如果我将使用相机选项捕获相同的图像,然后在其上检测面部,则它可以正常工作。我猜是格式转换出了点问题。

这里可能有什么问题,我该如何解决?

编辑 - 我已经尝试使用不同的旋转值并使用另外一个设备(仅在两个 android 平台上尝试过)。

-- 谢谢

相机插件的最新版本存在一些问题。当我将它切换到 0.5.8+1 时,它在我的应用程序和示例中都能顺利运行。

我已向所有者提出问题,以确定原因并向前修复 - https://github.com/FirebaseExtended/flutterfire/issues/4549#issuecomment-753448995

我的项目也遇到了同样的问题。

在我的例子中,我忘了安装面部模型,如 firebase_ml_vision 的自述文件所述:

iOS 如果您使用的是设备上的 API 之一,请在 Podfile 中包含相应的 ML Kit 库模型。然后 运行 在与您的 Podfile 相同的目录中的终端中进行 pod 更新。

pod 'Firebase/MLVisionBarcodeModel'
pod 'Firebase/MLVisionFaceModel'
pod 'Firebase/MLVisionLabelModel'
pod 'Firebase/MLVisionTextModel'

Android 如果您使用的是设备上的人脸轮廓检测,请在您的应用级 build.gradle 文件中包含最新匹配的 ML 套件:人脸检测模型依赖项。

android {
    dependencies {
        // ...

        api 'com.google.firebase:firebase-ml-vision-face-model:17.0.2'
    }
}

我还发现了一个插件,它已经实现了所有样板文件,我刚刚尝试并且工作正常flutter_camera_ml_vision: https://pub.dev/packages/flutter_camera_ml_vision

而且,如果你想要 class 中的代码,我还发现这个项目也可以正常工作(该项目需要更新,但是你可以复制 FaceDetection 的 class - 粘贴到您的项目,这是一个与您非常相似的代码,这很好用: https://github.com/giandifra/Flutter-Smile-Face-Detection/blob/master/lib/face_detection_camera.dart