人脸识别近来可以说是非常的热门,无论是iphonex的faceid人脸解锁、faceID支付等等,还是各种安防监控、人脸表情变换都用到了人脸识别的相关知识。这里介绍一个简单好用的人脸识别的python库--face_recognition,很多开源人脸相关好玩的项目都是以它为基础开发的。

代码网址为https://github.com/ageitgey/face_recognition,github已经有8300+的star和1600+的fork,发文时在所有仓库中排名854位。

image

face_recognition是基于dlib的深度学习人脸识别库,在LFW上的准确率达到了99.38%。

安装

只需要编译好dlib(主要支持linux和macOS)后,通过pip install face_recognition来安装相关包,函数运行需要占用一定的GPU空间

使用

face_recognition包括人脸检测、人脸关键点检测、人脸识别等接口,具体如下:

人脸检测:

image

github示例

看上图中函数名称就可以了解到读入图像,通过face_locations函数得到人脸的位置,测试如下,可以看出返回的结构是一个list,每个人脸是一个tuple存储,分别代表框住人脸的矩形中左上角和右下角的坐标(x1,y1,x2,y2)。这里例子只有一个人脸所以只有一个tuple。另外face_recognition读入函数load_image_file输出图像是rgb顺序的,和opencv中bgr不一样。

image

关键点检测以及跟踪:

image

上图中通过face_landmarks函数得到人脸特征点list,测试例子如下图,每个人脸是一个字典,包括nose_bridge、right_eyebrow、right_eye、chine、left_eyebrow、bottom_lip、nose_tip、top_lip、left_eye几个部分,每个部分包含若干个特征点(x,y),总共有68个特征点。

image

人脸识别:

image

人脸识别实际上是对人脸进行编码后再去计算两两人脸的相似度,known_image相当于已知人脸库的图像,unknown_image相当于待检测的图像,分别利用face_encodings函数来映射成一个向量,下图可以看出每个人脸是一个128维的向量。最后利用两个向量的内积来衡量相似度,compare_faces函数就是根据阈值确认是否是同一人脸。上述函数都是支持多个人脸计算的。 另外compare_faces有个tolerance参数是控制阈值的,tolerance值越低越严格,默认为0.6。

image

最后github上相应有一个real-time face recognition的demo,链接如下

https://github.com/ageitgey/face_recognition/blob/master/examples/facerec_from_webcam_faster.py,比较简单。

人脸识别python face_recognize_python人脸识别库-face_recognition详解相关推荐

  1. Python爬虫之selenium库使用详解

    Python爬虫之selenium库使用详解 本章内容如下: 什么是Selenium selenium基本使用 声明浏览器对象 访问页面 查找元素 多个元素查找 元素交互操作 交互动作 执行JavaS ...

  2. pillow是python的图像处理标准库_详解Python图像处理库Pillow常用使用方法

    pil(python image library)是python的第三方图像处理库,但是由于其强大的功能与众多的使用人数,几乎已经被认为是python官方图像处理库了. 其官方主页为:pil. pil ...

  3. python爬虫requests的库使用详解

            Requests是python实现的简单易用的HTTP库,使用起来比urllib简洁很多,Requests库是用pythony语言开发,基urllib,采用Apache2 Licens ...

  4. python annotate函数_Matplotlib库基础分析——详解标注点函数annotate()

    绘图是数据可视化最直接的方法,也是直观分析数据所必不可少的步骤.Matplotlib是Python中专门用于数据可视化的第三方库,也是最为流行的绘图库.Matplotlib库中的annotate()函 ...

  5. python中定时任务schedule库用法详解

    schedule是一个第三方轻量级的任务调度模块,可以按照秒,分,小时,日期或者自定义事件执行时间.         如果想执行多个任务,也可以添加多个task. 首先安装schedule库: pip ...

  6. python中调试pdb库用法详解

    pdb是ptyhon内置的一个调试库,为 python 程序提供了一种交互的源代码调试功能,主要特性包括设置断点.单步调试.进入函数调试.查看当前代码.查看栈片段.动态改变变量的值等. 实际工作过程中 ...

  7. python dict下标_Python库collections详解

    collections模块包含了除了内置类型list.dict.tuple之外的容器类型.本文详细介绍了Counter.defaultdict.namedtuple.OrderedDict.Chain ...

  8. 万字博文教你python爬虫Beautiful Soup库【详解篇】

  9. 基于MobileNet的人脸表情识别系统(MATLAB GUI版+原理详解)

    摘要:本篇博客介绍了基于MobileNet的人脸表情识别系统,支持图片识别.视频识别.摄像头识别等多种形式,通过GUI界面实现表情识别可视化展示.首先介绍了表情识别任务的背景与意义,总结近年来利用深度 ...

  10. python网络爬虫教程(四):强大便捷的请求库requests详解与编程实战

    上一章中,我们了解了urllib的基本用法,详情可浏览如下链接python网络爬虫教程(三):详解urllib库,但其中确实有不方便的地方,为此,我们可以使用更方便更简洁的HTTP请求库request ...

最新文章

  1. html5页面中鼠标悬停效果,CSS实例:非常不错的鼠标悬停TIP效果!_div+css布局教程...
  2. linux系统运行时间
  3. socket编程的select模型
  4. 电脑ping不通 plsql能连上_台式电脑不能上网手机却能连上wifi无线网络的解决方法...
  5. 关于iOS 5 Could not instantiate class named NSLayoutConstraint错误
  6. java jre 中导入导出证书
  7. 语义分割双料冠军!微软 OCRNet化解语义分割上下文信息缺失难题|ECCV 2020
  8. 谈一谈为什么我要创建个人博客
  9. 直播预告丨 PostgreSQL数据库安全体系介绍
  10. java informix 实例
  11. 公司搞不好,除了坑股东,还坑的是客户
  12. MyBatis数据输出
  13. SSM框架整合环境搭建
  14. 小米手机切换应用--完美实现步骤
  15. 淘宝logo设计遇到的坑
  16. matlab plot bo,Matlab的plot~各种颜色和线形
  17. Python 面向对象 (六) 实例学员管理系统
  18. 计算机网络上有个红叉没无线,电脑连接不可用红叉,有无线网络但无法连接上wifi...
  19. 华为手机怎么关闭下拉智慧搜索
  20. mysql架构与存储引擎

热门文章

  1. 用javascript实现win7系统扫雷游戏
  2. 图片的四种格式.jpg、.gif、.png、.bmp
  3. steam host修改
  4. Tomcat9下载以及安装
  5. js生成二维码的几种方法
  6. C++写的12306抢票软件
  7. RGB三色灯珠WS2812B/WS2815B
  8. AutoCAD-自定义shx
  9. 移动互联网时代的营销
  10. NOPI导出excel