Google
的Picasa
和Apple
的照片
软件早都已经实现基本的人脸识别功能了,你只要反复不断地告诉它们哪个是你自己,哪个是你家人,很快这两款软件可以学会识别,并帮你自动把你的所有含有人脸的照片分类。目前这种技术已经开源,Openface
在github
上有7000多颗星星。
这里有一篇中文介绍如何安装使用,我的操作步骤略简单,我是按照官方教程来的,用docker
安装,所以省掉一些步骤,但也遇到一些麻烦,在此一并说明。
安装
docker
并启动,这个就不用多说了。在Mac上可以还安装一个Kitematic
,可以可视化的方式管理你的docker
。docker pull bamos/openface
,按官方教程来,没什么可说的。运行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
准备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
个人的名字。对图片进行批量处理:
/root/openface/batch-represent/main.lua -outDir ./generated-embeddings/ -data ./aligned-images/
,这一步会在generated-embeddings
目录下生成2
个csv
文件,labels.csv
和reps.csv
,labels.csv
相对简单,它只是说明了哪一张照片对应的是哪一个人,reps.csv
则是一大堆人类看不懂的数字。接下来开始训练:
/root/openface/demos/classifier.py train ./generated-embeddings
,训练的结果会在generated-embeddings
目录下生成一个classifier.pkl
文件,这个是我们最终想要的结果。然后你就可以开始测试了,再拷一张不在训练集中的照片进去,这张照片就不拘泥于只包括人脸了,可以包括背景或者整个身体都无所谓,但最好不要放好几个人的合影,不然机器不知道你要识别哪一个人。假设照片文件名为
1.jpg
,则执行/root/openface/demos/classifier.py infer ./generated-embeddings/classifier.pkl 1.jpg
,如果照片中人是刚才识别的2
人之一,则一般识别准确度会在90%
以上,如果不是的话,会低于80%
。这里可以做一个很有趣的实验:测试你和某明星的脸部相似度,也许你可以在此基础上开发一个App?
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。