1.一种弱约束的水表读数识别方法,其特征在于:包括以下步骤:S1:通过读数区域检测网络对水表读数区域进行检测;
S2:通过光学字符识别网络OCR对检测出的读数区域中的数字进行识别,输出最终的读数结果。
2.根据权利要求1所述的弱约束的水表读数识别方法,其特征在于:在步骤S1中,具体包括以下三个步骤:
对读数区域的坐标和方向进行预测;
对读数区域坐标和方向进行纠正;
裁剪读数区域。
3.根据权利要求2所述的弱约束的水表读数识别方法,其特征在于:步骤S1中,基于卷积神经网络CNN构建读数区域检测网络,所述读数区域检测网络由多个CBL块、残差块和一个检测块构成,所述CBL块由一个卷积层、一个批量正则化BN操作单元和一个泄漏修正线性单元Leaky ReLU依次连接组成;所述残差块包括依次连接的1×1卷积层、BN操作单元、Leaky ReLU单元、3×3卷积层、BN操作单元、残差连接和Leaky ReLU单元。
4.根据权利要求3所述的弱约束的水表读数识别方法,其特征在于:所述读数区域检测网络的结构包括依次连接的第一CBL块、第二CBL块、第三CBL块、两个32通道的残差块、第四CBL块、四个64通道的残差块、第五CBL块、四个64通道的残差块、第六CBL块、八个128通道的残差块、检测块;
所述第一CBL块、第二CBL块中的卷积层的卷积核为3×3,输出通道数为16,卷积步长为
1;
所述第三CBL块中的卷积层的卷积核为3×3,输出通道数为32,卷积步长为2;
所述第四CBL块、第五CBL块中的卷积层的卷积核为3×3,输出通道数为64,卷积步长为
2;
所述第六CBL块中的卷积层的卷积核为3×3,输出通道数为128,卷积步长为2;
所述检测块Endblock具有三个并行的卷积层:第一分支用于预测水表读数区域的概率;中间分支用于回归水表读数区域的仿射矩阵,第三分支用于预测水表读数区域的方向。
5.根据权利要求4所述的弱约束的水表读数识别方法,其特征在于:还包括一个改进的多任务Loss函数来匹配EndBlock的三个分支:在每张输出特征图的每个像素点(m,n)上定义目标/非目标分类损失、仿射损失和目标方向损失,三种不同的损失来对应EndBlock中的三个分支;所述多任务Loss函数为:其中,λcls、λaff和λdire分别是三种损失的权重参数,(m,n)表示输出特征图的像素点,M,N分别表示输出特征图的宽和高;Lcls(pmn,tmn)为输出特征图像素点(m,n)的目标/非目标损失,tmn表示在像素点(m,n)的目标/非目标标签:当像素点(m,n)属于读数区域时tmn=1,否则为0;pmn表示预测像素点(m,n)是否属于读数区域的概率,具体计算公式如下:Lcls(pmn,tmn)=‑(tmnlog(pmn)+(1‑tmn)log(1‑pmn)) (2)T
Laffine(Tmn(b),Amn(d))为像素点(m,n)的仿射损失,令di=[xi,yi] ,i∈{1,2,3,4}表示T
水表读数区域四个顶点的顺时针坐标,从左上角开始,d1为其左上点;令b1=[‑0.5,‑0.5] ,T T T
b2=[0.5,‑0.5] ,b3=[0.5,0.5] ,b4=[‑0.5,0.5]代表以原点为中心的单位矩形的四个顶点;
EndBlock的中间分支在通道方向输出六个仿射矩阵参数:O3,O4,O5,O6,O7,O8,用于构建仿射矩阵,然后利用该六个参数,通过公式(3)计算得到预测的水表读数区域的四个顶点的坐标,具体计算公式如下:
O3和O7采用最大化来确保对角线为正;
通过下式实现归一化:
在公式(4)中,(m,n)代表当前像素点的位置坐标值,N表示网络下采样的倍数,d表示水表读数区域四个顶点的真实坐标值;
然后使用L1损失函数来计算水表读数区域的仿射损失,Tmn(b)是通过仿射变换预测的水表读数区域的坐标值,因此Laffine(Tmn(b),Amn(d))的计算公式如下:其中,||·||1表示L1范数操作;公式(1)中的第三项 为目标方向损失,表示水表读数区域的真实方向;
定义以下两种情况以针对平面360°的所有可能的目标旋转:当读数区域与水平向右方向的夹角的绝对值大于90°时 此时判定读数区域方向为倒,若小于或等于90°时此时判定读数区域方向为正;umn表示预测像素点(m,n)所对应的读数区域的方向是否为正的概率;针对 使用L2损失函数来计算目标方向的损失,具体计算公式如下:
其中,||·||2表示L2范数操作。
6.根据权利要求1所述的弱约束的水表读数识别方法,其特征在于:步骤S2中所述读数识别网络,采用改进的Fast‑YOLOv2网络以保障小目标的准确识别;首先,根据读数区域中每个数字位置信息进行排序,然后通过设置数字之间的距离阈值,判断读数区域的数字个数,并根据目标面积的相对大小,进行过滤筛选,保留面积相对较大的目标。
7.根据权利要求6所述的弱约束的水表读数识别方法,其特征在于:所述读数识别网络的结构包括依次设置的第一CBL块、第一最大池化层、第二CBL块、第二最大池化层、第三CBL块、第四CBL块、第五CBL块、第三最大池化层、第六CBL块、第七CBL块、第八CBL块、第九CBL块、第十CBL块、第十一CBL块第十二CBL块;
所述第一CBL块中的卷积层的卷积核为3×3,输出通道数为32,卷积步长为1;
所述第二CBL块、第四CBL块中的卷积层的卷积核为3×3,输出通道数为64,卷积步长为
1;
所述第三CBL块、第五CBL块、第七CBL块中的卷积层的卷积核为3×3,输出通道数为
128,卷积步长为1;
所述第六CBL块、第八CBL块、第十CBL块中的卷积层的卷积核为3×3,输出通道数为
256,卷积步长为1;
所述第九CBL块、第十一CBL块中的卷积层的卷积核为3×3,输出通道数为512,卷积步长为1;
所述第十二CBL块中的卷积层的卷积核为1×1,输出通道数为30,卷积步长为1。
8.根据权利要求7所述的弱约束的水表读数识别方法,其特征在于:所述Fast‑YOLOv2的Loss函数是目标置信度损失、非目标置信度损失、位置损失和目标类别损失的总和,计算公式如下:
其中,λconf_pos、λconf_neg、λcoord和λclass分别表示四种损失的权重参数,(m,n)表示输出特征图的像素点,b表示锚点anchor的编号,M,N分别表示输出特征图的宽和高,B表示每个像素点的anchor数量;Lconf_pos(pmnb,tmnb)和Lconf_neg(pmnb)分别为像素点(m,n)的第b个anchor的目标/非目标置信度损失,tmnb表示在像素点(m,n)第b个anchor是否属于目标的置信度:当像素点(m,n)的第b个anchor属于读数时tmnb=1,否则为0;pmnb表示预测像素点(m,n)第b个anchor是否属于读数的置信度,目标/非目标置信度损失使用L2范数进行计算,计算公式如下:
Lconf_pos(pmnb)=||1‑pmnb||2 (8)Lconf_neg(pmnb)=||0‑pmnb||2 (9)为像素点(m,n)的第b个anchor的位置损失,vmnb表示预测像素点(m,n)第b个anchor预测目标的x,y,w和h,其中x和y为所预测目标中心的坐标值,w和h分别为所预测目标的宽和高, 表示像素点(m,n)第b个anchor所属目标真实的x,y,w和h;这项损失分两部分计算,使用L2范数计算x与y的损失,以及计算w和h的平方根的损失,计算公式如下:为像素点(m,n)的第b个anchor的类别损失, 表示像素点(m,n)第b个anchor所属类别,若类别为i,则 其它为0,cmnb表示像素点(m,n)第b个anchor类别预测值;读数一共有10种情况,所以C=10,使用L2范数,具体的计算公式如下: