| 标题 | 基于百度AI平台的Web人脸注册和登录系统的实现 |
| 范文 | 赵丙秀 摘要:有关人脸识别技术的应用越来越普及,已经渗透到家庭看护、移动互联网、智能硬件、政府警用、金融、监控、零售、社交娱乐等各个领域。国内有许多企业提供了人脸识别产品。该文介绍了基于Js、Ajax、Jsp等技术利用百度AI的SDK的Web人脸注册登录的实现。 关键词:AIPFace;人脸识别;百度AI;Jsp 中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2019)07-0114-02 近几年来,有关人脸识别技术的应用越来越普及,已逐渐渗透到各行各业,如家庭看护、远程验证注册、政府警用、网吧兼管、手机支付等等。例如:“I Baby”全景婴儿监视器,其借助人脸识别技术,监护宝宝,并实时同步到移动设备上,让家长随时随地都能监管宝贝。微软公司的颜龄机器人"how-old.net"网站可从用户提供人物照片,识别出人性别和年龄。现在各大金融APP利用人脸识别技术,实现身份验证、账号注册、扫脸放贷、扫脸支付等。 1 基本思想 目前国内有许多企业提供了人脸识别产品,比如北京旷视科技、北京商汤科技、腾讯、阿里、百度等。本系统利用百度ai人脸识别,注册时,将页面中采集的人脸图像存入百度云人脸库和服务器中。登录时,将采集到得人脸图像与百度云人脸库中的人脸信息进行比对,比对成功则可以成功登录。 本系统前端采用HTML5、JS、CSS3等技术对注册和登录页面进行设计和布局。利用JSP、Ajax、Servlet等技术进行后端的处理和交互。注册具体过程: 1)当用户注册时,通过打开本地摄像头提取人的脸部;2)获取到人脸之后在通过ajax进行提交到Servlet;3)在Servlet里面进行处理(添加到人脸库中),并且将前台ajax传过来的base64图像进行转换成图片,然后上传到服务器中;4)提交到人脸库的同时,设置编号为注册用户名。 登录具体过程: 1)用户需要输入登录的用户名(username);2)通过本地打开摄像头进行获取人脸的base64图像信息;3)将base64图像信息转换成图片之后在进行与服务器中的人脸进行比对。比对成功则成功登录。 2 百度人脸识别SDK 人脸识别使用百度人脸识别Java SDK。其中AipFace是人脸识别的Java客户端,为使用人脸识别的开发人员提供了一系列的交互方法。这里列举几个方法: 人脸搜索:search(image, imageType, groupIdList, options) 人脸检测:detect(image, imageType, options) 人脸注册:addUser(image, imageType, groupId, userId, options) 人脸验证:verifyUser(userId, groupIdList, path, options); 在使用百度人臉识别Java SDK之前需要导入相关的jar包。步骤如下: 1)在百度官方网站下载Java SDK压缩工具包。 2)将下载的aip-java-sdk-version.zip解压后,复制到工程文件夹中。 3)在Eclipse中选中工程点击右键,选中“Properties”打开工程属性视图,选中“ Java Build Path -> Add JARs”。 4)添加SDK工具包aip-java-sdk-version.jar和第三方依赖工具包log4j-1.2.17.jar、json-20160810.jar。 3 具体实现 1)数据库设计 本系统数据库采用MySql数据库,用于登录的用户表users的各字段名和类型如下: id int(11) NOT NULL, username varchar(50) NOT NULL, password varchar(50) DEFAULT NULL, headphoto varchar(50) DEFAULT NULL 2)Js读取摄像头获得头像信息 打开摄像头主要用到getUserMedia方法,然后将获取到的媒体流置入video标签。 navigator.getMedia({ video: true }, function(stream) { mediaStreamTrack = stream.getTracks()[0]; video.src = (window.URL || window.webkitURL).createObjectURL(stream); video.play(); }, function(err) { console.log(err); }); 3)获取人脸图像 Js代码中获得图像,然后将用户名和图像利用Ajax技术提交给FaceServlet文件进行注册处理。截取图片主要用到canvas绘图,使用drawImage方法将video的内容绘至canvas中。将截取的内容上传至服务器,将canvas中的内容转为base64格式上传。 拍照按钮处理的核心代码: var canvans = document.getElementById("canvas"); var video = document.getElementById("video"); var context = canvas.getContext("2d"); canvas.width = video.videoWidth; canvas.height = video.videoHeight; context.drawImage(video,0,0); var imgData = canvans.toDataURL(); var imgData1 = imgData.substring(22); //在前端截取22位字符串作为图像数据 var username = $("#username").val(); $.ajax({ type: "post", url: "FaceServlet?tag=reg", data:{"img":imgData1,"username":username}, success: function(data){ if(data=="恭喜你!人脸注册成功,即将跳转登录页面"){ alert(data); location.href = "login.jsp"; } if(data=="人脸识别失败,请正对屏幕摄像头!!"){ alert(data); return false; } },error:function(msg){ alert("错误"); } }); 4)利用人脸图像进行注册或登录 FaceServlet中注册处理,如果是注册,则需要将提交的数据存入数据库和将用户名和图像存入百度人脸库。如果是登录,则将获得的人脸图像与人脸库中的进行比对。 其中有三个核心代码:GenerateImage将图像上传服务器,facesetAddUser将图像上传人脸库,verifyUser方法为验证用户的方法。 public booleanGenerateImage(String imgStr, String imgFilePath),其核心代码如下: BASE64Decoder decoder = new BASE64Decoder(); byte[] bytes = decoder.decodeBuffer(imgStr); // Base64解码 for (int i = 0; i if (bytes[i] < 0) {// 調整异常数据 bytes[i] += 256; } } OutputStream out = new FileOutputStream(imgFilePath); // 生成jpeg图片 out.write(bytes); public booleanfacesetAddUser(AipFace client, String path, String username)的核心代码: HashMap JSONObject res = client.addUser(username, "test_users_info", Arrays.asList("group1", "group2"), path, options); if (res.keySet().contains("error_code")) { return false; } return true; public Double verifyUser(AipFace client, String path, String username)的核心代码: HashMap options.put("top_num", 5); JSONObject res = client.verifyUser(username, Arrays.asList("group1", "group2"), path, options); Double result = Double.parseDouble(res.getJSONArray("result").get(0) .toString()); return result; 4 结束语 基于百度AI平台的Web人脸注册和登录系统,将人脸图像存入将注册的人脸图片存入百度人脸库,利用百度AI平台中AipFace中提供的注册人脸、验证人脸的方法来实现人脸的添加和识别。人脸识别注册登录技术可以广泛应用到各种系统中,节省了注册时间和登录时间,并具有一定的安全措施。 参考文献 [1] 杨紫荆,韦思宏.潘林.人脸自动检测与识别技术探究[J].设备管理与维修,2018(16):162-163. [2] 罗佳伟,孙雪峰,李琳.基于百度AI平台的Web人脸注册和登录系统的设计[J].中国新通信,2018(6):73. 【通联编辑:朱宝贵】 |
| 随便看 |
|
科学优质学术资源、百科知识分享平台,免费提供知识科普、生活经验分享、中外学术论文、各类范文、学术文献、教学资料、学术期刊、会议、报纸、杂志、工具书等各类资源检索、在线阅读和软件app下载服务。