树莓派人脸识别技术指南
树莓派系统安装
标准版安装
标准系统安装步骤参见:
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可以选择cnn和hog两种,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
人脸识别调优
- 识别训练过程中发现,cnn算法下,样本图片400多k可能会把16G内存耗光,导致训练失败。样本图片最好不要超过200k。windows下面可以通过右键编辑图片来改变图片大小。
- 根据识别算法,样本最好是正面照,数量要20张以上(多多益善)。
参看:http://answers.opencv.org/question/101291/improving-face-recognition-accuracy/
- 函数参数优化,compare_faces函数有个默认参数tolerance,程序中使用默认值0.6,实际进行识别时,发现tolerance过大,对相近的亚洲脸无法有效地区分开,比较结果都为true,导致识别结果错误。将该值显示赋值为0.3,可以更严格地识别亚洲脸,有效区分相近面孔。
参看:https://face-recognition.readthedocs.io/en/latest/face_recognition.html