人脸识别技术现在越来越成熟,比如常见的应用场景:考勤、门禁、火车站认证、机场认证等,那么人脸识别的技术原理是什么呢?现在开始我用大白话的方式记录我学习的过程。
人脸识别系统涉及两种技术:
- 活体识别:识别读入的信息是活的人脸,而不是图片
- 人脸识别:即读取人脸信息,经过计算和对比,得到这人脸信息是否合法
今天主要讲人脸识别的流程,假如我的数据库中有3张明星图片,现在我通过输入另外一张图片(杨幂),要求系统识别出来是否在系统中。
通常我们想到的就是,把所有的图片数据作为一个训练数据集,训练出一个模型,然后通过这个模型预测新输入的图片,如通过图片训练数据集,经过CNN和sofmax后等到人员分类。
如上面的例子中把娱乐圈的所有明星图片收集起来进行训练,得到一个模型,然后识别输入的新图片是否是明星。
这个方法中当娱乐圈新增一个明星时,模型需要重新计算,这个计算量是很大的。实际中模型不会经常计算,一般这有大量新图片加入才会重新计算,所以模型训练的结果通常不是一个分类,而是一个函数;函数是相对稳定的,有新的图片(即明星)时,只要把新图片添加到数据库中,有新图片需要识别时,用训练的函数对需要识别的图片和数据库的图片进行对比,即可得到结果,即:
F(image1,image2)=true|false.
我们通常把这中训练和识别的过程称之为-One-shot learning。