基于改进CRNN的导弹编号识别算法研究

2021-06-30 12:44何伟鑫邓建球丛林虎
计算机测量与控制 2021年6期
关键词:字符卷积航空

何伟鑫,邓建球,丛林虎

(海军航空大学 岸防兵学院,山东 烟台 264001)

0 引言

随着智能化时代的发展,大多数行业均向着人工智能化方面发展。部队也在积极寻求着人工智能方面的应用。海航机载弹药大队任务繁忙,弹库装备出入库次数较多,而每一次进出均需进行出入库的登记。而目前却还是人工登统计的方式进行着工作,浪费时间与人力,这与我军的发展目标背道而驰。随着深度学习的发展,可利用自然场景文字识别技术识别装备上的编号,实现弹库自动化登统计方式[1-4]。

识别自然场景中的文字意指从图片中定位到文字部分,而后得出具体文字内容的过程。该过程不仅可单独用于文字的实际识别,同时也可与场景文字检测算法组合成为一个连续的端到端场景文字识别系统。场景文字识别技术是一项难度系数较大的任务,因为自然场景中不仅存在光照的变化以及图像的复杂背景,同时文字存在的多角度、多维、文字的长度等也影响着场景文字识别的准确度。所以,不同于传统图像分类技术,自然场景文字识别技术[5-9]寻求的是从图像中识别出非固定长度序列。

传统文本识别方法局限太大,如模板匹配法在一些应用很凑效,如身份证号码识别,其只存在阿拉伯数字、字体统一清晰,识别难度较低。然而较复杂的场景,传统方法难以满足需求。而OCR的通用方法:设计特征,提取特征而后进行分类,得出最终识别结果,但效果也很难达到应用需求。针对传统OCR的不足,使得基于深度学习的OCR大放异彩[10-13]。

深度学习的出现,让文字识别技术有了新突破,识别率有了质的提升,同时不需耗费较长时间对字符特征进行设计。在文字识别模型中,神经网络的任务是提取图像特征并归类,得到文本的具体结果。其中,在众多基于深度学习的文本识别算法中,CRNN[14]算法无疑是性能最为优秀的,文献[14]表明了该算法在多个数据集中的识别准确率遥遥领先于其他算法,且该算法支持多方向文本识别,对复杂场景下的文本等也拥有较高的识别率[15-20]。

针对包含航空导弹编号的文本识别,介绍基于CRNN的导弹编号识别模型AA-CRNN。AA-CRNN增加了非对称卷积(asymmetric convolution)和注意力机制(attention),可以提取更丰富的语义信息[21-23]。而基于深度学习的文字识别算法需大量文本图片数据集,而在海军某机载弹药大队中获取到的装备编号数据集数据量不足会使得模型存在过拟合,而文本图像不能够对其进行简单的数据增强,因此本课题研究人工合成装备编号文本数据集供训练使用[24-25]。

1 基于改进CRNN的文本识别算法

CRNN对于图像的序列识别任务具有较好效果,特别是场景文字识别问题。图1为CRNN结构图,可看出共可分为3个大层:卷积层、递归层和翻译层[14]。

图1 CRNN结构图

CNN层提取输入图像的特征序列。CNN卷层之后为RNN层,用以预测CNN层输出的特征序列的每帧。翻译层将RNN层的单帧预测转换为标签序列。虽然CRNN是由不同类型的网络体系结构组成的,但是该网络可用一个损失函数联合训练CNN和RNN。

1.1 CNN结构

CNN部分采用的是VGG的结构,并且对VGG网络做了一些微调,如表1所示。

从表1看出,对VGG的调整如下:为了将CNN提取的特征作为输入,输入到RNN网络,将第三和第四个maxpooling的步长从2*2改为了1*2,这样做可以使得特征图的宽度可以被更好地保留。为了加速网络的训练,在第五和第六个卷积层后面加上了BN层。

表1 CRNN网络参数表

该网络的输入为W*32单通道灰度图,亦即网络对输入图片的宽度无特殊的要求,但高度必须为32。如一张包含10个字符的图片大小为100*32,经上述的卷积神经网络后得到的特征尺度为25*1,这样得到一个序列,每一列特征对应原图的一个矩形区域(如图2所示),这样就很方便作为RNN的输入进行下一步的计算了,而且每个特征与输入有一个一对一的对应关系,而且1*2的pooling stride使得感受野具备较窄的宽度,有助于识别”i”,”1”等较窄的字符。

图2 CNN序列图

由于卷积神经网络中的CNN层以及pool层都存在局部性,所以其提取的特征序列同样存在局部性。在图2中,每一序列均与输入图像的某一区域相对照。所以CRNN的CNN层提取图像的序列特征。

对于不同类型的视觉识别任务,深度卷积特征具有鲁棒性、丰富性和可训练性。以前的一些方法已经使用DCNN来学习类序列对象的鲁棒表示。然而,这些方法通常通过DCNN提取整个图像的整体表示,然后收集局部深度特征来识别类序列对象的每个分量。由于DCNN要求将输入图像缩放到固定大小,以满足其固定的输入维数,因此不适合于类序列对象,因为它们的长度变化很大,另一方面,文字的局部细节容易丢失。在CRNN中,将深层特征传递到序列表示中,以便对类序列对象的长度变化不变。

与普通图像识别相比,文本识别的任务是识别整个文本行,因此输入的图像宽度一般比高度数值大得多。然而,普通卷积的感受野具有相同的宽度和高度,可能无法很好地提取文本图像的特征[22]。因此,引入了非对称卷积(asymmetric convolution),用于适应文本的特征。本文中的非对称卷积运算如图3所示。在卷积层中加入 和 非对称卷积核进行卷积运算。该操作相当于增加了图像中水平文本区域的接受野,使得网络增强了从水平文本区域提取特征的能力。

图3 不对称卷积运算

1.2 RNN结构

在卷积层的顶部建立了一个深度双向递归神经网络。递归层对每个帧都预测一个标签的概率分布。循环层有三个优点。首先,RNN具有在序列中捕获上下文信息的强大能力。利用上下文线索进行基于图像的序列识别比独立处理每个符号更加有效。如宽字符需要多个帧进行处理。此外,一些模棱两可的字符在观察其上下文时会更容易区分,例如,通过对比字符高度来识别“il”比单独识别它们中的每一个更容易。其次,RNN可以反向传播误差至卷积层,使得网络可以进行端到端地训练。第三,RNN能够预测随机长度的序列。

经典RNN单元的输入及输出层间存在一自连接的隐藏层。在序列接收帧时,该层会用一个非线性函数来更新其内部状态,该函数同时以当前输入和过去状态作为输入:,而后其对当前帧做出预测。所以值由过去以及现在的输入决定,所以能够将前文信息进行利用。

但经典RNN可能产生梯度消失的情况[20],这影响其可存储的上下文区间,且加深训练难度。长短期记忆[23](LSTM)是一种特殊的RNN,专门解决梯度消失问题。LSTM (图4)由一个内存单元以及输入门、输出门还有忘记门组成。内存单元对过往上下文进行储存,输入和输出门允许单元格存储很长一段时间的上下文。同时,细胞中的内存可以通过忘记门进行更新。LSTM的特殊设计使它能够在多次训练中保持稳定,从而能够获得长距离的上下文。

图4 LSTM结构

LSTM是定向的,它只使用过去的上下文。 然而,在基于图像的序列中,来自两个方向的上下文均有用,因此,CRNN使用两个LSTM,分别向前以及向后,组合双向LSTM(BiLSTM)。此外,堆叠多个BiLSTM,形成深层BiLSTM。如图4(b)所示。

误差通过时间反向传播算法在图4(b)所示的箭头的相反方向上传播。在RNN的底部,传播的误差序列被连接成图,将特征图转换成特征序列,并反馈到卷积层,这一步骤是通过“Map-to-Sequence”的自定义网络层实现的,该层是卷积层和循环层之间的桥梁。

在文本识别中,RNN可以作为解码模块对CNN中的特征序列进行解码,并输出最终预测结果。如果使用固定长度的向量对句子进行编码,会导致严重的过拟合问题,特别是对于长输入序列。这是因为输入序列被编码为一个固定长度的向量表示,不管它有多长,但是由于输入的固定长度向量,解码器在解码过程中将受到限制[22]。然后,针对这一问题提出了注意机制。研究将注意力机制添加到双向LSTM中。因此,注意机制使得双向LSTM能够接收到与当前输出相关的特征序列,并对那些重要的特征序列给予更多的关注,以获得更好的识别结果。本文采用加权注意力机制,根据相关性对特征序列进行加权平均,得到一个上下文向量作为双向LSTM的输入。其结构如图5所示。其中ci表示为上下文向量,xj表示特征序列,aij表示在时间i时向量xj的相应权重,Tx表示特征序列的数目,aij表示xj被选中的概率,因为aij的和为1。所以有:

图5 加入注意力机制的BiLSTM

(1)

其中:aij根据RNN的隐藏状态si-1和特征序列xj计算。公式如下:

aij=f(si-1,xj)

(2)

其中:f是计算特征序列相关性的函数,f需要用神经网络建模,因此我们采用三层神经网络来建模,其中tanh函数作为激活函数。计算过程是:

hij=tanh(w11×xj+w12×si-1+b)

(3)

eij=hij×w21

(4)

其中:hij表示特征序列xj和si-1的第一层输出向量,w11和w12分别表示第一层的权重,b和w21分别表示偏差项,第二层的权重和eij表示神经网络的第二层得分。然后在eij上施加softmax层以获得aij,如公式:

(5)

然后将每个注意模块输出的上下文向量输入到双向LSTM中,得到性能帧预测,并将预测结果反馈给CTC层。改进后的网络结构如图6所示。

图6 改进的网络结构

1.3 翻译层

翻译层是将RNN所做的每帧预测转换成标签序列的过程。从数学上讲,翻译层是根据每帧预测找到概率最高的标签序列,其共有两种不同模式:无字典及基于词库[23]。无字典的情况下,预测是在没有任何词库的情况下进行的。在基于词库的模式下,通过选择后验概率最高的标签序列进行预测。CRNN标签序列概率采用Graves等人提出的连接时续分类(CTC)进行计算[24]。

1.3.1 序列合并机制

RNN对时序进行预测时,不可避免地会产生多余信息,可能单一字符被接连预测多次,这需一种去冗余机制。

图7 RNN预测示意图

如识别图6文本,RNN中有5个时间步,在正常情况下t0,t1,t2映射为“a”,t3,t4映射为“b”,然后将这些字符序列连接起来得到“aaabb”,而后将连续重复的字符合并成一个,得最终结果“ab”。但如是look,hello等存在连续相同字母的词,则得到 lok 和 helo,产生错误,因此 CTC 提出blank机制解决该问题。

以“-”符号代表blank,RNN 输出序列时,在文本标签中的重复的字符之间插入一个“-”,比如输出序列为“llooo-ookk”,则映射输出“look”,也就是如果有blank字符隔开,连续相同字符不合并。即对序列先去掉连续相同字符,接着去掉“-”字符,这个称为解码过程,而编码则是由神经网络来实现。引入blank机制,可以很好地解决重复字符的问题。相同的文本标签一定几率具有不同的字符组合如,“11-2”、“1122”及“-122”均表示“12”。也就是说一个文本标签存在一条或多条的路径。

1.3.2 训练阶段

在训练阶段,根据这些概率分布向量和相应的文本标签得到损失函数,从而训练神经网路模型。

图8表示时序为2的字符识别,有两个时间步长和三个可能的字符为“a”,“b”和“-”,可得两个概率分布向量,如采取最大概率路径解码的方法,则“--”的概率最大,即真实字符为空的概率为0.6*0.6=0.36。但是为字符“a”的情况有多种对齐组合,“aa”, “a-“和“-a”都是代表“a”,所以,输出“a”的概率应该为三种之和:0.4 * 0.4 + 0.4 * 0.6 + 0.6 * 0.4 = 0.16 + 0.24 + 0.24 = 0.64,因此“a”的概率比空“”的概率高。如果标签文本为“a”,则通过计算图像中为“a”的所有可能的对齐组合(或者路径)的分数之和来计算损失函数。所以最后映射为标签文本的总概率为:

图8 文本标签概率分布图

(6)

其中:B-1(l)代表从序列到序列的映射函数B变换后是文本l的所有路径集合,而π则是其中的一条路径。每条路径的概率为各个时间步中对应字符的分数的乘积。类似普通的分类,CTC的损失函数O定义为负的最大似然,为方便计算,对似然函数取对数。

(7)

通过对损失函数的计算,就可以对之前的神经网络进行反向传播,神经网络的参数根据所使用的优化器进行更新,从而找到最可能的像素区域对应的字符。这种通过映射变换和所有可能路径概率之和的方式使得 CTC 不需要对原始的输入字符序列进行准确的切分。定义为负的最大似然,为方便计算,对似然函数取对数。

1.3.3 测试阶段

在测试阶段,过程与训练阶段有所不同,用训练好的神经网络来识别新的文本图像。事先不知道任何文本,如过与之前一样计算每一可能文本的所有路径,这样长时间步和长字符序列将产生庞大的计算量。RNN在每一个时间步的输出为所有字符类别的概率分布,即一个包含每个字符分数的向量,取概率最大字符当做该时间步的输出字符,接着所有时间步的输出组合得一序列路径,即最大概率路径,再根据合并序列方法获得文本的预测。在输出阶段经过 CTC 的翻译,即将网络学习到的序列特征信息转化为最终的识别文本,就可以对整个文本图像进行识别。

如图9所示,有5个时间步,字符类别为“a”、“b”和“-”(blank),对于每个时间步的概率分布,取分数最大的字符,得序列路径“aaa-b”,先移除相邻重复的字符得到“a-b”,然后去除blank字符得到最终结果:“ab”。

图9 文本预测图

2 数据集合成

由于军队航空导弹装备的特殊性,当前未有用于导弹编号识别的数据集,而如果仅仅使用通用的文本识别数据集,得到的预测结果准确率将不够高。因此,本课题结合航空导弹编号的文本特征,人工合成可应用于导弹编号识别的文本图像,追求较高的识别准确率。图10为人工合成文本数据集的流程。

图10 识别数据集合成流程

2.1 导弹编号背景

为了尽可能真实地获得航空导弹编号的图像场景,实地在海航某部机载弹药大队所拍摄数据集。对于所收集整理到的导弹编号数据集,覆盖海航某部机载弹药大队各项型号装备的不同背景。值得注意的是,CRNN模型对于输入数据的高度要求是固定的,所以在截取背景时应注意背景图像的大小,否则会影响到训练。而如果通过缩放等图像处理方法来将图像进行或大或小的缩放,可使得背景的像素与真实值产生偏差,从而影响最终的精度。因此在截取航空导弹编号背景图像时,确保其能够满足CRNN输入图像的尺寸要求。同时,在实际的航空导弹业务工作中,计算机识别编号的时候并非严格正对编号,或多或少存在一定角度倾斜,因此在截取背景图像时也按照一定角度进行倾斜。图11为背景图示例。

图11 导弹编号背景图

2.2 字体

文本的字体对于在识别任务中占据较高地位。不同字体间的风格存在着差异,航空导弹编号识别模型为了适应不同的装备,也需不同的字体特征,针对已经采集到的航空导弹编号,对其进行分析,得出大体所需字体为:微软雅黑、新罗马以及Vanta,如图12所示。

图12 字体示意图

2.3 文本尺寸大小

文本图像上的文本尺寸特征对模型非常重要。尽管相同型号航空导弹的编号尺寸相同,但不同型号上的编号大小存在差异,所以在合成图像时,针对性的采用不同尺寸的字符以丰富特征。且2.2中背景截取使用相同大小的背景,所以不同文本大小能够匹配相应文本长度,可更加合理粘贴于背景图像上。

2.4 字典

在合成识别数据集时,利用字典检索的方式对生成的背景图像贴上文本内容。字典中包含英文字母以及阿拉伯数字。每一个字符在字典中单独一行,程序可更容易检索到该字符。随机生成一段4~10个字符的文本后,检索该文本所有字符在字典中的位置,而后利用该索引位置可获得字符类别,进而可以产生该文本段的标签。

2.5 数据合成

准备工作过后,随机组合航空导弹编号、背景图以及不同的字体,将航空导弹编号文本粘贴到背景图像上。这一步骤主要使用了Pillow,在进行合成的时候需设置将航空导弹编号靠近于背景左上角。合成后的航空导弹文本编号图像如图13所示。

图13 合成图像示例

2.6 图像变换

由于在航空导弹业务当中,工作场所变换较多,伴随因素影响较大,一些噪声对识别产生干扰的情况无可避免。所以在训练CRNN模型过程中需对这种情况进行学习,以提高模型对不同环境的适应能力。所以对合成的数据集应用高斯模糊、灰度拉伸以及透视变换的方式对航空导弹编号文本图像进行增强[25]。

高斯模糊取图像中每个像素周围像素的平均值,使用正态分布对周围像素值权重进行分配。而目标点像素即为正态分布中心,因此靠近该点则权重较大,远离则小,式(8)为其计算公式:

(8)

由于不确定的环境因素可能会影响后续识别过程中文本特征的提取。航空导弹编号文本图像灰度拉伸将图片的灰度值在更大区间内进行扩展以增强图片对比度。提取图的最大以及最小灰度值Imax和Imin,MAX和MIN表示目标灰度最大以及最小值,式(9)表示映射过程:

(9)

透视变换将图像映射到一个新平面,首先将图像从二维平面映射到三维空间,接着映射到另一二维平面,如式(10)所示:

(10)

3 实验结果与分析

对航空导弹编号文本识别模型进行实验。对比在航空导弹编号识别数据集中CRNN算法与其它文本识别算法训练得到深度学习模型的识别效果。

识别实验在Ubuntu16.04系统下进行,CPU:酷睿i5-8400 2.80 GHz,显卡为GTX1080Ti,显存为11 GB,计算机内存为16 G;python 3.6,使用pycharm作为实验平台,同时配套tensorflow,tensorboard支持实验进行。使用Momentum优化器进行优化,初始学习率为0.01,按训练次数衰减,图15为学习衰减曲线图,训练次数为8万。

图15 学习率衰减曲线

3.1 合成数据集以及评价指标

3.1.1 数据集

本实验的训练数据集为前文所合成识别数据集与人工新增入阿拉伯数字图像的公开数据集Synth90K。本文合成数据集一共3万张,包括实地拍摄、合成以及图像增强,标注数据集只需在实地拍摄数据集中按照Synth90K数据集进行标注,合成以及图像增强均可以代码形式进行标注。

3.1.2 评价指标

实验中以测试数据的字符识别准确率以及平均编辑距离作为评估标准。字符识别准确率指正确识别的字符数量占总数量的比重,而后对每张图像求得该比重去平均,即为总的字符识别准确率。平均编辑距离是一种度量两个序列(字符串)差异大小的方法。平均编辑距离越小说明识别率越高,可以同时反应识别错,漏识别和多识别的情况。

假设现在两个字符串A和B,其中A的长度为a,B的长度为b,现要计算A与B之间的Levenshtein distance可用动态规划的思想解决这个问题:假设Ai和Bi分别为字符串A、B的前i,j个字符组成的子串,现将Ai:A[1] A[2] … A[i-1] A[i]修改为Bj:B[1] B[2] … B[j-1] B[j]需要的最少编辑次数,即两个子串的编辑距离,下面分别讨论三种操作的操作次数:

1)插入操作:假设将A[1…i]修改为B[1…j-1]需要操作数为k1,那么在A[i]后插入一个字符B[j],这样就可以将A[1…i]修改为B[1…j],这时所需要的操作数为k1+1。

2)删除操作:假设将A[1…i-1]修改为B[1…j]需要操作数k2,那么删除A[i]就可以将A[1…i]修改为B[1…j],此时所需要的操作数为k2+1。

3)修改操作:假设将A[1…i-1]修改为B[1…j-1]需要操作数为k3,这时要将A[1…i]修改为B[1…j]则分为两种情况:一是当A[i]≠B[j]时,则将A[i]替换成B[j]即可完成修改,此时操作数为k3+1;另一种情况是当A[i]==B[j]时,则将不需要进行修改操作,操作数仍然为k3。最后可得状态转移方程:

(11)

其中:1ai≠bj表示ai≠bj表达式取0,否则取1。

3.2 实验结果评价与分析

首先模型AA-CRNN上进行了实验,然后与其他经典的文本识别算法CRNN,CNN+CRF以及ESIR[25]为对比对象,三者均为当前较为先进的文本识别算法。对训练得到的各个模型逐一测试,使用前文所提的两个评价指标进行评估,结果如表2所示。

表2 不同模型效果对比

由表2可以明显看出AA-CRNN的字符准确率以及平均编辑距离均优于另外的算法,因此说明本课题改进的AA-CRNN算法作为航空导弹编号识别的算法是较优的。图16以及图17表示训练过程中AA-CRNN的train loss曲线以及val loss。

图16 AA-CRNN train LOSS曲线

图17 AA-CRNN val LOSS曲线

由表2以及图16、17可以看出AA-CRNN模型具备较好的性能,接下来使用图像对其进行测试,如图18所示,该模型均准确地将导弹编号识别出来。

图18 模型测试

因此,本课题改进的CRNN模型在合成的航空导弹编号数据集上训练能够得到性能较好的模型,在实际图片测试中均可将导弹编号准确的识别出来,说明本课题对航空导弹编号识别的研究是可行的。

4 结束语

文章首先分析了文本识别模型在航空导弹业务应用中的地位,介绍了AA-CRNN模型。由于缺乏航空导弹编号数据集,因此对照实际编号进行人工合成数据集。通过训练对比,发现AA-CRNN的模型性能能够由于当前较为优秀的深度学习模型,且实际测试均正确识别出航空导弹编号,因此AA-CRNN模型应用于航空导弹编号识别应用中可行且优秀。

但是同样存在巨大的继续研究的空间,因为工作人员需手持摄像头对准导弹编号进行操作。在未来的时间里,笔者将研究检测与识别结合,且是端到端的训练,而非文本检测与识别分开,如此使得模型运行速度更快,且进一步减轻弹库工作人员的工作量。

猜你喜欢
字符卷积航空
基于全卷积神经网络的猪背膘厚快速准确测定
基于图像处理与卷积神经网络的零件识别
Python实现图片转字符画
一种基于卷积神经网络的地磁基准图构建方法
基于3D-Winograd的快速卷积算法设计及FPGA实现
《THE DISCUSSION OF SENSE AND SENSIBILITY COMPARED WITH WUTHERING HEIGHTS》
正则表达式快速入门
图片轻松变身ASCⅡ艺术画
视频监视系统中字符叠加技术的应用
航空漫画