其中第一个问题旨在检查图片是否是人脸、检测一张图像中是否包含人脸,而这个问题早在2005年就已经有了解决方案。
即将一张彩制图片通常是jg格式转化为黑白格式,然后对临近的像素点中用箭头标示出黑白区间变化没有变化则不标,从而得到一张简化的hog图片制式,可以快速而简便的检测人脸。
这个步骤oencv中早已存在,基于viojones算法,可以直接拿来用。
第二个问题,特征点提取,这个问题在2015年前后,在ython发布的ananda支持库得到了普世化的解决方案。而在2015年以前,这个技术不能说没有,而是发展缓慢。
其基本原理为提取人脸特征中的68个特征点鼻子两侧、眉心、嘴角等类似位置,也有算法是27个,这个数量不是固定的,特征点越多越精确熵越低,同样计算效率也就越低,这是两个矛盾的对立面,从而确定需要处理的面部区域。
特征点并不是某个点,而是一个像素集合,主要由卷积核和卷积核周边的像素构成,这个结构就是传说中的智能领域的神经网络具体分类为卷积神经网络,区别于递归神经网络。它在某种程度上,和正则有着相似之处。
在这个过程之后,需要用到这些特征点,通过算法按照比例扭曲和旋转,以及等比缩放,从而得到一张几乎完全对称的正脸。
前两个问题都属于图像的预处理步骤。
后两个问题,人脸校验和人脸检索则是两个相对独立的问题,前者判断两张照片是不是同一个人,后者判断这是谁。
其中又需要广泛用到随机森林和深度学习。
随机森林这里会用到高斯核不需要过多解释,就是在脸上随机描边,所有的算法都会是在描边的区域内进行,从而达到某种目的深度学习。
深度学习则可以简单的理解为结果推倒论。
通常人类判断两个人是否是同一个人,会去仔细对比两个人的头发颜色、眉毛长度、鼻子形状等,从而而出结论哦,这是不是同一个人。
而对于计算机来说,则是恰恰相反,而是放两张照片先告诉它,这是一个人,给他制定一系列的决策标准分类和决策,而后自己算着玩去吧!
计算机视觉最常用的监督训练学习的方法,就是给三张照片,其中两张是同一个人,第三张是其他人,要求上述所有步骤最终得到正确的计算结果,从数万个决策中得到的128个特征这个数量也不是固定的。
这128个特征,如果用日志记载下来的话,可能会让人感觉到啼笑皆非它可能记录了一个人从左鼻孔到右眼角的距离,也有可能记录的是眼睛瞳孔的形状,或者可能只是睫毛的弯曲幅度,或者只是头皮屑的颜色。
实际上这个过程可能更复杂一些,它会不断的从a到b,再从b到a,不断的调整权值,从而达到人类要求得到的结果。
这人类无法完全理解的一套规则,谷歌两机器人互相以人类无法理解的语言对话,就是这个原理。
这个就叫做深度学习。
简单来讲,计算机视觉更像是鹦鹉说话,鹦鹉会说“你好”,但是它并不能理解“你好”是什么意思。对于人类来说,鹦鹉说出“你好”就是结果,也不关心它是怎么说出来的。
所以身份证取照需要人做出几个动作,额外多拍几张照片,这个过程就是为了让计算机能够深度学习,得到属于这个人的“特征库”。
手机的人脸解锁,相对于人脸识别的三维检测,则更为简单一些,因为手机普遍采用的是红外拍摄取图。
相对于彩色制式的标准图,手机对是不是本人的检测并不是特别严格,这个卷积核,也就是神经网络,它是基于二维结构的。
结果论是智能领域常用的解决方案,它有一个学名,叫做监督学习。
包括双足行走和跳跃,搬运货物,下棋,等等机器行为,都非常依赖于监督深度学习。
就先记到这里,这半年正在做这方面的项目。
www