树莓派人脸识别技术指南

树莓派系统安装

标准版安装

标准系统安装步骤参见:

http://www.ruanyifeng.com/blog/2017/06/raspberry-pi-tutorial.html

 

注:

安装系统后的sandisk可见大小就变了,想要恢复原样的话,请操作如下

 

1.”Win+R”打开运行界面,输入”cmd”,打开命令提示符。

2.在命令提示符窗口下输入”diskpart”,进入diskpart交互环境。

3.输入”lis dis”,显示所有的磁盘。该命令会显示所有挂在电脑上的磁盘,注意U盘所在磁盘序号。

4.输入”select dis x”,选定磁盘x(x代表第三步显示的U盘序号)。

5.输入”clean”, 删除被选择磁盘x(U盘)下的所有分区。

6.输入”create partition primary”,在磁盘x(U盘)下创建一个主分区。

7.输入”active”,**主分区。

8.输入”format fs=fat32 quick”,快速格式化主分区为fat32格式。

9.输入”exit”,退出diskpart交互环境。

 

参见:

https://blog.****.net/u014770862/article/details/71195057

人脸识别

软件安装

安装依赖请参看:

https://www.pyimagesearch.com/2016/04/18/install-guide-raspberry-pi-3-raspbian-jessie-opencv-3

https://www.pyimagesearch.com/2018/09/19/pip-install-opencv/

 

具体操作:

sudo apt-get upgrade

sudo apt update

 

apt-get install build-essential cmake pkg-config

apt-get install libjpeg-dev libtiff5-dev

 

add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main"

apt install libjasper-dev

apt install libpng12-dev

 

apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev

apt-get install libxvidcore-dev libx264-dev

apt-get install libgtk2.0-dev

apt-get install libatlas-base-dev gfortran

apt-get install python2.7-dev python3-dev

 

wget https://bootstrap.pypa.io/get-pip.py

 

apt install python3-distutils

apt install python3-testresources

 

python3 get-pip.py

pip install virtualenv virtualenvwrapper

vi ~/.bashrc

# virtualenv and virtualenvwrapper

export WORKON_HOME=$HOME/.virtualenvs

export VIRTUALENVWRAPPER_PYTHON=/usr/local/bin/python3

source /usr/local/bin/virtualenvwrapper.sh

mkvirtualenv cv -p python3

注:工作在虚拟环境workon cv (进入)/ deactivate (退出)

 

pip install opencv-contrib-python

 

pip install imutils

pip install dlib

pip install face_recognition

 

软件使用

sudo vi /etc/modules

添加模块

bcm2835-v4l2

sudo modprobe bcm2835-v4l2(**camera,否则下面命令报错)

 

代码从参考2页面下载

 

训练:

python encode_faces.py --dataset dataset --encodings encodings.pickle --detection-method hog

 

注: --detection-method可以选择cnnhog两种,cnn的准确度高一些,但是训练消耗cpu和内存都更大,不适合在树莓派下训练,可以在高性能物理机训练好后,将训练生成的encodings.pickle拷贝到树莓派中用于识别时使用。

 

识别:

python pi_face_recognition.py --cascade haarcascade_frontalface_default.xml --encodings encodings.pickle

 

主要参看的参考2,针对树莓pi的人脸识别指南,参考1、2、3是作者按照先后顺序写的,都可以帮助理解人脸识别技术。

 

参考1:https://www.pyimagesearch.com/2018/06/18/face-recognition-with-opencv-python-and-deep-learning/

参考2:https://www.pyimagesearch.com/2018/06/25/raspberry-pi-face-recognition/

参考3:https://www.pyimagesearch.com/2018/09/24/opencv-face-recognition/

人脸识别原理中文参考:https://zhuanlan.zhihu.com/p/24567586

 

 

人脸识别调优

  1. 识别训练过程中发现,cnn算法下,样本图片400多k可能会把16G内存耗光,导致训练失败。样本图片最好不要超过200k。windows下面可以通过右键编辑图片来改变图片大小。
  2. 根据识别算法,样本最好是正面照,数量要20张以上(多多益善)。

参看:http://answers.opencv.org/question/101291/improving-face-recognition-accuracy/

 

  1. 函数参数优化,compare_faces函数有个默认参数tolerance,程序中使用默认值0.6,实际进行识别时,发现tolerance过大,对相近的亚洲脸无法有效地区分开,比较结果都为true,导致识别结果错误。将该值显示赋值为0.3,可以更严格地识别亚洲脸,有效区分相近面孔。

树莓派人脸识别技术指南

 

参看:https://face-recognition.readthedocs.io/en/latest/face_recognition.html