无法调整Firebase(Google)MLKit人脸检测的准确性

时间:2018-10-14 06:01:58

标签: android firebase-mlkit

我正在编写一个android相机应用程序,并且正在使用MLKit设备上的API进行人脸检测。关于此API的好处是,它非常容易启动和运行,并且有一个sample app显示了如何执行此操作,但是感觉您只能用它做些什么。

我的问题是我收到了太多的误报(低精度),而且似乎无法控制。我可以设置的唯一选项是将modeType设置为FAST_MODEACCURATE_MODE。但是我真正需要的是一些可以调整的旋钮,以达到所需的精度和召回率组合。

有人知道我是否可以使用API​​来获得对最终结果的额外控制吗?

2 个答案:

答案 0 :(得分:0)

我认为您需要了解使用面部检测时可以使用的选项。

/** Libary Options */
val options = FirebaseVisionFaceDetectorOptions.Builder()
   .setModeType(FirebaseVisionFaceDetectorOptions.ACCURATE_MODE) // used to state whether the recognition process should favour either speed or accuracy, can be set to either ACCURATE_MODE or FAST_MODE. This defaults to FAST_MODE.
   .setLandmarkType(FirebaseVisionFaceDetectorOptions.ALL_LANDMARKS) // used to declare whether the recognition process should recognise facial landmarks such as the nose, eyes, mouth etc. This defaults to NO_LANDMARKS.
   .setClassificationType(FirebaseVisionFaceDetectorOptions.ALL_CLASSIFICATIONS) //  used to declare whether the recognition process should classify facial features such as whether the face is smiling or the eyes are open. This defaults to NO_CLASSIFICATIONS.
   .setMinFaceSize(0.15f) //used to define the minimum size of a face (relative to the given image) for it to be detected. This value defaults to 0.1f.
   .setTrackingEnabled(true) // used to declare whether or not an ID should be assigned to faces, for tracking faces between images. This defaults to false.
   .build()

我举一个例子,但是使用西班牙语,或者如果您想了解有关此图书馆的更多信息,请阅读此中篇文章。 https://medium.com/google-developer-experts/exploring-firebase-mlkit-on-android-face-detection-part-two-de7e307c52e0

答案 1 :(得分:0)

我有类似的问题。 Google似乎没有公开面部质量得分,因此我通过计算自己的面部得分解决了这个问题。我使用Face对象的Landmark属性创建了自己的指标,例如:

  • Face.getIsLeftEyeOpenProbability()
  • Face.getIsRightEyeOpenProbability()
  • Face.getLandmarks()。size()//大多数伪造的面孔不会有很多地标
  • Face.getEulerY()
  • Face.getEulerZ()

我发现使用这些头角,地标数量等有效地滤除了假正脸。