作为一个资深AI应用开发者,市面上的开源算法以及一些AI企业开放的算法基本都有涉猎,总结来说有:
一、各个人脸识别公司、系统简介
1.1 虹软
虹软:比较推荐和喜欢的一家,有详细的Demo,文档信息等,更重要的是算法免费,而且作为商业算法,它非常简单容易上手。
人脸检测:检测人脸位置、锁定人脸坐标。
人脸跟踪:精确定位并跟踪面部区域位置。
人脸比对:比较两张人脸的相似度。
人脸查询:在人脸库中查询相似的人脸。
人脸属性:检测人脸性别、年龄等属性。
活体检测:检测是否真人,预防恶意攻击。
点击前往官网->虹软视觉开放平台ai.arcsoft.com.cn
1.2 云脉
云脉-OCR SDK:OCR及人脸识别对比等,各项都有。
1.3 腾讯AI
腾讯AI-人脸与人体识别:各项功能都有,可直接去腾讯在线试下
1.4 1MB轻量级人脸检测模型
一个很火的轻量级人脸检测模型,在github和gitee上均有项目,研究的话可以试试,如果商用就不推荐了。
1.5 SeetaFace-科院计算机所开源项目
SeetaFace:中科院计算机所开源项目,仅做了解了一些,未做深入研究。
二、基于虹软的Java人脸识别
2.1 人脸识别SDK
基于虹软的免费SDK:
官网首页 -> 右上角开发者中心 -> 选择“人脸识别” -> 添加SDK,会生成APPID、SDK KEY后续会用到,根据需要选择不同的环境(本文基于windows环境),然后下载SDK是一个压缩包。
2.2 Java项目搭建
从GitHub上clone一个ArcSoft的Java版本Demo。
2.2.1 下载Demo项目
本地搭建数据库,创建表:user_face_info。这个表主要用来存人像特征,其中主要的字段 face_feature 用二进制类型 blob 存放人脸特征。
2.2.2 修改application.properties文件
整个项目还是比较完整的,只需改一些配置即可启动,但有几点注意的地方,后边会重点说明。
config.arcface-sdk.sdk-lib-path: 存放SDK压缩包中的三个.dll文件的路径
config.arcface-sdk.app-id : 开发者中心的APPID
config.arcface-sdk.sdk-key :开发者中心的SDK Key
2.2.3 根目录创建lib文件夹
在项目根目录创建文件夹 lib,将下载的SDK压缩包中的arcsoft-sdk-face-2.2.0.1.jar放入项目根目录:
2.2.4 引入arcsoft依赖
pom.xml文件要配置includeSystemScope属性,否则可能会导致arcsoft-sdk-face-2.2.0.1.jar引用不到。
2.2.5 启动项目
run Application文件启动
2.3 操作测试
2.3.1 录入人脸图像
页面输入名称,点击摄像头注册调起本地摄像头,提交后将当前图像传入后台,识别提取当前人脸体征,保存至数据库。
2.3.2 人脸对比
录入完人脸图像后测试一下能否识别成功,提交当前的图像,然后会出现对比结果。
2.4 源码分析
2.4.1 JS调起本地摄像头拍照,上传图片文件字符串
2.4.2 后台解析图片,提取人像特征
台解析前端传过来的图片,提取人像特征存入数据库,人像特征的提取主要是靠FaceEngine引擎。
2.4.3 人像特征对比
人脸识别:将前端传入的图像经过人像特征提取后,和库中已存在的人像信息对比分析。
整个人脸识别功能的大致流程图如下: