资讯专栏INFORMATION COLUMN

10行Python实现更快更准的人脸识别

2i18ns / 1293人阅读

摘要:行代码的人脸识别看了行的人脸识别一文后,简单尝试了一下,发现识别准确度不够。膜拜完大神,直接开干首先,安装以及相关依赖工具代码略作改动执行之后效果是这样的完美识别结论如果要做人脸识别的话,建议选择,而不要选择。

7行代码(OpenCV)的人脸识别

看了《7行Python的人脸识别》一文后,简单尝试了一下,发现识别准确度不够。原始图像如下:

识别后的结果:

把酒杯识别成了人脸,而该是人脸的又没有识别出来,还多余识别了一条裤子。

检查代码,最关键是第2条语句:

face_patterns = cv2.CascadeClassifier("/usr/local/opt/opencv/share/OpenCV/haarcascades/haarcascade_frontalface_default.xml")

我们检查/usr/local/opt/opencv/share/OpenCV这个目录,发现它下面的内容是这样的:

下面有2个子目录,分别是haarcascadeslbpcascades,这里面还包括了眼睛识别,鼻子识别,嘴巴识别等等,甚至还有猫脸识别,此外,光人脸识别就有好几种:frontalface_default, frontalface_alt, frontalface_alt2, frontalface_alt_tree等等,你可以挨个试一下(我试的结果是哪个也不准确)。实际上就是OpenCV通过Haar特征和LBP特征预置了一些事先做好的结果以方便用户调用。关于这些特征是如何提取的,可以参见《图像特征提取三大法宝:HOG特征,LBP特征,Haar特征》。

那我们把第2条语句换成LBP试一下呢?

face_patterns = cv2.CascadeClassifier("/usr/local/opt/opencv/share/OpenCV/lbpcascades/lbpcascade_frontalface.xml")

结果也并不理想,不是没有把人脸识别出来,就是把杯子识别成了人脸,不是多了就是少了,总是不能正确识别所有人脸。

10行代码(dlib)的人脸识别

那么有没有办法提高人脸识别的准确度呢?无意中发现了dlib这个神器,它实现了一篇大牛论文《One Millisecond Face Alignment with an Ensemble of Regression Trees》里的算法,论文标题就叫《用集成回归树实现一毫秒的人脸识别》,可见作者的自信。

膜拜完大神,直接开干!首先,安装dlib以及相关依赖工具:

brew install boost
brew install boost-python
pip install dlib
pip install scikit-image

代码略作改动:

import dlib
from skimage import io
from skimage.draw import polygon_perimeter

detector = dlib.get_frontal_face_detector()
sample_image = io.imread("/Users/zhangjing/Desktop/IMG_5528.jpg")
faces = detector(sample_image, 1)

for d in faces:
    rr, cc = polygon_perimeter([d.top(), d.top(), d.bottom(), d.bottom()], [d.right(), d.left(), d.left(), d.right()])
    sample_image[rr, cc] = (0, 255, 0)
io.imsave("/Users/zhangjing/Desktop/IMG_5528_detected_dlib.jpg", sample_image)

执行之后效果是这样的:

完美识别!

结论:如果要做人脸识别的话,建议选择dlib,而不要选择OpenCV。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/40691.html

相关文章

  • 用dlib实现人脸识别的68个特征点

    摘要:看了行实现更快更准的人脸识别后,发现太短小精悍了,所以打算不用来实现人脸的的特征点 看了 10行Python实现更快更准的人脸识别后,发现dlib太短小精悍了,所以打算不用opencv来实现人脸的68的特征点 # -*- coding: UTF-8 -*- import dlib from skimage import io import matplotlib.pyplot as pl...

    golden_hamster 评论0 收藏0
  • 阿里云AI如何助攻世界杯?视频集锦背后的技术实践

    摘要:可预见的未来激情赛事已经过半,阿里云视频技术在本次世界杯中也成功落地,而这并不是结局,这是将视频应用于体育行业以及更多其他行业的开端。 本届世界杯互联网直播的顺利进行,离不开各大云计算厂商的支持。在这其中,阿里云是当之无愧的C位,除了优酷外,阿里云还支撑了CNTV、CCTV5客户端,为全网70%的世界杯直播流量保驾护航。 对于世界杯这种超大观看量级、超强影响力的重要体育赛事,阿里云一直...

    BothEyes1993 评论0 收藏0
  • Programming Computer Vision with Python (学习笔记四)

    摘要:上一个笔记主要是讲了的原理,并给出了二维图像降一维的示例代码。当我使用这种方法实现时,程序运行出现错误,发现是对负数开平方根产生了错误,也就是说对协方差矩阵求得的特征值中包含了负数。而能夠用于任意乘矩阵的分解,故适用范围更广。 上一个笔记主要是讲了PCA的原理,并给出了二维图像降一维的示例代码。但还遗留了以下几个问题: 在计算协方差和特征向量的方法上,书上使用的是一种被作者称为com...

    Allen 评论0 收藏0
  • 利用python识别相似图片(二)

    摘要:上一篇文章的地址利用进行识别相似图片一安装官网在进行下一步操作时,我们需要安装,本来安装的步骤跟平常安装其他模块一样,而然由于的历史原因用过都懂,弄得一点都不友好。 前言 和网上各种首先你要有一个女朋友的系列一样,想进行人脸判断,首先要有脸,只要能靠确定人脸的位置,那么进行两张人脸是否相似的操作便迎刃而解了。 所以本篇文章着重讲述如何利用openCV定位人脸。 上一篇文章的地址: 利用...

    余学文 评论0 收藏0

发表评论

0条评论

2i18ns

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<