基于深度学习的盲文自动识别系统
2018-09-14李荣瑞
李荣瑞,施 霖
(昆明理工大学 信息工程与自动化学院,云南 昆明 650500)
盲文识别研究对于盲人特殊教育事业和生活具有重要的意义[1-2]。近年来,国内外学者在盲文识别方面做了大量研究,国外Yasuhiko Ogawat等[3-5]进行了基于数字图像处理的盲文识别等研究;国内的周小燕、周春耕等学者[6-9]做了许多盲文汉语转换方面的工作。但是这些研究中还存在问题:(1)使用条件要求严苛,光照、角度的轻微变化会严重影响识别准确率;(2)图片预处理过程复杂,步骤繁琐;(3)特征点由研究人员手工提取,费时费力且无法保证准确性。
自2006年以来,深度学习作为机器学习领域中对图像等进行特征学习的一种新方法,在图像识别方面取得了巨大成功[10]。卷积神经网络(Convolutional Neural Network, CNN)是深度学习中广为应用的经典模型,例如Lenet-5[11],Cifar-10[12]等模型,其强大的特征学习能力使得图像识别研究取得了突破性的进展。
本文利用灰度投影方法来自动校正和分割盲文;构建卷积神经网络(CNN)模型,利用大量叠加噪声的盲文图片训练网络得到的CNN模型连接Softmax分类器作为盲文识别部分。最终的盲文自动识别系统具有识别率高、抗干扰性强等特点,在传统盲文识别研究中无法工作的多种环境下,系统可良好工作,突破传统盲文识别系统对环境的严苛要求。
1 盲文图像自动校正与分割
1.1 二值图像处理
作盲文图像的灰度投影图要先将盲文图像转换为二值图像。盲文图像盲点与背景的灰度差异很大且灰度值比较集中,这有利于通过阈值分割方法进行二值处理,图1分别为盲文图像和利用大律法(OTSU法)[13]得到的此盲文图像的二值图像。
图1 盲文图像二值化处理
1.2 图像校正
如图2所示,将采集的盲文图像缩放为边长为10 cm的正方形图像,放置在建立的直角坐标系中,使图像4个端点分别落在坐标点(5 , 5)、(5 , 15)、(15 , 15)、(15 , 5)上,图像中心点在坐标(10 , 10)上。将x轴上投影的采集范围定为(0 , 0)到(20 , 0)区间,将y轴的采集范围定为(0 , 0)到(0 , 20),这样可保证图片在旋转不同角度时,其二值投影图像都被完整采集。
图2 二值图像坐标投影
设定顺时针方向为正方向,将盲文偏转角度 依次为α= 0°、6°、12°、18°、24°,将其二值图像向x轴投影得到竖直灰度投影图,图3为以x轴为底、高度为2的同一区域的灰度对比图。结果显示,盲文方向偏转角度越大,投影图中灰度条越集中于底部。
图3 灰度投影对比图
灰度条的集中程度利用如下方法测量:在竖直灰度投影图中,将x轴、y轴、直线x=20、切线y=0.5四条直线围住的矩形部分定义为T区域,其中(0, 0.5)坐标点的选择是根据50张不同的盲文图像确定的最佳分割点。假设T区域内像素点总数为M,灰度为0(黑色部分)的像素点数量为M0,则T区域内灰度条像素点所占比例p的值为
(1)
对于同一幅盲文图片偏转不同角度的数张灰度投影图,T区域大小相同,像素点总数M不变。偏转角度越大,T区域内黑色像素点数量M0越大,从而p越大。
盲文图像的角度校正过程如图4所示:将原始盲文图片的二值图片偏转不同角度α并分别向x轴投影,计算其T区域内黑色占比p。选中其中最小的值px,此值对应的旋转角度αx即为校正原始盲文图片所需要旋转的角度。校正后的图片中盲文角度误差小于α步长的1/2,若要求更高的校正精度,可减小α每次增加的步长。此处取偏转角度最大为30°是因为正常盲文图片的采集偏转角度不会超出此范围。
图4 图像校正流程图
取50张盲文图片对此校正方法进行实验,结果显示,50张盲文图像的校正成功率为100%。
1.3 盲文图像分割
在识别盲文古籍、作业这种含有大量盲文字符的图片时,经过角度校正后,其灰度图投影在x轴、y轴上形成数条相互独立的灰度条。在竖直投影图中,灰度条是由同一列盲点在x轴的灰度投影叠加而成,即灰度条在x轴上的坐标为这一列盲点的x坐标;同理,在水平投影图中,灰度条是由同一行盲点在y轴的灰度投影叠加而成,灰度条在y轴上的坐标即为这一行盲点的y坐标。盲文的盲方为3×2的矩形点阵,一行盲文在y轴的投影为3条灰度条,一列盲文在x轴的投影为2条灰度条。根据这种特点,在y轴上每隔两条灰度条做一条平行分割线,在x轴上每隔两条灰度条做一条竖直分割线,横竖分割线共同作用可将盲文图片分割。
2 盲文识别部分
2.1 数据集的设计与制作
由于没有完整的盲文数据库,实验所需要的数据集从实际采集的盲文图片中截取盲文字符制作完成。本次实验数据集包含63类盲文字符和空白盲文图片一类共64类,每类盲文字符包含20张图片,此时数据集图片数量为:64×20=1 280张。考虑到实际使用中的几种影响因素:光照变化、图像倾斜、盲点偏移等,为增强识别系统的鲁棒性和抗干扰性,将这些影响因素加入到数据集中。对每张图片作添加噪声处理9次,对应9种图像变化处理:光照强度+15,+30,-15,-30共4种,角度左倾6°,右倾6°两种,字符平移缩放3种。图5为一张盲文图片经过噪声处理形成的10张图片。此时,1 260张原始采集盲文字符图片经过9种噪声处理,数据集图像数量变为:1 280+1 280 × 9=12 800张,每类盲文字符包含图片200张。数据集中80%作为训练集,20%作为测试集。
图5 噪声处理图片示例
2.2 卷积神经网络的设计
CNN的运算包含前向传播和反向传播[14]。在前向传播中,上一层的输出作为这一层的输入,整个过程通过激活函数逐层传递。反向传播过程中通过计算实际输出与理想输出的均方误差,对权值参数进行优化。信息正向传播和误差反向传播交替进行,直到满足要求或达到最大迭代次数[15]。CNN结构过大或过小过拟合或欠拟合,数据集太小或不合理会导致网络模型失去泛化能力,初始权值选取不合理会导致训练陷入局部最优解[16]。
由于盲文字符相对比较简单,CNN中卷积层的层数初步定为2~3层,每一层卷积层后面接下采样层,下采样层可降低特征图的维度,减少运算参数,提高运算时间;另一个作用是增强系统平移、伸缩不变性。取盲文图片对两种卷积层模型进行测试,结果显示,两层卷积层模型相比于3层卷积层模型,运算时间减少35%,运算数据量减少43%,而识别精度仅减少1%。综合运算速度、内存和准确率等因素,文中将卷积层数目定为2层,每一层卷积层后连接一层下采样层以减少运算参数。
全连接层为两层,试验不同节点数量CNN模型的识别效果,当第一层全连接层节点数为300,第二层全连接层节点数为64时,CNN模型的识别准确率最高。本文实验构建了多种CNN模型,试验了不同层数和节点数的组合,在保证识别准确率的同时考虑识别速度等因素,最终确定的CNN模型结构如图6所示,网络结构包括:输入层,2层卷积层(Conv),2层下采样层(Pool),1层激活层(Relu),2层全连接层(Ip)。CNN模型末端接一层Softmax分类层,右侧数字表示一张高、宽为28像素的三通道图片在网络中经过各层运算后的数据变化过程。
图6 卷积神经网络结构
常见的激活函数有sigmoid函数,tanh函数,ReLU函数,此处选择稀疏性更好的ReLU函数[17]。ReLU的算式为
f(x)=max(0,x)
(2)
若通过卷积计算得到的值大于0,则此值保持不变;若卷积计算的值小于0,则将此值赋值为0。
本次实验共有64类盲文字符,因此分类层我们选择适合解决多分类问题的Softmax函数。假设输入Softmax函数ζ的向量z的维度为c, 那么Softmax函数的数据也是一个c维度的向量y,里面的值为1或0。Softmax函数是一个归一化的指数函数,定义为
(3)
其中分母起到了正则项的作用,使得
(4)
Softmax函数放在神经网络的末端起着分类的作用,用c个神经元可以表示函数中的值。对于给定的输入z,可以得到t=c,c=1,2,…,C中每个分类的概率为
(5)
其中,P(t=C|z)为给定输入z时,该输入数据是C分类的概率。
2.3 训练网络模型
将数据集的盲文图片导入构建的深度卷积神经网络中,设定网络训练迭代次数为1 000次,图7为训练过程中准确率随迭代次数增加的变化曲线图。
图7 准确率曲线
如图所示,CNN模型经过迭代训练逐渐收敛,网络误差减小,准确率升高。迭代训练1 000次后,CNN模型对测试集的识别准确率为99.41%,这表明构建的卷积神经网络通过1 000次的迭代训练已经从数据集中学习到各类盲文字符的深层特征并保存在CNN模型中。
3 实验结果
在标准采集环境和多种影响环境下制作盲文字符图片共2 928张,输入CNN模型进行识别,总体识别率为98.57%,不同噪声影响下盲文识别率如表1所示。
表1 识别结果
实验最后检测构建的神经网络模型对于实际应用中盲文识别的准确率,在日常使用环境下取50张不同语句盲文图片对本文研究的基于深度学习的盲文自动识别系统进行从输入盲文图片到输出汉语拼音的整体测试。50张盲文图片中盲文字符总数(包含空白字符)为2 746个,每张图片包含的盲文字符数量(包含空白字符)在24~120个之间,经实验统计,系统成功识别其中2 708个,自动识别系统对盲文图片中字符的识别成功率为98.62%。
相比于传统盲文识别方法,本文方法具有以下优势:(1) 本文方法避免了传统方法中繁琐的预处理过程;(2) 传统方法需要手工定义特征点,费时费力且不能保证特征的有效性,本文方法通过CNN自动进行训练,得到的模型更能刻画盲文的本质特征;(3) 传统方法只用来识别特定光照和角度的盲文图片,且识别率不足96%,本文方法将此识别率提升为100%;(4) 传统方法无法对平移、伸缩、角度倾斜等噪声条件下的盲文图片进行识别,而本文方法对此类噪声图片的识别率高达98.2%。
4 结束语
本文研究的基于深度学习的盲文自动识别系统相比于传统的盲文识别研究,突破了传统方法中对使用环境的限制,在传统盲文识别装置不能正常工作的多种环境下仍能达到很高识别率,提高了盲文识别系统的适用性、实用性和准确率。文中的识别系统准确率达到98.62%,若要进一步提高系统的识别准确率,可通过两种方法进行提升:(1) 减小图像校正部分的旋转角度步长α;(2) 丰富识别部分训练集的噪声变化图片,增加训练集图片数量,增加训练迭代次数。