盛视科技人脸识别技术:中科视拓开源跨平台C
盛视科技人脸识别技术:中科视拓开源跨平台C项目目录这一项目使用 C 完成,不依赖任何第三方库,而且支持 x86 平台和 ARM 平台,具有良好的适配能力,可部署于各类平台上,由开发者进一步开发新的应用。中科视拓的人脸识别技术来自于国家万人计划领军人才山世光研究员和国家自然科学基金委杰出青年基金获得者陈熙霖研究员共同领导的中科院计算所视觉信息处理与学习研究组。研究成果先后获得过国家科技进步二等奖和国家自然科学二等奖。SeetaFace2SeetaFace2 是一个完整的人脸识别项目,其中包括了人脸检测模块 FaceDetector、面部关键点定位模块 FaceLandmarker 以及人脸特征提取与比对模块 FaceRecognizer。还将陆续开源人脸跟踪、闭眼检测等辅助模块。
机器之心报道
参与:一鸣
近年来,人脸识别算法已日臻成熟,但受制于编程语言、模型架构、第三方依赖等问题,其运行速度、性能和跨平台能力一直受到影响。近日,来自中科院计算所的中科视拓团队商业开源了一款名为 SeetaFace2.0 的人脸识别库,完全使用 C 编写,支持 Windows、Linux 和 ARM 平台,且不依赖第三方库。人脸识别库中开源的三个模块都取得了很好的性能和很高的运算效率。
人脸识别一直有着广泛的应用场景,优秀的算法模型可以很好地提升人脸识别的速度、降低错误率、并能够部署在各种设备中。近日,来自中科院计算所的中科视拓团队宣布开源商用级 SeetaFace2 人脸识别算法,采用 BSD 协议。
中科视拓的人脸识别技术来自于国家万人计划领军人才山世光研究员和国家自然科学基金委杰出青年基金获得者陈熙霖研究员共同领导的中科院计算所视觉信息处理与学习研究组。研究成果先后获得过国家科技进步二等奖和国家自然科学二等奖。
SeetaFace2
SeetaFace2 是一个完整的人脸识别项目,其中包括了人脸检测模块 FaceDetector、面部关键点定位模块 FaceLandmarker 以及人脸特征提取与比对模块 FaceRecognizer。还将陆续开源人脸跟踪、闭眼检测等辅助模块。
这一项目使用 C 完成,不依赖任何第三方库,而且支持 x86 平台和 ARM 平台,具有良好的适配能力,可部署于各类平台上,由开发者进一步开发新的应用。
项目目录
现已对开发者开源的项目内容和目录如下:
- SeetaFace2
- craft(linux 和 windows 平台的编译脚本)
- documents(SDK 接口说明文档)
- example(C 版本 SDK 示例代码)
- FaceDetector(人脸检测模块)
- FaceLandmarker(特征点定位模块)
- FaceRecognizer(人脸特征提取和比对模块)
- SeetaNet(前向计算框架模块)
根据中科视拓提供的资料,现已开源的三个模块性能都非常高。它们都使用了深度学习架构,在保证效果的前提下尽可能提升计算速度,以下分别为每个模块使用的算法、技术指标和平台运行速度信息。
人脸检测
人脸检测使用的模型是 Cascate CNN。如图所示,该模型将人脸识别的图像分为三个阶段,每个阶段进行一次识别,并通过级联的方式将每一阶段的图像特征和上一阶段学习到的特征级联后进行 softmax。
Cascate CNN 的架构。分别使用了 12x12、24x24 和 48x48 的网络,对人脸图像进行三阶段的识别。
面部关键点定位
这一模块使用的是 FEC-CNN。如图所示,这也是将人脸图像经过多个 CNN 网络处理,每经过一个网络便获得一个表征,并和上一阶段的输入相乘。在经过了 T 个网络后输出最终的图像关键点。
FEC-CNN 网络的架构。
人脸特征提取和对比
这一模块使用了 ResNet50 的模型架构。如图所示,这一网络将多个残差学习块串联在一起,利用模型的深度学习图像的深层表征。
ResNet50 的模型架构。
模型效果
从中科视拓提供的资料来看,现在开源的三个模块都有着不错的模型性能。
和 1.0 版本的 SeetaFace 相比,SeetaFace2 在模型性能方面有了很大的提升,同时运行速度没有受到太大的影响。
编译和使用
那么,开发者怎样可以使用这些模块呢?官方在项目中提供了编译为 SDK 的方式,方便开发者将其作为自有项目中的组件使用。现已支持的操作系统平台有 Windows、Linux 和安卓系统。
开发者也可以编译运行example文件夹中的文件,尝试体验使用。example/search/example.cpp 示例展示了一套人脸识别的流程,包括:1. 预注册图像中的人脸到人脸识别底库中(example 中默认注册了"1.jpg"中的人脸);2. 打开摄像头,检测摄像头画面中的人脸;3. 对检测到人脸进行识别,确定所属人脸的身份。
测试者如果想在底库中成功识别出自己的人脸,需要在 example.cpp 的底库注册列表部分添加以自己名称命名的图片 (名称 .jpg),并把自己名称命名的图片文件拷贝到程序的运行目录下,重新编译 example 并运行程序,测试识别效果即可。
下载渠道
为了更好地让开发者继续开发工作,官方已提供下载模型的渠道:
1. 人脸检测模块 FaceDetector 模型下载链接:
- MD5 :E88669E5F1301CA56162DE8AEF1FD5D5
- 百度网盘:https://pan.baidu.com/s/1Dt0M6LXeSe4a0Pjyz5ifkg 提取码:fs8r
- Dropbox : https://www.dropbox.com/s/cemt9fl48t5igfh/fd_2_00.dat?dl=0
2. 面部特征 5 点定位模块 FaceLandmarker 模型下载链接:
- MD5 :877A44AA6F07CB3064AD2828F50F261A
- 百度网盘:https://pan.baidu.com/s/1MqofXbmTv8MIxnZTDt3h5A 提取码:7861
- Dropbox : https://www.dropbox.com/s/noy8tien1gmw165/pd_2_00_pts5.dat?dl=0
3. 面部特征 81 点定位模块 FaceLandmarker 模型下载链接:
- MD5 :F3F812F01121B5A80384AF3C35211BDD
- 百度网盘:https://pan.baidu.com/s/1CCfTGaSg_JSY3cN-R1Myaw 提取码:p8mc
- Dropbox : https://www.dropbox.com/s/v41lmclaxpwow1d/pd_2_00_pts81.dat?dl=0
4. 人脸特征提取和比对模块 FaceRecognizer 模型下载链接:
- MD5 :2D637AAD8B1B7AE62154A877EC291C99
- 百度网盘:https://pan.baidu.com/s/1y2vh_BHtYftR24V4xwAVWg 提取码:pim2
- Dropbox : https://www.dropbox.com/s/6aslqcokpljha5j/fr_2_10.dat?dl=0