Openface 入门

Openface 简单入门

背景

Openface是一个开源的人脸识别框架,同类软件产品还有 seetaface ,DeepID等,当然,如果算上商业的产品,那就更多了。

Openface人脸比对结果的准确度可能不是很好,它是有待提升的。如果有能力的话, 可能通过源码进行优化。 一般来说,置信度小于1 的基本可以接受的,但是这个要看具体的使用场景,我们可以根据具体的业务设置这个置信度阈值。 如果Openface 准确度达不到我们的要求, 我们可以多试几次,或者提供更加高质量的训练库图片和比对图片,或者业务上进行控制和优化,比如前端提示图片无法识别,图片不清晰等等。

安装

官方推荐用docker来安装openface,这个参照官方文档,直接用docker安装即可。如果自己一步步去安装的话,估计很花时间,而且不一定能完成。

除了安装,我们至少需要做一些准备工作,这就是人脸训练; 然后, 我们才可以使用它进行人脸识别/比对等操作

1 人脸训练

上传基础图片,比如客户经理的图片:

将同一个人的照片,以其名字命名,然后放入同一个目录,目录名字以人名进行命名。然后上传或挂载到bamos/openface 镜像容器的图像训练目录:/root/openface/data/mydata/train_img,

胡歌的图片目录是:/root/openface/data/mydata/train_img/huge/

杨洋的图片目录是:/root/openface/data/mydata/train_img/yangyang/

我的图片目录是:/root/openface/data/mydata/train_img/lk/

照片要求:

尽量清晰,正面照,单人照,有且只有一张完整的人脸,可以有表情,但是尽量简单,不要太夸张的表情。照片至少8张,20 张以上为佳。 照片数量越多,效果越好。照片背景不限,衣着不限,越丰富越好,但一定要是同一个人的照片。图像大小以20~500K 为佳。

图片预处理:

./util/align-dlib.py data/mydata/train_img/ align outerEyesAndNose data/mydata/aligned_images/ --size 64

特征提取:

./batch-represent/main.lua -outDir data/mydata/generated_charaters/ -data data/mydata/aligned_images/

训练图片:

./demos/classifier.py train data/mydata/generated_charaters/ 

2 使用它做人脸比对

上传照片:

先将单张照片放入到容器的/root/openface/data/mydata/others/ 目录,图片格式尽量统一,比如都使用jpg格式。

调用接口,结果验证:

./demos/classifier.py infer data/mydata/generated_charaters/classifier.pkl /root/openface/data/mydata/others/{hu,lk }*

这里的/root/openface/data/mydata/others/{hu,lk }* 是需要进行和现有图片库做分类比对的图片, 这里 {hu,lk }* 是一个正则表达式, 表示那个目录下, hu或lk 开头的所有文件。 我们可以指定一个具体的路径,比如:

/root/openface/data/mydata/others/zhangsan.jpg

输出:

=== /root/openface/data/mydata/others/hg4.jpg ===

Predict huge with 0.91 confidence.

=== /root/openface/data/mydata/others/lk (1).jpg ===

Predict lk with 0.93 confidence.

=== /root/openface/data/mydata/others/lk (2).jpg ===

Predict lk with 0.91 confidence.

如上所见,输出结果格式是这样的:

=== 正在进行比对的图片的全路径 ===

Predict 人名 with 置信度 confidence。

表示的意思是, 如

=== /root/openface/data/mydata/others/hg4.jpg ===

Predict huge with 0.91 confidence.

意为: /root/openface/data/mydata/others/hg4.jpg 这张图片是 huge(胡歌)的可能性是0.91。 一般来说, 置信度越小,说明判断正确的可能性越大, 结果小于1 表示基本可以相信。 大于1 表示基本不可信。

3 常见问题

Q: 人脸图片无法训练或无法比对, 出现cant find a face … 报错

A: 这个很可能是图片质量问题,图片要尽量清晰和完整,不能有太大变形,光照不能太暗, 光线要均匀等等。如果图片没拍摄好,我们需要删除重新拍摄,然后上传。

Q: 同一个人的照片,结果显示置信度大于1 是怎么回事?

A: 这种情况是可能发生的,至少有两个方面原因,1是他的训练图片库的照片质量不高,2是他新上传的需要进行比对的图片质量不高。对此我们可以多试几次,或者提供更加高质量的训练库图片和比对图片,或者业务上进行控制和优化。

Q: 需要比对的图片是huge 怎么被分到了yangyang 这个类别,而且置信度还挺好的,怎么解释?

A: 这个还是图片质量问题,有两个方面原因,同上。

参考:

http://www.cnblogs.com/minsons/p/7922080.html

http://cmusatyalab.github.io/openface/

http://www.cnblogs.com/pandaroll/p/6590339.html

http://blog.csdn.net/u011531010/article/details/52270023

posted on 2018-01-03 15:44 CanntBelieve 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/FlyAway2013/p/8184089.html

Openface 入门相关推荐

  1. jsp是在html里面嵌入哪种代码?_再说嵌入式入门

    我之前写过几篇嵌入式入门的文章 不过我的读者还是觉得不够过瘾,我觉得还是要着重说一下嵌入式软件应该重点学习什么,guoqing收假最后一天写文. 嵌入式入门建议(内附资料福利) C指针-这该死的嵌入式 ...

  2. 用Construct 2制作入门小游戏~

    今天在软导课上了解到了Construct 2这个神器,本零基础菜鸟决定尝试做一个简单的小游戏(实际上是入门的教程啊= = 首先呢,肯定是到官网下载软件啊,点击我下载~ 等安装完毕后我便按照新手教程开始 ...

  3. Docker入门六部曲——Swarm

    原文链接:http://www.dubby.cn/detail.html?id=8738 准备工作 安装Docker(版本最低1.13). 安装好Docker Compose,上一篇文章介绍过的. 安 ...

  4. Docker入门六部曲——Stack

    原文链接:http://www.dubby.cn/detail.html?id=8739 准备知识 安装Docker(版本最低1.13). 阅读完Docker入门六部曲--Swarm,并且完成其中介绍 ...

  5. Docker入门六部曲——服务

    原文链接:http://www.dubby.cn/detail.html?id=8735 准备 已经安装好Docker 1.13或者以上的版本. 安装好Docker Compose.如果你是用的是Do ...

  6. 【springboot】入门

    简介: springBoot是spring团队为了整合spring全家桶中的系列框架做研究出来的一个轻量级框架.随着spring4.0推出而推出,springBoot可以説是J2SEE的一站式解决方案 ...

  7. SpringBoot (一) :入门篇 Hello World

    什么是SpringBoot Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不 ...

  8. 入门指南目录页 -PaddlePaddle 飞桨 入门指南 FAQ合集-深度学习问题

    入门指南目录页 -PaddlePaddle 飞桨 入门指南 FAQ合集 GT_Zhang关注 0.1012019.08.01 18:43:34字数 1,874阅读 795 Hi,欢迎各位来自Paddl ...

  9. 5 分钟入门 Google 最强NLP模型:BERT

    BERT (Bidirectional Encoder Representations from Transformers) 10月11日,Google AI Language 发布了论文 BERT: ...

最新文章

  1. Zend Studio 安装 PyDev 插件后报错
  2. 常见问题—打包压缩问题
  3. WPF Calendar 日历控件 样式自定义
  4. 【风险管理】金融业务风控相关框架
  5. leetcode-Combination Sum-39
  6. 如何解决数据倾斜问题?
  7. Kotlin入门(5)字符串及其格式化
  8. Basis Cash动态铸币税阈值和债券发行上限提案正式生效
  9. 写给新入职的毕业生们(二)
  10. CAD迷你看图 for Mac
  11. 本地 hosts 文件找不到怎么办
  12. 使用网云穿「内网穿透」实现外网访问内网瑞友天翼等软件
  13. dpkg安装软件流程_Linux下安装软件的一般步骤
  14. 网站流量有什么作用?可以刷流量吗?
  15. mysql server has fone away
  16. oracle表自动模拟多条数据,Oracle使用虚拟表dual一次插入多条记录
  17. 红黑树添加和删除节点原理
  18. 树莓派入门(一) - 下载安装系统镜像,Raspbian和Centos
  19. 互联网摸鱼日报(2022-12-13)
  20. android studio上的基本动画实现(第一篇)

热门文章

  1. 解读5G非独立组网(NSA)方案
  2. LoadRunner中IP欺骗功能详解
  3. SimpleDateFormat使用详解
  4. 算法之美 | 位运算的巧妙奥秘(一) | JAVA中位运算的深入浅出
  5. USB驱动始终不能成功下载安装
  6. Excel函数大全-01最常用的十个函数
  7. 2022世界传感器大会 | 龙芯中科发布龙芯2K0500多功能SoC芯片及解决方案
  8. ArcGIS发展历史及体系架构
  9. iOS-RAC常用方法
  10. 量子物理史话 第一章 黄金时代