使用dlib和face_recognition做一个简单的人脸识别
前言
这段时间比较闲,看边上屋子里面的老师在玩 opencv ,于是也打算玩玩,因为之前从来没有接触过,于是打算先用人脸识别上个手
语言和库的选择
因为对 Python 比较熟悉,所以当然是用 Py 啦,然后就在 GitHub 上瞎逛,看到了这个 https://github.com/ageitgey/face_recognition ,上面写着
The world’s simplest facial recognition api for Python and the command line
既然是 world’s simplest ,当然就选这个啦
看了一下,是用 Python 调用的 C++ 写的 dlib 来整的
编译 dlib (痛苦面具)
最开始试了一下 CPU 版,卡的鸭皮,因为自己的电脑有显卡,所以还是在自己的电脑上面来整,但是自己的电脑又不方便装 Linux ,双系统系统盘位置又不大够,于是只好在 Windows 上 en 整
Windows 整各种和 AI 有关的都非常不友好,dlib 光编译就花了我两天,甚至整的有点小破防,所以下面讲讲咋整
系统准备
硬件、OS
Windows Server 2019 Datacenter + i7-6700 HQ + 32G DDR4 + GTX960M
软件
显卡
首先装好各项驱动,去老黄官网下最新显卡驱动
驱动装好之后,去开始菜单找 NVIDIA 控制面板(NVIDIA Control Panel)
帮助-系统信息-组件,找 NVCUDA64.DLL 对应的值
如图,我的显卡对应的 CUDA 版本是 11.6
然后就可以是下载 CUDA 和 CUDNN 了,注意 CUDA 必须要装和上图一模一样的版本,而 CUDNN 最好选择能兼容该版本 CUDA 的最老版本,使用新版本很可能会导致各种各样的问题
下载小技巧:把下载链接的地址的 .com 换成 .cn 可以切到老黄在中国的服务器,能提高下载速度
CUDNN 的解压位置:打开文件资源管理器,输入 %CUDA_PATH% 回车,得到的目录就是解压位置,提示同名文件覆盖即可
CUDA 和 CUDNN 安装不需要添加环境变量
CMake
这个简单,没有什么太多的注意事项,记得加入 PATH 环境变量
C:\Program Files\CMake\bin
Visual Studio
只能装 2017 或者 2019 (听说 2015.3 也行,但是我没有试),新了老了都不行,电脑同时只能存在一个版本的 Visual Studio ,其它版本的必须卸载,需要安装 C++ 、C 开发相关库
dlib
版本参考 pip install dlib 安装的版本,我选择了 dlib-19.22
编译 dlib
打开 CMake-gui ,选择 x64 ,Visual Studio 2019,选择 dlib 文件夹位置,点击 “Configure” 然后选择 “DLIB_USE_CUDA” 选项(配置好了应该会自动选择上),然后看 CPU 是否支持 AVX 和 SSE2 SSE4 指令集,支持的话就选上,然后再次点击 “Configure” ,再 “Generate” -> “Open Project” 会自动打开 Visual Studio ,什么都不用管,直接选择 “生成->生成解决方案”,完成之后弹的项目有变化的提示框直接选择忽略,然后关闭 Visual Studio
安装 dlib
cmd 到 dlib 目录,运行
python setup.py install
安装完成!
使用 face_recognition
我写的 demo:https://github.com/luckykeeper/facedemo
我准备了全校 15989 个人的照片(每人一张),因为每次运行计算特征值都会花上大量时间,所以让第一次运行时计算人脸特征值,然后写入到 sqlite 数据库,第二次直接从 sqlite 数据库读人脸和学工号数据,这样速度就快了很多,需要注意 sqlite 是不能直接存储人脸特征值数据的(numpy.ndarray),需要转字符串存储,读取的时候再转回来
来康效果
960M 的性能比较拉,把摄像头设置 640x480 分辨率,15FPS 可以保证单人识别不卡
下图是第一次运行计算特征值的过程,会花费相当多的时间
下图是导入 15989 个人的人脸数据的识别结果,我自己试了一下,效果相当准确