基于CUDA的快速车牌字符识别
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
图1
车牌识别系统示意图
1
CUDA
CUDA 是 NVIDIA 公司针对其基于 GPU 的产品而引进的一 个平台, 拥有一套适用于 GPU 计算的开发环境。 CUDA 的基本 思想是开发多线程并行 , 这些线程能够在硬件中被动态地调度 和执行。在 CUDA 编程中, 程序员不能直接操纵处理器 , 但是可 指定某个线程处理哪些数据 、 某 以通过 CUDA 提供的线程模型, 个线程块由哪些线程组成 , 用户程序员处于编程模型之中 , 当编 译器将程序编译完成后 , 便对应到并行线程执行模式中了 。 GPU 线程以网格 ( grid ) 方式组织, 每个 grid 包含若干个线 程块( block) , 每个线程块在目前的硬件架构下最多可包含 512 block 之间无法通信, 个线程。一方面, 各 block 独立并行执行, 也没有执行顺序, 这样就可以在核心数不同的 GPU 上完成相同 的任务, 只是拥有更多核心的 GPU 可以在更短时间完成。 另一 方面, 在同一个 block 内的线程可以实现通信 , 在执行时, 每个 block 映射为一个协作线程阵列 ( CTA ) , 同一个 CTA 中的线程 必须被分配到同一个共享存储器 ( SM) , 从而实现线程之间的通 信。作为 CUDA 最重要的创新之一, 这种特性可以显著提高执 行效率, 并大大拓展 GPU 可以适用的范围
10
计算机应用与软件
2012 年
( 3 ) 根据文献[ 10]的方法, 在每一个迭代步骤中, 算法首 先选取两个待更新的向量 , 此后分别计算它们的误差项 , 并根据 r +1 r +1 r r r +1 , 上述结果计算出 α i low 和 α i high 将 α i low 和 α i high 更新为将 α i low 和 α i high 。 ( 4 ) 更新 KKT 条件向量: +1 f ri +1 = f ri + ( α ri low - α rilow ) y i low K( x i low , xi ) +
第 29 卷第 10 期 2012 年 10 月
计算机应用与软件 Computer Applications and Software
Vol. 29 No. 10 Oct. 2012
基于 CUDA 的快速车牌字符识别
王世春
1 2
1
王平根
2
( 复旦大学计算机科学技术学院
上海 200433 ) 江西 吉安 343009 )
[8 ]
图2
决策树模型
2. 3
二次规划问题的分解和求解
关于 SVM 训练过程的分解, 特别是问题解的稀疏性 , 在文 3] 献[ 中有过探讨, 可以归结为一个二次规划问题的求解 。 通 二次规划问题需要预计算整个核矩阵 。 随着训练集 常情况下, 的增长, 预计算越来越不可避免 , 完整的核矩阵也越来越大 , 很 难装入内存。SMO 算法将整体的二次规划问题分解为一系列 二元的二次规划子问题 , 其中工作集的选择是训练过程分解的 9]介绍的利用二 重要步骤。cuSVM 对 SMO 的改进基于文献[ 阶工作集选择的启发式方法 , 其主要思想是利用二阶信息达到 相对于简陋的一阶算法 , 二阶启发式方法每次迭代所 快速收敛, 但极大地减少了迭代次数 。 耗费的资源较一阶算法稍多 , SMO 算法是一个迭代优化算法 。具体算法如下: ( 1 ) 初始化使得 α1 = 0 , 且 KKT 优化条 迭代计数器 r = 1 , 件向量:
y i ( ω T ( x i ) + b ) ≥ 1 - ξ i 其中, 控制对样本 ξ i ≥ 0 是分类的松弛因子; c > 0 是一个常数, 错分的惩罚程度。 该问题可以转化为它的对偶问题 : 1 min α T Qα - 1 T α α 2 s. t. 0 ≤ αi ≤ c 其中 α i 是拉格朗日乘子; 1 是全 1 向量; Q 是 m × m 的核矩阵, xj ) 。 且 Q ij = y i y j K( x i , K( x i , x j ) ≡ ( x i ) T ( x j ) 是核函数, 比较常用的是高斯核
收稿日期: 2012 - 04 - 27 。国家自然科学基金项目 ( 60873070 ) 。 王 世春, 硕士生, 主研领域: 数据挖掘。王平根, 副教授。
车牌识别系统 ( LPR ) 是现代智能交通系统的重要组成部 分。它运用计算机图像处理技术辨认出拍摄的车牌图像 , 进而 确定车辆信息。其中, 字符识别是车牌识别最重要的一个环节 , 一个车牌识别系统的优劣主要由两个关键指标来衡量 : 识别准 确率和识别速度。在现代社会, 随着交通工具速度的提高和数 量的增加, 实际需求常常对识别速度提出了更高的要求 , 例如在 高速公路上实现无停留收费时 , 需要在车辆快速通过摄像头的 瞬间识别出车牌字符。 根据车牌信息的特点, 字符识别实质上是一个分类问题 , SVM[1] 因其良好的泛化能力以及解决高维数据的能力而被广泛 SVM 在实际应用中也有两个先天不足 : 应用, 然而, 第一, 处理大规模训练样本时 , 将耗费大量运算时间。由于 3 [2 ] , 标准支持向量机的训练时间复杂度是 Ο( n ) 运算时间对训 Platt 提出了 SMO 练样本数量的增长非常敏感 。针对这个问题, 算法, 将二次规划( QP) 问题转化为一系列的能够得到解析解的 QP 子问题, 3]改进了 SMO, 大大加速了 SVM 训练过程。 文献[
w, b, ξ
f1 i =
x) ∑ y α K( x ,
j i j j =1
1 j
- yi = - yi
( 4)
1 T ω ω + c∑ ξ i 2 i =1
m
( 1)
( 2 ) 当停止条件式 ( 10 ) 满足时, 停止迭代。 否则, 根据二 阶启发式方法选择两个工作集 , 序号分别为 i high 和 i low 。
( School of Electronics and Information Engineering,Jinggangshan University,Ji'an 343009 ,Jiangxi,China)
Abstract
Traditional research of license plate recognition mainly focuses on the improvement of identification accuracy; in this paper we
第 10 期
Leabharlann Baidu
王世春等: 基于 CUDA 的快速车牌字符识别
s. t.
9
时间。另外, 作为重要的实验方法, 本文模拟实际情况, 得到字 符倾斜、 模糊、 油渍( 字符经处理后部分残缺 ) 等情况下的图片, 加入到训练数据集中。 [7 ] 图 1 是一个典型的车牌识别过程 : 车辆检测阶段检测采 集到的视频信息中车辆的图像 ; 车牌定位阶段从车辆图像中定 位出车牌图片, 并从中分割出来; 字符分割阶段将完整的车牌图 片按照字符分割成 7 块独立图片; 字符识别阶段识别出分割后 的各个字符图片所代表的汉字 、 数字或者字母; 最后, 车牌识别 系统输出识别的结果。本文的研究主要针对字符识别阶段的加 速途径问题。
( 井冈山大学电子与信息工程学院
摘
要
传统的车牌识别研究主要目的是提高识别准确率 。利用 CUDA 技术在准确率不降低的情况下实现识别速度的提高 。为
对常用的 SVM 分类方法进行改进, 使其能够在 GPU 上实现并行计算, 再利用改进后的 SVM 训练和预测车牌字符数据 。 实验结 此, 果表明, 相对于运行在 CPU 上的 LIBSVM 方法, 经过改进的在 GPU 上运行的 SVM 方法能够带来 1 - 30 倍训练速度和 50 - 72 倍预测 且随着样本数量的增加 , 加速效果会更加显著。 速度的提高, 关键词 中图分类号 CUDA TP339 SVM 车牌识别 并行计算 A
0
引
言
通过将大数据集分解成若干小数据集的办法使其适应多 CPU 4] 并行计算,文献[ 提出了基于多处理器系统的 SVM 迭代分解 技术, 大大节省了训练时间。 随着 GPU 并行计算技术的发展, 近年来人们尝试使用廉价的 GPU 来提高 SVM 训练速度。 文献 [ 5] — —cuSVM, 提出了一个利用 CUDA 技术的 SVM 解决方案— 获得相对于 LIBSVM 9 - 35 倍的提速, 但是 cuSVM 只能处理两 分类问题。本文在其基础上进行扩展 , 用于解决车牌字符识别 问题。 SVM 解决多分类问题存在困难 。经典的 SVM 只给出 第二, 而车牌识别以及大部分的实际应用都是多分类问 二分类算法, 题。一般通过二分类 SVM 的组合来解决这个问题 , 主要有一对 [6 ] 一对一组合模式和 SVM 决策树 。 另外, 结合其 多组合模式、 他算法, 构造多个分类器的组合也是常用的一种解决方案 。 一直以来, 很多对于 SVM 的研究都是围绕着这两个 SVM 的不足之处进行的。本文选择在实际中有着重要意义的车牌识 别问题作为研究对象, 利用 GPU 加速技术提升车牌识别的识别
文献标识码
DOI: 10. 3969 / j. issn. 1000386x. 2012. 10. 003
FAST LICENSE PLATE CHARACTERS RECOGNITION BASED ON CUDA
Wang Shichun1
1 2
Wang Pinggen2
( School of Computer Science,Fudan University,Shanghai 200433 , China)
- x -x 函数: e λ‖ i j‖ 。 SVM 分类器训练完毕后, 得到分类函数: m 2
( 2)
yT α = 0
I x = sign(
x) ∑ y α K( x ,
i i i i =1
+ b)
( 3)
2. 2
SVM 解决多分类问题
SVM 是一种典型的两类分类器 , 它只回答属于正类还是负
类的问题。决策树模型将多分类分解成一个个二分类问题 。 各 个二分类问题可以设计为 CUDA 上的并行处理, 如图 2 所示。
m
。
2
2. 1
SVM 多分类算法及二次规划问题的分解
支持向量机模型
y1 ) ,… ,( x m , ym ) , x i ∈ R n ,y i ∈ 给定一组训练数据 ( x1 ,
{ - 1, + 1} , 训练一个 SVM 分类器, 对新样本作出尽可能正确的 划分。实质就是找出两类的最优分类超平面 ωx + b = 0 , 等价 于求解如下问题: min
will do some research on improving the recognition speed while guaranteeing the same accuracy. For this purpose,the common SVM classification method is improved to realise parallel computing in GPU. Then,the improved SVM is applied to license plate characters for training and predicting. Experimental results show that the improved SVM running on GPU is able to bring enhancement in 1 - 30 times faster training speed and in 50 - 72 times faster prediction speed respectively than the popular solver LIBSVM on CPU,and the acceleration effect will be significantly enhanced with the increase of sample size as well. Keywords CUDA Support vector machine ( SVM) License plate recognition Parallel computing