来源:中科视拓订阅号 (ID:seetaai)
整理编辑:张佳
【新智元导读】时隔3年,中科视拓升级商用级别人脸识别算法SeetaFace2,而且还开源了!SeetaFace2包含了完整的人脸检测、面部关键点定位和人脸特征提取与比对模块,还将陆续开源人脸跟踪、闭眼检测等辅助模块。
近日,来自中科院计算所的人工智能国家队中科视拓宣布,开源商用级SeetaFace2人脸识别算法。
SeetaFace2采用商业友好的BSD协议,这是在2016年9月开源SeetaFace1.0人脸识别引擎之后,中科视拓在人脸识别领域的又一次自我革命。
中科视拓的人脸识别技术来自于国家万人计划领军人才山世光研究员和国家自然科学基金委杰出青年基金获得者陈熙霖研究员共同领导的中科院计算所视觉信息处理与学习研究组,研究成果先后获得过国家科技进步二等奖一次和国家自然科学二等奖一次,在行业内处于领先水平。
据中科视拓人脸组研发总监李凯周介绍,SeetaFace2包含了完整的人脸检测、面部关键点定位和人脸特征提取与比对模块,还将陆续开源人脸跟踪、闭眼检测等辅助模块。SeetaFace2所有算法提供全部源代码、注释、接口文档以及样例程序,以帮助开发者快速基于SeetaFace2开发应用。
SeetaFace2优势在哪?
SeetaFace2 人脸识别引擎包括了搭建一套全自动人脸识别系统所需的三个核心模块,即:人脸检测模块 FaceDetector、面部关键点定位模块 FaceLandmarker 以及人脸特征提取与比对模块 FaceRecognizer。还将陆续开源人脸跟踪、闭眼检测等辅助模块。
图1 SeetaFace2开源的人脸识别算法组件
SeetaFace2采用标准C 开发,全部模块均不依赖任何第三方库,支持x86架构(Windows、Linux)和ARM架构(Android)。SeetaFace2支持的上层应用包括但不限于人脸门禁、无感考勤、人脸比对等。
图2 SeetaFace2支持的应用矩阵
SeetaFace2是面向于人脸识别商业落地的里程碑版本,其中人脸检测模块在FDDB上的100个误检条件下可达到超过92%的召回率,面部关键点定位支持5点和81点定位,1比N模块支持数千人规模底库的人脸识别应用。
表1 SeetaFace2各模块基础技术指标
与2016年开源的SeetaFace1.0相比,SeetaFace2在速度和精度两个层面上均有数量级的提升。
表2 SeetaFace2与SeetaFace1.0对比
编译简介
2.1 编译依赖
- GNU Make 工具
- GCC 或者 Clang 编译器
- CM2.2 linux和windows平台编译说明
linux 和 windows 上的 SDK 编译脚本见目录 craft,其中 craft/linux 下为 linux 版本的编译脚本,craft/windows 下为 windows 版本的编译脚本,默认编译的库为64位 Release 版本。
linux 和 windows上的SDK编译方法:
- 打开终端(windows上为VS2015 x64 Native Tools Command Prompt 工具,linux 上为bash),cd 到编译脚本所在目录;
- 执行对应平台的编译脚本。
linux 上 example 的编译运行方法:
- cd 到 example/search 目录下,执行 make 指令;
- 拷贝模型文件到程序指定的目录下;
- 执行脚本 run.sh。
windows 上 example 的编译运行方法:
- 使用 vs2015 打开 SeetaExample.sln 构建工程,修改 Opencv3.props 属性表中变量 OpenCV3Home 的值为本机上的 OpenCV3 的安装目录;
- 执行 vs2015 中的编译命令;
- 拷贝模型文件到程序指定的目录下,运行程序。2.3 Android平台编译说明
Android 版本的编译方法:
- 安装 ndk 编译工具;
- 环境变量中导出 ndk-build 工具;
- cd 到各模块的 jni 目录下(如SeetaNet 的 Android 编译脚本位置为SeetaNet/sources/jni, FaceDetector的Android 编译脚本位置为FaceDetector/FaceDetector/jni),执行 ndk-build -j8 命令进行编译。
编译依赖说明:人脸检测模块 FaceDetector,面部关键点定位模块 FaceLandmarker 以及人脸特征提取与比对模块 FaceRecognizer 均依赖前向计算框架 SeetaNet 模块,因此需优先编译前向计算框架 SeetaNet 模块。