使用素描图像识别人脸

说明

算法步骤

  1. 记{Q1,Q2,…,QM}是训练图像集,计算均值Qu=1M∑i=1MQi,其中M是训练图像集中的图像数目。记训练集的素描图像(sketch)为{S1,S2,…,SM}。
  2. 将训练图像集中的每张图像减去均值Pi=Qi−Qu,得到去中心化的训练集{P1,P2,…,PM}。
  3. 将每张图像矩阵拉伸为一个列向量(或行向量)。假设每张图像都有N个元素,则得到N×M的矩阵P=[P→1,P→2,…,P→M]。
  4. 得到训练集的协方差矩阵W=PPT,计算其特征向量。然而,由于一般图像的像素数目N大于训练集的图像数M,W的秩数仅为M−1(训练集图像中的图像有一定的相关性)。所以,计算PTP的特征向量更为简便。推理如下:
    (PTP)Vp=VpΛpP(PTP)Vp=PVpΛp(PPT)PVp=PVpΛpWPVp=PVpΛp
    其中,Vp是特征向量组成的矩阵;Λp是特征值组成的对角矩阵。那么,W的特征向量便是PVp,特征值是Λp。
  5. 由步骤4,可以计算得到W的标准正交特征矩阵(orthonormal eigenvector matrix)为Ep=PVpΛ12p(N行M列)。
  6. 对于一张新的人脸相片(face photo)Qk,去中心化得到P→k。然后,计算其在特征空间上的投影系数b→p=ETpP→k,将其作为用于分类的特征矢量。
  7. 再用b→p反过来重构Qk的重构图像P→r=Epb→p。由Ep=PVpΛ12,得到重构系数如下:cp=VpΛ12pb→p=[cp1,cp2,…,cpM]
    于是,重构图像可以表示为:P→r=Pcp=∑i=1McpiP→i
  8. 由步骤7,知可以通过训练集的线性组合来表示重构的图像,系数cp描述了每张训练图像的贡献权重。类比,描述其重构图像为S→r=∑i=1McpiS→i
  9. 通过以上步骤,便将不同模态(modality)的相片(Photo)与素描图(sketch)转换为同一模态下,即同为素描或同为相片来进行识别。理论上说,一般常用的识别算法都可以用来对此进行识别。

测试结果

下图是重构的效果图

图像识别箭头_模态

识别率

下面是测试的识别率结果

图像识别箭头_特征向量_02

原论文中的识别率如下,差别还是挺大的。

图像识别箭头_特征值_03