高手问答第 228 期 —— 如何用 Python 从零实现一个人脸识别引擎?

局长 发布于 06/03 15:45
阅读 19K+
收藏 62

人工智能在近些年的发展可以说是有目共睹。伴随着学术发展的突飞猛进,工业界基于人工智能的应用呈现“井喷”之势,一些公司甚至提出了“All in AI”的口号,这其中比较典型的一种应用便是人脸识别

从历史的角度来看,人们对人脸识别的探索也是比较早的,但是,人脸识别从实验室走出来,来到人们的生活中,却只是近些年才发生的事情。深度学习在计算机视觉领域应用后,使得人脸识别的精度逼近乃至超越人工水平。如果将人脸识别发展的进程用函数曲线来拟合的话,Sigmoid 函数或许是一个不错的选择。

人脸识别技术的应用十分广泛,但市面上从工程角度介绍人脸识别实现原理和方法的资料比较稀少。

本期高手问答(2019.6.10-6.16)邀请到了在人脸识别领域有丰富实践经验的王天庆老师从工程实践的角度出发,和大家一起探讨如何使用 Python 实现一款人脸识别引擎。

王天庆,长期从事 AI、数据科学与分布式系统等相关技术工作,对计算机视觉、强化学习、分布式数据处理系统等具有较深入了解,在人脸识别方面有丰富的实践经验,现从事数据科学相关技术领域的预研工作。熟悉大数据平台研发、架构,以及数据的处理和分析。同时也是中国电子学会(计算机应用分会)会员,运营有个人技术微信公众号 cn92geek,热爱技术交流与分享。

各位可以从以下这些主题进行提问:

  • 人脸识别技术的原理
  • 人脸识别技术的应用领域与设计思想
  • 机器学习和深度学习算法
  • 计算机视觉库 OpenCV
  • 图像检索和存储系统架构
  • ……

或有其他相关的问题也可以在此提问。

为了鼓励踊跃提问,@华章  会在问答结束后从提问者中抽取 5 名幸运会员赠予《Python人脸识别:从入门到工程实践》一书。

本书适合的读者对象

-对机器学习、人工智能感兴趣的读者
-对计算机视觉、深度学习感兴趣的读者
-对人脸识别感兴趣的读者
-希望用人脸识别技术完成课程设计的高校学生
-人工智能或人脸识别相关产品经理
-从事软件研发的技术工作者

OSChina 高手问答一贯的风格,不欢迎任何与主题无关的讨论和喷子。

下面欢迎大家向王天庆老师@newchin 积极提问,直接回帖提问即可。

加载中
1
知行合一1
知行合一1

@newchin 我之前用python 调OpenCV ,识别到了 人脸的面部关键点,但是感觉正确度不太高,怎么提高精确度?

n
newchin
你用的应该是opencv自带的传统人脸检测方法(基于haar特征的),这类方法对侧脸和有遮挡等场景效果不好。如果提高精度的话,可以限制用户的输入图片,或者换用深度学习的方法,opencv也带深度学习的实现。一楼的这本书中也有涉及哈
0
AmCoder
AmCoder

@newchin 大佬,请问人脸识别需要具备一定的算法知识能力吗?而且面对现在汹涌的人脸识别,人工智能这些高频词汇,如何才能真正更适用于公司的业务?或者换句话说,这些高频词汇技术更适用什么用的业务场景呢?

AmCoder
AmCoder
回复 @newchin : 精辟,感谢大佬
n
newchin
人脸识别需要具备算法知识和能力。如何适应公司的业务?这主要得看公司的业务方向和需求,如果确实没有结合点,生拉硬套也不太好。技术人应该去厚积薄发,这样在公司有需求时,能够实现自身价值。具体的业务场景,可以看各大厂商的实践分享,大厂的实践路程,极有可能就是小公司未来的技术方向。
0
c
cbk808

@newchin 如何设置网络层数和层中神经元数,如何获取训练数据呢?

n
newchin
常用的训练数据集很多,网上有许多人整理,搜索即可。也可以通过kaggle获取。关于层数多少这些超参数,可以看一下vgg以及alex这些经典网络,参考他们即可。对于cnn,一般是2的幂次方数,网络层稀疏但又不要太膨胀即可
0
天山的影子
天山的影子

@newchin 您好,请问这个训练结果Android客户端能用吗?书里讲了吗?谢谢

n
newchin
可以在安卓强通过tensorflow Android runtime进行使用。书中没有演示安卓上的操作,不过网上有详细的教程,在keras的官网上有链接
0
模糊的张狂
模糊的张狂

@newchin 您好,面部识别时,如何区别图像区域中的图像为三维图像还是照片?除了面部认证要求动作的之外,区别模拟3d的图像与真实的面部识别 有什么具体的成熟方案吗?

知行合一1
知行合一1
3d图像有具体的坐标,可以轻松找到3d面部的顶点
0
猴亮屏
猴亮屏

@newchin 老师你好,我想请教一下,为什么现在大多数AI都基于python呢?众所周知,PyThon的效率是比Java还要低的,那为什么用PyThon而不用Java呢?

n
newchin
是的,python除了库多,还易于实现原型。这个训练好的原型。可以通过deeplearning4j直接套用,很简单方便
幽魂步
幽魂步
python库多
0
奋起的咸鱼
奋起的咸鱼

@newchin 老师你好,现在市面上的人脸识别都是python吗?训练数据如何获取

n
newchin
python的好处在于易于实现和调试,工程化简单,但不能说全都用python,只不过说他更主流,优势更明显
0
xpbob
xpbob

@newchin  您好,这个是不是有分布式环境训练

n
newchin
框架是支持的
0
Leo_Vip
Leo_Vip

@newchin  人脸识别必须要做大量的人脸识别训练才准确吗?能否通过一张或少量人脸进行识别? 

n
newchin
一般来讲,深度学习是需要大数据来训练的。小样本训练是目前热门的一个研究领域,已经有一些成果了,但是我觉得还不是特别成熟
0
Leo_Vip
Leo_Vip

@newchin 现在主流人脸识别是否是在opencv 和RNN CNN方向,否是一边倒 倒向深度学习方向了?

普通方案是否已经out了,比如opencv 可能主要用于图片处理,而不是人脸识别?

不知道这样问对吗?

n
newchin
他们各有优势,不能说一边倒,只不过说当前算力容易获得,且人脸识别上云,那些传统的方法优势在更多场合不明显了
返回顶部
顶部