在以往对深度网络的认知当中,我们往往需要一个庞大的数据集来进行参数的回归训练,才能得到一个比较好的效果。
但是在人脸识别的应用当中,往往使用到的都是一次学习,也就是说只通过1张图片,就能判读这个人是不是我们要的那个人。这个一张照片指的是训练集当中只有一张,而且识别的时候也只有1张。
那么我们现在如果要对办公室里的四个人进行一个人脸识别的话,我们要怎么做呢?
如果按照我们之前学习的方法的话,我们一般会将4张图片的放到一个训练集当中,然后把要测试的图片经过卷积网络之后生成应该softmax分类器,对应的是其中的某一个人,或者都不是(5个选项)。
这样做的几个问题:
1.单张图片的深度学习效果很不好,不适合这么做。
2.如果新加入一个员工,那么又要重新设置训练集,重新训练网络,也不是一个很好地选择。
有没有什么其他的办法呢?
在这里我们可以使用一个similarity函数,这个函数评估的是两张图片的差异程度。如果放入同一个人的两张图片,你会希望它输出一个很小的值。
我们会设置一个阈值T,如果这个差值大于T,则我们认为这两张图片不是同一人,如果小于T,则认为是同一个人。
因此在这里我们需要训练的是Similarity函数,这个similarity需要做的就是,输入两个图片,输出它的差异值,若差异值小于一定的值,则认为是同一个人,若大于这个值,则认为是不同的人。