干货 | 手把手教你用 Ubuntu14.04 LTS 搭建简易人脸识别系统

1,278 阅读3分钟
原文链接: mp.weixin.qq.com

硬件:Core i7-6700;16GB;Nvidia GeForce GTX1070;500G SSD

平台:台式PC

软件:Linux 对应的GTX1070驱动;cuda8.0;cudnn 5.1;Linux 14.04 LTS,OpenCV 3.1.0 Linux版

相关博客:http://www.jianshu.com/p/68ac83436a1b



前期环境搭建


本文实验基于的环境:Ubuntu14.04LTS+CUDA8.0+cudnn5.1的安装和调试请读者查看本博之前的博文:


《(Ubuntu+Tensorflow+CUDA8.0+cudnn,新鲜靠谱版)利用DL学梵高作画---实战记录和心得》,本文不再赘述。


编译环境准备


在Terminal中,操作如下:


输入:sudo -i  回车    

输入开机登录密码,回车

输入:sudo apt-get install build-essential 回车

等待系统完成安装。。。。。。

(笔者注:大部分情况下,在完成了前文所说的“前期环境搭建”,这一步是可以省略的。)


依赖库安装


继续在Terminal中,操作如下:


输入:apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev   回车


(此时,系统会多次询问是否需要安装***,全部输入Y  回车,即可)


屏幕显示如图:  



然后,继续在Terminal中,操作如下:


输入:apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev   回车   等待

(笔者注:小白在操作时,尤其是在windows环境下成长出来的Linux小白,在输入命令时一定要克制内心对于命令输入的抵触心理)


准备OpenCV 3.1.0 for Linux


在OpenCV官网下载区下载OpenCV 3.1.0 for Linux

地址:http://opencv.org/releases.html

将下载文件放置在Ubuntu14.04LTS的桌面上,执行解压操作,备用。


安装


安装操作全部在OpenCV解压文件的目录内进行,所以,首先需要操作的是切入OpenCV解压文件内。操作如下:(以下载文件名为opencv-3.1.0.zip为例)


继续在Terminal中操作:


输入:cd /OpenCV-3.1.0/  回车

输入:cmake  .  回车

输入:sudo make  回车

输入:sudo make install 回车

输入:sudo /bin/bash -c 'echo "/usr/local/lib"> /etc/ld.so.conf.d/opencv.conf' 回车

输入:sudo ldconfig  回车


这里需要注意的是,笔者在安装时,出现了系统已安装的CUDA-8.0与OpenCV 3.1.0冲突的情况,这时需要修改OpenCV 3.1.0的源码,具体操作如下:


输入:cd /OpenCV-3.1.0/modules/cudalegacy/src/  回车

输入:vi  graphcuts.cpp  回车


按照VIM的文本修改方式,将文本中的第45行:


#if !defined (HAVE_CUDA) || defined (CUDA_DISABLER)

修改成:

#if !defined(HAVE_CUDA)||defined(CUDA_DISABLER)||(CUDART_VERSION>=8000)

然后,在Terminal中,执行:

sudo make   回车


屏幕显示内容如下:


编译自带Samples


如果你熟悉了上文的操作,那么如下的操作也不会陌生,因为所有的执行依然要在OpenCV3.1.0的源文件目录下进行。


在Terminal中,操作如下:


输入:cd ~/OpenCV-3.1.0/samples/   回车

输入:cmake  .    回车

输入:sudo make -j $(nproc)  回车


屏幕显示如下:



人脸检测


在这一波编译执行完成之后,就可以进行OpenCV 3.1.0人脸检测测试程序的执行了,这里需要你准备一张带有人脸正面(免冠,免眼镜)的照片,小编这里用了美队。


先将照片放在桌面上,并命名为CA.jpg。


依然是在Terminal中,具体操作如下:


输入: cd ~/opencv-3.1.0/samples/cpp   回车

输入:  ./cpp-example-facedetect /home/[输到这里可以按一下Tab键]/Desktop/CA.jpg  回车


————————见证奇迹的时刻————————


这次实验使用OpenCV3.1自带的facedetect人脸检测样例算法,检测成功用时436毫秒,由此可以看出OpenCV自带的人脸检测算法效率并不高。从图中可以看出,算法并不能够精准的只抓取美队的面部,并且,经多次实验确认,此算法不能对戴眼镜以及帽子的面部特征做出识别,足见其还有很大的改进空间。