项目的人脸识别是基于业内领先的 C++开源库 dlib 中的深度学习模型,用 Faces in the Wild 人脸数据集进行测试,有高达 99.38% 的准确率。但对小孩和亚洲人脸的识别准确率尚待提升。
Faces in the Wild 是美国麻省大学安姆斯特分校( of )制作的人脸数据集,该数据集包含了从网络收集的 13,000 多张面部图像。
本项目提供了简易的 命令行工具,可以用它处理整个文件夹里的图片。
特性从图片里找到人脸
定位图片中的所有人脸:
import face_recognition
image = face_recognition.load_image_file("your_file.jpg")
face_locations = face_recognition.face_locations(image)
识别人脸关键点
识别人脸关键点,包括眼睛、鼻子、嘴和下巴。
import face_recognition
image = face_recognition.load_image_file("your_file.jpg")
face_landmarks_list = face_recognition.face_landmarks(image)
识别人脸关键点在很多领域都有用处,但同样也可以把这个功能玩坏,比如本项目的 make-up 自动化妆案例(就像美图秀秀一样)。
识别图片中的人是谁
import face_recognition
known_image = face_recognition.load_image_file("biden.jpg")
unknown_image = face_recognition.load_image_file("unknown.jpg")
biden_encoding = face_recognition.face_encodings(known_image)[0]
unknown_encoding = face_recognition.face_encodings(unknown_image)[0]
results = face_recognition.compare_faces([biden_encoding], unknown_encoding)
也可以配合其它的 库(比如 )实现实时人脸检测:
安装环境配置在 Mac 或者 Linux 上安装本项目
pip3 install face_recognition
在 Mac 或者 Linux 上安装本项目 2
修改 pip 镜像源为清华镜像,然后使用 pip ,可以自动安装各种依赖,包括 dlib。只是在安装 dlib 的时候可能会出问题,因为 dlib 需要编译,出现的问题一般是 gcc 或者 g++ 版本的问题,所以在 pip 之前,可以通过命令行键入
export CC=/usr/local/bin/gcc
export CXX=/usr/local/bin/g++
来指定 gcc 和 g++对应的位置开源人脸识别,(这两句话会临时修改当前终端的环境变量/usr/local/bin/gcc 对应自己的 gcc 或者 g++所在目录。
在 上安装
虽然本项目官方并不支持 ,但一些大神们摸索出了在 上运行本项目的方法:
#issue-
使用方法
当安装好了本项目,可以使用两种命令行工具:
命令行工具
命令行工具可以在单张图片或一个图片文件夹中认出是谁的脸。
首先开源人脸识别,得有一个已经知道名字的人脸图片文件夹,一个人一张图,图片的文件名即为对应的人的名字:
然后,需要第二个图片文件夹,文件夹里面是希望识别的图片:
然后,在命令行中切换到这两个文件夹所在路径,然后使用 命令行,传入这两个图片文件夹,然后就会输出未知图片中人的名字:
$ face_recognition ./pictures_of_people_i_know/ ./unknown_pictures/
/unknown_pictures/unknown.jpg,Barack Obama
/face_recognition_test/unknown_pictures/unknown.jpg,unknown_person
输出结果的每一行对应着图片中的一张脸,图片名字和对应人脸识别结果用逗号分开。
如果结果输出了 ,那么代表这张脸没有对应上已知人脸图片文件夹中的任何一个人。
命令行工具
命令行工具可以在单张图片或一个图片文件夹中定位人脸位置(输出像素点坐标)。
在命令行中使用 ,传入一个图片文件夹或单张图片文件来进行人脸位置检测:
$ face_detection ./folder_with_pictures/
examples/image1.jpg,65,215,169,112
examples/image2.jpg,62,394,211,244
examples/image2.jpg,95,941,244,792
输出结果的每一行都对应图片中的一张脸,输出坐标代表着这张脸的上、右、下、左像素点坐标。
调整人脸识别的容错率和敏感度
如果一张脸识别出不止一个结果,那么这意味着他和其他人长的太像了(本项目对于小孩和亚洲人的人脸识别准确率有待提升)。可以把容错率调低一些,使识别结果更加严格。
通过传入参数 -- 来实现这个功能,默认的容错率是 0.6,容错率越低,识别越严格准确。
$ face_recognition --tolerance 0.54 ./pictures_of_people_i_know/ ./unknown_pictures/
/unknown_pictures/unknown.jpg,Barack Obama
/face_recognition_test/unknown_pictures/unknown.jpg,unknown_person
如果想看人脸匹配的具体数值,可以传入参数 --show- true:
$ face_recognition --show-distance true ./pictures_of_people_i_know/ ./unknown_pictures/
/unknown_pictures/unknown.jpg,Barack Obama,0.378542298956785
/face_recognition_test/unknown_pictures/unknown.jpg,unknown_person,None
传送门
开源协议:MIT
开源地址:
项目合集:
限时特惠:本站持续每日更新海量各大内部创业课程,一年会员仅需要98元,全站资源免费下载
点击查看详情
站长微信:Jiucxh