林绍福,李松静,刘希亮+
(1.北京工业大学 信息学部软件学院,北京 100124;2.北京工业大学 信息学部北京智慧城市研究院,北京 100124)
柱面电线杆标识牌由于图像边缘两侧存在不同程度的信息压缩在直接进行标识牌字符识别时多出现边缘部分漏检、标识牌信息识别错误等问题。当前基于深度学习广泛实用的图像字符识别模型对算力和运行环境要求较高,难以满足手持端和移动设备的加载,且模型应用在电线杆标识牌字符识别上,识别精度还较低,与实际应用差距较大。本文以柱面图像矫正处理和模型轻量化改进为目标,基于深度学习构建适用于柱面电线杆标识牌识别的图像文本检测和字符识别模型。
针对柱面类型标识牌字符识别,当前研究主要集中在两个方面:一是柱状图像矫正处理,二是图像文本检测识别。在柱面图像矫正处理方面,曹阳[1]提出了一种曲面目标表面文本检测与识别方法;Gao等[2]利用FCN-CRNN模型进行隧道缺陷检测,引入柱面反投影变换降低了隧道缺陷的误检率。在图像文本检测识别方面,经典的目标检测算法如Faster-RCNN[3]、FPN[4]和YOLO[5,6]等通过区域建议网络、候选区域生成算法生成多个候选框,从其中选择文本实例,Zhou等提出了端到端的文本检测算法EAST[7],Deng等提出了一种基于实例分割的场景文本检测算法Pi-xelLink[8],Wang等提出了一种对文本实例实现多级预测的渐进式尺度扩张网络PSENet[9],Liao等提出了一种可微分二值化分割方法DBNet[10]。
字符识别算法主要有基于CTC的CRNN[11]方法和基于注意力机制(Attention)的CRNN[12]方法。
上述研究虽然在车牌识别、票据识别[13,14]等方面取得一定进展,但当前模型的卷积神经网络计算耗时、效率低下,难以满足实时、高效、快速计算的要求。为解决上述问题,本文首先对柱面电线杆标识牌在水平与垂直方向进行反投影矫正展平,其次针对手持端、边缘设备快速高效检测的需求,提出了一种轻量级可微二值化分割网络的柱面电线杆标识字符序列识别算法Tiny-DBNet-CRNN,以期为柱面电线杆标识牌高效识别提供切实可行的解决方案。
柱面反投影是将柱面表面的某个特定的观察区域投影到柱面的切平面上的过程。圆柱面投影的空间几何图如图1所示,展示了柱面与其切平面的投影关系。
图1 柱面-平面投影关系
柱面与其切平面在水平方向的投影关系几何图如图2所示,柱面图像宽为W,用下图中弧线宽度表示,投影后平面图像宽为W′,用下图中投影直线表示,当柱面图像向平面投影后,图像宽度变大。以圆柱模型的中心点O为原点在水平方向和垂直方向建模,圆柱模型半径为f,视场角为α,现平面图像上任意一点P(x,y) 投影到柱面空间坐标为P′(x′,y′), 在柱面上对应的投影角度为θ,圆柱面与切平面相交于点N。
图2 水平方向投影关系
为后续计算方便,在进行坐标计算时将坐标系转换为图像原始像素坐标系,以图像左上角为原点,水平向右为x轴方向,垂直向下为y轴方向,水平方向的投影公式为
tanθ=x-W2f
(1)
W′=2·f×sinα2=2·f×sin(arctanW2f)
(2)
由式(1)和式(2)得投影后的柱面水平坐标
x′=f×sinθ+W′2
(3)
柱面与其切平面在垂直方向上的投影关系如图3所示,设平面图像高为H,投影到柱面空间图像高度为H′。根据三角形相似关系,得到垂直方向的投影公式为
图3 垂直方向投影关系
cosθ=y′-H′2y-H2
(4)
fcosθ=(x-W2)2+f2
(5)
由式(4)、式(5)得垂直方向上投影坐标为
y′=f·(y-H2)(x-W2)2+f2+H2
(6)
上述式(1)~式(3)、式(4)~式(6)分别表示了柱面-平面投影关系在水平和垂直方向的投影变换。根据上述坐标变换公式遍历图像中每个像素点坐标,空间投影后的平面图像水平方向宽度会明显增加,从而出现像素的缺损,对于在柱面图像中无法找到对应的像素点的坐标,采用双线性插值对缺损的图像进行插值补全。以确定像素坐标点为中心,建立步长为1的正方形,运用相邻的4个点在水平和垂直方向分别做一次线性插值,实现柱面图像的矫正展平处理。
本文柱面矫正展平方法按照柱面-平面投影原理和三角形三角关系推导出计算公式,参数合理,将柱面图像转化为平面图像的投影计算较为精准。像素点投影后利用双线性插值补全缺失值,将柱面图像展平为像素质量较好的平面图像,为下一步标牌图像文字检测识别打下良好的基础。
模型首先基于深度可分离卷积残差块和注意力机制构建轻量级特征提取单元,搭建特征提取网络,对输入图像进行特征提取;然后将特征提取后生成的特征矩阵输入到基于分割的可微二值化文本检测网络DBNet,对每一像素点属于文本区域和非文本区域进行自适应的二值化处理,通过像素聚合的后处理方式将属于同一文本的像素点聚合在一起得到检测的文本实例边界框;最后采用基于CRNN字符识别网络对检测结果进行端对端识别验证。
2.1.1 轻量级特征提取单元
轻量级特征提取单元用于提取输入图像的重要特征,为后续网络层提供信息输入。特征提取单元结构图如图4所示,包含深度可分离卷积残差块和注意力机制两部分。在卷积神经网络中,网络深度的加深导致了网络退化、梯度爆炸等问题,随着网络层数增加,卷积计算的参数量和计算量也不断增大。为解决这类问题本文采用深度可分离卷积代替传统卷积并在卷积计算之间加入残差连接,构建了深度可分离卷积残差块。输入电线杆标识牌图像先进行1x1的卷积升维,将更多地图像信息传递到下一步的深度可分离卷积,由于深度可分离卷积的计算优势,既保证了较多图像维度的卷积计算,又避免了大量的参数运算过程,最后将卷积后的结果采用1×1卷积降到与输入相同维度,以便输入与输出连接防止训练过拟合。注意力机制添加在深度可分离计算后的一个分支,生成权重矩阵作用于卷积计算后的矩阵,对图像特征进行重要程度标记,输出一个特征提取单元计算后的特征矩阵。
图4 特征提取单元结构
传统卷积和深度可分离卷积的卷积过程分别如图5(a)、图5(b)所示。深度可分离卷积作为一种可分解的卷积结构,由一个深度卷积和一个点卷积代替传统卷积。深度卷积用于图像空间滤波,不同的是它的卷积核通道数为1,卷积核个数等于输入特征矩阵通道数,收集每个通道的空间特征;点卷积对上一步输出做1×1的普通卷积,收集每个点的信息。
图5 普通卷积与深度可分离卷积的卷积过程
假设输入的特征图大小为DK×DK,卷积核大小为DK,输入、输出特征矩阵深度分别为M、N,使用深度可分离卷积和普通卷积的参数量比值为
DK·DK·M·DF·DF+M·N·DF·DFDF·DF·M·N·DK·DK=1N+1DK2
(7)
如果设定卷积核大小为3×3,采用深度可分离的卷积的计算量将比普通卷积减少约9倍,从而大大降低模型的参数量和计算量。
在神经网络可以收敛的前提下,随着网络层数增加,网络的表现先是逐渐增加至饱和然后迅速下降[15]。当无法确定加深的当前层是否为最优的网络时,加入带有恒等连接的残差结构,使网络保持最优收敛情况。
2.1.2 注意力机制
电线杆标识牌的文字与背景在颜色和特征上有明显区别,引入注意力机制在通道维度上对原始特征进行重新标定,通过学习获取每个通道的重要程度,然后依照这一结果提升有用的特征并抑制对当前任务用处不大的特征,允许网络根据特征权重重新排列,这样加强了电线杆标识牌图像中文字的特征信息,从而提升字符识别的正确率。如上图4所示,注意力机制模块连接在2.1.1残差块的深度可分离卷积后,具体操作步骤为:
(1)全局平均池化操作。X为残差块中深度可分离卷积输出特征矩阵,大小为W×H×C,矩阵元素U(i,j), 在X的各个通道维度进行特征压缩为一个实数,使其具有全局感受野。Z表示全局平均池化操作后的矩阵,第c个通道的平均池化操作公式为
Zc=1W×H∑Wi=1∑Hj=1Uc(i,j)
(8)
(2)生成每个通道的权重矩阵S。对矩阵Z进行全连接操作获取每个通道的权重矩阵,其中操作包括:参数矩阵为W1的全连接层1、Relu激活函数、参数矩阵为W2的全连接层2、sigmoid激活函数。计算权重矩阵操作公式为
S=sigmoid[W2·Relu(W1·Z)]
(9)
(3)将生成的权重矩阵S与残差块输出的特征矩阵F在通道维度上相乘,对原始特征进行重新标定。
综上所述,深度可分离卷积减少了卷积计算量和卷积参数,残差结构设计在神经网络加深的情况下能够保持最优的表现能力;注意力机制用在电线杆标识牌特征提取上,对标牌不同信息赋予不同重要程度,这样特征提取网络对图像特征具有较好的表现力,更有利于分割标识牌文本。
2.1.3 电线杆标识牌特征提取网络
电线杆标识牌特征提取网络拓扑结构如图6所示,网络由3×3卷积、BN层、6个轻量级特征提取单元顺次连接构成,其中3×3普通卷积提取标牌图像低层全局特征;BN层将卷积归一化处理提升模型收敛速度;6个轻量级特征提取单元提取标识牌图像高层局部特征,图6(a)~图6(g)为各层对应的特征提取可视化结果。
图6 特征提取网络结构及各层热力
为了更好地描述自然场景中不同形状的文本,本文采用基于图像分割的文本检测网络DBNet(differentiable binarization network),在像素水平上进行文本和非文本的二值化处理。电线杆标识牌经过特征提取网络提取特征后连接DBNet的二值化模块,获取电线杆标识牌中的文本检测框。DBNet二值化模块流程如图7所示,二值化模块在特征矩阵基础上做两种操作:一是对特征矩阵逐像素计算每个点属于文本和非文本的概率,得到标识牌图像的概率图P;二是根据特征矩阵学习每个像素点划分文本和非文本的阈值,得到阈值图T,最后在对应元素上,按照阈值图对概率图进行自适应的二值化计算。该过程实现的关键是DBNet突破了传统固定阈值分割式(10),公式中t表示某个固定阈值,当概率矩阵元素Pij大于t时,划分为1表示文本特征,其它情况划分为0表示非文本特征,Bij表示二值矩阵。DBNet模型将二值化计算设计为可微分的操作式(11),该方法利用概率矩阵与阈值矩阵的值进行文本和非文本的自适应划分,加入网络一起训练,能通过网络学习得到阈值,其中B^ij表示自适应阈值矩阵,得到阈值矩阵后再按照对应像素阈值划分文本和非文本
图7 DBNet文本检测网络结构
Bij={1Pij≥t0others
(10)
B^ij=11+e-k(Pij-Tij)
(11)
其中,Pij表示概率图中的概率值,Tij表示阈值图中的值,k为常数因子。
上述基于分割的字符检测方法用网络学习的方式训练更适合每个像素点的阈值,按照这一阈值对电线杆标识牌文本和背景的划分更加精确。
CRNN的结构如图8所示,将上一步骤检测到的电线杆标识牌文本框序列输入到基于CRNN的字符识别模型中提取标识牌中的字符信息,输出电线杆标识牌信息。
图8 CRNN的结构
模型先通过上文构建的轻量级特征提取网络提取图像特征,获取对应原图的每一个区域序列特征。再经过RNN层在卷积特征的基础上继续提取字符序列特征,将CNN层输出的特征序列X1,X2,X3,…Xt输入到BiLSTM中,对序列的前向信息和后向信息进行关联预测,输出每个序列字符元素预测值yt。这样训练时每张样本图片都需要标记出每个字符在图片中的位置,再通过CNN感受野对齐到特征图的每一列获取该列输出对应的标签才能进行训练,在实际情况中标记这种对齐样本非常困难,工作量大,另外由于图像文本字符数量不同,字体样式不同,字符大小不同,导致每列输出并不一定与每个字符对齐。CRNN模型的CTC层建立了序列合并与对齐机制,提出了不需要对齐的Loss计算方法进行损失计算,并将输出的结果转录翻译。
假设任务的总字典集为L,在本模型中定义为L′,L′=L∪{blank}∪{电力特殊字符}, 其中L为常用的中英文字典集,blank表示空白占位符,标记当前时间片为空字符,电力特殊字符为包括:Ⅰ、Ⅱ、Ⅲ、KV、-、#、/、+。
模型输出的文本字符串结果是由多分类输出单个字符再进行转录形成的,在训练中一个标签存在一条或者多路径,所以定义如式(12)的损失函数使得输出字符到标注序列转化的概率最大化
p(l|x)=∑π∈B-1(l)p(π|x)
(12)
式(13)表示所有输入x路径映射到标注序列的条件概率之和,其中x为输入序列,l为标签序列,π∈B-1(l) 是输出x到输出标注序列的所有路径,表示为
p(π|x)=∏t=Tt=1ytπt
(13)
其中,y表示t时刻对应的字符输出,从t=1到T时刻累乘形成的路径π。
预测输出的字符中间有较多重复和空白标签,明显多于实际标签中的字符数,在翻译时合并重复字符,消除空字符处理后得到最后结果。本文通过在训练集中增加电线杆标识牌常见字符,构建基于CRNN电线杆标识牌字符识别模型,使得输出结果更加精准。
本文所采用的数据集包括两种:一种是自制柱面电线杆标识牌数据集,共500张,主要来源于实地拍摄、网络爬取和供电部门。另一种是公开数据集ICDAR2015,主要是自然街景图像数据,用以训练文本检测和字符识别模型,包括文本训练集1000张,测试集500张,字符识别训练集4468个,测试集2077个。表1汇总了数据集相关信息。
表1 实验数据集
模型按照柱面图像矫正预处理、文本检测、字符识别的顺序展开,输入柱面电线杆标识牌数据,输出电线杆标识牌中的文本信息。由于电线杆标识牌的来源不同,受自然环境、拍摄角度影响,数据样本存在格式不统一、光照不均、模糊等问题,为了改善图像数据的质量,加快模型收敛速度,对标识牌数据图像进行了对比增强、随机旋转、灰度处理等预处理。
3.3.1 柱面矫正展平效果分析
根据上文中柱面反投影矫正论述,在一张空白平面图像上按照上述投影公式在水平方向和垂直方向上分别做坐标投影变换,再将对应坐标点的像素值进行赋值。为了统一公式计算时的W和H,实验时将图像大小统一设置为300×300,柱面模型半径设为150像素。通过反投影展平矫正,柱面电线杆标识牌处理结果如图9所示,从图中可以看出展平后图像边缘信息更加明显。在相同参数下,图9(b)、图9(c)、分别是按照本文方法矫正、文献[2]方法矫正和传统投影公式矫正的效果,从结果发现文献[2]和传统方法在计算投影坐标时将曲线近似为直线,存在较大误差,出现矫正过剩的问题,将直接影响后续计算。
图9 柱面反投影矫正对比
柱面电线杆标识牌矫正展平前后经Tiny_DBNet_CRNN模型识别的结果如图10所示,若柱面电线杆标识牌直接检测识别,图像缘两侧的文本检测不完整,导致一半的字符识别结果错误(图10(a))。矫正预处理后再用Tiny_DBNet_CRNN识别的结果(图10(b))。与直接识别相比,矫正后能完整检测并输出标牌“220 KV客还II线”、“防城港供电局”、“供电服务热线95598”这些边缘信息。
图10 柱面电线杆标识牌矫正前后字符检测和识别结果
总体上,500张柱面电线杆标识牌展平矫正后再识别,有442张标牌图像文本能准确、完整输出,字符识别正确率为88.40%。若图像按照像素点矫正后未进行缺失像素的双线性插值算法补全,字符特征会变得较为模糊进而影响最后的图像字符识别,此时的字符识别正确率为80.20%。而直接将柱面电线杆标识牌输入到Tiny_DBNet_CRNN字符识别模型中识别正确率仅48.10%,说明矫正后的电线杆标识牌识别正确率提升40.3%,其中双线性插值的补全方法识别正确率的提升贡献了8.20%。可见,正是由于合理的柱面矫正展平方法,将柱面电线杆标识牌边缘压缩的文本化曲为直,将柱面图像转化为平面图像,使图像特征获取更准确、完整,从而极大地提升了柱面电线杆标牌文本识别的正确率。
虽然上述流程方法对柱面电线杆标识牌识别取得了较好的效果,但仍存在一些错例,除了柱面反投影矫正算法影响之外,柱状图像展平矫正效果还受原图质量和柱状模型在整个图像中的成像位置影响,原图质量较差时再经过预处理过程多出现图像失真的现象。
3.3.2 Tiny_DBNet_CRNN模型精度分析
为了评估模型性能,选用DBNet原模型特征提取网络ResNet_18[15]、ResNet_50[15]与本文提出的轻量级特征提取网络作对比分析,在精度上选用准确率(Precision)和召回率(Recall)作为评价指标,在效率上选用每秒内处理图像的帧数FPS和Pytorch框架计算的参数量作为评价指标,Tiny_DBNet_CRNN在测试集上的测试结果见表2。
表2 模型测试结果
从表中分析出本文提出的Tiny_DBNet_CRNN在准确率下降非常小的情况下,加快了原DBNet模型的检测速度,缩小了模型参数规模。轻量级特征提取网络使用深度可分离卷积提取图像特征,在卷积核的维度上降低参数量;同时为了弥补卷积过程带来的计算损失,又能较好地从一张图像中分离出文本区域,在模型中加入了注意力机制,在特征提取的层次上加重文本的表现力。
在ICDAR2015数据集下,与基于ResNet_50的模型相比,用轻量级的特征提取网络作为特征提取网络,在准确率下降0.60%的微小损失下,每秒内处理图像的帧数由12增大到50,检测速度约提升3倍,参数规模上总体下降45.15%,模型提升效果显著。在柱面电线杆标识牌数据集下,与ResNet_18_DBNet_CRNN相比,Tiny_DBNet_CRNN在精度、召回率、检测速度和模型参数上均较大程度优于原模型。
柱面电线杆标识牌数据集相比于ICDAR2015数据集文本行数量较少,且标识牌形状较为规范工整,应用Tiny_DBNet_CRNN模型表现效果更好。Tiny_DBNet_CRNN在柱面电线杆标识牌数据的识别上精确率为92.00%,基本达到业务使用的精度。综合在两种不同数据集下,用两种特征提取网络与本文构建的网络进行训练与测试实验,用模型之间性能指标结果验证了本文通过模型轻量化改进,电线杆标识牌识别在速度和精度均有所提升。用实际数据验证了在现实场景中模型的落地实用性,具有一定的实用价值和现实意义。
为了进一步探究本文提出的轻量级Tiny_DBNet_CRNN模型对电线杆标识牌识别的效果,用ResNet_18_DBNet_CRNN、ResNet_50_DBNet_CRNN在电线杆标识牌数据集上验证,选用标识牌字符识别正确率(Accuracy)作为评价指标,表示电线杆标识牌字符正确输出占总样本的比例。
模型识别正确率曲线如图11所示。从图中可以发现,随着模型训练迭代次数的增加,对电线杆标识牌文本的识别正确率均呈现上升趋势。对比来看,本文模型在训练迭代30个epoch后正确率高于原模型且正确率稳定在95.11%以上。模型中加入的注意力机制使文本特征在整个标识牌图像中更加突出,更易于从图像中分割出来,这对模型识别精度的提升发挥重要作用,以满足电线杆标识牌识别精度的要求。
图11 Tiny_DBNet_CRNN模型准确率
3.3.3 Tiny_DBNet_CRNN模型效率分析
从表2的分析结果可以看出,模型主要通过减少参数量和计算量,提升每秒内处理的数据量,进而提升检测速度。在柱面电线杆标识牌数据集上测试文本图像单处理和批批处理耗时数据,以NVIDIA GeForce RTX 2080 Ti、CUDA11、Ubuntu、Pytorch1.5实验环境,在Tiny-DBNet模型中,用60张平均含有4个文本框的柱面电线杆标识牌测试,处理一张图像数据平均耗时1.2 s,包括柱面图图像矫正预处理、特征提取像素二值化分类和聚合后处理工作。批处理50张、100张、150张、200张图像分别耗时1.82 min、2.30 min、3.50 min、5.00 min,模型经过两阶段的像素处理,在批处理工作中还需要采用多批处理的相关技术继续改进提升检测时间。实验验证了模型适用于实际场景电线杆标识牌信息提取工作的实时拍摄输出和后台批量处理输出两种工作方式的可行性。
为了进一步探究本文提出的轻量级特征提取网络对图像特征提取的表现以及模型训练的收敛情况,在ICDAR2015数据集下,采用文本检测模型的分类损失和字符识别模型的回归损失的和作为Tiny_DBNet_CRNN模型损失,输出训练过程的损失函数值。
训练过程中的损失曲线如图12所示。从图中可以看出,随着迭代次数的增加,损失函数值均呈现下降趋势。对比来看,本文提出的轻量级特征提取网络更容易训练,在相同的训练次数下表现出更小的损失;且模型收敛速度较快,在迭代43次后,先于ResNet_50、ResNet_18网络趋于稳定,说明本文提出的特征提取网络更容易训练,对图像特征具有更强的表现力。
图12 不同特征提取网络下训练损失
本文提出一种用于柱面电线杆标识牌字符识别的Tiny_DBNet_CRNN模型,针对柱面电线杆标识牌这种特殊的研究对象采用反投影算法进行矫正预处理,使得边缘信息更加完整,显著提升了字符识别正确率。在此基础上构建了基于分割的轻量级可微二值化文本检测模型,在准确率下降0.60%的微小损失下,检测速度约提升3倍,参数规模总体下降45.15%。在整个柱面电线杆标识牌样本上,采用CRNN模型验证电线杆标识牌字符识别正确率达到95.11%。本模型轻量、高效、易训练,收敛速度快,为柱面电线杆标识牌信息高效识别提供了可行解决方案。