• 基于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

  • 相关阅读:
    老罗Android开发视频教程录制计划
    经典游戏源码汇总
    横向TimePicker带三角指示器
    可延长、缩短、拖动图形的画图软件
    手把手教你写android项目@第一期项目——身份证查询创新
    android图表引擎AchartEngine制作柱图
    SharePoint2010如何配置唯一文档ID服务快速生效
    SharePoint客户端对象模型 - .NET托管
    JQuery里如何选择超链接
    如何在SharePointDesigner订制页面里判断用户权限
  • 原文地址:https://www.cnblogs.com/cy0628/p/13879603.html
Copyright © 2020-2023  润新知