原标题:【AI】Java+Fileupload+JSTL+Face++实现人脸识别系统
一、前言
人工智能(Artificial Intelligence),英文缩写为AI。它是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。
在现在我们的生活中,我们越来越多的接触到人工智能了。2016年3月,阿尔法围棋与围棋世界冠军、职业九段棋手李世石进行围棋人机大战,以4比1的总比分获胜;2016年末2017年初,该程序在中国棋类网站上以“大师”(Master)为注册帐号与中日韩数十位围棋高手进行快棋对决,连续60局无一败绩;2017年5月,在中国乌镇围棋峰会上,它与排名世界第一的世界围棋冠军柯洁对战,以3比0的总比分获胜。
小编从中感觉到了人工智能的第三次浪潮即将到来。随后小编最近研究了人工智能的人脸识别技术,刚开始研究了javacv、opencv,到现在研究的Face++,这个技术越来越成熟,也在不断的更新。下面带来人脸识别。
二、Face++介绍
Face++TM是新一代云端视觉服务平台,提供一整套世界领先的人脸检测,人脸识别,面部分析的视觉技术服务。网页地址请点直击
提供的技术包括了人脸检测、追踪、人脸关键点检测、 微笑分析、 性别、年龄、种族、1:1人脸验证、 1:N人脸识别、大规模人脸搜索。
小编亲测:上传狗或非人的照片,Face++是不会进行测试的。这个辩证的还是相当准确的,值得信赖。
三、实现过程
这里小编先说一下实现思路,小编把要解析的图片上传到服务器,然后通过调用face++的接口,对图片进行分析,得到分析的json数据。然后解析这些输入为中文,在界面显示分析结果。
3.0 项目环境要求
commons-io-2.5.jar
commons-fileupload-1.3.3.jar (用于上传图 片)
net.sf.json jar (用于解析返回的Json)
jstl.jar
standard.jar (用于显示解析后的数据)
3.1 建立项目
建立一个java web项目:AresFace
上传图片:使用Apache的org.apache.commons.fileupload组件
上传图片前台代码:
核心就是一个提交表单,这个提交表单,要求为post,而且要enctype=”multipart/form-data”
然后方法提交到后台的UploadHandleServlet.java的servlet中,调用post方法,执行上传图片操作。
完整代码见原文
UploadHandleServlet.java 上传图片并解析json数据
使用Apache文件上传组件处理文件上传步骤:
1、创建一个DiskFileItemFactory工厂
2、创建一个文件上传解析器
注意:解决上传文件名的中文乱码upload.setHeaderEncoding(“UTF-8”);
3、判断提交上来的数据是否是上传表单的数据
4、使用ServletFileUpload解析器解析上传数据,解析结果返回的是一个List集合,每一个FileItem对应一个Form表单的输入项
使用face++提供的java类来获取解析后的图片的数据
建立类FaceDetect(face++提供的代码,需要用户注册先)
Face++官网:https://console.faceplusplus.com.cn/documents/6329752
······
3.5 使用net.sf.json jar解析复杂的json
用json排版工具得到如下图:
3.5 显示人脸识别效果
展示图片,以及人脸识别分析结果:这里主要是利用了java表达式和jstl标准标签库来显示信息的。具体技术可以访问小编的另一系列博客:
【JSTL】JSP标准标签库
图片不错吧,每个程序员都有一个澎湃的内心。
3.6 完成
到现在为止就完成了人脸识别,效果如下:
上传照片
四、小结
通过这次系统研究,小编也是在其中学到了很多的东西,比如前提向后台servlet发送请求,后台sevlet接收参数,返回参数等。也用到了复杂Json解析,原来自己经常使用jackson来解析,但是这个的前提是要建立对应的类。从小编的json复杂程度来看,如果用Jacson的话,会建立很多的类的,所以小编就使用了其他的方法。
相信这一篇博客大家会受益匪浅,另外在下一篇的博客中,小编会向大家带来更精彩的人工智能,敬请期待。
作者:十二期 王 雷
编辑:十四期 高占路返回搜狐,查看更多
责任编辑: