美文网首页
百度人脸识别算法SDK3+注册流程

百度人脸识别算法SDK3+注册流程

作者: dongbingliu | 来源:发表于2019-09-26 19:45 被阅读0次

    2.3.2 人脸注册
    进入该功能之后首先需要录入输入用户名+组名,用户名要求不能含有特殊符号,要求不能超过30个字符,填入成功之后才可进入视频流实时采集页面。FaceRegisterActivity是注册页面。采集页面将会执行人脸检测、人脸活体检测、特征值提取功能。前面都通过即执行注册,注册成功后并将注册成功的图片保存到本地。您可以根据实际使用的硬件进行选择。

    注一:为了使注册的图片达到较高的质量,注册默认开启质量检测与远近距离校验。设置里的质量检测开关对注册页面不起作用。

    注二:为了使注册效果更好。所有活体状态下注册默认开启固定区域检测,设置里的检测跟踪策略对注册页面不起作用。

    1)注册采集,可选择一下3种方式返回人脸

    FaceRGBRegisterActivity:无活体或RGB活体(活体检测成功后,注册人脸)
    FaceIRRegisterActivity:进行RGB+NIR活体成功后注册人脸
    FaceDepthRegisterActivity:进行RGB+Depth活体成功后注册人脸(目前仅支持奥比中光Atlas镜头)
    下面是检测相关代码:

    private void faceDetect(byte[] data, final int width, final int height) {
        // 摄像头预览数据进行人脸检测
        int liveType = SingleBaseConfig.getBaseConfig().getType();
        if (liveType == 1) { // 无活体检测
            FaceTrackManager.getInstance().setAliving(false);
        } else if (Integer.valueOf(liveType) == 2) { // 活体检测
            FaceTrackManager.getInstance().setAliving(true);
        }
        FaceTrackManager.getInstance().faceTrack(data, width, height, new FaceDetectCallBack() {
            @Override
            public void onFaceDetectCallback(LivenessModel livenessModel) {
                checkResult(livenessModel);
            }
        });
    }
    

    下面是活体判断相关代码:

        int liveType = SingleBaseConfig.getBaseConfig().getType();
            // 无活体
            if (Integer.valueOf(liveType) == 1) {
                displayResult(model, null);
                // 注册
                register(model);
            } else if (Integer.valueOf(liveType) == 2) { // RGB活体检测
                displayResult(model, "livess");
                boolean livenessSuccess = false;
                float rgbLiveThreshold = SingleBaseConfig.getBaseConfig().getRgbLiveScore();
                livenessSuccess = (model.getRgbLivenessScore() > rgbLiveThreshold) ? true : false;
                if (livenessSuccess) {
                    // 注册
                    register(model);
                }
            }
    

    下面是人脸特征提取的代码:

    // 获取选择的特征抽取模型
        int modelType = SingleBaseConfig.getBaseConfig().getActiveModel();
        if (modelType == 1) {
            // 生活照
            FaceSDKManager.getInstance().onFeatureCheck(model.getBdFaceImageInstance(), model.getLandmarks(),
                    BDFaceSDKCommon.FeatureType.BDFACE_FEATURE_TYPE_LIVE_PHOTO, new FaceFeatureCallBack() {
                        @Override
                        public void onFaceFeatureCallBack(float featureSize, byte[] feature) {
                            displayCompareResult(featureSize, feature);
                            Log.e("qing", String.valueOf(feature.length));
                        }
    
                    });
    
        } else if (Integer.valueOf(modelType) == 2) {
            // 证件照
            FaceSDKManager.getInstance().onFeatureCheck(model.getBdFaceImageInstance(), model.getLandmarks(),
                    BDFaceSDKCommon.FeatureType.BDFACE_FEATURE_TYPE_ID_PHOTO, new FaceFeatureCallBack() {
                        @Override
                        public void onFaceFeatureCallBack(float featureSize, byte[] feature) {
                            displayCompareResult(featureSize, feature);
                        }
                    });
        }
    

    下面是将特征值及用户信息注册到人脸库的代码:

     // 根据特征抽取的结果 注册人脸
     private void displayCompareResult(float ret, byte[] faceFeature) {
        // 特征提取成功
        if (ret == 128) {
            String imageName = groupId + "-" + username + ".jpg";
            // 注册到人脸库
            boolean isSuccess = FaceApi.getInstance().registerUserIntoDBmanager(groupId, username, imageName,
                    userInfo, faceFeature);
            if (isSuccess) {
                // 关闭摄像头
                CameraPreviewManager.getInstance().stopPreview();
                Log.e("qing", "注册成功");
                // 数据变化,更新内存
                FaceApi.getInstance().initDatabases(true);
                // 防止重复注册
                username = null;
                groupId = null;
            }else {
                // 注册失败
            }
        } else if (ret == -1) {
            displayTip("特征提取失败");
        } else {
          // 特征提取失败
        }
    }
    

    参数填写时请注意:

    用户名为必填项,支持英文与数字。
    用户组为可选项,不填默认生成名为default 的用户组;
    用户信息可不填,用于其他需求;
    注册成功后生成的图片命名格式为group-username.jpg,保存在sdcard下的Success-Import文件夹下,用于人脸库的图片显示。

    相关文章

      网友评论

          本文标题:百度人脸识别算法SDK3+注册流程

          本文链接:https://www.haomeiwen.com/subject/rqqsyctx.html