前言
先说下自己写这个系列的想法,大二上的时候由于和老师做项目,期间接触了许多比较前沿的东西,可以说就此改变了我对大学的想法吧,从起初不想考研,等大四毕业后出去找个稳当的工作,到后来十分期望接受更高的教育。所以,这可以算是我大学的一个转折点吧。我正式开始学习ML是在大二下的时候,也许个人比较笨和时间花的不够多的原因,对机器学习的学习成效也不是很好。之所以想做人脸识别,是对自己的内心一点小小的欲望,也是对自己大一、大二结束,大三到来之前的一次总结,大三自己可能更倾向于考研,所以项目可能会做的比较少,这个系列可能会持续一两个月,直到最终期望的产品完成,不过也可能达不到自己的期望,所以尽自己所能吧。这里要先感谢和我一起做这个项目的三个的小伙伴们。
期间可能会写两个其他的系列,主要看时间允许不允许:
一个是微信公众号开发(python实现)
一个是简单的聊天程序(C++实现,使用boost.asio库,原先帮同学是用Winsock写的,功能挺多的,这里不细讲了)
人脸检测
人脸检测(Face Detection)是一种在任意数字图像中找到人脸的位置和大小的计算机技术。它可以检测出面部特征,并忽略诸如建筑物、树木和身体等其他任何东西。有时候,人脸检测也负责找到面部的细微特征,如眼睛、鼻子、嘴巴等的精细位置。( —- 维基百科)
目前的人脸检测方法主要有两大类:基于知识和基于统计。
基于知识的方法主要利用先验知识将人脸看作器官特征的组合,根据眼睛、眉毛、嘴巴、鼻子等器官的特征以及相互之间的几何位置关系来检测人脸。基于统计的方法则将人脸看作一个整体的模式——二维像素矩阵,从统计的观点通过大量人脸图像样本构造人脸模式空间,根据相似度量来判断人脸是否存在。在这两种框架之下,发展了许多方法。目前随着各种方法的不断提出和应用条件的变化,将知识模型与统计模型相结合的综合系统将成为未来的研究趋势。
基于知识的人脸检测方法
1. 模板匹配
2. 人脸特征
3. 形状与边缘
4. 纹理特性
5. 颜色特征
基于统计的人脸检测方法
1. 主成分分析与特征脸
2. 神经网络方法
3. 支持向量机
4. 隐马尔可夫模型
5. Adaboost算法
待补充
相关环境
Ubuntu16.10 + python3.6 + opencv3.2.0
python3逐步取代python2已经成了一种趋势,所以本文也顺应的发展使用最新的python3标准
opencv3.2.0也是当下最新的,没什么可以说的了
相关类库安装
python+opencv的环境很简单,只要几部就可以用了
opencv3.2.0安装
- 下载opencv3.2.0源码 https://github.com/opencv/opencv/archive/3.2.0.zip
解压opencv-3.2.0.zip
unzip opencv-3.2.0.zip -d ~ ( -d 后面表示存放的路径)
进入文件
cd ~/opencv-3.2.0
创建并进入编译目录
mkdir release && cd release
编译
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..
make
sudo make install
python3.6安装
Ubuntu16.10自带的python有两个,一个是python2.7,一个是python3.5,如果你实在不想装python3.6的话直接使用这两个版本也是可以的。
python3.6安装很简单
sudo apt-get install python3.6
pip3安装
sudo apt-get install python3-pip
opencv3.2.0
sudo apt-get install python-opencv
sudo apt-get install python-numpy
检测opencv是否安装成功只需要打开python,输入
import cv2
即可。
检测opencv版本
cv2.__version__
这一篇就写到这了,相关环境的搭建还是比较简单的。至于使用windows搭建环境其实也很见简单,这里就不讲了。
下一节开始代码实战。