使用素描图像识别人脸

使用素描图像识别人脸

说明

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

算法步骤

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

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

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

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

  4. 获得训练集的协方差矩阵 W=PPT ,计算其特征向量。然而,因为通常图像的像素数目 N 大于训练集的图像数 M W 的秩数仅为 M1 (训练集图像中的图像有必定的相关性)。因此,计算 PTP 的特征向量更为简便。推理以下:
    markdown

    (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 列)。jsp

  6. 对于一张新的人脸相片(face photo) Qk ,去中心化获得 Pk 。而后,计算其在特征空间上的投影系数 bp=ETpPk ,将其做为用于分类的特征矢量。测试

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

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

    因而,重构图像能够表示为:
    Pr=Pcp=i=1McpiPi

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

    Sr=i=1McpiSi

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

测试结果

下图是重构的效果图
这里写图片描述

识别率

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

原论文中的识别率以下,差异仍是挺大的。
这里写图片描述

参考资料

  1. 《Face Photo Recognition Using Sketch》, Xiaoou Tang and Xiaogang Wang, 2002, ICIP.
相关文章
相关标签/搜索