我们将使用7行代码实现python人脸识别

【 1. 读取图片 】

与前面不同,因为是识别图片,所以我们需要分别读取已知名字图片和未知名字图片:

known_image = face_recognition.load_image_file("picture1.jpg")
unknown_image = face_recognition.load_image_file("picture2.jpg")

【 2. 获取128维的特征向量 】

可以使用 face_encodings 函数对人脸进行编码,获取到对应128维的人脸特征向量:

face_encodings(face_image, known_face_locations=None, num_jitters=1)#  face_image:包含单个或者多个人脸的图片对象;
#   known_face_locations:可选值,已经知道名字的人脸位置;
#   num_jitters:当计算编码时,进行多少次的re-sample操作,次数越多,越精准(但同时会更慢,例如,值为100时,会慢100倍)。

分别对已知名字的人脸和未知名字的人脸,进行编码,如下:

cyx_encoding = face_recognition.face_encodings(known_image)[0]
unknown_encoding = face_recognition.face_encodings(unknown_image)[0]

【 3. 比较特征向量 】

最后,使用 compare_faces函数,比较已经人脸与未知人脸之间特征向量:
如果未知图片高于指定的容错率阈值,将会返回真(True);
如果低于指定的阈值,将会返回假(False)。

compare_faces(known_face_encodings, face_encoding_to_check, tolerance=0.6)# known_face_encodings:已知人脸特征向量的数组;
#   face_encoding_to_check:一个用于与已知向量相比较的未知人脸特征向量;
#   tolerance:容错率,默认的容错率是0.6,容错率越低,识别越严格准确。
#   如果未知图片高于指定的容错率阈值,将会返回真(True);如果低于指定的阈值,将会返回假(False)。

results = face_recognition.compare_faces([cyz_encoding], unknown_encoding, tolerance=0.4)

容错值的选取:

  • 若识别同一个人错误时,应当增大容错值。让识别不太严格。
  • 若识别不同的人错误时,应当减小容错值。让识别严格起来。
  • 综合以上两种方法选取不同的容错值进行测试(一般是0.7左右)。

【 4. 范例 】

1. 代码

import face_recognition
# 导入图片
known_image_cyz = face_recognition.load_image_file("picture1.jpg")
unknown_image = face_recognition.load_image_file("picture2.jpg")
# 编码获取128维特征向量
cyz_encoding = face_recognition.face_encodings(known_image_cyz)[0]
unknown_encoding = face_recognition.face_encodings(unknown_image)[0]
# 比较特征向量值,识别人脸
results = face_recognition.compare_faces([cyz_encoding], unknown_encoding, tolerance=0.5)
# 打印结果
print(results)

2. 容错值测试

picture1:

picture2:

picture3:

picture4:

  • 我们先令容错值为1:

让已知图片picture1 和 待识别图片picture2比较:可知是同一人,测试结果正确

让已知图片picture1和待识别图片picture3比较:可知是同一人,测试结果正确

让已知图片picture1和待识别图片picture4比较:可知是同一人,测试结果错误

  • 因此我们适当减小容错值,让它为0.5,让它识别更严格

让已知图片picture1 和 待识别图片picture2比较:可知是同一人,测试结果正确

让已知图片picture1和待识别图片picture3比较:可知是同一人,测试结果正确

让已知图片picture1和待识别图片picture4比较:可知不是同一人,测试结果正确。

【Face Recognition人脸识别】3. 单张图片人脸识别相关推荐

  1. Java调用百度OCR文字识别API实现图片文字识别软件

    java_baidu_ocr Java调用百度OCR文字识别API实现图片文字识别软件 这是一款小巧方便,强大的文字识别软件,由Java编写,配上了窗口界面 调用了百度ocr文字识别API 识别精度高 ...

  2. java ocr api_Java调用百度OCR文字识别API实现图片文字识别软件

    Java调用百度OCR文字识别API实现图片文字识别软件 原创isinple 发布于2019-01-06 13:35:59 阅读数 1296 收藏 展开 java_baidu_ocr Java调用百度 ...

  3. 【图片识别】java 图片文字识别 ocr (转)

    http://www.cnblogs.com/inkflower/p/6642264.html 最近在开发的时候需要识别图片中的一些文字,网上找了相关资料之后,发现google有一个离线的工具,以下为 ...

  4. 【python 图片文字识别】pyocr图片文字识别

    无意中发现了一个巨牛的人工智能教程,忍不住分享一下给大家.教程不仅是零基础,通俗易懂,而且非常风趣幽默,像看小说一样!觉得太牛了,所以分享给大家.点这里可以跳转到教程.人工智能教程 pyocr 官方网 ...

  5. 视频人脸识别和图片人脸识别的关系

    首先解释下视频人脸识别和图片人脸识别的区别,视频人脸识别是基于视频流进行人脸识别,用户的感觉就是直接在视频中就可以识别出人脸,而图片人脸识别,是用户直接上传图片,输出识别结果. 图片人脸识别可以描述为 ...

  6. 字符识别Python实现 图片验证码识别

    字符型图片验证码识别完整过程及Python实现 1   摘要 验证码是目前互联网上非常常见也是非常重要的一个事物,充当着很多系统的 防火墙 功能,但是随时OCR技术的发展,验证码暴露出来的安全问题也越 ...

  7. keras笔记(3)-猫狗数据集上的训练以及单张图片多张图片的测试

    之前也写过关于使用tensorflow在猫狗数据集上的训练,想要学习的可以看一下 数据集下载 猫狗数据集:https://pan.baidu.com/s/13hw4LK8ihR6-6-8mpjLKDA ...

  8. 单张、批量识别图片中文字(写入txt文件、窗口视图创建、打包.exe文件)(百度文字识别SDK+Python的GUI之tklinker+打包pyinstaller)

    昨天我姐问我有没有软件可以批量识别图片上的文字,她在帮客户做资料整理,但是用的方法只能一张一张上传识别,不仅效率低还浪费时间. ​我就找了找批量识别的软件,下载下来觉得:嗯?不错,界面也挺好,小东西做 ...

  9. python批量识别图片中文字_python实现中文图片文字识别--OCR about chinese text--tesseract...

    0.我的环境: win7 32bits python 3.5 pycharm 5.0 1.相关库 安装pillow: pip install pillow 安装tesseract: 自带了英文语言包, ...

最新文章

  1. NGOSS的一点简单概念
  2. 人工智能的热望与冷思考 | 郭毅可院士:我们不要神化它
  3. python实现树有多少种方法_教程 | 从头开始:用Python实现决策树算法
  4. SpringMvc之集成Swagger
  5. Caching Best Practices--reference
  6. 微信端php 开发技术要求,微信第三方平台开发详解——PHP版
  7. vivo X Fold或首发国产最强屏幕:120Hz LTPO 3.0
  8. [JavaScript]Call和Apply方法
  9. Go基础-核心特性和前景
  10. Quartz-第一篇 认识Quartz
  11. 如何自己开发漏洞扫描工具
  12. CRC校验关键点说明(内附C语言CRC校验库)
  13. 数据库系统的三大范式以及BCNF范式详细讲解 (很详细,很详细,很详细)
  14. 微信小程序使用腾讯地图进行路线规划,坐标转地址,逆地理编码,计算目的地跟自身定位的距离
  15. java_web需要哪些技术
  16. ZOJ - 3939 The Lucky Week【简单方法】
  17. 腾讯云轻量应用服务器器使用技巧-腾讯云OrcaTerm的上传下载
  18. EWSTM8系列教程06_工程节点选项配置(一)
  19. python 维吉尼亚密码加密和解密
  20. Chrome浏览器访问任何服务器资源,解决Origin 'null' is therefore not allowed access.错误

热门文章

  1. PHP isset()和empty()区别
  2. 典型的AEB误触发场景
  3. Lua Busted 单元测试实战
  4. 如何高效的远程办公(在家办公)
  5. python程序设计与算法基础第二版课后答案_python算法与程序设计基础答案
  6. 用了这么久的消息队列,你知道为什么需要它吗?
  7. Oracle EBS创建LPN
  8. .考试倒计时43天!来提分啦!
  9. oracle 毫秒时间换mysql_Mysql与Oracle常用时间格式的转换
  10. android sd卡名称,Android系统中SD卡各文件夹名称及功能详解