SeetaFace 开源的人脸识别代码

https://blog.csdn.net/u013565099/article/details/75807782

最近在做一个人脸识别(人脸对比)的项目,所以查找了一些人脸识别的相关算法。刚开始考虑的是dlib,但没有折腾出来(最新的版本需要使用2015编译?)。在我十分纠结的时候,无意中查到了SeetaFace这个开源项目,并成功的运用起来了,十分兴奋,而且SeetaFace还是个国产货,更加感动,感谢开源者的无私奉献。


简介

SeetaFace Engine是一个开源的人脸识别引擎(官网:Github),由中科院计算所 山世光 研究员带领的人脸识别研究组研发。它的特点主要是:

  • C++实现
  • 不依赖第三方库
  • 它包含了人脸相关的一整套过程,包括:人脸检测、人脸对齐、人脸识别

下载压缩包解压之后得到:
这里写图片描述
3个文件包分别对应如下3个功能:

  • 人脸检测
  • 人脸对齐
  • 人脸识别

1、人脸检测

这里写图片描述
在 examples 文件夹中包含了一个示例工程,配置好opencv后可以直接跑(opencv仅是用来读图的,算法部分并没有用到opencv)。下面的工程会编译生成一个库文件(FaceDetection.dll,在\examples\x64\Release路径下),上面的工程则是个测试工程,我们可以模仿。
这里写图片描述

实验效果:
这里写图片描述

2、人脸对齐

工程文件目录和上述的类似,下面的工程会编译生成一个库文件(FaceAlignment.dll,在\examples\x64\Release路径下),上面的工程则是个测试工程,我们可以模仿。人脸对齐会在人脸检测的基础上,找出人脸5个点(眼、鼻、嘴)。算法中还有个函数,可以把方框中的人脸截取出来并对齐(即摆正,可以看下面第3部分的实验效果)。
这里写图片描述

实验效果:
这里写图片描述

3、人脸识别

工程文件目录和上述的类似,上面的工程会编译生成一个库文件(Identification.dll,在\examples\x64\Release路径下),下面的工程则是个测试工程,我们可以模仿。人脸识别时,每张人脸会提取到一个2048维的特征,如果要进行人脸识别(比对)的话,则只需对比两张人脸的特征的差异即可,算法中有相应的函数。
这里写图片描述

实验效果:
这里写图片描述

这里写图片描述


几点说明

  • 编译得到上述的3个动态库(FaceDetection.dll、FaceAlignment.dll、Identification.dll),我们就可以在自己的工程中直接调用相应的函数,进行高级的人脸相关的检测了,哈哈哈。(后续再给出个案例)
  • 该开源代码的效果还是挺不错的(目前我是进行两张人脸的对比,感觉已经够用了)
  • 有时间了再了解一下Seetaface的原理
  • 有时间了我再把还没有跑通的 dlib 给跑一下,再对比一下 Seetaface 和 dlib 的效果
  • 再次感谢 中科院 山世光研究组的无私

猜你喜欢

转载自blog.csdn.net/childbor/article/details/81118681