Face Recognition 人脸识别

摘要:本项目face_recognition是一个强大、简单、易上手的人脸识别开源项目,并且配备了完整的开发文档和应用案例,方便大家使用。对于本项目可以使用Python和命令行工具提取、识别、操作人脸。本项目的人脸识别是基于业内领先的C++开源库 dlib中的深度学习模型,用Labeled Faces in the Wild人脸数据集进行测试,有高达99.38%的准确率。但对小孩和亚洲人脸的识别准确率尚待提升(比如下例子鞠婧祎图片就未能识别出来)。本项目提供了简易的face_recognition命令行工具,你可以用它处理整个文件夹里的图片。

环境配置:我是用的以下配置:(1)Linux系列参品中ubuntu最新版本20版本(以下是ubuntu默认桌面)(2)由于ubuntu自带python3.8,故python不用安装【注意:我没有尝试在windows系统跑这个项目,但是也许能用】

windows操作系统实现方法:(1)第一步,安装dlib和相关Python依赖(不知道的可以参考网上博客,这里不再赘述)(2)然后打开终端(ctrl+alt+t)输入pip3 install face_recognition

使用方法:

当你安装好了本项目,你可以使用两种命令行工具:

  • face_recognition - 在单张图片或一个图片文件夹中认出是谁的脸。
  • face_detection - 在单张图片或一个图片文件夹中定位人脸位置。
  • face_recognition 命令行工具

    face_recognition命令行工具可以在单张图片或一个图片文件夹中认出是谁的脸。

    首先,你得有一个你已经知道名字的人脸图片文件夹(比如我这是knowe_people文件夹),一个人一张图,图片的文件名即为对应的人的名字:

  • 然后,你需要第二个图片文件夹,文件夹里面是你希望识别的图片:

  • 然后,你在命令行中切换到这两个文件夹所在路径(如下:其中绿色是我主机根目录,用命令符cd  ~/图片/knowe_people切换到该目录下)

  • 接着使用face_recognition命令行,传入这两个图片文件夹,最后就会输出未知图片中人的名字:(face_recognition ~/图片/knowe_people ~/图片/unknowe_people/)

  • 可以看到该;人脸识别系统可以判断输出未知图像3是鞠婧祎,图片二是特朗普这个b(开个玩笑哈哈),然而图像一确未能识别出来,虽然她是鞠婧祎。这个是系统不足之处,对小孩和亚洲人脸的识别准确率尚待提升。

    该系统输出结果的每一行对应着图片中的一张脸,图片名字和对应人脸识别结果用逗号分开。如果结果输出了no_persons_found,那么代表这张脸没有对应上已知人脸图片文件夹中的任何一个人。

  • face_detection 命令行工具

    face_detection命令行工具可以在单张图片或一个图片文件夹中定位人脸位置(输出像素点坐标)。

    在命令行中使用face_detection,传入一个图片文件夹或单张图片文件来进行人脸位置检测:

  • 输出结果的每一行都对应图片中的一张脸,输出坐标代表着这张脸的上、右、下、左像素点坐标。

  • 调整人脸识别的容错率和敏感度

    如果一张脸识别出不止一个结果,那么这意味着他和其他人长的太像了(本项目对于小孩和亚洲人的人脸识别准确率有待提升)。你可以把容错率调低一些,使识别结果更加严格。

    通过传入参数 --tolerance 来实现这个功能,默认的容错率是0.6,容错率越低,识别越严格准确。

  • 可以发现,降低容错率后,第二章图片发生明显变化,系统不能确定是否是特朗普了,因为 ~/图片/knowe_people 文件夹和~/图片/unknowe_people/照片像素相差太大(如下图一和二)。

  • 如果你想看人脸匹配的具体数值,可以传入参数 --show-distance true:(该容错率默认0.6)

  • 如果你并不在乎图片的文件名,只想知道文件夹中的图片里有谁,可以用这个管道命令:


  • 可以发现,未知图片文件夹中只有特朗普和鞠婧祎。

  • 加速人脸识别运算

    如果你的CPU是多核的,你可以通过并行运算加速人脸识别。例如,如果你的CPU有四个核心,那么你可以通过并行运算提升大概四倍的运算速度。

    如果你使用Python3.4或更新的版本,可以传入 --cpus <number_of_cpu_cores_to_use> 参数:

    $ face_recognition --cpus 4
    加速人脸识别运算

    如果你的CPU是多核的,你可以通过并行运算加速人脸识别。例如,如果你的CPU有四个核心,那么你可以通过并行运算提升大概四倍的运算速度。

    如果你使用Python3.4或更新的版本,可以传入 --cpus <number_of_cpu_cores_to_use> 参数:

    $ face_recognition --cpus 4 ~/图片/knowe_people ~/图片/unknowe_people/

    你可以传入 --cpus -1参数来调用cpu的所有核心。

  • 今天就到这了,更多内容请看系统2——https://www.cnblogs.com/cy0628/p/13883511.html

基于Python与命令行人脸识别项目(系列一)的更多相关文章

  1. 基于Python与命令行人脸识别项目(系列二)

    接着系统一,继续开始我们face_recognition. Python 模块:face_recognition 在Python中,你可以导入face_recognition模块,调用丰富的API接口 ...

  2. 基于卷积神经网络的人脸识别项目_使用Tensorflow-gpu+dilib+sklearn

    https://www.cnblogs.com/31415926535x/p/11001669.html 基于卷积神经网络的人脸识别项目_使用Tensorflow-gpu+dilib+sklearn ...

  3. Github开源人脸识别项目face_recognition

    Github开源人脸识别项目face_recognition 原文:https://www.jianshu.com/p/0b37452be63e 译者注: 本项目face_recognition是一个 ...

  4. 关于运行“基于极限学习机ELM的人脸识别程序”代码犯下的一些错误

    代码来源 基于极限学习机ELM的人脸识别程序 感谢文章主的分享 我的环境是 win10 anaconda Command line client (version 1.6.5)(conda 4.3.3 ...

  5. 10分钟手把手教你运用Python实现简单的人脸识别

    欲直接下载代码文件,关注我们的公众号哦!查看历史消息即可! 前言:让我的电脑认识我 我的电脑只有认识我,才配称之为我的电脑! 今天,我们用Python实现高大上的人脸识别技术! Python里,简单的 ...

  6. opencv基于PCA降维算法的人脸识别

    opencv基于PCA降维算法的人脸识别(att_faces) 一.数据提取与处理 # 导入所需模块 import matplotlib.pyplot as plt import numpy as n ...

  7. 命令行创建Maven项目卡住以及出错解决办法。

    第一次通过命令行创建maven项目.结果,果不其然啊,还是出问题了,不过出问题比没有出问题强,知道哪里有问题并学会解决也是一种收获. 遇到的第一个问题,在从仓库下载东西的时候会卡住,我开始以为是网速问 ...

  8. 学习笔记-使用cmd命令行创建nodejs项目

    使用cmd命令行创建nodejs项目 1)在DOS下cd 进入到你想要创建项目的路径. 2)mkdir sing (创建一个sing文件夹) 3)cd sing  4) npm init (初始化工程 ...

  9. python 交互式命令行数据库连接助手 -- mysql、sql server (mssql)、redis

    目录 python 交互式命令行数据库连接助手 0. 操作示例 1. python 连接mssql 2. python 连接mysql 3. python 连接redis n. Tips python ...

随机推荐

  1. 使用VSCode和CMake构建跨平台的C/C++开发环境

    日前在学习制作LearnOpenGL教程的实战项目Breakout游戏时,希望能将这个小游戏开发成跨平台的,支持在多个平台运行.工欲善其事必先利其器,首先需要做的自然是搭建一个舒服的跨平台C/C++开 ...

  2. Java Web学习(九)网络协议详解

    一.基本概念 概念:协议是网络中计算机或设备之间进行通信的一系列规则的集合. 协议栈/族:在网络中为了完成通信而使用到的多层上的各种协议按照层次顺序的组合. 作用:建立对等层之间的虚拟通信.实现层次之 ...

  3. Java Web学习(八)RESTful设计

    一.RESTful设计风格 REST :指的是一组架构约束条件和原则. RESTful :满足这些约束条件和原则的应用程序或设计就是 . REST 原则 客户端和服务器之间的交互在请求之间是无状态的. ...

  4. 微信小程序结合微信公众号进行消息发送

    微信小程序结合微信公众号进行消息发送 由于小程序的模板消息已经废弃了,官方让使用订阅消息功能.而订阅消息的使用限制比较大,用户必须得订阅.需要获取用户同意接收消息的权限.用户必须得和小程序有交互的时候 ...

  5. heap是堆,stack是栈

    1.栈是用来存放基本类型的变量和引用类型的变量,堆用来存放new出来的对象和数组. 2.栈的存取速度快,但不灵活.堆的存取速度慢,但是存取灵活,空间动态分配. 3.栈在建立在连续的物理位置上,而堆只需 ...

  6. Python练习题 016:猴子吃桃

    [Python练习题 016] 猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个.第二天早上又将剩下的桃子吃掉一半,又多吃了一个.以后每天早上都吃了前一天剩下的一半零一个.到 ...

  7. # BlackLivesMatter !

    下载 # BlackLivesMatter ! https://blacklivesmatter.com/ 黑人的生命是重要的运动资源 VueCroppie VueCroppie是一个Vue 2包装C ...

  8. postgresql 和 mysql 数据库备份恢复以及时区问题

    概要 postgesql 12 备份/恢复脚本 时区设置 mysql 5.6 备份/恢复脚本 时区设置 概要 postgresql 和 mysql 是最常用的 2 种开源关系数据库, 很多项目也会优先 ...

  9. ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)解决方案

    在Win7下使用MySQL5.6.35创建用户时,提示权限不足,具体解决方案如下: 1 停止mysql服务 net stop mysql 2 打开新的cmd窗口,切换到bin目录,运行如下命令,cmd ...

  10. 3.字符设备led驱动

    1.硬件原理图 由图可知,led1,led2,led3,led4,分别对应GPB5,GPB6,GPB7,GPB8,由s3c2440芯片手册可得到如下图所示,分别配置GPBCON和GPBDAT即可 2. ...