我想从图片库图像(位图)中检测人脸。
问题
我尝试了移动视觉Api,并成功地检测到了脸。在移动视觉api的网站上,他们提到了Firebase MLKIT。我也尝试了firebase ML试剂盒,并成功地检测到了面部。我按照下面的链接进行演示:[https://github.com/hitanshu-dhawan/FirebaseMLKit]
库版本:
implementation 'com.google.firebase:firebase-core:17.0.1'
implementation 'com.google.firebase:firebase-ml-vision:22.0.0'
implementation 'com.google.firebase:firebase-ml-vision-face-model:18.0.0'
implementation 'com.google.firebase:firebase-ml-vision-image-label-model:18.0.0' FirebaseVisionFaceDetectorOptions option =
new FirebaseVisionFaceDetectorOptions.Builder()
.setPerformanceMode(FirebaseVisionFaceDetectorOptions.ACCURATE)
.setLandmarkMode(FirebaseVisionFaceDetectorOptions.ALL_LANDMARKS)
.setClassificationMode(FirebaseVisionFaceDetectorOptions.ALL_CLASSIFICATIONS)
.build();
FirebaseVisionFaceDetector detector = FirebaseVision.getInstance()
.getVisionFaceDetector(option);
detector.detectInImage(image).addOnSuccessListener(
new OnSuccessListener<List<FirebaseVisionFace>>() {
@Override
public void onSuccess(List<FirebaseVisionFace> faces) {
}我是不是做错什么了?
发布于 2019-11-15 06:52:42
我想你可以把.setPerformanceMode(FirebaseVisionFaceDetectorOptions.ACCURATE)改为.setPerformanceMode(FirebaseVisionFaceDetectorOptions.FAST)
可能会提高检测的速度。
发布于 2019-10-24 07:56:07
我也有同样的问题,但是通过文本识别,在安卓系统上速度非常慢,每秒大约1张图像(华为Y6 2018年),但在iOS上却非常快,在iPhone 6s上可以轻松地每秒运行10帧。我已经尝试过Firebase支持的所有图像格式,在测试中最快的varian是ByteBuffer,所以我在开始识别之前将位图转换为ByteBuffer。
发布于 2020-03-27 18:34:33
如果您直接从位图实例化您的,则Firebase脸检测器是非常慢的,如下所示:
FirebaseVisionImage visionImage = FirebaseVisionImage.fromBitmap(bitmap);一种解决方案是将位图转换为字节数组(byte[]),并使用其他构造函数创建FirebaseVisionImage。
FirebaseVisionImage visionImage = FirebaseVisionImage.fromByteArray(byteArray, metadata);这一事实似乎没有被记录在案。我在对这个GitHub问题的评论中发现了它,并使用了该技术,使人脸检测时间缩短了6倍。同样在该链接中,有一个来自GitHub用户jllarraz的代码片段,用于将位图转换为nv21字节数组。
https://stackoverflow.com/questions/57551321
复制相似问题