OpenFace手把手入门之 — 快速训练一个人脸识别模型,比一比你像哪个明星,亲测可用,python torch lua

OpenFace是一款优秀的开源深度学习人脸识别库。如果你熟悉torch,python或者lua,这款丰富的人脸识别库更是一款不可多得的工具。

今天David 9 就带大家手把手训练一个人脸识别模型,测试一下你像哪个明星?

1.  下载openface的docker镜像,免去你配置openface的过程:

docker pull bamos/openface

2. 跑这个docker镜像,进入项目目录:

docker run -v /Users:/host/Users -p 9000:9000 -p 8000:8000 -t -i bamos/openface /bin/bash
cd /root/openface

注意 -v /Users:/host/Users 这个参数是必要的。因为docker中的openface项目还没有训练数据集,把你本地的/Users目录挂载到docker镜像中的/host/Users目录,可以方便你复制一些用于训练的图片数据集。

3. 在工作目录/root/openface下准备数据集:

mkdir training-images
mkdir ./training-images/wuyifan/
mkdir ./training-images/yangmi/
mkdir ./training-images/zhaowei/

如上代码创建一个training-images训练数据集的文件夹,里面再建三个明星吴亦凡,杨幂,赵薇的3个文件夹,别忘了在这3个文件中放一些对于的JPG图片。这样才算准备好了训练集,差不多每个文件夹15张图片即可。

4. 对齐所有训练图片方向,使得都以鼻子和眼睛的正向为标准:

./util/align-dlib.py ./training-images/ align outerEyesAndNose ./aligned-images/ --size 96

此处.//training-images/就是我们的训练数据集了,./aligned-images/是生成的对齐后的训练集合。

5. 根据刚才对齐后的训练集,生成特征:

./batch-represent/main.lua -outDir ./generated-embeddings/ -data ./aligned-images/

我们使用Openface很牛叉的预训练模型,在./generated-embeddings/中生成所有图片的特征,两个csv文件:

root@0787fe31c4a1:~/openface# ls generated-embeddings/
labels.csv  reps.csv

6. 最后用这些特征,我们训练一个SVM分类模型就OK了:

root@0787fe31c4a1:~/openface# ./demos/classifier.py train ./generated-embeddings/
/root/.local/lib/python2.7/site-packages/sklearn/lda.py:4: DeprecationWarning: lda.LDA has been moved to discriminant_analysis.LinearDiscriminantAnalysis in 0.17 and will be removed in 0.19
 "in 0.17 and will be removed in 0.19", DeprecationWarning)
Loading embeddings.
Training for 3 classes.
Saving classifier to './generated-embeddings//classifier.pkl'

7. 最让人兴奋的时刻到了,看你的头像更像哪个明星?

root@0787fe31c4a1:~/openface# ./demos/classifier.py infer ./generated-embeddings/classifier.pkl yicunzhao.jpg      
/root/.local/lib/python2.7/site-packages/sklearn/lda.py:4: DeprecationWarning: lda.LDA has been moved to discriminant_analysis.LinearDiscriminantAnalysis in 0.17 and will be removed in 0.19
  "in 0.17 and will be removed in 0.19", DeprecationWarning)

=== yicunzhao.jpg ===
Predict wuyifan with 0.90 confidence.

上述结果表明我的头像yicunzhao.jpg明显更像吴亦凡(90%可信度)

啥?长这么像我也很无奈呢

 

参考文献:

  1. https://medium.com/@ageitgey/machine-learning-is-fun-part-4-modern-face-recognition-with-deep-learning-c3cffc121d78
  2. https://cmusatyalab.github.io/openface/

本文采用署名 – 非商业性使用 – 禁止演绎 3.0 中国大陆许可协议进行许可。著作权属于“David 9的博客”原创,如需转载,请联系微信: david9ml,或邮箱:yanchao727@gmail.com

或直接扫二维码:

发布者

David 9

邮箱:yanchao727@gmail.com 微信: david9ml

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注