基于Mask-RCNN无分割手写数字字符串的识别 下载: 1119次
1 引言
手写体数字的识别在日常生活中有广泛应用,如邮件自动分拣系统和财务报表等银行单据的自动化处理。近年来,深度学习的神经网络模型备受关注,而且在手写体数字识别领域引入了卷积神经网络(CNN)[1],这对于孤立手写体数字的识别有很好的结果。但手写体数字字符串的识别,准确率仍不高,最大难点是数字间的粘连而造成分割困难。目前,手写体数字串的识别方法有两种:基于分割方式的识别和基于无分割方式的识别[2]。
基于分割识别的基本思想是最大化产生最佳分割的机会。但由于字符串的粘连位置不固定,难以寻找最佳分割点,所以为了提高最佳分割的概率,往往采用过度分割的策略,这同时也会大大增加分割和识别过程中的计算成本。为了减少过度分割的影响,Breuel等[3-4]提出了整体识别的分割策略,采用动态规划和隐马尔可夫模型(HMM)等方法根据前后关联得到整体上的最优解。但这种方法只能应用于特定用户及具有特定字典库的行业,如支票识别。尽管基于分割的方法能够实现字符串的识别,但算法严重受到数字间粘连和重叠的影响,鲁棒性不强,所以基于无分割的识别算法逐渐成为研究热点。Matan等[5]第一次使用CNN来识别无分割的手写体数字字符串,该网络名为空间位移神经网络(SDNN),SDNN是无分割识别方法的开山之作,具有重要意义,但未能获得比基于分割的识别算法更好的结果。Hochuli等[6]近年来提出了基于动态选择分类器的无分割识别算法,该算法包括4个分类器,第1个分类器L用于估计字符串中数字的个数,其他3个负责识别10[0…9]、100[00…99]和1000[000…999]类。虽然Hochuli等[6]提出的算法为识别手写体数字串提供了新思路,但该算法中现有的4个分类器无法识别4个及以上数字组成的数字串,应用范围有局限性而且用于训练分类器的数据类别(1110类)及数量过于庞大,增加训练负担。
针对上述问题,增加无分割方法的数字串识别长度并进一步提高识别的准确率,本文提出将掩模区域神经网络(Mask-RCNN)应用于手写体数字字符串的识别,使用很少的计算量识别任意位长度的数字串,该网络为手写数字串的整体识别开辟了新思路。网络的训练集为NIST SD19数据集中的原始图像和自建的掩模数据,使用0~9共10类标签的数据集训练网络,即可实现多位手写数字字符串的识别,在减少数据训练类别和数量的同时,能够实现多位数字串的识别,既避免了复杂的分割策略,又提高了识别的准确率,在试卷分数栏的分数识别核算和手写票据录入等工作中具有实际的应用价值。
2 基于Mask-RCNN的数字串识别
采用的Mask-RCNN框架是由Facebook人工智能研究小组提出的端到端CNN[7]。其框架简单灵活,具有通用性,被用于目标实例分割任务,该网络能有效检测在目标中同时出现的每个实例,可给出每个实例的类别并对每个实例生成一个高质量的分割掩模。对于手写体数字字符串图像来说,每幅图像中有个数不等的数字并且部分数字间有粘连,在不提前进行单个数字分割的情况下难以实现字符串的整体识别,而Mask-RCNN为基于无分割方法的数字串识别提供了很好的解决思路。Mask-RCNN是以Faster-RCNN模型[8]为基础进行改进扩展的网络模型,在其已有的结构上添加一个并行的、用于预测目标掩模的分支,即可同时实现对数字类别的识别和对图像中每个数字像素级掩模的分割。由于在自建掩模数据集的过程中需对原始图像进行掩模坐标标定,手动标注能最大限度地削弱粘连影响,像素级分割子网具有学习性,所以对于粘连数字,该网络也能给出精确的分割掩模。图像经网络识别后得到每个实例的标签,再结合回归框的坐标提取步骤,还可实现对字符串长度的判别。Mask-RCNN的训练过程很简单,与Faster-RCNN的运算速度相当,在单GPU上可达5 frame/s。
2.1 Mask-RCNN结构
Mask-RCNN结构如
将得到的特征图(feature map)送入区域候选网络(RPN)以提取可能存在的感兴趣区域(ROI)。将得到的ROI送入ROI Align层,将RPN预测的候选框坐标(相对于原始输入图像)与特征图进行一一映射。Mask-RCNN最后的输出包括3个分支,其中2个分支经过全连接层(FC layer)进行分类(Softmax)和边框回归(Bbox Reg),另一个掩模(mask)分支经过全卷积网络(FCN)[11]进行上采样得到分割图。
2.2 RPN结构
采用RPN对数字串图像的ROI进行提取,利用RPN对特征映射图进行边界框提取并映射到特征图上[12],基本原理与最原始的区域卷积神经网络(RCNN)所使用的选择搜索算法类似,输入手写数字串的原始图像,输出可能存在目标的矩形候选区域。RPN是基于FCN的结构,只是在CNN的框架上额外增加两个卷积层,即类别层(cls-layer)和回归层(reg-layer)[13],对生成检测建议框的任务进行端到端的训练,同时预测图像中每个数字目标的类别分数和边界。RPN的工作机制如
边框回归是对预测的边框进行微调,预测的边框用(Px,Py,Pw,Ph)表示,得到最终的回归边框(
先对边框中心点进行平移,Δx为边框中心点的横坐标平移量,计算公式为Δx=Pwdx(Px),其中dx为中心点的横坐标映射,Δy为边框中心点的纵坐标平移量,计算公式为Δy=Phdy(Py),其中dy为中心点的纵坐标映射,则
再进行边框的尺度缩放,Sw为边框宽度的缩放量,计算公式为Sw=exp [dw(Pw)],其中dw为边框的宽映射,Sh为边框高度的缩放量,计算公式为Sh=exp [dh(Ph)],其中dh为边框的高映射,则
通过(1)~(4)式可以发现,边框回归是学习dx(Px)、dy(Py)、dw(Pw)、dh(Ph)这4个变换。Mask-RCNN网络中,边框中心点横纵坐标需要的平移量(tx,ty)和边框的宽高需要的尺度缩放(tw,th)由真实边框和预测边框的参数计算得到[14],表达式为
目标函数为d*(P)=ω*φ5(P*),其中ω*为学习到的4个变换参数(*表示x,y,w,h),φ5(P*)为预测边框值。目的是使d*(P*)与真实值t*=(tx,ty,tw,th)的差值最小,得到的损失函数为
cls-layer层的输出为i+1维数组,用p表示,其代表i类目标和背景的概率。实验中要识别的数字类为10类,那么对每个ROI输出离散型概率分布pi=(p0,p1,…,p9)(i=0,1,…,9),真实边框的标签
2.3 ROI Align层
Faster-RCNN中ROI层有2次量化操作,这会引入误差导致原图像的像素与特征图的像素不对齐,特征空间的ROI映射到原图上会出现很大偏差。ROI Align层使用双线性差值[15]算法来确定原图兴趣区域中每个点的特征值,再进行池化等操作来提升精度,从而避免量化操作引入的误差,即原图中的像素与特征图中的像素完全对齐。该算法的改进将Mask-RCNN应用于手写体数字串识别的任务成为可能,由于手写体数字串图像的有效像素信息范围较小,数字间距离较小而且还有粘连和重叠的可能,量化所带来的误差使得ROI的映射位置出现偏差,直接影响识别结果。ROI Align层不会产生量化误差,特征空间的ROI与原图像素精准对齐,使得网络对数字间的粘连和重叠具有鲁棒性,对手写体数字字符串图像的识别精度有很大提升。算法如
Step1:遍历特征图上每个候选区域,边界保持浮点数不进行量化操作。
Step2:将候选区域分割成k×k个子块(bin),每个bin的宽度和高度数值也保持浮点数不进行量化操作。
Step3:每个bin均匀选取4个采样点,采用双线性差值方法即选取该采样点4周的4个像素真值来计算这4个点的坐标,再对其进行最大池化操作得到每一个bin的值。
2.4 mask层
mask层是mask-RCNN中用来预测目标掩模的FCN。Mask 层对每个ROI的输出为k×m×m,其中k表示10类数字目标的类别,即0~9共10个类别,m×m表示mask的大小。网络能够输出每一类数字的mask,且不会产生类间竞争。对预测mask的每个像素点求Sigmoid函数均值,定义为平均二值交叉熵损失函数Lmask,该函数仅在第k个类别上有定义,其他k-1个mask的输出不参与计算,这种方式能够有效提高实例分割的效果。Mask-RCNN的损失函数由3项损失函数组成,包括分类误差、回归误差和分割误差,总的损失函数表达式为
3 实验与结果分析
3.1 数据集的建立
使用的数据集(NIST SD19)来自美国国家标准与技术研究院[16],NIST数据集包含3699个手写样本形式(HSFS)和814255个分段手写数字和表格中的字母字符的全页二进制图像,该数据集中有超过2.4×105个数字。为了避免数据集对实验结果产生偏差,必须考虑到NIST SD19中数据的作者信息,例如分别挑选不同作者的数据专门用来训练和测试[16]。
在NIST SD19数据集中随机选取800位不同作者的9600幅手写数字串图像作为网络的训练集和测试集,数据集中包含孤立数字(
表 1. 训练集与测试集的数据量分配
Table 1. Data amount distribution of training dataset and test dataset
|
训练Mask-RCNN不仅需要原始图像还要与之相对应的掩模信息。先将从NIST SD19数据集中抽取的训练样本统一缩放大小为64 pixel×64 pixel,再使用LabelMe工具进行数据标注和掩模制作,数据标注方式为手动标注。实验数据标签为0~9共10类,相较于传统无分割方式的数字串识别算法,所提算法可将训练类别降低到最少,大大降低网络的训练负担和计算量。
3.2 训练平台与模型的训练
实验在内存为32 GB 的Ubuntu 64位操作系统中进行,CPU为Intel Core i5,GPU为GeForce GTX Titan-X。选取TensorFlow作为学习框架,其支持多种深度学习模型,具有移植性好等特点。
使用Mask-RCNN前需对网络进行预训练,由于人工标注制作的手写体数字字符串的数据集较少,为了防止算法在训练过程中过拟合,先将网络在COCO数据集上进行预训练[17],训练的样本类别为88类,数量约为8万,并对每幅图像中的物体类别都进行语义分割[18]。在预训练模型的基础上对自建的手写体数字字符串数据集进行样本训练,采用迁移学习的方式不但可减少训练人力、物力成本,提升训练效率[19],而且能够有效提升检测模型的整体检测精度和模型的鲁棒性。
载入预训练模型的权重对手动标注自建的手写体数字字符串的掩模信息和原始图像训练数据集进行训练,并根据模型的训练情况对参数进行微调,使其更适合实验样本的训练,参数设置如
表 2. 实验参数设置
Table 2. Experimental parameters setting
|
epoch为网络迭代次数;λ为权重述衰减系数。
3.3 实验结果分析
Mask-RCNN在训练数据集上的损失变化曲线如
图 6. 损失变化曲线。(a)网络总损失;(b)边框回归损失;(c)掩模损失;(d)分类损失
Fig. 6. Loss change curves. (a) Total network loss; (b) frame regression loss; (c) mask loss; (d) classification loss
将训练好的Mask-RCNN模型在测试数据集上进行测试,最终得到的识别准确率如
表 3. Mask-RCNN在测试数据集上的准确率
Table 3. Mask-RCNN accuracy rate on test dataset
|
从
表 4. 不同识别方法在NIST SD19数据集上的比较
Table 4. Comparison of different identification methods on NIST SD19 datasetunit: %
|
4 结论
提出了一种基于Mask-RCNN的无分割手写体数字字符串的识别方法,先在COCO数据集上对网络进行预训练,再将预训练得到的权重进行迁移学习并引入正则化项进行参数微调,对NIST SD19训练集中原始图像和手动标注的掩模数据集进行训练,并对NIST SD19数据集中抽取的测试集进行测试。实验结果表明:对孤立数字和3位、4位、5位及整体数字串上的识别准确率比基于过分割方法均有不同程度的提高,达到目前最好水平。Mask-RCNN为解决非限制位数手写体数字串的识别开辟了新思路。接下来将对网络进行改进,解决由于输入图像尺寸统一而导致数字变形的问题,进一步提高该算法在长字符串上的识别准确率。
[1] 茹晓青, 华国光, 李丽宏, 等. 基于形变卷积神经网络的手写体数字识别研究[J]. 微电子学与计算机, 2019, 36(4): 47-51.
Ru X Q, Hua G G, Li L H, et al. Handwritten digital recognition based on deformable convolutional neural network[J]. Microelectronics & Computer, 2019, 36(4): 47-51.
[2] 杜薇, 周武能. 基于CTC模型的无分割文本验证码识别[J]. 计算机与现代化, 2018( 9): 48- 51.
DuW, Zhou WN. Recognition of non-segmented text verification code based on CTC model[J]. Computer and Modernization, 2018( 9): 48- 51.
[3] Breuel TM. Segmentation of handprinted letter strings using a dynamic programming algorithm[C]∥Proceedings of Sixth International Conference on Document Analysis and Recognition, September 13, 2001, Seattle, WA, USA. New York: IEEE, 2001: 821- 826.
[4] Li Y X, Tan C L, Ding X Q, et al. Contextual post-processing based on the confusion matrix in offline handwritten Chinese script recognition[J]. Pattern Recognition, 2004, 37(9): 1901-1912.
[5] MatanO, Burges JC, LeCun Y, et al. Multi-digit recognition using a space displacement neural network[C]∥Advances in Neural Information Processing Systems, November 30-December 3, 1992, Denver, Colorado, USA. San Francisco: Margan Kaufmann, 1992: 488- 495.
[6] Hochuli A G, Oliveira L S, Britto A S. Jr, et al. Handwritten digit segmentation: is it still necessary?[J]. Pattern Recognition, 2018, 78: 1-11.
[7] HeK, GkioxariG, DollárP, et al. Mask R-CNN[C]∥Proceedings of the IEEE International Conference on Computer Vision, October 22-29, 2017, Venice, Italy. New York: IEEE, 2017: 2961- 2969.
[8] Ren S Q, He K M, Girshick R, et al. Faster R-CNN: towards real-time object detection with region proposal networks[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2017, 39(6): 1137-1149.
[9] 陶志勇, 王浩童, 王藜谚. 一种主动鉴别未知类别指静脉的识别系统[J]. 激光与光电子学进展, 2018, 55(12): 121002.
[10] 李大军, 何维龙, 郭丙轩, 等. 基于Mask-RCNN的建筑物目标检测算法[J]. 测绘科学, 2019, 44(10): 172-180.
Li D J, He W L, Guo B X, et al. Building target detection algorithm based on Mask-RCNN[J]. Science of Surveying and Mapping, 2019, 44(10): 172-180.
[11] LongJ, ShelhamerE, DarrellT. Fully convolutional networks for semantic segmentation[C]∥2015 IEEE Conference on Computer Vision and Pattern Recognition (CVPR), June 7-12, 2015, Boston, MA, USA. New York: IEEE, 2015: 3431- 3440.
[12] 任之俊, 蔺素珍, 李大威, 等. 基于改进特征金字塔的Mask R-CNN目标检测方法[J]. 激光与光电子学进展, 2019, 56(4): 041512.
Ren Z J, Lin S Z, Li D W, et al. Mask R-CNN object detection method based on improved feature pyramid[J]. Laser & Optoelectronics Progress, 2019, 56(4): 041512.
[13] 黄伟, 曹宇剑, 徐国明. 基于Faster R-CNN模型的低空平台偏振高光谱目标检测[J]. 红外技术, 2019, 41(7): 600-606.
[14] GirshickR, DonahueJ, DarrellT, et al. Rich feature hierarchies for accurate object detection and semantic segmentation[C]∥2014 IEEE Conference on Computer Vision and Pattern Recognition, June 23-28, 2014, Columbus, OH, USA. New York: IEEE, 2014: 580- 587.
[15] 王森, 杨克俭. 基于双线性插值的图像缩放算法的研究与实现[J]. 自动化技术与应用, 2008, 27(7): 44-45, 35.
Wang S, Yang K J. An image scaling algorithm based on bilinear interpolation with VC++[J]. Techniques of Automation and Applications, 2008, 27(7): 44-45, 35.
[16] 丁鑫. 基于图像识别的试卷成绩复核系统关键技术研究[D]. 阜新: 辽宁工程技术大学, 2019: 1- 75.
DingX. Research on key technology of examination paper score review system based on image recognition[D]. Fuxin: Liaoning Technical University, 2019: 1- 75.
[17] 欧攀, 路奎, 张正, 等. 基于Mask RCNN的目标识别与空间定位[J]. 计算机测量与控制, 2019, 27(6): 172-176.
Ou P, Lu K, Zhang Z, et al. Target recognition and spatial location based on Mask RCNN[J]. Computer Measurement & Control, 2019, 27(6): 172-176.
[18] 张祥甫, 刘健, 石章松, 等. 基于深度学习的语义分割问题研究综述[J]. 激光与光电子学进展, 2019, 56(15): 150003.
[19] 石杰, 周亚丽, 张奇志. 基于改进Mask RCNN和Kinect的服务机器人物品识别系统[J]. 仪器仪表学报, 2019, 40(4): 216-228.
Shi J, Zhou Y L, Zhang Q Z. Service robot item recognition system based on improved Mask RCNN and Kinect[J]. Chinese Journal of Scientific Instrument, 2019, 40(4): 216-228.
[20] de S Britto A, Sabourin R, Bortolozzi F, et al. The recognition of handwritten numeral strings using a two-stage HMM-based method[J]. International Journal on Document Analysis and Recognition, 2003, 5(2): 102-117.
[21] Oliveira LS, SabourinR. Support vector machines for handwritten numerical string recognition[C]∥Ninth International Workshop on Frontiers in Handwriting Recognition, October 26-29, 2004, Kokubunji, Tokyo, Japan. New York: IEEE, 2004: 39- 44.
[22] Sadri J, Suen C Y, Bui T D. A genetic framework using contextual knowledge for segmentation and recognition of handwritten numeral strings[J]. Pattern Recognition, 2007, 40(3): 898-919.
[23] Gattal A, Chibani Y, Hadjadji B. Segmentation and recognition system for unknown-length handwritten digit strings[J]. Pattern Analysis and Applications, 2017, 20(2): 307-323.
Article Outline
陶志勇, 韩月明, 林森. 基于Mask-RCNN无分割手写数字字符串的识别[J]. 激光与光电子学进展, 2020, 57(14): 141012. Zhiyong Tao, Yueming Han, Sen Lin. Unsegmented Recognition of Handwritten Numerical Strings Based on Mask-RCNN[J]. Laser & Optoelectronics Progress, 2020, 57(14): 141012.