Python人脸识别——人脸检测(libfacedetection)
admin • 2020 年 02 月 04 日
前言
好早就想自己捣鼓捣鼓实现个人脸识别了,目前在装修,想买个人脸识别的门铃,看了市场上比较火的两款,评价和测评里说不尽人意,就想自己用树莓派实现一个,再加上个语音识别,距离感应啥的,想想就激动…扯远了,不过要实现我想的这些功能,就以我新手的角度来看,需要实现的有:人脸检测(有无人脸)、人脸识别(这脸是谁)、眼睛检测、眼睛识别(闭眼识别)、人机交互界面、语义识别、声纹识别、语音合成等等,也不知道我能走到哪一步,先实现个人脸检测吧。
人脸检测
环境Windows10+Pycharm+Python3.6+opencv
看了一些教程和示例
Face_recognition
这个是国外大神制作的库,能实现人脸识别,但是对亚裔人和小孩的识别率不太好,本来想重新训练模型,但是据说要数以千万级的数据才有效,我光是利用爬虫下载20,000张明星人脸就花了将近两天,想想还是搁浅了,等大神解救
(说的挺详细的,很容易就能实现人脸识别了,但是用的是opencv自带的人脸检测库haarcascade.xml,据说重新训练这个库也挺麻烦,要正向和负向样本,数据集小了也不行,好多人失败了,(有没有在现有的haarcascade.xml库的基础上继续训练的方法,欢迎讨论),这也就引出了今天我要写的这个库libfacedetection)
该库于2019年3月份左右宣布开源,可用于商业开发。据说识别率和速度都比opencv自带的库要好,于是就想用一下,结果发现是基于C++的,没有python接口,这让我一个学机械的咋整,再捣鼓捣鼓C++?,放过我吧…
黄天不负有心人,第二天的上午,让我找到了Github上的大神做好的接口,有三四个,其中一个叫PyFaceDet的项目居然能用pip安装,于是就试了试。
根据文档说明先安装PyFaceDet,
pip install PyFaceDet
如果是Pycharm也可以在设置里安装(清华源)。
由于官方没有示例,让我这菜鸟鼓捣了一会儿,才简单实现功能,下面是我的代码:
from PyFaceDet import facedetectcnn
import cv2
path=(r'D:\Users\BC\PycharmProjects\F_C_05_PyFaceDet(libfacedetection)\000010.jpg')
img=cv2.imread(path)
Faces=facedetectcnn.facedetect_cnn(path)
x=Faces[0][0]
y=Faces[0][1]
L=Faces[0][2]
W=Faces[0][3]
confidence=Faces[0][4]
angle=Faces[0][5]
font = cv2.FONT_HERSHEY_SIMPLEX
cv2.rectangle(img,(x,y),(x+L,y+W),(255,0,0),2)
roi_color = img[y:y+W, x:x+L]
cv2.putText(img, str(confidence), (x+5, y-5), font, 1, (0, 0, 255), 1)
cv2.imshow('camera', img)
k = cv2.waitKey(10)
实现其实很简单,最后看看效果
貌似还可以,侧脸也能认出来,一会儿自己接上摄像头试试