Hi!大家好呀!我是你们努力的喵哥!
这几年大家都在关注人工智能,毕竟这是现在互联网行业的发展趋势。所以,很多同学都在准备学习做人工智能。但是,AI的学习门槛还是比较高的。主要是人工智能的算法,需要一定基础,而且方向还比较多。
喵哥推荐大家可以尝试由浅入深学习。先学会怎么用AI技术来产出结果。再根据,应用 AI 的过程,去倒逼自己的学习过程。因为,对于大部分同学来说,我们都需要通过技术来完成成果的产出。而不是技术的研究和探索者。在现在的互联网行业中,做应用的人是绝大多数,做研究的人是少部分。特别是对有一定编程语言和研发基础的同学,先用后学由浅入深是非常好的路径。
所以,今天,喵哥给大家推荐 face_recognition 这个人脸识别库。face_recognition 是一个强大、简单、易上手的人脸识别开源项目。face_recognition 的可玩性非常高,而且还支持树莓派。同时,官方提供了完整开发文档和应用案例。该项目号称是世界上最简洁和易于上手的人脸识别库。所以,其非常适合新人学习和开发一些自己的小工具。
face_recognition 是Python 工具库,基于业内著名的 C++ 开源库 dlib 中的深度学习模型实现。用 Labeled Faces in the Wild 人脸数据集进行测试,准确率高达99.38%。在 Python 代码中,导入 face_recognition 包后,只需几行代码,就能实现人脸识别的功能。face_recognition 还能搭配其它 Python 工具库(比如OpenCV),实现更多的效果。比如是实时的人脸检查,人脸的涂改等。目前很多流行的人脸识别项目和工具,都是基于 face_recognition 开发的。
首先,我们来介绍一下如何安装 face_recognition。
由于 face_recognition 基于 C++ 开源库dlib 实现的。所以,我们首先需要安装 dlib 和对应的 Python 依赖库。
首先从 Github 上克隆下来 dlib 的代码。
再编译 dlib 的源码。
最后再编译和安装 dlib 的 Python 扩展库。
安装好 dlib 后,我们再正式来安装 face_recognition。该安装方法主要应用是 Mac 和 Linux 环境下。安装会用到 pip3。如果是树莓派和 Windows 可以在官网文档中查找对应的安装文档。
这样就安装好了 face_recognition。
通过使用 face_recognition 我们实现什么样的效果那?face_recognition 主要有三个特性。
1.人脸定位。就是从图片中找到人脸。
2.识别人脸中的部位。从人脸中,寻找眼睛、鼻子、耳朵等关键部位。
3.人脸相似度对比。对比两张照片是不是同一个人。
了解了 face_recognition 的特性后,是不是已经迫不及待了?想做点什么东西?那么我们就来讲解一下 face_recognition 的使用方法。
face_recognition 主要有两种方式,一种是命令行工具,可以直接使用。另一种是通过 Python 代码调用,就是我们上文介绍特性的使用方法。
1.face_recognition命令行工具可以在单张图片或一个图片文件夹中对比面部相似度。
我们需要一个已经知道名字的人脸图片文件夹,一个人一张图,图片的文件名即为对应的人的名字。然后,还需要第二个图片文件夹,文件夹里面是你希望识别的图片。
通过该命令就会输出识别的对应人物的名称。如果为 unknown_person 则是没有任何匹配上的。
2.face_detection命令可以在单张图片或一个图片文件夹中定位人脸像素点坐标。
该命令识别的是一整个文件夹下的图片。
调整人脸识别的容错率和敏感度
如果识别的结果不够准确,或者相似图片较多。我们可以可以把容错率调低一些,提升识别的准确率。
通过在命令设置参数 --tolerance 来完成。默认的容错率是0.6,容错率越低,识别越严格准确。
如果你想看人脸匹配的具体数值,可以使用参数 --show-distance true:
3.在讲解 face_detection 的特性时,我们展示了三个接口。face_detection 总共也就7个接口。
在官方的文档中,还可找到更多的 face_detection 使用的案例。大家可以用于学习,也可以借鉴去开发自己的小项目和小工具。
人脸定位
案例:定位拜登的脸
案例:使用卷积神经网络深度学习模型定位拜登的脸
案例:使用卷积神经网络深度学习模型批量识别图片中的人脸
案例:把来自网络摄像头视频里的人脸高斯模糊(需要安装OpenCV)
人脸关键点识别
案例:提取奥巴马和拜登的面部关键点
案例:给美国副总统拜登涂美妆
人脸识别
案例:是奥巴马还是拜登?
案例:人脸识别之后在原图上画框框并标注姓名
案例:在不同精度上比较两个人脸是否属于一个人
案例:从摄像头获取视频进行人脸识别-较慢版(需要安装OpenCV)
案例:从摄像头获取视频进行人脸识别-较快版(需要安装OpenCV)
案例:从视频文件中识别人脸并把识别结果输出为新的视频文件(需要安装OpenCV)
案例:通过树莓派摄像头进行人脸个数统计及人脸身份识别
案例:通过浏览器HTTP访问网络服务器进行人脸识别(需要安装Flask后端开发框架))
案例:基于K最近邻KNN分类算法进行人脸识别
再让我们深入一些,介绍一下 face_detection 实现的思路。
1.对识别的人脸的图片并对其进行编码,并将这些不同的人脸编码构建成一个列表。编码其实就是将人脸图片映射成一个128 维的特征向量。
2.采用HOG(方向梯度直方图)方法检测输入图像中的人脸。
3.对识别出来的人脸打标签。
剩下的更多内容,需要大家去深入挖掘了。
最后我们来介绍一下 face_recognition 这个开源项目本身。face_recognition 的作者是 Adam Geitgey,现在共有三十五位贡献者。整个项目已经维护了三年多,在 Github 收货了34.1k Star。face_recognition 饱受独立开发者的喜爱,很多流行的AI小程序都是基于 face_recognition 的。
项目地址:https://github.com/ageitgey/face_recognition
在线文档:https://face-recognition.readthedocs.io/
本文分享自微信公众号 - Github喵(gh_acfcf1689379)。
如有侵权,请联系 [email protected] 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。