一种用于视频监控的、基于cuda并行计算与稀疏表示的快速人脸识别算法

文档序号:6620763阅读:368来源:国知局
一种用于视频监控的、基于cuda并行计算与稀疏表示的快速人脸识别算法
【专利摘要】本发明公开了一种基于CUDA并行计算与稀疏表示的人脸识别方法。针对稀疏表示字典训练过程的计算复杂度大,速度慢等不足,该方法采用CUDA并行计算技术,使用GPU进行运算得到字典;然后结合稀疏表达方法,通过求解稀疏系数向量重建待测样本,根据测试样本与重建样本之间的残差来进行分类识别。该方法充分挖掘了现有计算机硬件的计算资源,并根据算法特征进行优化,提高了字典训练过程的运算速度,大大减少了算法执行时间,提升了该方法的效率。
【专利说明】-种用于视频监控的、基于CUDA并行计算与稀疏表示的快 速人脸识别算法

【技术领域】
[0001] 本发明涉及计算机视觉和模式识别【技术领域】,具体涉及CUDA并行计算与稀疏表 示的快速人脸识别方法。

【背景技术】
[0002] 人脸识别技术是当前主要的生物识别技术,由于其具有非接触性、友好、方便、不 易察觉等特点,易于为用户所接受,令使用者无任何心理障碍,从而得到了广泛的研究与应 用,是计算机视觉和模式识别领域重要的课题之一。
[0003] 在人脸识别的众多研究方法中,稀疏表示的分类思想已成功在人脸识别领域取得 了重要的地位。基于稀疏表示的图像分类是可以用少量同一类的低维图像编码或者表示高 维图像;主要有两个阶段:稀疏表示和分类识别。首先,通过字典原子与一些稀疏性约束对 测试图像进行表示,然后在稀疏表示系数和字典的基础上进行分类识别。2009年,Wright 等将提出一个基于稀疏表不的分类器(Sparse Representation Classification, SRC),将原 始的训练人脸图像作为字典,通过li范数求解测试样本的稀疏系数,通过该系数对测试人 脸进行重构,进而求出其残差,将其归为残差最小类,取得了不错的分类效果。
[0004] 在稀疏表示中字典的构造是至关重要的,近几年国内外的学者提出了很多过完备 字典学习的方法,目的是从训练样本中得到一组基能够更好的对测试样本进行表示或者编 码。字典主要是通过机器学习来从样本中来训练获取,目前存在的主要问题就是在CPU上 串行运行时耗费时间和运算资源。
[0005] 随着并行处理技术的发展,已成为图像处理领域和计算机科学领域的一个重要 方向;可编程图像处理器(可编程GPU)是目前计算机上处理普遍采用的专用器件。GPU 具有远远高于CPU的浮点运算能力和内存带宽,同时由于其高度的并行性,非常适合于 大规模数据处理。2006年,英伟达公司推出了统一的设备架构(Compute Unifed Device Architecture, CUDA),这是一种新的并行编程模型和指令集架构的通用计算架构,。CUDA 架构可以很好的协同CPU处理并行任务,特别是针对计算相对比较消耗时间的浮点数计 算,目前,CUDA可以很好的支持到双精度的浮点数计算,比CPU更高效的解决许多复杂的 计算任务,显著地提高了传统算法处理的效率。


【发明内容】

[0006] 目前稀疏字典学习算法复杂度高,运行速度慢,同时传统的稀疏表示分类识别效 果不是很好。本发明的目的是提出一种用于视频监控的、基于CUDA并行计算与稀疏表示的 快速人脸识别算法。为解决上述的技术问题,本发明的采用以下技术实现方案:
[0007] 基于CUDA并行计算与稀疏表示的快速人脸识别方法,其特征在于,该算法的步骤 如下:
[0008] (1)从人脸数据库构造训练样本矩阵,并初始化字典:
[0009] 假设人脸库中总共k类人,每人有η幅图片,总共N = n*c幅图片。从中每人随机 选择C(l〈c〈n)幅图片用来构造训练样本矩阵Y,剩下的图片构造成测试样本集;使用过完 备DCT字典作为初始化字典D ;
[0010] (2)利用CUDA多线程编程技术构建CPU与GPU协同工作环境:
[0011] 将训练样本矩阵Y和初始化字典D传送到GPU显存中;在CUDA中编写CPU和GPU 的程序,首先实现内核函数,定义GPU中需要执行的操作;接着定义该内核函数的多线程规 模,包括线程块维数以及每一个线程块中的线程的维数;
[0012] (3)在GPU平台上采用KSVD字典算法对训练样本矩阵进行字典学习:
[0013] 令D,Y,X分别代表学习得到的字典、训练样本、训练样本的稀疏表示矩阵;则 K-SVD字典训练算法的目标方程可表示为:

【权利要求】
1. 一种用于视频监控的、基于CUDA并行计算与稀疏表示的快速人脸识别算法,其特征 在于,方法的步骤如下; (1) 从人脸数据库构造训练样本矩阵,并初始化字典: 假设人脸库中总共k类人,每人有η幅图片,总共N = n*c幅图片。从中每人随机选择 C(l〈c〈n)幅图片用来构造训练样本矩阵Y,剩下的图片构造成测试样本集;使用过完备DCT 字典作为初始化字典D; (2) 利用CUDA多线程编程技术构建CPU与GPU协同工作环境: 将训练样本矩阵Y和初始化字典D传送到GPU显存中;在CUDA中编写CPU和GPU的程 序,首先实现内核函数,定义GPU中需要执行的操作;接着定义该内核函数的多线程规模, 包括线程块维数以及每一个线程块中的线程的维数; (3) 在GPU平台上采用KSVD字典算法对训练样本矩阵进行字典学习: 令D,Y,X分别代表学习得到的字典、训练样本、训练样本的稀疏表示矩阵;则K-SVD字 典训练算法的目标方程可表示为:
(1) 上式的求解是一个迭代过程。算法流程为: A. 稀疏编码: 假设字典D是固定的,使用OMP算法可以求解出Y在字典D上的稀疏表示系数矩阵X ;
(2) B. 字典更新:对字典D的原子进行逐一更新,更新过程如下:
1. 对于当前要进行更新的原子dk,记Ik = {i lajk)关0, 1彡i彡N},ai(k)为ai中的 第k个元素,则Ik表示各样本中使用到原子dk的索引;
2. 计算残差矩阵
表示A的第j行,Ek表示除去第k个原子后对所 有样本造成的误差;
3. 对应于Ik中的索引,选取Ek中相应的列向量,构成新的误差矩阵C:,并对圮进行 SVD 分解
4. 取矩阵U中的第一列作为更新后的原子,Λ (1,1)与矩阵V的第一列的乘积作为新 的稀疏系数。 C. 迭代结束,否则返回到A ; (4) 将稀疏表示字典D从GPU显存中传送回CPU内存中; (5) 在CPU中将字典D应用到传统的稀疏表示分类算法进行分类识别: 令z代表测试样本,将测试图像z表示为训练样本的线性组合,即z = D α,其中α = [a i ;…;a i ;…;a k]。分类识别算法过程如下: (1)将测试样本表示为字典D的线性组合,由h范数最小化求解得到稀疏系数:
(3) 式中λ为一个标量; (2) 计算各类样本对测试样本的逼近残差:
(4) 其中,\(α)是与第i类样本对应的系数向量; (3) 根据最小残差逼近准则进行测试图像分类:
(5) 。
【文档编号】G06T7/40GK104063714SQ201410346049
【公开日】2014年9月24日 申请日期:2014年7月20日 优先权日:2014年7月20日
【发明者】詹曙, 王俊 申请人:詹曙, 王俊
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1