发明内容
本发明目的是:针对上述问题,本发明申请提出一种复杂背景下字符定位和识别技术,以克服背景复杂、字符不规则且受污染等不良状况所造成的字符无法精准定位和准确识别问题。
本发明基本流程是:由字符定位,字符识别两部分组成。字符定位负责将图像背景去除,并精准定位字符区域,然后使用自创的特殊编码方式,将无用信息剔除,接着使用仿射变换自适应地矫正图像,找到目标字符并提取出来。字符识别部分使用BLSTM结合DenseNet作为字符识别的核心算法,设计由BLSTM+CNN+CTC组合的深度学习网络架构;将现场采集的数据制作成多种类数据集,训练BLSTM和CNN网络,使其能通过由卷积层、循环层、转录层组成的神经网络准确将字符识别出来。该方法对于带有复杂背景下字符具有识别准确、稳定、抗干扰性强等优点。
这是一种轻量化、无需大数据的字符信息定位算法,解决计算成本高、训练数据难以获得的问题,在降低成本和减短开发周期的同时,提高了定位的准确度和效率。
本发明采用的技术方案如下:一种复杂背景下字符定位方法,其特征在于,所述方法包括:
步骤S1:对图像进行粗略定位,找出所有包含字符存在的感兴趣区域的定位,对感兴趣区域画最小外接矩形;
步骤S2: 对所有最小外接矩形左上角坐标点的横坐标集合求众数和编码轴,将所有已找出的感兴趣区域进行编码、排序,获取每个感兴趣区域索引,记为步骤S21;通过计算最小外接矩形左上角横坐标点与左编码轴之间偏移量,设定判定阈值并进行二次筛选,找出所需的感兴趣区域,记为步骤S22;
步骤S4:采用K-means聚类算法对所需的感兴趣区域进行内容分割,将字符类保留、滤除背景和噪声2个类,提取出单个字符定位,达到字符分割目的;
步骤S5:在步骤S4分割提取所留下的字符中,将所需的单个字符轮廓进行合并,提取出最终的字符感兴趣区域精确定位。
优选的,所述步骤S1还包括以下步骤:
步骤S11:对图像做resize、通道转换、二值化处理;
步骤S12:对图像做开运算,去除图像上细小干扰连接;
步骤S13: 填充感兴趣区域内的图像信息小空洞,连接邻近的物体并连接断开的轮廓线,平滑边界,使各感兴趣区域更好的分离;
步骤S14:对感兴趣区域画最小外接矩形。
优选的,所述步骤S2还包括以下步骤:
在步骤S21中:找出所有左和右感兴趣区域最小外接矩形左上角横坐标点的集合,求众数并作为横坐标,再随意取两点作为纵坐标得出编码轴,完成对感兴趣区域进行编码、排序;
在步骤S22中,找出所需的感兴趣区域方法为:设定感兴趣区域左上角横坐标点与左编码轴之间的偏移量阈值H和感兴趣区域高h,把h小于H的感兴趣区域作为有效检测区域;根据编码轴、各感兴趣区域之间的相对位置和感兴趣区域高h,将保留下来的有效检测区域沿着编码轴生成目标所需的感兴趣区域。
优选的,所述步骤S3,还包括以下步骤:
步骤S31:将标签上logo和公司名称的辅助信息通过腐蚀、膨胀操作合并成一个整体感兴趣区域,作为参照感兴趣区域,求出最小其外接矩形。
优选的,所述步骤S4还包括以下步骤:
步骤S41:计算所有样本点之间的距离,选择距离最大的一个点对作为2个初始中心点,从样本点集中去掉这两个点,所述点对为两个样本C1,C2。如果初始中心点个数达到k个,则终止;如果没有,在剩余的样本点中,选一个点C3,见如下公式(1):
步骤S42: 使用误差平方和SSE评估聚类结果好坏;
步骤S43:对已经过图像矫正的有效检测区域图像,考虑到由于之前的K-means聚类分割处理能导致感兴趣区域无法完全包含字符信息,对感兴趣区域做加大处理;
步骤S44:选取不同聚类分割k值并比较结果,找出最佳k值,所述最佳k值为聚类分割模型计算得出的类别分割最优数量值;根据最佳k值,确认感兴趣区域的最终分类种类,将待识别的字符类别留下,并将其余干扰类别滤除,达到字符分割的目的。
优选的,所述步骤S5中,还包括以下步骤:
步骤S51:使用轮廓寻找函数找到所有字符的轮廓,找到轮廓的最小外接矩形,进行二值化处理;
步骤S52: 将包含中文字符的感兴趣区域和噪声去除,保留数字,使数字字符连成一块新的感兴趣区域,实现数字字符精确定位。
本发明技术方案还包括:一种复杂背景下字符识别方法,包括上述一种复杂背景下字符定位方法中步骤S1至步骤S5任一步骤及子步骤所述内容,其特征在于,包括以下执行步骤:
步骤D1: 将字符定位方法找出的字符,设计混合数据集,包括无污染图像、带有多种不同污染种类的图像;
步骤D2: 进行构建可结合当前信息和未来信息预测下一个输出的改进型神经网络进行训练,所述改进型神经网络为包括SCA-CNN+BLSTM+CTC的字符识别算法,为提升模型对目标的关注,CNN网络融合多层空间和通道注意力机制构建SCA-CNN,将图像编码成特征向量,提高图像的特征提取精度与速度;然后利用递归神经网络BLSTM对图像特征解码成预测字符,利用BLSTM网络进行序列预测,BLSTM生成的序列经过CTC与label进行校正;
步骤D3:采用步骤D2建立的改进型神经网络进行字符识别。
优选的,所述步骤D2的特征提取网络CNN采用SCA-DensetNet-121结构。
优选的,所述改进型神经网络字符识别方法及其结合的注意力机制,为了减少字符识别过程中的非字符区域干扰,使用最小化负对数似然函数作为本模型的损失函数,表达式为公式(2):
其中X为给定的输入,Y为输出,P(X|Y)为Y的后验概率。
优选的,所述步骤D3的神经网络识别由三部分组成,分别是卷积层、循环层和转录层;卷积层作用是提取输入图片的特征,采用SCA-CNN网络;循环层是预测从卷积层获取的特征序列的标签或真实值的分布,采用BLSTM结构;转录层把从循环层获取的标签分布通过去重整合等操作转换成最终的识别结果,采用Softmax结构。
本发明由于采用了上述技术方案,具有以下有益效果:
本发明申请提出一种复杂背景下字符定位和识别技术,以克服背景复杂、字符不规则且受污染等不良状况所造成的字符无法精准定位和准确识别问题。
本发明基本流程是:由字符定位,字符识别两部分组成。字符定位负责将图像背景去除,并精准定位字符区域,然后使用自创的特殊编码方式,将图像信息自适应排序,将无用信息剔除,再使用仿射变换自适应地矫正图像,找到目标字符并提取出来。字符识别部分使用BLSTM结合DenseNet作为字符识别的核心算法,设计由BLSTM+CNN+CTC组合的深度学习网络架构;将现场采集的数据制作成多种类数据集,训练BLSTM和CNN网络,使其能通过由卷积层、循环层、转录层组成的神经网络准确将字符识别出来。该方法与其他普通的OCR字符识别方法相比,具有识别准确、稳定、抗干扰性强、运行速度快、实时性好等优点。
这是一种轻量化、无需大数据的字符信息定位算法,解决计算成本高、训练数据难以获得的问题,在降低成本和减短开发周期的同时,提高了定位的准确度和效率。
具体实施方式
下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。
本发明提出的复杂背景下字符定位和识别方法,是由字符定位,字符识别两部分组成,如图1所示。字符定位负责将背景去除,并精准定位字符区域,然后使用特殊的编码方式,找到目标字符并提取出来。字符识别部分使用BLSTM+CNN+CTC深度学习网络,通过现场采集的数据制作成数据集,训练BLSTM和CNN网络,使其能准确识将字符识别出来。图5给出本发明实施例所处理的数据原图举例。
实施例1:一种复杂背景下字符定位方法,其特征在于,所述方法包括:
步骤S1:对图像进行粗略定位,找出所有包含字符存在的感兴趣区域的定位,对感兴趣区域画最小外接矩形;
步骤S2: 对所有最小外接矩形左上角坐标点的横坐标集合求众数和编码轴,将所有已找出的感兴趣区域进行编码、排序,获取每个感兴趣区域索引,记为步骤S21;通过计算最小外接矩形左上角横坐标点与左编码轴之间偏移量,设定判定阈值并进行二次筛选,找出所需的感兴趣区域,记为步骤S22;
步骤S3:采用自适应仿射变换算法,将所需的感兴趣区域进行位置矫正;
步骤S4:采用K-means聚类算法对所需的感兴趣区域进行内容分割,将字符类保留、滤除背景和噪声2个类,提取出单个字符定位,达到字符分割目的;
步骤S5:在步骤S4分割提取所留下的字符中,将所需的单个字符轮廓进行合并,提取出最终的字符感兴趣区域精确定位。
参考图2所示,所述的字符定位技术方案为:先通过粗略定位步骤S1,定位所有字符所在位置(感兴趣区域),再通过对所有感兴趣区域编码步骤S2,找出所需的感兴趣区域(目标区域),由于图片拍摄可能存在倾斜,可能导致字符识别出错,同时还需要剔除感兴趣区域里面无用字符,所以对图像使用自适应矫正算法矫正字符步骤S3以及使用K-means聚类法分割字符步骤S4,提取出矫正后的单个字符轮廓,最后实现精确定步骤S5,将所需的单个字符轮廓进行合并,提取出最终的字符感兴趣区域。
优选的,所述步骤S1还包括以下步骤:
步骤S11:对图像做resize、通道转换、二值化处理;
步骤S12:对图像做开运算,去除图像上细小干扰连接;
步骤S13:对图像做闭运算,填充感兴趣区域内的图像信息小空洞,连接邻近的物体并连接断开的轮廓线,平滑边界,使各感兴趣区域更好的分离;
步骤S14:对感兴趣区域画最小外接矩形。
步骤S1粗略定位的目的是,初步定位出带有字符的区域。先对图像做resize、通道转换、二值化等一系列处理,然后对图像做开运算,去除图像上细小的噪声、断开窄小的连接,再对图像做闭运算操作用来填充物体内的小空洞,连接邻近的物体,连接断开的轮廓线,平滑其边界,使感兴趣区域更好的分离,最后对感兴趣区域画最小外接矩形,效果如图6所示。
优选的,所述步骤S2为了提取所需信息,需要对所有感兴趣区域进行编码、排序,获取每个感兴趣区域的索引,还包括以下步骤:
在步骤S21中:找出所有左和右感兴趣区域最小外接矩形左上角横坐标点的集合,求众数并作为横坐标,再随意取两点作为纵坐标得出编码轴,完成对感兴趣区域进行编码、排序;
在步骤S22中,找出所需的感兴趣区域方法为:设定感兴趣区域左上角横坐标点与左编码轴之间的偏移量阈值H和感兴趣区域高h,把h小于H的感兴趣区域作为有效检测区域;根据编码轴、各感兴趣区域之间的相对位置和感兴趣区域高h,将保留下来的有效检测区域沿着编码轴生成目标所需的感兴趣区域。
首先,存储粗略定位所得到的图像的所有感兴趣区域最小外接矩形左上角横坐标点集合
。
当集合X满足下式
则
为左感兴趣区域最小外接矩形左上角横坐标点集合,width代表图像宽。
当X集合满足下式
则
为右感兴趣区域最小外接矩形左上角横坐标点集合。其中L和R满足
对左边感兴趣区域的左上角横坐标点集合L求众数M,见公式(3)。
其中B代表众数所在组下限,
代表众数所在组次数与其上限的邻组次数之差,
代表众数所在组次数与其下限的邻组次数之差。以M作为横坐标,随意取两点作为纵坐标,从而得到图像左边感兴趣区域的编码轴,然后根据公式(3)对左边感兴趣区域最小外接矩形的高求众数,通过参考点的坐标计算同一条编码轴的感兴趣区域之间的相对位置;对于右边感兴趣区域同理。
当图像背景恶劣只能检测出一条编码轴时,可以根据相对位置固定的条件,推算出另一条编码轴。
接下来进行二次筛选,将左上角横坐标点与左编码轴之间的偏移量达到一定阈值的感兴趣区域滤除,计算感兴趣区域高h与H的差,将超过阈值的连通滤除,保留下的感兴趣区域作为有效检测区域。根据编码轴,通过各感兴趣区域之间的相对位置和感兴趣区域高h,根据保留下的感兴趣区域沿着编码轴生成剩下的有效检测区域。
这种编码算法,具有很好的稳定性和较强的抗干扰能力。
优选的,在实际情况中,摄像头所拍到的图像并不是理想的,当拍到的图像发生旋转、平移等问题,会导致图像畸变从而使字符识别出错,因此,采用步骤S3自适应仿射变换算法,将所需的感兴趣区域进行位置矫正,可以很有效地解决这个问题。
仿射变换是一种二维坐标到二维坐标之间的线性变换。仿射变换的公式(4):
其中
表示平移量,
反映图像了图像旋转、缩放等变化,将矩阵参数求出,即可获得矫正坐标。
所述步骤S3,还包括以下步骤:
步骤S31:将标签上logo和公司名称的辅助信息通过腐蚀、膨胀操作合并成一个整体感兴趣区域,作为参照感兴趣区域,求出最小其外接矩形。
上述步骤S31通过计算矩形的高所在的轴与图像x轴夹角
,得出仿射矩阵R:
将式(4)代入式(3),即可得出矫正后坐标。
优选的,步骤S4采用K-means聚类算法对所需的感兴趣区域进行内容分割,将字符类保留、滤除背景和噪声其他2个类,提取出单个字符字符定位,达到字符分割目的。
所述步骤S4,还包括以下步骤:
步骤S41:计算所有样本点之间的距离,选择距离最大的一个点对(两个样本C1,C2)作为2个初始中心点,从样本点集中去掉这两个点。如果初始中心点个数达到k个,则终止;如果没有,在剩余的样本点中,选一个点C3,见如下公式(1):
步骤S42: 使用误差平方和SSE评估聚类结果好坏。
步骤S43:对已经过图像矫正的有效检测区域图像,考虑到由于之前的K-means聚类分割处理能导致感兴趣区域无法完全包含字符信息,对感兴趣区域做加大处理;
步骤S44:选取不同聚类分割k值并比较结果,找出最佳k值,所述最佳k值为聚类分割模型计算得出的类别分割最优数量值;根据最佳k值,确认感兴趣区域的最终分类种类,将待识别的字符类别留下,并将其余干扰类别滤除,达到字符分割的目的。
在众多算法中,K-means聚类算法具有原理简单易实现、聚类效果中上的优点。
初始中心点的选取,对聚类结果影响较大。初始中心点之间的间距应该较大。因此,可以采取的策略是采用步骤S41方式。
然后,使用误差平方和SSE评估聚类结果好坏,SSE的定义如下:设样本点集合
,k个类别样本集合
,计算中心点
,计算方法如公式(6)、公式(7)所示:
一般情况下,k越大,SSE越小。
在本实施例方法中,通过步骤S2的过程中,获取了有效检测区域,然后通过步骤S3对整个图像进行仿射变换处理,根据有效检测区域截取矫正后的图像,获得新的感兴趣区域。但通过步骤S4将所有新获取的感兴趣区域做K-means聚类,由于之前的图像分割处理可能会导致感兴趣区域无法完全包含字符信息,所以要对感兴趣区域做加大处理。
由于选择不同的k值,划分的处理结果不相同;同时,根据SSE-K曲线中K的拐点位置,即SSE的下降变得缓慢的分割点,可得出本类图像的最佳分类K值。
按此方法计算,本方案当k=3之后,SSE的下降变得缓慢,因此最佳k值为3。因此,将感兴趣区域分为背景、噪声和字符3个类。将字符类保留,滤除其它2个类,达到字符分割的目的。
优选的,所述步骤S5,在步骤S4分割提取所留下的字符字符中,将所需的单个字符轮廓进行合并,提取出最终的字符感兴趣区域精确定位。同时,还包括以下步骤:
步骤S51:感兴趣区域只剩字符,使用轮廓寻找函数,找到所有字符的轮廓,然后找到轮廓的最小外接矩形,进行二值化处理;
步骤S52:字符中存在中文和数字混合,将字符中的中文去除、保留数字,使数字字符连成一块新的感兴趣区域,实现目标字符精确定位。
为了去除噪声干扰,分别计算所有矩形的宽和高的众数,当矩形的宽和高与其对应的众数大致相等,则判断这个矩形是包含字符的。将这个矩形从右往左叠加n个,由于排版固定,本次实验将9赋值给n。使用这种方式,使数字字符连成一块形成新的感兴趣区域,然后将包含中文的感兴趣区域和噪声去除,实现目标字符精确定位。字符精确定位处理流程效果参考图7所示。
需要说的是,在本发明中,根据研究内容所需,最终目标提取为字符中的数字字符。本发明方法可同理替换提取其他图像信息,如中文、英文、或其他非文字类、非字符类等信息。
实施例2:一种复杂背景下字符识别方法,包括上述实施例1的一种复杂背景下字符定位方法中步骤S1至步骤S5任一步骤及子步骤所述内容,其特征在于,包括以下执行步骤:
步骤D1: 将字符定位方法找出的字符,设计混合数据集,包括无污染图像、带有多种不同污染种类的图像;
步骤D2: 进行构建可结合当前信息和未来信息预测下一个输出的改进型神经网络进行训练,所述改进型神经网络为包括SCA-CNN+BLSTM+CTC的字符识别算法,为提升模型对目标的关注,CNN网络融合多层空间和通道注意力机制构建SCA-CNN,将图像编码成特征向量,提高图像的特征提取精度与速度;然后利用递归神经网络BLSTM对图像特征解码成预测字符,利用BLSTM网络进行序列预测,BLSTM生成的序列经过CTC与label进行校正;
步骤D3:采用步骤D2建立的改进型神经网络进行字符识别。
尽管现在已经有多种字体的公开数据集。但是对于非理想环境和非规则字体的情况下,使用公开的数据集并不能满足要求。为此训练针对特定场景和特定字体的字符识别分类器;首先,根据现场通过字符定位方法找出的字符图像制作数据集(步骤D1),利用数据集训练分类器(步骤D2),最后使用分类器进行字符识别(步骤D3)。
优选的,步骤D1采集大约200张现场图片,其中50张无污染,另外150张有污染。污染包括,光照反射、油污、剐蹭等。裁剪200张图片的字符区域。最终制作出来的数据集由1600张图片组成,1400张作为训练集,剩下的200张作为测试集。
优选的,所述步骤D2的特征提取网络CNN采用SCA-DensetNet-121结构。
特征提取网络CNN采用SCA-DensetNet-121结构,DensetNet与ResNet相比,采取了更加激进的密集连接机制,具体来说就是每个层都会接受其前面所有层作为其额外的输入。对DensetNet在第k层的输出为:
其中
代表是非线性转化函数,它是一个组合操作,其可能包括一系列的BN,ReLU,Pooling及Conv操作。
本发明DensetNet-121将全连接层去掉,只保留其特征提取功能。本发明的DenseNet-121网络结构如下表1所示。
表1 本发明的DenseNet-121网络结构
同时,本发明模型在CNN主干网络部分融合注意力机制,加强主干网络的特征提取能力,具体融合模型参考图8所示。先进行通道注意力的权重分配,对特征图赋予不同的权重,同时在此基础上对空间信息进行权重的分配,以便达到最优效果(其中,CxHxW:输入特征通道*卷积核H*卷积核W)。
优选的,所述步骤D2建立的改进型神经网络为包括SCA-CNN+BLSTM+CTC的字符识别算法。
深度学习在字符识别上的运用案例非常多,运用最广泛的是CNN+RNN+CTC。由于RNN无法解决长期依赖字符,当序列较长时训练RNN网络会出现梯度消失,甚至出现梯度爆炸。LSTM在RNN的基础上增加了输入门、遗忘门和输出门,并引入sigmoid函数并结合tanh函数,添加求和操作,减少梯度消失和梯度爆炸的可能性。然而LSTM只能依据当前信息来预测下一时刻的输出,BLSTM可以结合当前信息和未来信息预测下一刻的输出,使预测结果更加准确。
因此,参考图3所示,本发明的训练文本使用SCA-CNN+BLSTM+CTC作为字符识别算法。算法基本原理是,CNN用于提取图像的特征,然后转换成特征序列,作为BLSTM的序列输入,BLSTM网络用于预测序列,BLSTM生成的序列经过CTC与label进行校正。
同时,在字符识别过程中,为了减少非字符区域的干扰,结合前文提出的字符识别方法以及注意力机制,利用最小化负对数似然函数作为本模型的损失函数,表达式为公式(2):
优选的,参考图4所示,所述步骤D3的神经网络识别由三部分组成,分别是卷积层、循环层和转录层。卷积层作用是提取输入图片的特征,采用SCA-CNN网络;循环层是预测从卷积层获取的特征序列的标签或真实值的分布,采用BLSTM结构;转录层把从循环层获取的标签分布通过去重整合等操作转换成最终的识别结果,采用Softmax结构。
实施例效果:
采用字段准确率来评估字符识别算法的识别准确率。字段准确率是指,整行识别率,例如有200个字,分为40个字段,里面错了13个字,分布在15个字段里面,这意味着,40个字段错了15个,则准确率为(15/40)×100%=37.5%。于本次实验采用的铭牌一张有11个字段,对200张排版、样式相同,字符信息不同的铭牌做字段准确率评估,一共有200×11=2200个字段。
为验证SCA-DenseNet-BLSTM的网络性能,与ResNet-BLSTM和Inception-BLSTM进行字段准确率对比。实验结果如表2所示。
表2 字段准确率对比结果
网络结构 |
SCA-DenseNet-BLSTM |
ResNet-BLSTM |
Inception-BLSTM |
字段识别率% |
99 |
95 |
97 |
由表2可知,本发明使用的识别算法字段准确率最高,2200个字段中,有2178个字段识别正确,能够满足实际应用的需求。
需要说的是,在本发明中,根据研究内容所需,最终目标提取为字符中的数字字符。本发明方法可同理替换提取其他图像信息,如中文、英文、或其他非文字类、非字符类等信息。
应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。