【Face Recognition人脸识别】3. 单张图片人脸识别
我们将使用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. 单张图片人脸识别相关推荐
- Java调用百度OCR文字识别API实现图片文字识别软件
java_baidu_ocr Java调用百度OCR文字识别API实现图片文字识别软件 这是一款小巧方便,强大的文字识别软件,由Java编写,配上了窗口界面 调用了百度ocr文字识别API 识别精度高 ...
- java ocr api_Java调用百度OCR文字识别API实现图片文字识别软件
Java调用百度OCR文字识别API实现图片文字识别软件 原创isinple 发布于2019-01-06 13:35:59 阅读数 1296 收藏 展开 java_baidu_ocr Java调用百度 ...
- 【图片识别】java 图片文字识别 ocr (转)
http://www.cnblogs.com/inkflower/p/6642264.html 最近在开发的时候需要识别图片中的一些文字,网上找了相关资料之后,发现google有一个离线的工具,以下为 ...
- 【python 图片文字识别】pyocr图片文字识别
无意中发现了一个巨牛的人工智能教程,忍不住分享一下给大家.教程不仅是零基础,通俗易懂,而且非常风趣幽默,像看小说一样!觉得太牛了,所以分享给大家.点这里可以跳转到教程.人工智能教程 pyocr 官方网 ...
- 视频人脸识别和图片人脸识别的关系
首先解释下视频人脸识别和图片人脸识别的区别,视频人脸识别是基于视频流进行人脸识别,用户的感觉就是直接在视频中就可以识别出人脸,而图片人脸识别,是用户直接上传图片,输出识别结果. 图片人脸识别可以描述为 ...
- 字符识别Python实现 图片验证码识别
字符型图片验证码识别完整过程及Python实现 1 摘要 验证码是目前互联网上非常常见也是非常重要的一个事物,充当着很多系统的 防火墙 功能,但是随时OCR技术的发展,验证码暴露出来的安全问题也越 ...
- keras笔记(3)-猫狗数据集上的训练以及单张图片多张图片的测试
之前也写过关于使用tensorflow在猫狗数据集上的训练,想要学习的可以看一下 数据集下载 猫狗数据集:https://pan.baidu.com/s/13hw4LK8ihR6-6-8mpjLKDA ...
- 单张、批量识别图片中文字(写入txt文件、窗口视图创建、打包.exe文件)(百度文字识别SDK+Python的GUI之tklinker+打包pyinstaller)
昨天我姐问我有没有软件可以批量识别图片上的文字,她在帮客户做资料整理,但是用的方法只能一张一张上传识别,不仅效率低还浪费时间. 我就找了找批量识别的软件,下载下来觉得:嗯?不错,界面也挺好,小东西做 ...
- python批量识别图片中文字_python实现中文图片文字识别--OCR about chinese text--tesseract...
0.我的环境: win7 32bits python 3.5 pycharm 5.0 1.相关库 安装pillow: pip install pillow 安装tesseract: 自带了英文语言包, ...
最新文章
- NGOSS的一点简单概念
- 人工智能的热望与冷思考 | 郭毅可院士:我们不要神化它
- python实现树有多少种方法_教程 | 从头开始:用Python实现决策树算法
- SpringMvc之集成Swagger
- Caching Best Practices--reference
- 微信端php 开发技术要求,微信第三方平台开发详解——PHP版
- vivo X Fold或首发国产最强屏幕:120Hz LTPO 3.0
- [JavaScript]Call和Apply方法
- Go基础-核心特性和前景
- Quartz-第一篇 认识Quartz
- 如何自己开发漏洞扫描工具
- CRC校验关键点说明(内附C语言CRC校验库)
- 数据库系统的三大范式以及BCNF范式详细讲解 (很详细,很详细,很详细)
- 微信小程序使用腾讯地图进行路线规划,坐标转地址,逆地理编码,计算目的地跟自身定位的距离
- java_web需要哪些技术
- ZOJ - 3939 The Lucky Week【简单方法】
- 腾讯云轻量应用服务器器使用技巧-腾讯云OrcaTerm的上传下载
- EWSTM8系列教程06_工程节点选项配置(一)
- python 维吉尼亚密码加密和解密
- Chrome浏览器访问任何服务器资源,解决Origin 'null' is therefore not allowed access.错误