前记

因为最近需要用到人脸识别技术,所以对openface的使用做了一个简单的测试,使用的是docker+openface+ubuntu环境,docker下安装openface比较简单,不会因为环境安装不成功而有各种问题。

在网上看到说openface这个开源框架的识别率还挺高的,还没具体的测试,后面看看效果怎么样。另外,openface是基于faceNet的,个人觉得用faceNet源码也是可以的,这里就做一个简单的openface使用探究。

使用openface需要线下自己弄一个数据集,当然你也可以用开源的,这里数据集的要求是:1. 单张图片就只能有一张人脸; 2. 图片不能过于模糊;3. 个人遇到的问题,不要中文命名!!!

正文:

使用步骤:

一、环境安装

  1.  安装docker,自行解决哈
  2. 安装openface

一行解决:docker pull bamos/openface

二、数据集准备

将不同人脸放到不同的文件夹下,每张图片只能包含一张人脸,不然不保证识别质量。然后将这些文件夹放到一个文件夹下,例如我放到了当前工作目录下的training-images。

注意,上面提到我们不能中文命名,而我们处理很多人脸时都是中文,这时候一个一个改名字很麻烦,介绍一个很好用的python库pypinyin可以转中文为拼音,可以试试。

 

三、 启动openface container

首先可以通过docker images查看我们是否安装好docker下的openface

然后通过一下命令启动:

docker run -p 9000:9000 -p 8000:8000 -t -i bamos/openface /bin/bash

启动之后,我们就进入了openface的容器,ls一下,进入root,就是后面我们的工作目录,当然你也可以在别的目录下工作,例如下一个子目录openface。然后在当前目录下创建一个文件夹用来存放后面前面所说的数据集,我创建的是data。

四、 复制数据集到container下

网上有处理图像集是,远程处理当前文件夹,我试了好像没成功,所以我换了第二种方式,就是直接复制,将当前目录下的文件夹复制到contanier中,就是前面所说的data目录下。

首先查看运行中的container的CONTAINER ID, 重新启动一个终端,输入命令行:docker ps -a

复制:docker cp training-images container-id:/root/data

training-images是数据集位置,而红色字体和后面是容器以及存放复制后文件的位置,复制成功后在容器中可以查看:

五、裁剪人脸

在container中运行: ./openface/util/aligned-dlib.py ./data/training-images align outerEyesAndNose ./aligned-images/ --size 96

这里./data/training-images是我们复制后的文件夹的位置,./aligned-images/是裁剪后的存放位置,size是裁剪后人脸大小,这些都是可选的。

裁剪完成后,同样可以将裁剪后的文件夹复制到宿主机的目录下查看:

docker cp  container-id:/root/aligned-images path-dest

六、 提取人脸特征

命令行: ./openface/batch-represent/main.lua -outDir ./generated-embeddings/ -data ./aligned-images (有点慢)

outDir选择输出文件夹,运行成功后,可以在generated-embeddings文件夹下面看到两个文件(一个是图像路径列表,一个是对应图像的128维特征,可以复制后使用),可以复制到本地查看。

七、 SVM分类训练

命令: ./openface/demos/classifier.py train ./generated-embeddings/

运行成功后可以在generated-embeddings目录下看到多了一个classifier.pkl文件,就是SVM训练后的文件。

八、 比较

首先将需要测试的图像,复制到container中,例如我的test.jpg图像:

docker cp test.jpg container-id:/root/ 

然后就可以用训练好的来对比了;

./openface/demos/classifier.py  infer ./generated-embeddings/classifier.pkl test.jpg

 

到此,docker+openface的初体验就结束了。

如果该博客对你有用,点个赞(*—*)

 

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐