基本使用¶
人脸识别基本流程¶
1. (RGB Camera)人脸识别¶
RGB Camera人脸识别是指用普通的彩色摄像头做活体判断,然后提取人脸特征并比对。

伪代码:
DfaceDetect dfaceDetect = new DfaceDetect(dfaceConfig);
DfaceFeature dfaceFeature = new DfaceFeature(dfaceConfig);
DfaceQuality dfaceQuality = new DfaceQuality(dfaceConfig);
DfaceRGBLiveness dfaceRGBLiveness = new DfaceRGBLiveness(dfaceConfig);
//检测人脸,返回人脸box
List<Box> faceBoxes = dfaceDetect.detectMaxFace(frame);
Box maxFace = faceBoxes.get(0);
//判断人脸质量
float qualityScor = faceQuality.predictQuality(frame, maxFace);
if(qualityScore < 0.20){
print("Low Quality");
return;
}
//RGB活体检测
float liveScore = dfaceRGBLiveness.livenessCheck(frame, maxFace);
if(liveScore < 0.76){
print("Fake Face");
return;
}
//提取人脸特征
byte[] feature = dfaceFeature.extractFeature(frame, maxFace);
//根据特征寻找相似度最高用户
User matchedUser = findTopSimilarityUser(feature);
2. (RGB-IR Camera)人脸识别(推荐使用)¶
(RGB-IR Camera)人脸识别是指用双目摄像头(彩色+红外)做活体判断,然后提取人脸特征并比对。

伪代码:
DfaceDetect dfaceDetect = new DfaceDetect(dfaceConfig);
DfaceFeature dfaceFeature = new DfaceFeature(dfaceConfig);
DfaceQuality dfaceQuality = new DfaceQuality(dfaceConfig);
DfaceRGBLiveness dfaceIRLiveness = new DfaceRGBLiveness(dfaceConfig);
//检测人脸,返回人脸box
List<Box> faceBoxes = dfaceDetect.detectMaxFace(rgbFrame);
Box maxFaceBox = faceBoxes.get(0);
//判断人脸质量
float qualityScor = dfaceQuality.predictQuality(rgbFrame, maxFaceBox);
if(qualityScore < 0.20){
print("Low Quality");
return;
}
//IR活体检测
float liveScore = dfaceIRLiveness.livenessCheck(rgbFrame, maxFaceBox, irFrame);
if(liveScore < 0.76){
print("Fake Face");
return;
}
//提取人脸特征
byte[] feature = faceFeature.extractFeature(frame, maxFaceBox);
//根据特征寻找相似度最高用户
User matchedUser = findTopSimilarityUser(feature);
DFACE各个功能模块使用¶
SDK提供人脸检测,人脸特征码提取,活体判断,人脸关键点等各个独立的功能提供相应的处理模块,用户可以按照自己的需求灵活地调用。
1. DfaceDetect¶
DfaceDetect是人脸检测模块,可实时的实现多人检测,最大脸检测,人脸质量判断等功能。
DfaceDetect dfaceDetect = new DfaceDetect(dfaceConfig); //检测人脸,返回人脸box列表 List<Box> faceBoxes = dfaceDetect.detectFace(frame);
2. DfaceTracker¶
DfaceTracker是人脸跟踪模块,可实现实时多人跟踪功能。
//检测人脸 List<Box> faceBoxes = dfaceDetect.detectFace(frame); //跟踪人脸,需要以上检测人脸的边框输入 List<Box> trackBoxes = dfaceTracker.update(frame, faceBoxes); for(Box faceBox : trackBoxes){ //获取track id int trackId = faceBox.id; }
警告
跟踪是预估判断,因此返回的位置信息有可能会超出摄像头画面范围。单独使用最好和摄像头画面范围做下判断,以免越界访问。
3. DfaceFeature¶
DfaceFeature是人脸特征提取模块,主要用于人脸特征提取。目前提供4种精度模式(LOW_512BYTES,HIGH_512BYTES,LOW_1024BYTES,HIGH_1024BYTES)。
DfaceConfig dfaceConfig = new DfaceConfig();
//配置特征模型版本,目前支持的人脸特征版本, V6_MASK(默认,支持戴口罩的人脸),V3(兼容小于6.0版本的特征码),V6(不支持戴口罩的人脸)
dfaceConfig.setFeatureVersion(kFEATURE_V6_MASK);
DfaceFeature dfaceFeature = new DfaceFeature(dfaceConfig);
//提取人脸特征
byte[] feature = dfaceFeature.extractFeature(frame, maxFaceBox);
4. DfaceLandmarks¶
DfaceLandmarks是人脸关键点模块,主要用于人脸106关键点和姿态的判断。
DfaceLandmarks dfaceLandmarks = new DfaceLandmarks(dfaceConfig); //判断106关键点和姿态 int[] landmarks = dfaceLandmarks.detectLandmarks(frame, maxFaceBox);
5. DfaceRGBLiveness¶
DfaceRGBLiveness是RGB活体检测处理模块,常用于活体判断。
DfaceRGBLiveness dfaceRGBLiveness = new dfaceRGBLiveness(dfaceConfig); //活体判断,输入图片需要减少压缩损失 float score = dfaceRGBLiveness.livenessCheck(frame, maxFaceBox);
6. DfaceIRLiveness¶
DfaceIRLiveness是红外活体检测处理模块,常用于红外活体判断。
DfaceIRLiveness dfaceIRLiveness = new DfaceIRLiveness(dfaceConfig);
//活体判断, 需要输入RGB和IR图像
float score = dfaceIRLiveness.livenessCheck(rgbFrame, maxFaceBox, irFrame);
7. DfaceQuality¶
DfaceQuality是人脸质量评估模块。
//工厂模式创建DfaceUnitQuality
DfaceQuality dfaceQuality = new DfaceQuality(dfaceConfig);
//质量判断
float score = dfaceQuality.predictQuality(frame, maxFaceBox);
8. DfaceMask¶
DfaceMask是人脸是否佩戴口罩检测。
DfaceMask dfaceMask = new DfaceMask(dfaceConfig);
//口罩判断
float score = dfaceMask.predictMask(frame, maxFaceBox);
9. DfaceTool¶
DfaceTool工具类,包含了一些图像处理,特征转换和数据处理方法。