问题分析
输出:砍掉softmax层,直接输出一个多维向量,相当于对输入图像进行encoding
验证:待验证输入、目标,分别计算网络输出(特征)向量,衡量两向量的相似程度
- 足够相似(相近),则认为匹配成功;否则,认为匹配不成功
- 除了基于距离计算相似度,也可以训练一个二分类器,给出两种类别(同一个人、不同的人)
问题处理
- 多分类:不同人物采集多张图片,每个人物作为一个类,多分类问题训练RNN
- 缺点是各类中(即同一个人)数据可能较少
- triplet cost
- 使用$(Anchor, Positive, Negative)$形式数据训练,构造cost function使得A-P相似度大于A-N
- 构造triplet时,选择与A-P相近的A-N,以确保能区分相似不同的人脸
人脸识别
- 全库遍历,与待识别输入做人脸验证,成功hit的结果作为识别成功
注意
人脸验证的RNN应用,表明NN不单单可以通过(训练一个网络),由输出层(sigmoid、softmax)给出分类、回归结果
还可以直接使用(预训练好的网络)中间隐藏层的输出,作为把输入进行encoding
- 输入 <-> encoding可以认为是一一映射,这个对应着图片的内容,即用一个多维encoding向量来描述输入图片
- 因此,可以基于不同输入encoding的相似性,衡量两个图片是否是同一内容,来解决一些问题
- 选择深、浅隐藏层输出,对应着使用大、小粒度的特性