docker + openface进行人脸识别(初探)
前记
因为最近需要用到人脸识别技术,所以对openface的使用做了一个简单的测试,使用的是docker+openface+ubuntu环境,docker下安装openface比较简单,不会因为环境安装不成功而有各种问题。
在网上看到说openface这个开源框架的识别率还挺高的,还没具体的测试,后面看看效果怎么样。另外,openface是基于faceNet的,个人觉得用faceNet源码也是可以的,这里就做一个简单的openface使用探究。
使用openface需要线下自己弄一个数据集,当然你也可以用开源的,这里数据集的要求是:1. 单张图片就只能有一张人脸; 2. 图片不能过于模糊;3. 个人遇到的问题,不要中文命名!!!
正文:
使用步骤:
一、环境安装
- 安装docker,自行解决哈
- 安装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进行人脸识别(初探)相关推荐
- 如何通过OpenFace实现人脸识别框架
本文中,笔者将介绍OpenFace中实现人脸识别的pipeline,这个pipeline可以看做是使用深度卷积网络处理人脸问题的一个基本框架,很有学习价值,它的结构如下图所示: Input Image ...
- 基于Docker的交互式人脸识别应用
本文将介绍如何开发一个交互式应用程序,利用Adam Geitgey的人脸识别框架,从摄像头或网络摄像头设备识别人脸. 为了创建一个交互式应用程序,我们将使用Tkinter,Docker将用于确保一个包 ...
- 使用OpenFace进行人脸识别(1)
http://www.chinacloud.cn/show.aspx?id=25992&cid=12 本文中,笔者将介绍OpenFace中实现人脸识别的pipeline,这个pipeline可 ...
- OpenFace使用OpenFace进行人脸识别
1.OpenFace简介 http://cmusatyalab.github.io/openface/ 安装就按照官方教程来就好了 装完各种依赖之后运行一下命令 https://github.com/ ...
- opencv-python人脸识别初探
推荐博文: 1.<浅析人脸检测之Haar分类器方法> 2.<目标检测的图像特征提取之(三)Haar特征> 3.<Face Recognition with Python& ...
- 看OpenFace如何做到精准人脸识别
原文:https://blog.algorithmia.com/understanding-facial-recognition-openface/ 作者:Stephanie Kim 翻译:不二 欢迎 ...
- 人脸检测MTCNN和人脸识别Facenet(附源码)
原文链接:人脸检测MTCNN和人脸识别Facenet(附源码) 在说到人脸检测我们首先会想到利用Harr特征提取和Adaboost分类器进行人脸检测(有兴趣的可以去一看这篇博客第九节.人脸检测之Haa ...
- (转)第三十七节、人脸检测MTCNN和人脸识别Facenet(附源码)
http://www.cnblogs.com/zyly/p/9703614.html 在说到人脸检测我们首先会想到利用Harr特征提取和Adaboost分类器进行人脸检测(有兴趣的可以去一看这篇博客第 ...
- (七)使用Docker进行人脸识别
目录 介绍 创建容器镜像 配置容器 运行容器 下一步 在这里,我们简要介绍Docker容器,然后解释为什么它对我们的人脸识别系统有用.然后我们展示了如何安装Tensorflow图像和附加软件(Kera ...
最新文章
- JAVA变量path , classpth ,java_home设设置作用和作用
- python mutilprocessing多进程编程
- 今年怪事特别多 时代盘点09十大奇闻
- JS:封装函数判断数据类型
- 【渝粤题库】国家开放大学2021春1009离散数学(本)题目
- 华为云联合浙江大学构建新冠科研开放知识图谱
- oracle 快速关闭_快速关闭
- axios发送网络请求
- Java反射机制demo(三)—获取类中的构造函数
- socket简介 - 获取简单网页内容
- 动静态nat综合实验
- python中pixels函数_Python+OpenCV3.3图像处理(一)
- 《计算机安全与防护》教学反思,“计算机安全与防护教学设计”教学设计...
- 2020年ICPC辽宁省赛- 最长回文串(Java)
- 【外文翻译】图像中的傅里叶变换
- Caj论文转pdf(带书签目录)
- 利用python进行数据分析学习笔记
- 导图解文 从梦想到财富(39)正确的创业方向,都落在3个必然趋势中
- OSChina 周日乱弹 —— 有鬼故事!胆小勿入
- 填数字游戏ABCD*E=DCBA
热门文章
- EEMD(Ensemble Empirical Mode Decomposition)集合经验模式分解代码
- 中国小型厨房用具市场趋势报告、技术动态创新及市场预测
- mac电脑无法读取移动硬盘
- 【postman】脚本编写
- swift进度条倒计时
- React中阻止冒泡
- matlab根据乐谱播放音乐,科学网-[原][Matlab][04] Midi音乐键盘-王楠的博文
- java中SoftReference与WeakReference应用于高速缓存示例
- @Resource注入为null
- qeephp 记录下