基于easyAi 100% java代码 本地人脸识别项目
基于easyAi 100% java代码 本地人脸识别内核算法模块
maven地址- 在pom文件中引入以下JAR包即可(若最新版本中央库还没更新,则直接下载发行版,自行安装到本地库)
- <dependency>
- <groupId>org.dromara.easyai</groupId>
- <artifactId>seeFace</artifactId>
- <version>1.0.7</version>
- </dependency>
复制代码 部署须知- 初始化模型在项目resources文件夹内,初始化方法需载入对应照片和json文件
- 初始化方法在App.java中
- 使用face.look()方法获取特征向量,特征向量为二维数组请保存
- 识别人脸时,获取图像的特征向量,并与库内其他人脸入向量数据库的特征向量做欧氏距离比较,距离最近的就是要找人的人。
- 可以设置距离阈值,当距离大于设定阈值,则认为库内不存在该人脸(该阈值通常为9000)
- 本项目输入图片必须为竖向图片(既高大于宽),且宽高比大致符合3:4的手机拍摄照片比例(越接近3:4越好),若宽高比差异过大,可能会导致识别失败
- 当识别返回结果FaceMessage为null时说明无检出人脸图片(人脸在图像中比例过小,或者光照过暗过曝,或者无人脸)。
- 人脸在图像中占比宽与高至少要超过图像宽高的四分之一,光照过高过低也都会导致失败。
- 本项目依赖easyAi (附件中包含此源码)
- Face face识别类在服务启动时进行初始化FaceFactory获取且会加载resources下预训练模型信息,类会初始化为单例,直接使用内存中加载模型后单例化的该类获取特征矩阵。
快速开始APIpublic ErrorMessage look(ThreeChannelMatrix face, long eventID, int secondExplore)获取该图像的特征向量 参数ThreeChannelMatrix face为解析图像的三通道矩阵
参数long eventID线程安全唯一ID
参数int secondExplore迭代强度,识别时建议使用30,入库时提高到60,该数值越大对人脸抓取就越稳,但速度越慢。所以人脸入库获取向量时 提高该数值,求最稳。识别获取特征时降低到30,可以在兼顾一定稳定的同时求快。
返回实体ErrorMessage private int errorCode = 0为错误码,当错误码为0时才是正常获取了结果
private String errorMessage错误原因
FaceMessage faceMessage人脸信息结果,当错误码不为0时,该返回实体为null 参数private Matrix feature为特征矩阵,内置二维数组保存特征值,可通过getMatrix()方法将二维数组提取出来用来特征值保存入库,以方便使用向量数据库对比。
参数private ThreeChannelMatrix channel定位到的人脸特征的图像三通道矩阵,可以使用ImageTools中的imageTools.writeImage(faceMessage.getChannel(), "/Users/lidapeng/job/faceData/test/b1.jpg"); 方法将人脸输出出来,观察人脸定位结果,如果抓取位置异常,说明本次识别结果不理想,可进行重新拍摄再次获取。
链接:https://pan.quark.cn/s/e975490fe0a5
提取码下载:
|