首页 > 编程知识 正文

微信小程序人脸识别不了怎么办,微信小程序人脸识别安全吗

时间:2023-05-03 23:27:46 阅读:272062 作者:3208

1.什么是人脸识别?

    人脸识别可以分为两个方面,一个是人脸验证,另一个是人脸识别。

    人脸验证指的是:假设我们有一个人的画像(A),我们需要根据这个画像验证来人是不是A本人。

    人脸识别指的是:如果我们有一个人脸数据集(大小为K),我们需要识别来人是不是我们的人脸数据集里面的人。

    人脸识别的准确率必须依托于人脸验证的准确率。

2.安装人脸识别php sdk

    人脸识别 PHP SDK目录结构

    主要用lib就可以了

3.人脸检测

    人脸检测:检测图片中的人脸并标记出位置信息;

//人脸检测 public function facevaild($no,$img){ $options = array(); $options['max_face_num'] = 2; $client = $this->init_face(); $ret = $client->detect($img,'BASE64',$options); // print_r($ret); if($ret['error_code']==0){//有人脸 $result = $ret['result']; $face_num = $result['face_num']; if(1 == $face_num){ $face_probability = $result['face_list'][0]['face_probability']; if(1 == $face_probability){ $group = $this->face_group(); $client->addUser($img,'BASE64',$group,$no); // echo "人脸检测完成,并已入库"; return true; }else{ die('可靠性为:' . $face_probability); } }else{ die('人脸数量大于1'); } } }

    并且要在人脸识别库中创建组,组中存放自己的照片,这样在人脸识别时才能找到自己的信息

//创建分组 public function face_group(){ $groupname = 'face_group3'; $client = $this->init_face(); $ret = $client->getGroupList(); // print_r($ret); // exit; if($ret['error_code'] == 0){ $grouplist = $ret['result']['group_id_list']; if(in_array($groupname, $grouplist)){ return $groupname; }else{ $ret = $client->groupAdd($groupname); if($ret['error_code']==0){ return $groupname; }else{ return false; } } }else{ return false; } }

4.在线活体检测

    接口能力

    人脸基础信息:包括人脸框位置,人脸空间旋转角度,人脸置信度等信息。

    人脸质量检测:判断人脸的遮挡、光照、模糊度、完整度等质量信息。可用于判断上传的人脸是否符合标准。

    基于图片的活体检测:基于单张图片,判断图片中的人脸是否为二次翻拍(举例:如用户A用手机拍摄了一张包含人脸的图片一,用户B翻拍了图片一得到了图片二,并用图片二伪造成用户A去进行识别操作,这种情况普遍发生在金融开户、实名认证等环节)。此能力可用于H5场景下的一些人脸采集场景中,增加人脸注册的安全性和真实性。

5.人脸对比

    接口能力

    两张人脸图片相似度对比:比对两张图片中人脸的相似度,并返回相似度分值;

    多种图片类型:支持生活照、证件照、身份证芯片照、带网纹照四种类型的人脸对比;

    活体检测:基于图片中的破绽分析,判断其中的人脸是否为二次翻拍(举例:如用户A用手机拍摄了一张包含人脸的图片一,用户B翻拍了图片一得到了图片二,并用图片二伪造成用户A去进行识别操作,这种情况普遍发生在金融开户、实名认证等环节。);

    质量检测:返回模糊、光照等质量检测信息,用于辅助判断图片是否符合识别要求;

    业务应用

    用于比对多张图片中的人脸相似度并返回两两比对的得分,可用于判断两张脸是否是同一人的可能性大小。

6.人脸注册

    用于从人脸库中新增用户,可以设定多个用户所在组,及组内用户的人脸图片,

    典型应用场景:构建您的人脸库,如会员人脸注册,已有用户补全人脸信息等。

    人脸库、用户组、用户、用户下的人脸层级关系如下所示:

6.人脸搜索

    1:N人脸搜索:也称为1:N识别,在指定人脸集合中,找到最相似的人脸;

    1:N人脸认证:基于uid维度的1:N识别,由于uid已经锁定固定数量的人脸,所以检索范围更聚焦;

    1:N人脸识别与1:N人脸认证的差别在于:人脸搜索是在指定人脸集合中进行直接地人脸检索操作,而人脸认证是基于uid,先调取这个uid对应的人脸,再在这个uid对应的人脸集合中进行检索(因为每个uid通常对应的只有一张人脸,所以通常也就变为了1:1对比);实际应用中,人脸认证需要用户或系统先输入id,这增加了验证安全度,但也增加了复杂度,具体使用哪个接口需要视您的业务场景判断。

public function camera(){ $dir="./Uploads/camera/"; if (!file_exists($dir)) { mkdir($dir,0777,true); } $upload = new ThinkUpload();// 实例化上传类 $upload->maxSize = 2048000 ;// 设置附件上传大小 $upload->exts = array('jpg', 'gif', 'png', 'jpeg');// 设置附件上传类型 $upload->rootPath = $dir; // 设置附件上传根目录 $upload->savePath = ''; // 设置附件上传(子)目录 $upload->autoSub=false; //上传文件 $info = $upload->uploadOne($_FILES['file']); if(!$info) {// 上传错误提示错误信息 return $this->ajaxReturn(array('error'=>true,'msg'=>$upload->getError()),JSON_UNESCAPED_UNICODE); }else{ // $this->ajaxReturn('上传成功'); $file=$dir.$info['savepath'].$info['savename']; $image=base64_encode(file_get_contents($file)); $client=$this->init_face(); $options['liveness_control']='NORMAL'; $options['max_user_num']='1'; $ret=$client->search($image,'BASE64',$this->face_group(),$options); // echo json_encode($ret,JSON_UNESCAPED_UNICODE); // exit; if ($ret['error_code']==0) { $user=$ret['result']['user_list'][0]; $no=$user['user_id']; $score=$user['score']; if (!empty($no)) { $data=M('student')->field('no,name,sex')->where("no='{$no}'")->find(); if ($data) { $data['score']=$score; // if ($score>95) { // echo "姓名:".$data['name']; // }else{ echo json_encode($data,JSON_UNESCAPED_UNICODE); // } }else{ echo "本地数据库没有该学生,百度云库信息:个人信息:{$no},分值:{$score}"; } } }else{ echo "活体检测失败".json_encode($ret,JSON_UNESCAPED_UNICODE); } } }

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。