zoukankan      html  css  js  c++  java
  • 基于Python与命令行人脸识别项目(系列一)

    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的所有核心。

      • 今天就到这了,更多内容请看以下系列:
      • 系列一:https://www.cnblogs.com/cy0628/p/13879603.html
      • 系列二:https://www.cnblogs.com/cy0628/p/13883511.html

        系列三:https://www.cnblogs.com/cy0628/p/13884073.html

        系列四:https://www.cnblogs.com/cy0628/p/13884460.html

        系列五:https://www.cnblogs.com/cy0628/p/13884899.html

        项目源码:https://github.com/ageitgey/face_recognition

  • 相关阅读:
    不可或缺 Windows Native (15)
    不可或缺 Windows Native (14)
    不可或缺 Windows Native (13)
    不可或缺 Windows Native (12)
    不可或缺 Windows Native (11)
    不可或缺 Windows Native (10)
    不可或缺 Windows Native (9)
    不可或缺 Windows Native (8)
    不可或缺 Windows Native (7)
    不可或缺 Windows Native (6)
  • 原文地址:https://www.cnblogs.com/cy0628/p/13879603.html
Copyright © 2011-2022 走看看