Firebase ML Kit 无法检测到人脸

Posted

技术标签:

【中文标题】Firebase ML Kit 无法检测到人脸【英文标题】:Firebase ML Kit does not detect faces 【发布时间】:2020-05-23 04:46:40 【问题描述】:

我正在使用 Google Firebase 的 ML Kit 来检测从手机摄像头拍摄的图像的面部轮廓。但是,它实际上并没有检测到任何人脸。通过在 ImageView 中显示图像,我已经验证了图像是从相机正确捕获和保存的。我也确保添加

 <meta-data android:name="com.google.android.gms.vision.DEPENDENCIES" android:value="face"/>

到 AndroidManifest.xml 和

implementation 'com.google.firebase:firebase-ml-vision:24.0.1'
implementation 'com.google.firebase:firebase-ml-vision-face-model:19.0.0'

到应用的 build.gradle。

这是 Firebase 代码:

        FirebaseApp.initializeApp(context);
        FirebaseVisionFaceDetectorOptions realTimeOpts =
                new FirebaseVisionFaceDetectorOptions.Builder()
                        .setPerformanceMode(FirebaseVisionFaceDetectorOptions.ACCURATE)
                        .setContourMode(FirebaseVisionFaceDetectorOptions.ALL_CONTOURS)
                        .build();

        fbImage = FirebaseVisionImage.fromBitmap(portrait);


        FirebaseVisionFaceDetector detector = FirebaseVision.getInstance()
                .getVisionFaceDetector(realTimeOpts);

        Task<List<FirebaseVisionFace>> result =
                detector.detectInImage(fbImage)
                        .addOnSuccessListener(
                                new OnSuccessListener<List<FirebaseVisionFace>>() 
                                    @Override
                                    public void onSuccess(List<FirebaseVisionFace> faces) 

                                        Log.d(TAG, "No. Faces Detected: " + faces.size());


                                    
                                )
                        .addOnFailureListener(
                                new OnFailureListener() 
                                    @Override
                                    public void onFailure(@NonNull Exception e) 
                                        Log.d(TAG, e.getMessage());
                                    
                                );

有谁知道为什么这可能没有检测到任何东西?

【问题讨论】:

【参考方案1】:

我最近遇到过这个问题。我的解决方案是声明特定的面孔。然后使用清单声明所有要识别的面孔。这是这样做的链接: 这里是firebase-ml-kit!

【讨论】:

这是我使用的网站,也是我获得上述代码的地方。你能说得更具体点吗?【参考方案2】:

这实际上不是 Firebase 的问题,而是图像的问题。显然,三星旋转了捕获图像的方向,而 Firebase 无法检测到脸部,因为它旋转了 90 度。通过简单地将图像旋转回纵向来修复它。 Captured Photo orientation is changing in android

【讨论】:

以上是关于Firebase ML Kit 无法检测到人脸的主要内容,如果未能解决你的问题,请参考以下文章

通过 Firebase ML Kit 人脸检测检测多张人脸的轮廓

如何避免在 firebase ML Kit 的人脸检测 API 中捕获模糊图像

无法使用 firebase ML 套件检测眨眼事件

我可以使用 ML kit 人脸检测来判断照片是不是包含人脸吗?

ML KIT 中最小人脸尺寸的确切用例是啥?

当人脸位于所需帧中时,如何实时启动 ML Kit 人脸检测