在以深度学习为基础的人脸识别技术上,要做到匹配不同年龄的同一个人,方法很简单, 也很粗暴,那就是在“喂数据”的时候,刻意的选择一个人的不同维度,包括:
角度灯光发型年龄 …
例如,就年龄来说,在“造”数据的时候,会出现下面的“对子”,并告诉神经网络,他就是一个人。
这样的数据喂的多了,神经网络就逐渐“学会”识别不同年龄的同一个人。至于深层的原理,造数据的人不明白,训练后的神经网络也不明白,总之就是:
“别问为什么,问了也不知道!”
从技术上来说,当一张人脸图像流过神经网络的时候,会进行特征点(template)提取,而所谓的特征点在数学上就是一个高维坐标,例如:
(x,y,z,…)
其中,每一个象限都表示一个特征向量。而两个人脸是否相似,最终决定于他们在高维空间中的距离,越接近则越相似。
而在神经网路的训练过程中,就是通过“喂”大量的数据,使年龄虽变化,面容差异(表面上)很大的同一个人提取出的特征点,在高维空间上尽量接近。
那么,假设一个神经网路对应的特征点只两个象限(x,y),上面3个人在空间中的分布可能如下:
在这些特征向量中,有些可以用生活化的语言描述(例如眼间距),而有些则无法描述,这也正是神经网络难以理解的原因。
而人的面容随着年龄的变化,从我们肉眼来看,可能变化巨大,但从神经网络提取的特征点来说,则变化很小。
可以说,一个足够聪明的人脸识别神经网络,在提取特征点的时候,最重要的就是忽略掉那些不稳定的特征,例如肤色、头发、张嘴与否、闭眼与否。
那么,对劳荣枝来说,虽然时间过去了20年,其人在我们肉眼看来,面相变化了不少,例如发型、胖瘦、皮肤的光泽。但是,在神经网络的世界中,这些被普通人在乎的东西,反而都会被冷冰冰的忽略。
而正是这种“冰冷”,才使计算机能够跨越岁月的变化,精确的识别出某个人。
其实,我们对神经网络了解之少,正如我们对自己的认识一样,如此熟悉,又如此陌生。