docker安装openface进行人脸识别

GooglePicasaApple照片软件早都已经实现基本的人脸识别功能了,你只要反复不断地告诉它们哪个是你自己,哪个是你家人,很快这两款软件可以学会识别,并帮你自动把你的所有含有人脸的照片分类。目前这种技术已经开源,Openfacegithub上有7000多颗星星。

这里有一篇中文介绍如何安装使用,我的操作步骤略简单,我是按照官方教程来的,用docker安装,所以省掉一些步骤,但也遇到一些麻烦,在此一并说明。

  1. 安装docker并启动,这个就不用多说了。在Mac上可以还安装一个Kitematic,可以可视化的方式管理你的docker

  2. docker pull bamos/openface,按官方教程来,没什么可说的。

  3. 运行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

  4. 准备30张图片,一定要2个不同的人的,图片大小无所谓,但是最好只包含人脸,每人各15张,分别放在2个不同的目录下。比如你的本地文件夹是/local_directory,那你一定要在这个文件夹下建立一个training-images的子文件夹,然后再在training-images这个子文件夹下用两个人的名字再建立2个不同的文件夹,然后把照片放进去。我一开始没有建立这个training-images子文件夹,绕了不少弯路。这一步操作是在本地环境下完成的,从下一步开始,我们进入docker环境操作。

  5. 开始自动剪裁:/root/openface/util/align-dlib.py ./training-images align outerEyesAndNose ./aligned-images/ --size 96,这一步的目的是让机器自动把这30张照片修整成96x96png文件,以便于后续处理。所以你前面那些照片大小无所谓就是这个意思。处理的结果就放在aligned-images目录下,它下面会有2个文件夹,就是你放进去的那2个人的名字。

  6. 对图片进行批量处理:/root/openface/batch-represent/main.lua -outDir ./generated-embeddings/ -data ./aligned-images/,这一步会在generated-embeddings目录下生成2csv文件,labels.csvreps.csvlabels.csv相对简单,它只是说明了哪一张照片对应的是哪一个人,reps.csv则是一大堆人类看不懂的数字。

  7. 接下来开始训练:/root/openface/demos/classifier.py train ./generated-embeddings,训练的结果会在generated-embeddings目录下生成一个classifier.pkl文件,这个是我们最终想要的结果。

  8. 然后你就可以开始测试了,再拷一张不在训练集中的照片进去,这张照片就不拘泥于只包括人脸了,可以包括背景或者整个身体都无所谓,但最好不要放好几个人的合影,不然机器不知道你要识别哪一个人。假设照片文件名为1.jpg,则执行/root/openface/demos/classifier.py infer ./generated-embeddings/classifier.pkl 1.jpg,如果照片中人是刚才识别的2人之一,则一般识别准确度会在90%以上,如果不是的话,会低于80%。这里可以做一个很有趣的实验:测试你和某明星的脸部相似度,也许你可以在此基础上开发一个App?

你可能感兴趣的:(opencv)