使用素描图像识别人脸

使用素描图像识别人脸

说明

论文《Face Photo Recognition Using Sketch》(Xiaoou Tand and Xiaogang Wang)中提出了一种算法,实现人脸照片与素描图像之间的识别。测试数据集:(CUHK Face Sketch Database (CUFS))。依照此算法,实现的代码见github上corfox/FPRUS。

算法步骤

  1. {Q1,Q2,,QM} 是训练图像集,计算均值

    Qu=1Mi=1MQi
    ,其中 M 是训练图像集中的图像数目。记训练集的素描图像(sketch)为 {S1,S2,,SM}

  2. 将训练图像集中的每张图像减去均值 Pi=QiQu ,得到去中心化的训练集 {P1,P2,,PM}

  3. 将每张图像矩阵拉伸为一个列向量(或行向量)。假设每张图像都有 N 个元素,则得到 N×M 的矩阵 P=[P1,P2,,PM]

  4. 得到训练集的协方差矩阵 W=PPT ,计算其特征向量。然而,由于一般图像的像素数目 N 大于训练集的图像数 M W 的秩数仅为 M1 (训练集图像中的图像有一定的相关性)。所以,计算 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 ,去中心化得到 Pk 。然后,计算其在特征空间上的投影系数 bp=ETpPk ,将其作为用于分类的特征矢量。

  7. 再用 bp 反过来重构 Qk 的重构图像 Pr=Epbp 。由 Ep=PVpΛ12 ,得到重构系数如下:

    cp=VpΛ12pbp=[cp1,cp2,,cpM]

    于是,重构图像可以表示为:
    Pr=Pcp=i=1McpiPi

  8. 由步骤7,知可以通过训练集的线性组合来表示重构的图像,系数 cp 描述了每张训练图像的贡献权重。类比,描述其重构图像为

    Sr=i=1McpiSi

  9. 通过以上步骤,便将不同模态(modality)的相片(Photo)与素描图(sketch)转换为同一模态下,即同为素描或同为相片来进行识别。理论上说,一般常用的识别算法都可以用来对此进行识别。

测试结果

下图是重构的效果图
使用素描图像识别人脸_第1张图片

识别率

下面是测试的识别率结果
这里写图片描述

原论文中的识别率如下,差别还是挺大的。
使用素描图像识别人脸_第2张图片

参考资料

  1. 《Face Photo Recognition Using Sketch》, Xiaoou Tang and Xiaogang Wang, 2002, ICIP.

你可能感兴趣的:(算法,人脸识别,素描与照片)