前记

因为最近需要用到人脸识别技术,所以对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的初体验就结束了。

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

docker + openface进行人脸识别(初探)相关推荐

  1. 如何通过OpenFace实现人脸识别框架

    本文中,笔者将介绍OpenFace中实现人脸识别的pipeline,这个pipeline可以看做是使用深度卷积网络处理人脸问题的一个基本框架,很有学习价值,它的结构如下图所示: Input Image ...

  2. 基于Docker的交互式人脸识别应用

    本文将介绍如何开发一个交互式应用程序,利用Adam Geitgey的人脸识别框架,从摄像头或网络摄像头设备识别人脸. 为了创建一个交互式应用程序,我们将使用Tkinter,Docker将用于确保一个包 ...

  3. 使用OpenFace进行人脸识别(1)

    http://www.chinacloud.cn/show.aspx?id=25992&cid=12 本文中,笔者将介绍OpenFace中实现人脸识别的pipeline,这个pipeline可 ...

  4. OpenFace使用OpenFace进行人脸识别

    1.OpenFace简介 http://cmusatyalab.github.io/openface/ 安装就按照官方教程来就好了 装完各种依赖之后运行一下命令 https://github.com/ ...

  5. opencv-python人脸识别初探

    推荐博文: 1.<浅析人脸检测之Haar分类器方法> 2.<目标检测的图像特征提取之(三)Haar特征> 3.<Face Recognition with Python& ...

  6. 看OpenFace如何做到精准人脸识别

    原文:https://blog.algorithmia.com/understanding-facial-recognition-openface/ 作者:Stephanie Kim 翻译:不二 欢迎 ...

  7. 人脸检测MTCNN和人脸识别Facenet(附源码)

    原文链接:人脸检测MTCNN和人脸识别Facenet(附源码) 在说到人脸检测我们首先会想到利用Harr特征提取和Adaboost分类器进行人脸检测(有兴趣的可以去一看这篇博客第九节.人脸检测之Haa ...

  8. (转)第三十七节、人脸检测MTCNN和人脸识别Facenet(附源码)

    http://www.cnblogs.com/zyly/p/9703614.html 在说到人脸检测我们首先会想到利用Harr特征提取和Adaboost分类器进行人脸检测(有兴趣的可以去一看这篇博客第 ...

  9. (七)使用Docker进行人脸识别

    目录 介绍 创建容器镜像 配置容器 运行容器 下一步 在这里,我们简要介绍Docker容器,然后解释为什么它对我们的人脸识别系统有用.然后我们展示了如何安装Tensorflow图像和附加软件(Kera ...

最新文章

  1. JAVA变量path , classpth ,java_home设设置作用和作用
  2. python mutilprocessing多进程编程
  3. 今年怪事特别多 时代盘点09十大奇闻
  4. JS:封装函数判断数据类型
  5. 【渝粤题库】国家开放大学2021春1009离散数学(本)题目
  6. 华为云联合浙江大学构建新冠科研开放知识图谱
  7. oracle 快速关闭_快速关闭
  8. axios发送网络请求
  9. Java反射机制demo(三)—获取类中的构造函数
  10. socket简介 - 获取简单网页内容
  11. 动静态nat综合实验
  12. python中pixels函数_Python+OpenCV3.3图像处理(一)
  13. 《计算机安全与防护》教学反思,“计算机安全与防护教学设计”教学设计...
  14. 2020年ICPC辽宁省赛- 最长回文串(Java)
  15. 【外文翻译】图像中的傅里叶变换
  16. Caj论文转pdf(带书签目录)
  17. 利用python进行数据分析学习笔记
  18. 导图解文 从梦想到财富(39)正确的创业方向,都落在3个必然趋势中
  19. OSChina 周日乱弹 —— 有鬼故事!胆小勿入
  20. 填数字游戏ABCD*E=DCBA

热门文章

  1. EEMD(Ensemble Empirical Mode Decomposition)集合经验模式分解代码
  2. 中国小型厨房用具市场趋势报告、技术动态创新及市场预测
  3. mac电脑无法读取移动硬盘
  4. 【postman】脚本编写
  5. swift进度条倒计时
  6. React中阻止冒泡
  7. matlab根据乐谱播放音乐,科学网-[原][Matlab][04] Midi音乐键盘-王楠的博文
  8. java中SoftReference与WeakReference应用于高速缓存示例
  9. @Resource注入为null
  10. qeephp 记录下