灵长类大脑是如何进行面部识别的

The Code for Facial Identity in the Primate Brain

一个几何图形是有点而线、由线而面形成的。那么大脑如何去识别一个物体也是相应地先识别简单的图形,然后再合成并认识复杂的图形。比如大卫·休伯尔和托斯坦·威泽尔在1950年代对猫的初级视觉皮层(V1)的研究就发现,有的神经元可以编码图形的方向,它们会对朝向一个特定角度的光条反应最强烈,如果换了角度则反应变弱。而在颞叶比较高级的视觉信息处理相关区域—ITC(Inferior Temporal Cortex),神经元则可以编码相对复杂的、特定面孔的信息,比如只对某些面孔反应强烈。于是就有人提出假设说可能会存在“祖母神经元”,这样的一个或一组细胞会编码某个特定的人(比如你的祖母),只会对某一张脸才会有反应。这篇文章则发现,位于ITC区域的神经元实际上是不同的细胞分别编码一个或多个面部特征,组合起来从而识别一张人脸。这篇文章记录了猴子的三个和面孔识别有关的脑区的神经元的活动,分别是ML、MF和AM区(如下图中图C的黄色区域所示)。

然后再使用这些特征点把每张真实人脸比对变换到一个标准人脸模型上,这样形成了新的、去除了每张人脸的形状(shape,比如脸的宽度),但是保留了人脸外貌特点(appearance)的新的人脸。接下来,用主成分分析找出25个关于人脸形状的主成分和25个关于人脸外貌特点的主成分,合起来就会有总共50个维度的特征。用这50个维度可以再任意生成不同的人脸。实验人员就生成了2000个人脸。然后实验人员对每个被记录的细胞都将2000张脸分别呈现3~5次,每次150ms,每张图片之间间隔150ms,总共在两只猴子头上、之前提到的三个脑区记录了205个神经元分别对这2000张脸的反应。

接下来计算了引起每个神经元发放的图像刺激的均值,即STA(Spike-triggered average) (图I为STA的一个例子)

STA的计算方法如下:总共50个特征维度,对2000张图片中的每一张计算出其在某个维度上的向量,然后用这2000个向量分别乘以观看这2000张图片时每个神经元的发放强度值,求其和,然后再除以该神经元对总共这2000张图片的发放值的和,以求得平均。
即:\(特征1的STA=\frac{\Sigma_{n=1}^{2000} (图n中特征1的向量*看图n时神经元发放强度)}{\Sigma_{n=1}^{2000} (看图n时神经元发放强度)}\)![]

由此可以得到每个神经元在哪些维度下的反应最强,平均每个神经元会对6.1个特征维度有反应(图D)。
ML/MF区的神经元对于shape维度的反应更强烈,而AM区的神经元对于appearance维度的反应更强烈。之前的研究也表明,ML/MF神经元只编码特定方向的(比如正脸)人脸,而AM则编码各个方向的(比如换成侧脸)人脸(图E)。

当某个神经元编码某个特征维度时,该神经元发放的平均为STA,沿着该维度的STA(增加或减少该维度的值),可以看到,特征越强,神经元对其的反应也越大。因此可以用一个线性模型来描述。即:神经元的整体反应=不同神经元的加权系数(矩阵)*50维面部特征值向量+偏移向量。接下来用提示图片之后的50~300ms之间的神经元的反应之和作为神经元的整体反应,然后用1999张图作为训练集,预测对剩下来的第2000张图的反应。该模型预测得很好,同样,对于AM神经元来说,使用appearance维度的解码(Decoding)质量更高,ML/MF神经元则是shape维度更好。综合50个维度下的人脸特征预测值,可以很好地再现猴子所看到的人脸(Yubin的研究)。

虽然该模型假设这些人脸识别神经元是以线性地综合各种不同的特征来识别面部,但有很多其他模型是假定人脸识别是基于样例(Examplar-based)的。这些基于样例的模型也有可背书它的实验结果,部分AM神经元会仅仅对某几个脸才会有反应,而且无关乎头的方向。如果AM神经元真的只是线性地综合各种不同的特征的话,那么它应该是仅仅对一个面孔输入和由该细胞的STA定义的面部空间的特定方向取点积。于是,对于每个神经元都会存在一个零空间(null space,\(Ax=\overrightarrow{0}\)),该神经元在这个零空间下的反应(response)是不变的。这一零空间即是与STA正交的面(orthogonal plane,加上一个正交面上的向量不会改变映射在STA上的值)。

为了对比验证究竟AM神经元更符合哪种模型,作者构建了与STA正交的轴(任意构建了2000个,然后从中选择300个神经元活动更大的正交轴),然后看AM神经元在这些正交的轴上是如何反应的(下图A),图上的数值用了一个高斯函数(\(a*e^{-(\frac{x^2}{\sigma^2})}+c\))去拟合,并且使用该函数的中心值(a+c)进行了Nomalize。另外也建了两个会对正交的特征产生钟形反应的(只对某些examplar反应)模型,即看到的面孔如果越不类似examplar的脸,则神经元的反应会线性地减弱。图B是一个标准的Examplar模型,图C也属于Examplar模型,但是采用了Max-pooling的方式,即把人脸根据展示角度等分解为几组模板(template),然后以这张脸和所有模板的相似度的最大值作为神经元的反应值(具体如何实现需要参考以往文献)。

虽然该研究发现大部分AM神经元都是编码某些面部特征而并非某个Examplar,但仍有个别神经元跟以往研究的发现一致,存在稀疏(Sparse)的发放特点--只对几个特殊的人脸才有反应(图C)。但如果把该神经元的发放情况放在横纵轴分别是STA以及正交轴的2维图面上来看(图D,箭头所指的点对应的是图C中神经元反应强烈的三张脸),就会发现其在STA轴上的反应是非常非线性的,同时沿着正交轴几乎没有反应,不会随着正交轴的值升高而反应增强。图E中的神经元则是一个非稀疏神经元的例子(只要STA的值高于0都会有反应)。如果从稀疏度的角度去看(图F),就会发现AM神经元对稀疏度不敏感,该图的横轴表示稀疏度(横轴数值越小则越稀疏,仅对极少的几个examplar会发放),纵轴是采用高斯函数去拟合(fit)这三个模型(AM模型、Examplar模型和MaxPooling模型)时,对拟合后的高斯函数,取钟形的两边的长尾部分和钟形中心部分拟合度的比值。比值越高(比如等于1)表明高斯函数在中心和长尾部分都拟合得很好。而Examplar模型和MaxPooling模型则在越不稀疏的时候拟合得越好。某些AM神经元在正交轴(特征上)几乎没有反应,特别是最稀疏的AM神经元会对某几个没有明显相似度的面孔都有反应的原因就在于反映这些面孔相互差别的向量是在AM稀疏神经元的零空间上的(注:所以应该是恰巧随机地对这些毫无相似的面孔出现了发放?)。

一个好的模型除了可以解码之外,还应可以很好地编码,所以为了明确Axis Model是否可以准确预测神经元在看到一张新面孔时是如何发放的,所以建了两个模型拟合面孔识别细胞的发放情况,进行对比。
**模型1(AxisModel)假定神经元仅仅对输入的面孔图形(50维Shape-Appearance向量)和该神经元所编码的特定的轴(特征)取点积,然后再将点积结果放到一个非线性模型(\(R(x)=a+b·x+c·x^2+d·x^3\))进行进一步计算。
**模型2(ExamplarModel)假定神经元计算输入的面孔图形和作为Examplar面孔之间的欧式距离,然后同样将欧式距离的结果同样放到非线性模型进行进一步计算。
他们用1900张脸进行训练,剩余的100张脸进行测试。

结果显示Axis模型可以解释68%的神经元反应的方差(Variance)(见图H),优于Examplar模型(见图I)。另外训练一个5层的卷积神经网络(CNN),用它进行面部识别,然后将AM神经元的反应线性回归到CNN的输出层神经元上,也只能解释30%的方差,劣于Axis模型(见图K)。



由此,发现Axis模型优于已经的其他模型,作者对Axis模型进行了进一步的测试,在记录神经元的同时,实施计算出该神经元的STA,然后构造出于该STA相正交的维度,用这些正交的维度生成人脸,然后看该神经元对新生成的人脸的反应。结果正如预测地一样,面孔识别神经元仅仅对STA轴的面孔反应强烈,而几乎不编码沿着正交维度变化的面孔信息。(见图E1)

AM神经元对于人脸的反应是无关乎头的方向的,那么为何它仍可以把正脸和侧脸都可以识别出是同一个人呢?在Appearance维度上正脸的STA和侧脸的STA相关度很高(见图B和图C)。这意味着可以在不考虑头部反向的情况下使用AM神经元的活动来解码、反推出其所表征的人脸。

为何ML/MF和AM神经元采用了一个线性方式来表征人脸?有研究表明在一个复杂的task中,只有非线性地混合对于task中的各种不同变量的反应,才能生成一个高维的表征方式,这一高维表征可以灵活地通过一个线性分类器沿着多重维度读取出来(需要进一步参考Rigotti在2013年的论文)。对于ML/MF和AM神经元表征人脸来说,它们的表征空间已经是一个高维空间,所以采用线性编码就足够了。为了证实线性编码就足够的想法,该文作者了一个单层的神经网络来从200张人脸中识别出1张来。
该神经网络的输入包含200个单元(units)。这些单元对人脸的反应要么被定义为1)非线性距离度量(nonlinear-distance-metric,度量某张人脸到exemplar脸的距离);要么是2)线性特征轴度量(linear-axis-metric,度量某张人脸在特征轴上的投射)。结果发现刺激输入空间的维度较低时,非线性距离度量的效果更好,但是随着纬度的升高(大于6维),两者的表现都一样好(见图A2和A3)。

但如果将输入单元减少为10个的时候,线性特征模型就会表现得更好(见图B2和B3)。

另外,输入中如果有噪声的话,线性特征模型会更不容易被噪声影响(见图C2和C3)。

总而言之,Axis模型更好。神经元是如何将用像素坐标表达的物体转换成shape-appearance特征来表征的?AM神经元采用类似Axis模型的方式对人脸进行表征的这一机制非常类似于分层前馈深度神经网络(hierarchical feed-forward deep-network)。当作者训练一个CNN去识别人脸时,就会发现最终层(final-layer)的节点(units)的表征方式非常接近Axis模型,而并非Exemplar模型。这些最终层节点表达的是人脸的appearance(比如眼部明暗、头发颜色),这点跟AM神经元的工作原理非常像。也就是说,CNN自己训练而发现的用于人脸识别的这些特征跟人类大脑更有效识别人脸的机制是相同的。
**p.s:对于人脸图像生成的算法,跟本文的方式一样,先align landmarks之后再分别对landmark位置和aligned图像进行PCA,就可以生成以假乱真的人脸。但是如果没有进行landmark alignment,直接进行PCA的话,生成的特征脸(Eigenfaces)就会很不像真人脸。

posted @ 2017-06-26 15:58  hankoui  阅读(1524)  评论(0编辑  收藏  举报