Google
的Picasa
和Apple
的照片
软件早都已经实现基本的人脸识别功能了,你只要反复不断地告诉它们哪一个是你本身,哪一个是你家人,很快这两款软件能够学会识别,并帮你自动把你的全部含有人脸的照片分类。目前这种技术已经开源,Openface
在github
上有7000多颗星星。html
这里有一篇中文介绍如何安装使用,个人操做步骤略简单,我是按照官方教程来的,用docker
安装,因此省掉一些步骤,但也遇到一些麻烦,在此一并说明。git
安装docker
并启动,这个就不用多说了。在Mac上能够还安装一个Kitematic
,能够可视化的方式管理你的docker
。github
docker pull bamos/openface
,按官方教程来,没什么可说的。docker
运行container,按官方教程是这样的:docker run -p 9000:9000 -p 8000:8000 -t -i bamos/openface /bin/bash
,但实际上,由于咱们还须要把图片拷进去,因此最好加一个-v参数,以便后续操做:docker run -p 9000:9000 -p 8000:8000 -v /local_directory:/remote_directory -t -i bamos/openface /bin/bash
bash
准备30张图片,必定要2
个不一样的人的,图片大小无所谓,可是最好只包含人脸,每人各15
张,分别放在2个不一样的目录下。好比你的本地文件夹是/local_directory
,那你必定要在这个文件夹下创建一个training-images
的子文件夹,而后再在training-images
这个子文件夹下用两我的的名字再创建2个不一样的文件夹,而后把照片放进去。我一开始没有创建这个training-images
子文件夹,绕了很多弯路。这一步操做是在本地环境下完成的,从下一步开始,咱们进入docker
环境操做。测试
开始自动剪裁:/root/openface/util/align-dlib.py ./training-images align outerEyesAndNose ./aligned-images/ --size 96
,这一步的目的是让机器自动把这30
张照片修整成96x96
的png
文件,以便于后续处理。因此你前面那些照片大小无所谓就是这个意思。处理的结果就放在aligned-images
目录下,它下面会有2
个文件夹,就是你放进去的那2
我的的名字。lua
对图片进行批量处理:/root/openface/batch-represent/main.lua -outDir ./generated-embeddings/ -data ./aligned-images/
,这一步会在generated-embeddings
目录下生成2
个csv
文件,labels.csv
和reps.csv
,labels.csv
相对简单,它只是说明了哪一张照片对应的是哪个人,reps.csv
则是一大堆人类看不懂的数字。code
接下来开始训练:/root/openface/demos/classifier.py train ./generated-embeddings
,训练的结果会在generated-embeddings
目录下生成一个classifier.pkl
文件,这个是咱们最终想要的结果。htm
而后你就能够开始测试了,再拷一张不在训练集中的照片进去,这张照片就不拘泥于只包括人脸了,能够包括背景或者整个身体都无所谓,但最好不要放好几我的的合影,否则机器不知道你要识别哪个人。假设照片文件名为1.jpg
,则执行/root/openface/demos/classifier.py infer ./generated-embeddings/classifier.pkl 1.jpg
,若是照片中人是刚才识别的2
人之一,则通常识别准确度会在90%
以上,若是不是的话,会低于80%
。这里能够作一个颇有趣的实验:测试你和某明星的脸部类似度,也许你能够在此基础上开发一个App?blog