开源 人脸识别 openface 实用介绍 实例演示 训练自己的模型
1.OpenFace 是 卡耐基梅陇(CMU)大学的一个图像+机器学习项目,整体程序包含:人脸发现,特征提取,特征神经网络训练,人脸识别这四部分。
github https://github.com/cmusatyalab/openface/
API文档 http://openface-api.readthedocs.io/en/latest/index.html
website http://cmusatyalab.github.io/openface/
2.安装
官方安装说明 http://cmusatyalab.github.io/openface/setup/
说的不是很详细,很多关键依赖以及基本概念并没有讲清楚。很容易导致安装、编译失败。
2.1操作系统
只支持Linux 和OSX,官方强烈推荐使用docker镜像来使用,不过为了运行加速或自主修改,还是建议大家从源码搭建。
OpenFace已经在ubuntu14.04和OSX10.10上成功测试。
我使用ubuntu14.04.5 https://mirror.tuna.tsinghua.edu.cn/ubuntu-releases/14.04.5/ubuntu-14.04.5-desktop-amd64.iso
2.2从头安装
我的实验室位置在西安,更换中科大的软件源超屌 http://mirrors.ustc.edu.cn trasty ,以下所有依赖的安装速度均与网速有关,也可能跟长城有关,安装时还需要耐心等待。若某一步安装不成功可以重启计算机重新安装。
sudo apt-get update sudo apt-get install ssh git curl zsh vim #安装基本工具 sudo -i #进入root,基本上主要程序都放在/root/目录下,只有openface源码放在/home/usr/也可以。
#安装必要依赖
sudo apt-get install build-essential cmake gfortran libatlas-dev libavcodec-dev libavformat-dev libboost-all-dev libgtk2.-dev libjpeg-dev liblapack-dev libswscale-dev pkg-config python-dev python-pip wget zip
#必要的数值计算库
pip2 install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple #选择下载镜像,可以加速, pip2 install scipy #numpy安装成功后,scipy总失败,reboot之后就好了 pip2 install pandas pip2 install scikit-learn pip2 install scikit-image #发现安装慢也可以使用 sudo apt-get install python-skimage的方式
#安装Torch 基于lua的科学计算工具,其包管理器是luarocks。
sudo apt-get install luarocks curl -s https://raw.githubusercontent.com/torch/ezinstall/master/install-deps | bash -e #安装Torch的依赖库 git clone https://github.com/torch/distro.git ~/torch --recursive #源码 cd torch bash install-deps #(cloning openblas) ./install.sh #源码安装torch 如果网络被墙也可以从www.pandaroll.cn/openface/torch.tar.gz 下载 ,解压:tar -xvf torch.tar.gz
#再安装torch需要的依赖,下载
~/torch/install/bin/luarocks install moses #若安装很慢可以从源码解压后直接安装,下载:www.pandaroll.cn/openface/Moses-master.zip 然后在终端输入~/torch/install/bin/luarocks install Moses-master/rockspec/moses-1.4.-.rockspec ~/torch/install/bin/luarocks install torchx #www.pandaroll.cn/openface/torchx-master.zip ~/torch/install/bin/luarocks install nn #www.pandaroll.cn/openface/nn-master.zip ~/torch/install/bin/luarocks install dpnn #www.pandaroll.cn/openface/dpnn-master.zip ~/torch/install/bin/luarocks install csvigo #www.pandaroll.cn/openface/lua---csv-master.zip ~/torch/install/bin/luarocks install fblualib #www.pandaroll.cn/openface/fblualib-master.zip ~/torch/install/bin/luarocks install optim #www.pandaroll.cn/openface/optim-master.zip
#安装opencv
sudo apt-get install libjpeg-dev libpng-dev libtiff-dev libjasper-dev sudo apt-get -qq install libopencv-dev build-essential checkinstall cmake pkg-config yasm libjpeg-dev libjasper-dev libavcodec-dev libavformat-dev libswscale-dev libdc1394--dev libxine-dev libgstreamer0.-dev libgstreamer-plugins-base0.-dev libv4l-dev python-dev python-numpy libtbb-dev libqt4-dev libgtk2.-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libtheora-dev libvorbis-dev libxvidcore-dev x264 v4l-utils
下载opencv https://github.com/Itseez/opencv/archive/2.4.11.zip 或 http://www.pandaroll.cn/openface/ocv.zip
cd ~ unzip ocv.zip cd opencv-2.4. mkdir release cd release cmake -G "Unix Makefiles" -D CMAKE_CXX_COMPILER=/usr/bin/g++ CMAKE_C_COMPILER=/usr/bin/gcc -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_EXAMPLES=ON -D WITH_QT=ON -D WITH_OPENGL=ON -D BUILD_FAT_JAVA_LIB=ON -D INSTALL_TO_MANGLED_PATHS=ON -D INSTALL_CREATE_DISTRIB=ON -D INSTALL_TESTS=ON -D ENABLE_FAST_MATH=ON -D WITH_IMAGEIO=ON -D BUILD_SHARED_LIBS=OFF -D WITH_GSTREAMER=ON .. sudo make all -j4 #cpu是4核 sudo make install #若报错硬件问题或操作系统问题,可能是过热问题,换个主板或计算机,最好是台式机。
#安装无报错后将cv2.so 考到python目录下
cp /lib/cv2.so /usr/local/lib/python2./dist-packages
#安装dlib
下载dlib https://github.com/davisking/dlib/releases/download/v18.16/dlib-18.16.tar.bz2
若难以下载,也可以 www.pandaroll.cn/opencv/dlib-18.16.tar.bz2
cp dlib-18.16.tar.bz2 ~/src cd src tar xf dlib-18.16.tar.bz2 cd dlib-18.16/python_examples mkdir build cd build cmake ../../tools/python cmake --build . --config Release sudo cp dlib.so /usr/local/lib/python2./dist-packages
#到目前,opencv 和 dlib应该安装好了,测试一下安装成功否:
python import cv2 import dlib
#若都成功,则继续下面的步骤
#安装openface
git clone https://github.com/cmusatyalab/openface.git #若下载太慢则:www.pandaroll.cn/openface/openface.zip ,然后解压unzip openface.zip,可以放到/home/usr/目录下面。 git submodule init git submodule update cd openface sudo python2 setup.py install
#获取模型
cd models/get-models.sh #若下载太慢 则下载 www.pandaroll.cn/openface/shape_predictor_68_face_landmarks.dat.bz2 ,放入 models/dlib中 bunzip2 shape_predictor_68_face_landmarks.dat.bz2 下载 www.pandaroll.cn/openface/celeb-classifier.nn4.small2.v1.pkl ,放入 models/openface中 下载 www.pandaroll.cn/openface/nn4.small2.v1.t7 ,放入 models/openface中
========================安装完成==========
3.测试
3.1demo1 #进入sudo -i root模式
计算不同面孔之间的相似度距离:

cd openface
./demos/compare.py images/examples/{lennon-.jpg,clapton-.jpg}
运行结束后会给出一个结果:l2距离是1.132

./demos/compare.py images/examples/{lennon-.jpg,lennon-.jpg}

运行结束后会给出一个结果:l2距离是0.763
发现:同一个人的确更相似。
3.2训练一个分类器
需要人脸原图,每个图包含一个人脸,每个人脸15张图。不同的人的照片放入不同的文件夹下。例如我收集了我自己和妹子的分别15张照片。一共相当于2个人,但是有几个人就分几个文件夹即可。将这几个文件夹放入同一个目录。


cd openface mkdir training-images cp -r siyi/ openface/traning-images cp -r naixin/ openface/traning-images
#人脸发现和矫正和裁剪 对其的新照片将放入/aligned-images/目录中,是96*96的正方形图片:
./util/align-dlib.py ./training-images/ align outerEyesAndNose ./aligned-images/ --size

#提特征,每个人脸128个特征点,新特征为csv文件,放入了/generated-embeddings/目录中:
./batch-represent/main.lua -outDir ./generated-embeddings/ -data ./aligned-images
#训练自己的面部检测模型,是最基本的SVM模型:classifier.pkl 会放入generated-embeddings/目录下:
./demos/classifier.py train ./generated-embeddings/
#获取一张不在数据集中的照片,利用分类器检测并归属然后会得到一个属于哪个名字的结果 和 一个可信度数值:
新照片siyitest1.jpg: 
./demos/classifier.py infer ./generated-embeddings/classifier.pkl siyitest1.jpg

分类器会给出分类结果和可信度,一般同样的人的可信度在99%左右,未在分类器中的人会低于80%。
3.3web-demo
sudo pip install -r demos/web/requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple ./demos/web/start-servers.sh
安装一个usb摄像头,打开火狐浏览器:127.0.0.1:8000 可以在线添加训练,实时识别。

==完==
乔思祎
2017年3月20日
开源 人脸识别 openface 实用介绍 实例演示 训练自己的模型的更多相关文章
- Python的开源人脸识别库:离线识别率高达99.38%
Python的开源人脸识别库:离线识别率高达99.38% github源码:https://github.com/ageitgey/face_recognition#face-recognitio ...
- Python的开源人脸识别库:离线识别率高达99.38%(附源码)
Python的开源人脸识别库:离线识别率高达99.38%(附源码) 转https://cloud.tencent.com/developer/article/1359073 11.11 智慧上云 ...
- face_recognition开源人脸识别库:离线识别率高达99.38%
基于Python的开源人脸识别库:离线识别率高达99.38%——新开源的用了一下感受一下 原创 2017年07月28日 21:25:28 标签: 人脸识别 / 人脸自动定位 / 人脸识别开源库 / f ...
- Github开源人脸识别项目face_recognition
Github开源人脸识别项目face_recognition 原文:https://www.jianshu.com/p/0b37452be63e 译者注: 本项目face_recognition是一个 ...
- 关于人脸识别引擎FaceRecognitionDotNet的实例
根据我上篇文章的分享,我提到了FaceRecognitionDotNet,它是python语言开发的一个项目face_recognition移植.结果真是有喜有忧,喜的是很多去关注了,进行了下载,我看 ...
- paper 129 : 比较好的开源人脸识别软件
1.face.com 以色列公司,某年六月时被Facebook收购,同时暂停了API服务,之前测试过他们的服务,基本上是了解到的应用中做得最牛的了. 2.orbe Orbeus由麻省理工学院和波士顿大 ...
- 基于Python的开源人脸识别库:离线识别率高达99.38%
项目地址:https://github.com/ageitgey/face_recognition#face-recognition 本文的模型使用了C++工具箱dlib基于深度学习的最新人脸识别方法 ...
- 开源OCR识别库-Tesseract介绍
最近在github上面看到一个开源的ocr文字识别库,感觉效果还可以,所以在这里介绍一下,这个项目的原地址在:https://github.com/tesseract-ocr/tesseract. t ...
- C# 调用人脸识别 虹软ArcFace2.0实例
虹软SDK推出了2.0版本,这个版本的所有API都集合在一个动态库里面,再通过引擎库调用,比1.2版本相对轻便了很多. 了解详情戳这里 小西瓜也迫不及待弄了一个新版本的C#实例,基于VS2013开发的 ...
随机推荐
- WPF Demo15 MVVM
项目结构如下: <Window x:Class="MVVMDemo.MainWindow" xmlns="http://schemas.microsoft.com/ ...
- Flask--路由备忘
路由: 路由传参route("/index/<userid>") def index(userid),参数数据类型的指定route("user/<int ...
- Qt学习——QListWidget控件的使用
转载:GDUTLYP Qt提供QListWidget类列表框控件用来加载并显示多个列表项.QListWidgetItem类就是列表项类. 一般列表框控件中的列表项有两种加载方式: 一种是由用户手动添加 ...
- SVM清晰讲解——线性可分问题
转载作者:liangdas 引言: 1995年Cortes和Vapnik于首先提出了支持向量机(Support Vector Machine),由于其能够适应小样本的分类,分类速度快等特点,性能不差于 ...
- Hadoop 管理工具HUE配置-hdfs_clusters配置
在HUE的hdfs_clusters中目前主要是配置hdfs相关的,配置好了之后便可以在hue中愉快的管理数据了,不过目前的配置还是比较...简单的.. 里面的配置主要是参考了hue官方文档,还 ...
- Spark 在Hadoop HA下配置HistoryServer问题
我的Spark机群是部署在Yarn上的,因为之前Yarn的部署只是简单的完全分布式,但是后来升级到HA模式,一个主NN,一个备NN,那么Spark HistoryServer的配置也需要相应的做修改, ...
- SSH的配置文件
Hibernate: xxx.hbm.xml ,作用:类的属性和表的列建立映射关系,主键策略,多表查询等 hibernate.cfg.xml ,核心配置文件,数据库配置信息,加载xxx.hbm.x ...
- 阿里云ECS专有网络下安装flannel注意事项
参照文章http://www.cnblogs.com/lyzw/p/6016789.html在两台阿里云ECS主机安装与配置flannel,在专有网络下两台主机只能通过公网ip连通,所以flannel ...
- [转][C#]WebAPI 必需 Dll
- 弹性势能,position,min用法,获取元素的宽
弹性势能: 网页div移动的mousemove的次数,跟div移动的距离没有关系,跟鼠标移动的快慢有关,浏览器自身有个计数事件,几毫秒 _this.seed*=0.95 //摩擦系数的写法 posit ...