发明名称 一种低秩分块稀疏表示的人脸识别方法
摘要 发明公开了一种低秩分块稀疏表示的人脸识别方法,采用低秩矩阵分解并引入参考项,采用DCT算法,实现了图像的归一化,有效地解决了人脸图像中光照不均匀的问题。在分类阶段,利用聚类的思想,行之有效地提高了识别速度。将该算法用于标准人脸数据库上进行多次实验,实验结果表明:与现有人脸识别算法相比,本文算法的识别准确率和计算效率都得到了一致提高。在人脸图像出现遮挡、伪装、光照变化等复杂情况下以提高人脸识别的精度和稳健性。
申请公布号 CN103632138A 申请公布日期 2014.03.12
申请号 CN201310586448.1 申请日期 2013.11.20
申请人 南京信息工程大学 发明人 胡昭华;赵孝磊;徐玉伟;何军
分类号 G06K9/00(2006.01)I;G06K9/62(2006.01)I 主分类号 G06K9/00(2006.01)I
代理机构 南京经纬专利商标代理有限公司 32200 代理人 许方
主权项 1.一种低秩分块稀疏表示的人脸识别方法,其特征在于,具体步骤如下:步骤一、对于人脸图像数据库中的每一个主体,随机选择其一部分作为训练图像,另一部分作为测试图像,将所有主体的训练图像和测试图像分别整合构成初始的训练数据矩阵和测试矩阵;步骤二、将训练数据矩阵D分解成A+E,其中A代表低秩分解矩阵,E代表分解后的稀疏误差,通过最小化低秩分解矩阵A的秩,同时减小零范数||E||<sub>0</sub>的值来达到训练数据矩阵D的最佳低秩逼近,低秩分解矩阵分解的公式:<![CDATA[<math><mrow><mfenced open='' close='-'><mtable><mtr><mtd><mrow><msub><mrow><munder><mi>min</mi><mrow><mi>A</mi><mo>,</mo><mi>E</mi></mrow></munder><mrow><mo>|</mo><mo>|</mo><mi>A</mi><mo>|</mo><mo>|</mo></mrow></mrow><mo>*</mo></msub><mo>+</mo><mi>&lambda;</mi><msub><mrow><mo>|</mo><mo>|</mo><mi>E</mi><mo>|</mo><mo>|</mo></mrow><mn>1</mn></msub></mrow></mtd><mtd><mi>s</mi><mo>.</mo><mi>t</mi><mo>.</mo></mtd><mtd><mi>D</mi><mo>=</mo><mi>A</mi><mo>+</mo><mi>E</mi></mtd></mtr></mtable></mfenced><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>1</mn><mo>)</mo></mrow></mrow></math>]]></maths>公式(1)中,核范数||A||<sub>*</sub>是低秩分解矩阵A秩的近似值,一范数||E||<sub>1</sub>是零范数||E||<sub>0</sub>的替代值,λ为参数;步骤三、引入参考项,根据低秩分解矩阵分解的公式(1),建立目标函数:<![CDATA[<math><mfenced open='' close=''><mtable><mtr><mtd><munder><mi>min</mi><mrow><mi>A</mi><mo>,</mo><mi>E</mi></mrow></munder><munderover><mi>&Sigma;</mi><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mi>c</mi></munderover><mo>{</mo><msub><mrow><mo>|</mo><mo>|</mo><msub><mi>A</mi><mi>i</mi></msub><mo>|</mo><mo>|</mo></mrow><mo>*</mo></msub><mrow><mo>+</mo><msub><mi>&lambda;</mi><mn>1</mn></msub><msub><mrow><mo>|</mo><mo>|</mo><msub><mi>E</mi><mi>i</mi></msub><mo>|</mo><mo>|</mo></mrow><mn>1</mn></msub><mo>}</mo><mo>+</mo><msub><mi>&lambda;</mi><mn>2</mn></msub><mi></mi></mrow><mi>&Psi;</mi><mrow><mo>(</mo><msub><mi>A</mi><mn>1</mn></msub><mo>,</mo><msub><mi>A</mi><mn>2</mn></msub><mo>,</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>,</mo><msub><mi>A</mi><mi>c</mi></msub><mo>)</mo></mrow></mtd><mtd><mi>s</mi><mo>.</mo><mi>t</mi><mo>.</mo></mtd><mtd><msub><mi>D</mi><mi>i</mi></msub><mo>=</mo><msub><mi>A</mi><mi>i</mi></msub><mo>+</mo><msub><mi>E</mi><mi>i</mi></msub><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>2</mn><mo>)</mo></mrow></mtd></mtr></mtable></mfenced></math>]]></maths>公式(2)中,i=1,2,...,c,c为训练数据矩阵中类的个数,D<sub>i</sub>为第i个训练数据矩阵,A<sub>i</sub>为第i个低秩分解矩阵,E<sub>i</sub>为第i个稀疏误差矩阵,Ψ(A<sub>1</sub>,A<sub>2</sub>,...,A<sub>c</sub>)为提高低秩分解矩阵区分能力的参考项,参数λ<sub>1</sub>是正的权重系数,参数λ<sub>2</sub>为常数且λ<sub>2</sub>≥0;步骤四、对目标函数进行化简,将目标函数最终整理为:<![CDATA[<math><mrow><mfenced open='' close=''><mtable><mtr><mtd><munder><mi>min</mi><mrow><msub><mi>A</mi><mi>i</mi></msub><mo>,</mo><msub><mi>E</mi><mi>i</mi></msub></mrow></munder><msub><mrow><mo>|</mo><mo>|</mo><msub><mi>A</mi><mi>i</mi></msub><mo>|</mo><mo>|</mo></mrow><mo>*</mo></msub><mo>+</mo><msub><mi>&lambda;</mi><mn>1</mn></msub><msub><mrow><mo>|</mo><mo>|</mo><msub><mi>E</mi><mi>i</mi></msub><mo>|</mo><mo>|</mo></mrow><mn>1</mn></msub><mo>+</mo><msub><mi>&lambda;</mi><mn>2</mn></msub><msubsup><mrow><mo>|</mo><mo>|</mo><msub><mi>A</mi><mi>i</mi></msub><mo>-</mo><msub><mi>m</mi><mi>i</mi></msub><mo>|</mo><mo>|</mo></mrow><mi>F</mi><mn>2</mn></msubsup></mtd><mtd><mi>s</mi><mo>.</mo><mi>t</mi><mo>.</mo></mtd><mtd><msub><mi>D</mi><mi>i</mi></msub><mo>=</mo><msub><mi>A</mi><mi>i</mi></msub><mo>+</mo><msub><mi>E</mi><mi>i</mi></msub></mtd></mtr></mtable></mfenced><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>10</mn><mo>)</mo></mrow></mrow></math>]]></maths>其中<img file="FDA0000417933480000015.GIF" wi="447" he="69" />d为人脸图像化成列向量后的行数,m<sub>i</sub>代表第i个主体的均值向量,n<sub>i</sub>代表第i个主体中样本的个数,||·||<sub>F</sub>代表是是f范数;步骤五、利用增广拉格朗日乘法对公式(10)进行处理:<![CDATA[<math><mrow><mfenced open='' close=''><mtable><mtr><mtd><mi>L</mi><mrow><mo>(</mo><msub><mi>A</mi><mi>i</mi></msub><mo>,</mo><msub><mi>E</mi><mi>i</mi></msub><mo>,</mo><msub><mi>Y</mi><mi>i</mi></msub><mo>,</mo><mi>&mu;</mi><mo>,</mo><msub><mi>&lambda;</mi><mn>2</mn></msub><mo>)</mo></mrow><mo>=</mo><msub><mrow><mo>|</mo><mo>|</mo><msub><mi>A</mi><mi>i</mi></msub><mo>|</mo><mo>|</mo></mrow><mo>*</mo></msub><mo>+</mo><msub><mi>&lambda;</mi><mn>1</mn></msub><msub><mrow><mo>|</mo><mo>|</mo><msub><mi>E</mi><mi>i</mi></msub><mo>|</mo><mo>|</mo></mrow><mn>1</mn></msub><mo>+</mo><msub><mi>&lambda;</mi><mn>2</mn></msub><msubsup><mrow><mo>|</mo><mo>|</mo><msubsup><mi>A</mi><mi>i</mi><mo>&prime;</mo></msubsup><mo>|</mo><mo>|</mo></mrow><mi>F</mi><mn>2</mn></msubsup><mo>+</mo><mo>&lt;</mo><msub><mi>Y</mi><mi>i</mi></msub><mo>,</mo><msub><mi>D</mi><mi>i</mi></msub><mo>-</mo><msub><mi>A</mi><mi>i</mi></msub><mo>-</mo><msub><mi>E</mi><mi>i</mi></msub><mo>></mo></mtd></mtr><mtr><mtd><mo>+</mo><mfrac><mi>u</mi><mn>2</mn></mfrac><msubsup><mrow><mo>|</mo><mo>|</mo><msub><mi>D</mi><mi>i</mi></msub><mo>-</mo><msub><mi>A</mi><mi>i</mi></msub><mo>-</mo><msub><mi>E</mi><mi>i</mi></msub><mo>|</mo><mo>|</mo></mrow><mi>F</mi><mn>2</mn></msubsup></mtd></mtr></mtable></mfenced><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>12</mn><mo>)</mo></mrow></mrow></math>]]></maths>其中,A<sub>i</sub>'=A<sub>i</sub>-M<sub>i</sub>,Y<sub>i</sub>代表第i个主体所对应的拉格朗日乘数,目的是通过迭代求取函数的极值,μ代表一个正数参数;步骤六、对于公式(12)通过迭代求解A,对低秩分解矩阵A进行更新:<![CDATA[<math><mfenced open='' close=''><mtable><mtr><mtd><msubsup><mi>A</mi><mi>i</mi><mrow><mi>k</mi><mo>+</mo><mn>1</mn></mrow></msubsup><mo>=</mo><munder><mrow><mi>arg</mi><mi>min</mi></mrow><msub><mi>A</mi><mi>i</mi></msub></munder><mi>L</mi><mrow><mo>(</mo><msub><mi>A</mi><mi>i</mi></msub><mo>,</mo><msubsup><mi>E</mi><mi>i</mi><mi>k</mi></msubsup><mo>,</mo><msup><mrow><msup><msub><mi>Y</mi><mi>i</mi></msub><mi>k</mi></msup><mi>&mu;</mi></mrow><mi>k</mi></msup><mo>,</mo><msub><mi>&lambda;</mi><mn>2</mn></msub><mo>)</mo></mrow></mtd></mtr><mtr><mtd><mo>=</mo><munder><mrow><mi>arg</mi><mi>min</mi></mrow><msub><mi>A</mi><mi>i</mi></msub></munder><msub><mrow><mo>|</mo><mo>|</mo><msub><mi>A</mi><mi>i</mi></msub><mo>|</mo><mo>|</mo></mrow><mo>*</mo></msub><mo>+</mo><msub><mi>&lambda;</mi><mn>2</mn></msub><msubsup><mrow><mo>|</mo><mo>|</mo><msubsup><mi>A</mi><mi>i</mi><mo>&prime;</mo></msubsup><mo>|</mo><mo>|</mo></mrow><mi>F</mi><mn>2</mn></msubsup><mo>+</mo><mo>&lt;</mo><msubsup><mi>Y</mi><mi>i</mi><mi>k</mi></msubsup><mo>,</mo><msub><mi>D</mi><mi>i</mi></msub><mo>-</mo><msub><mi>A</mi><mi>i</mi></msub><mo>-</mo><msubsup><mi>E</mi><mi>i</mi><mi>k</mi></msubsup><mo>></mo><mo>+</mo><mfrac><msup><mi>&mu;</mi><mi>k</mi></msup><mn>2</mn></mfrac><msubsup><mrow><mo>|</mo><mo>|</mo><msub><mi>D</mi><mi>i</mi></msub><mo>-</mo><msub><mi>A</mi><mi>i</mi></msub><mo>-</mo><msubsup><mi>E</mi><mi>i</mi><mi>k</mi></msubsup><mo>|</mo><mo>|</mo></mrow><mi>F</mi><mn>2</mn></msubsup></mtd></mtr><mtr><mtd><mo>=</mo><munder><mrow><mi>arg</mi><mi>min</mi></mrow><msub><mi>A</mi><mi>i</mi></msub></munder><msub><mrow><mo>|</mo><mo>|</mo><msub><mi>A</mi><mi>i</mi></msub><mo>|</mo><mo>|</mo></mrow><mo>*</mo></msub><mo>+</mo><mrow><mo>(</mo><msub><mi>&lambda;</mi><mn>2</mn></msub><mo>+</mo><mfrac><msup><mi>&mu;</mi><mi>k</mi></msup><mn>2</mn></mfrac><mo>)</mo></mrow><mo>&lt;</mo><msub><mi>A</mi><mi>i</mi></msub><mo>,</mo><msubsup><mi>A</mi><mi>i</mi><mo>&prime;</mo></msubsup><mo>></mo><mo>-</mo><msup><mi>&mu;</mi><mi>k</mi></msup><mo>&lt;</mo><msub><mi>D</mi><mi>i</mi></msub><mo>-</mo><msubsup><mi>E</mi><mi>i</mi><mi>k</mi></msubsup><mo>+</mo><mfrac><mn>1</mn><msup><mi>&mu;</mi><mi>k</mi></msup></mfrac><msubsup><mi>Y</mi><mi>i</mi><mi>k</mi></msubsup><mo>,</mo><msubsup><mi>A</mi><mi>i</mi><mo>&prime;</mo></msubsup><mo>></mo></mtd></mtr><mtr><mtd><mo>=</mo><munder><mrow><mi>arg</mi><mi>min</mi></mrow><msub><mi>A</mi><mi>i</mi></msub></munder><mi>&epsiv;</mi><msub><mrow><mo>|</mo><mo>|</mo><msub><mi>A</mi><mi>i</mi></msub><mo>|</mo><mo>|</mo></mrow><mo>*</mo></msub><mo>+</mo><mfrac><mn>1</mn><mn>2</mn></mfrac><msubsup><mrow><mo>|</mo><mo>|</mo><msub><mi>X</mi><mi>a</mi></msub><mo>-</mo><msub><mi>A</mi><mi>i</mi></msub><mo>|</mo><mo>|</mo></mrow><mi>F</mi><mn>2</mn></msubsup></mtd></mtr></mtable></mfenced></math>]]></maths><![CDATA[<math><mfenced open='' close='' separators=' '><mtable><mtr><mtd><msubsup><mi>A</mi><mi>i</mi><mrow><mi>k</mi><mo>+</mo><mn>1</mn></mrow></msubsup><mo>=</mo><msub><mi>US</mi><mi>&epsiv;</mi></msub><msup><mi>V</mi><mi>T</mi></msup></mtd><mtd><mi>where</mi></mtd><mtd><mrow><mo>(</mo><mi>U</mi><mo>,</mo><mi>S</mi><mo>,</mo><msup><mi>V</mi><mi>T</mi></msup><mo>)</mo></mrow><mo>=</mo><mi>SVD</mi></mtd></mtr></mtable><mrow><mo>(</mo><msub><mi>X</mi><mi>a</mi></msub><mo>)</mo></mrow></mfenced></math>]]></maths>式中<img file="FDA0000417933480000027.GIF" wi="644" he="140" />ε=(2λ<sub>2</sub>+μ<sup>k</sup>)<sup>-1</sup>,k代表迭代次数,<img file="FDA0000417933480000023.GIF" wi="60" he="84" />代表第i个稀疏误差矩阵经过k次迭代后的值,Y<sub>i</sub><sup>k</sup>代表第i个主体所对应的拉格朗日乘数经过k次迭代后的值,μ<sup>k</sup>代表正数参数经过k次迭代后的值,通过调节Y<sub>i</sub><sup>k</sup>的值控制迭代过程,SVD代表矩阵奇异值分解,其中U、V为酉矩阵,S为对角矩阵;步骤七、对误差矩阵E进行更新:<![CDATA[<math><mfenced open='' close=''><mtable><mtr><mtd><msubsup><mi>E</mi><mi>i</mi><mrow><mi>k</mi><mo>+</mo><mn>1</mn></mrow></msubsup><mo>=</mo><munder><mrow><mi>arg</mi><mi>min</mi></mrow><msub><mi>E</mi><mi>i</mi></msub></munder><mi>L</mi><mrow><mo>(</mo><msubsup><mi>A</mi><mi>i</mi><mrow><mi>k</mi><mo>+</mo><mn>1</mn></mrow></msubsup><mo>,</mo><msub><mi>E</mi><mi>i</mi></msub><mo>,</mo><msup><msub><mi>Y</mi><mi>i</mi></msub><mi>k</mi></msup><mo>,</mo><msup><mi>&mu;</mi><mi>k</mi></msup><mo>,</mo><msub><mi>&lambda;</mi><mn>2</mn></msub><mo>)</mo></mrow></mtd></mtr><mtr><mtd><mo>=</mo><munder><mrow><mi>arg</mi><mi>min</mi></mrow><msub><mi>E</mi><mi>i</mi></msub></munder><msub><mrow><mo>|</mo><mo>|</mo><msub><mi>E</mi><mi>i</mi></msub><mo>|</mo><mo>|</mo></mrow><mn>1</mn></msub><mo>+</mo><mo>&lt;</mo><msup><msub><mi>Y</mi><mi>i</mi></msub><mi>k</mi></msup><mo>,</mo><msubsup><mi>A</mi><mi>i</mi><mrow><mi>k</mi><mo>+</mo><mn>1</mn></mrow></msubsup><mo>+</mo><msub><mi>E</mi><mi>i</mi></msub><mo>-</mo><msub><mi>D</mi><mi>i</mi></msub><mo>></mo><mo>+</mo><mfrac><msup><mi>&mu;</mi><mi>k</mi></msup><mn>2</mn></mfrac><msubsup><mrow><mo>|</mo><mo>|</mo><msubsup><mi>A</mi><mi>i</mi><mrow><mi>k</mi><mo>+</mo><mn>1</mn></mrow></msubsup><mo>+</mo><msub><mi>E</mi><mi>i</mi></msub><mo>-</mo><msub><mi>D</mi><mi>i</mi></msub><mo>|</mo><mo>|</mo></mrow><mi>F</mi><mn>2</mn></msubsup></mtd></mtr><mtr><mtd><mo>=</mo><munder><mrow><mi>arg</mi><mi>min</mi></mrow><msub><mi>E</mi><mi>i</mi></msub></munder><msup><mi>&epsiv;</mi><mo>&prime;</mo></msup><msub><mrow><mo>|</mo><mo>|</mo><msub><mi>E</mi><mi>i</mi></msub><mo>|</mo><mo>|</mo></mrow><mn>1</mn></msub><mo>+</mo><mfrac><mn>1</mn><mn>2</mn></mfrac><msubsup><mrow><mo>|</mo><mo>|</mo><msub><mi>X</mi><mi>e</mi></msub><mo>-</mo><msub><mi>E</mi><mi>i</mi></msub><mo>|</mo><mo>|</mo></mrow><mi>F</mi><mn>2</mn></msubsup></mtd></mtr></mtable></mfenced></math>]]></maths>式中<![CDATA[<math><mrow><msup><mi>&epsiv;</mi><mo>&prime;</mo></msup><mo>=</mo><mfrac><mn>1</mn><msup><mi>&mu;</mi><mi>k</mi></msup></mfrac><mo>,</mo><msub><mi>X</mi><mi>e</mi></msub><mo>=</mo><msub><mi>D</mi><mi>i</mi></msub><mo>-</mo><msubsup><mi>A</mi><mi>i</mi><mrow><mi>k</mi><mo>+</mo><mn>1</mn></mrow></msubsup><mo>+</mo><mfrac><mn>1</mn><msup><mi>&mu;</mi><mi>k</mi></msup></mfrac><msup><msub><mi>Y</mi><mi>i</mi></msub><mi>k</mi></msup><mo>;</mo></mrow></math>]]></maths>步骤八、对经过低秩分解矩阵分解的A应用离散余弦变换,实现光照归一化处理;步骤九、对训练图像进行重叠分块;步骤十、对照步骤二至步骤九训练图像的分块方式,将测试图片也相应地进行分块处理;步骤十一、利用基于稀疏表示的人脸识别算法,结合l<sub>1</sub>范数最小化,求解模块的稀疏系数:<![CDATA[<math><mfenced open='' close=''><mtable><mtr><mtd><msub><mi>x</mi><mi>p</mi></msub><mo>=</mo><msub><mrow><mi>arg</mi><mi>min</mi></mrow><mi>x</mi></msub><mo>{</mo><msubsup><mrow><mo>|</mo><mo>|</mo><msub><mi>A</mi><mi>p</mi></msub><mi>x</mi><mo>-</mo><msub><mi>y</mi><mi>p</mi></msub><mo>|</mo><mo>|</mo></mrow><mn>2</mn><mn>2</mn></msubsup><mo>+</mo><mi>&lambda;</mi><msub><mrow><mo>|</mo><mo>|</mo><mi>x</mi><mo>|</mo><mo>|</mo></mrow><mn>1</mn></msub><mo>}</mo></mtd><mtd><mi>for</mi></mtd><mtd><mn>1</mn><mo>&le;</mo><mi>p</mi><mo>&le;</mo><mn>12</mn></mtd></mtr></mtable></mfenced></math>]]></maths>式中,x为稀疏系数,x<sub>p</sub>代表第p个模块相应的稀疏系数,y<sub>p</sub>代表测试图片第p个模块所组成的列向量;步骤十二、利用不同模块的稀疏系数,将不同模块同一类稀疏系数合并在一起,再对同一类稀疏系数从大到小进行排序,对于一个有c个主体的训练数据矩阵,每个类有N个训练样本的训练集,它的测试图片第p个模块所对应的稀疏系数为:x<sub>p</sub>∈R<sup>cN×1</sup>,1≤p≤12v<sub>pj</sub>=δ<sub>j</sub>(x<sub>p</sub>)<sub>1</sub>v<sub>pj</sub>代表测试图片第p个模块第j个主体所对应的同一类的稀疏系数绝对值之和,δ<sub>j</sub>(x<sub>p</sub>)代表在x<sub>p</sub>中与第j个主体有关联的特征函数,n为训练样本的总数,R<sup>cN×1</sup>是一个cN维的列向量,1≤p≤12;因此:v<sub>p</sub>=[v<sub>p1</sub>,v<sub>p2</sub>,...,v<sub>pc</sub>]<sup>T</sup>将各个模块的稀疏系数联系起来有:<![CDATA[<math><mrow><mi>f</mi><mo>=</mo><mfrac><mn>1</mn><mn>12</mn></mfrac><munderover><mi>&Sigma;</mi><mrow><mi>p</mi><mo>=</mo><mn>1</mn></mrow><mn>12</mn></munderover><msub><mi>v</mi><mi>p</mi></msub></mrow></math>]]></maths>f∈R<sup>c×1</sup>,R<sup>c×1</sup>是一个c维的列向量,通过求解f中最大值的坐标确定测试图片属于哪一个主体,从而实现正确分类与识别。
地址 215101 江苏省苏州市吴中区木渎镇中山东路70号吴中科技创业园2号楼2310室