APP下载

基于改进YOLOv4网络的水表读数识别方法

2022-08-23翟娅娅朱磊张博

科学技术与工程 2022年21期
关键词:水表读数字符

翟娅娅, 朱磊, 张博

(西安工程大学电子信息学院, 西安 710048)

近年来,随着水表计量技术、计算机视觉技术的发展,远程抄表系统逐渐代替人工抄表,减轻人力劳动的同时避免了假抄及误抄的问题。水表读数准确识别是远程自动抄表系统的核心,其与所处的环境密切相关,环境不同,识别方法也不尽相同[1]。传统水表读数识别方法先通过图像预处理检测字符的目标区域,接着对字符进行分割,并采用某种字符识别方法对每个字符逐一进行识别,该类方法适用于场景较为单一且水表图片清晰的情况,对于复杂场景下拍摄的水表读数难以进行准确的识别。因此,研究能够对不同环境下拍摄的水表读数均能精确识别具有重要的现实意义和理论价值。

当前水表读数自动识别的主流方法,大致可分为传统方法和深度学习方法两大类。徐平等[2]利用改进的Hausdorff距离模板匹配方法进行水表读数识别;高菊等[3]根据水表字符特征,提出了一种有效的水表数字二次识别算法;陈英等[4]将预处理后的水表字符分割成单个字符,采用粗网格和穿越次数作为特征,通过特征向量的欧氏距离进行水表字符识别。上述方法对普通场景水表图像的字符识别精度较高,但对于受雾化、抖动、污渍等干扰的复杂场景水表图像字符识别精度欠佳,同时对两个连续数字各占一部分的“半字”识别能力弱。

近年来,深度学习方法被用于水表读数识别应用中。 Yang等[5]提出用全卷积序列识别网络模型进行水表读数识别,并提出一种增强损失函数来解决水表图像“半字”的识别问题。康鑫等[6]提出先使用旋转区域卷积神经检测水表框,然后对水表框采用基于注意力机制的文本识别算法预测水表字符。车牌识别与水表读数识别是比较接近的应用,二者在技术上有不少可以相互借鉴之处。孙阳等[7]在分割出来的单个字符中引入卷积神经网络来改善低清晰度下的车牌识别。李祥鹏等[8]提出用快速区域卷积神经网络(faster region convolutional neural networks,Faster R-CNN)算法进行车牌定位,用K-means++算法选择最佳车牌区域尺寸,用增强的AlexNet网络模型识别车牌读数。深度学习方法有效提高字符识别准确率,上述先分割字符再单个字符识别的方法,识别过程相对烦琐;而采用端到端的网络模型方法,虽解决了识别过程烦琐的问题,但存在参数量大、难以部署于低算力嵌入式设备的问题。

为解决现有水表读数识别方法存在识别率低及模型参数量大等问题,现提出一种参数量较小、检测精度较高的改进YOLOv4网络,用于实现水表字符的检测;根据网络模型输出的边框信息,利用字符边框定位的水表读数提取方法,来实现水表读数特别是“半字”的识别问题。

1 YOLOv4目标检测网络

YOLOv4是著名的YOLO[9-12]目标检测网络进一步优化平衡目标检测速度和精度的改进版本,主要由特征提取的主干网络、特征融合的颈部网络及进行分类回归的预测头三部分构成。

YOLOv4网络的最前端,是对输入数据进行马赛克数据增强、交叉小批量标准化以及自对抗训练的预处理结构。紧邻预处理结构的主干网络,是由YOLOv3的Darknet网络与交叉阶段部分连接网络(cross stage partial network, CSPNet)[13]联合构建的CSPDarknet特征提取网络,由于在特征图中融合了梯度信息,因此不仅提高了模型的学习能力,降低了计算复杂度,而且改善了网络的识别效果。主干网络之后的颈部网络,借鉴了路径聚合网络(path aggregation network, PAN)的思想[14],在原有特征金字塔(feature pyramid networks, FPN)基础上,引入空间金字塔池化模块[15],通过最大池化将输入特征图转变为不同尺度的特征图并将其与原特征图进行拼接的方式,增大了主干特征的接受范围,显著的分离了上下文特征;另外,颈部网络将自顶向下传达强语义特征的FPN与从底向上传达强定位特征的PAN结合,从不同的主干层对不同的检测层进行参数聚合,有效改善了深层网络丢失浅层特征信息的问题。颈部网络之后的预测头改进了YOLOv3网络的损失函数和非极大值抑制(non-maximum suppression, NMS),其中,采用完全交并比损失来综合检测目标框重叠面积,使得预测框的回归速度与精度均达到最优,同时NMS算法采用距离交并比损失(distance-IoU loss, DIoU-NMS)来综合检测重合边界框的交并比(intersection over union, IoU)和距离信息,从而有效提升了重叠目标的检测性能。

2 基于改进YOLOv4网络的水表读数识别方法

2.1 改进YOLOv4网络的水表字符检测

为了不降低水表字符检测精度,有效降低网络模型参数量,提出了一种如图1所示的改进YOLOv4网络。该网络利用由深度可分离卷积(简称为D)、批标准化(简称为B)、Relu6激活函数(简称为R)联合构成的DBR模块来改良标准卷积;构建了提升主干网络性能的改进逆残差组件(improved inverse residual component, IIRC),在预测输出头引入了加权平均非极大值抑制模块(weighted average-NMS, Wa-NMS),提升“半字”检测性能。

2.1.1 YOLOv4网络卷积的改进

网络模型中卷积操作主要用于提取更多的图像特征,因此参与网络模型计算的参数量大多比较庞大,而水表读数特征相对简单,用标准卷积会使得特征存在较大冗余,导致网络模型难以轻量化。为了有效减少YOLOv4主干网络模型的参数量,借鉴适用于嵌入式移动设备的轻量模型Mobilenetv1[16],将标准卷积替换为深度可分离卷积,如图2所示。

图1 改进的YOLOv4网络结构Fig.1 Improved YOLOv4 network structure

图2 标准卷积与深度可分离卷积Fig.2 Standard convolution and depth separable convolution

图2(a)中传统标准卷积是将各通道的输入特征图与相应的卷积核卷积并相乘得到输出特征。图中Dx和Dy分别为输入数据的长度和宽度,标准卷积操作的计算量X1为

(1)

式(1)中:M和N分别为输入和输出数据通道数;Dk为卷积核的尺寸;Dw和Dh分别为输出数据的长度和宽度。

图2(b)中将标准卷积操作分为一个3×3的深度卷积(depthwise convolution, DC)和一个1×1的逐点卷积(pointwise convolution, PC)两部分,以形成深度可分离卷积,其卷积操作计算量X2为

(2)

由式(1)和式(2)可得出标准卷积与深度可分离卷积之间的计算量比值为

(3)

由式(3)可知,使用深度可分离卷积,网络模型的参数量会明显减少。因此,如图1所示,在改进YOLOv4网络中,利用深度可分离卷积、批归一化及Relu6激活函数共同构成DBR模块,并用来代替卷积、批标准化及Leaky Relu函数组成的CBL模块。

2.1.2 YOLOv4主干网络的改进

为了保持网络模型的检测精度,并进一步降低模型的参数量,改进YOLOv4借鉴Sandler等[17]提出的Mobilenetv2瓶颈结构改进YOLOv4的CSPDarknet主干网络。Mobilenetv2瓶颈结构中的逆残差组件如图3(a)所示,首先用1×1卷积提升通道数,再用3×3的DC进行特征提取,最后用1×1的PC降低维度。该逆残差组件大为降低了参数量,但提取特征过少,从而影响检测精度。为此,通过在原来逆残差组件3×3的DC后引入SE注意力机制模块[18],来构建如图3(b)所示的改进逆残差组件IIRC。IIRC主要在原有逆残差组件基础上,衍生出压缩和激发两个步骤,压缩步骤在特征图上执行全局平均池化,得到当前特征图的全局压缩特征量,而激发步骤则通过两层全连接的主干结构得到特征图中每个通道的权值,并将加权后的特征图作为下一层网络的输入。引入SE注意力机制的IIRC,能对不同通道提取更多细节特征,降低参数量的同时保持较高检测精度。

图3 改进的YOLOv4主干网络Fig.3 Improved YOLOv4 backbone network

2.1.3 YOLOv4预测输出头的改进

YOLOv4网络直接用于水表读数检测,其DIoU-NMS会选中置信度最高的边界框[19],因此其他边界框在后续的比较中,会因为与置信度最大框的重叠面积过大而被删除,从而增大了错检与漏检的概率。另外,传统水表时常出现两个字符上下并列且各占一部分的“半字”情况,进而导致漏检或错检概率进一步增大。为此,改进YOLOv4网络在预测输出头部分引入了Wa-NMS。引入Wa-NMS后,一个目标被检测出来的所有边框将保留大于非极大值抑制阈值的预测框,对置信度最高的预测框以及交并比大于阈值的预测框进行坐标加权平均,从而获得最终输出的预测框。Wa-NMS的实现用公式描述为

(4)

Wi=CiIoU(Bi,bmax)

(5)

(6)

式中:DetectionResult为预测框;GroundTruth为人工标记框;n为预测框的数量;i为数字变量;BOX为边界框;加权因子Wi等于第i个置信度Ci与第i个边界框Bi的交并比和具有最大置信度边界框IOU(Bi,bmax)的乘积。

采用Wa-NMS通过多框共同决定一框的策略,能有效降低水表读数中“半字”检测存在的漏检和错检问题,提升水表读数识别精度。

2.2 基于字符边框定位的水表读数提取

水表读数识别方法利用改进YOLOv4网络检测出水表读数字符后,将采用基于字符边框定位的方法来提取水表读数的具体数值。

改进YOLOv4网络通过3个不同的尺度对水表字符进行预测,预测信息包括:矩形框boxes的信息[Tx,Ty,Tw,Th]、检测框置信度score及框类别标签ClassIDs,其中,Tx、Ty、Tw、Th分别为预测框左上角的横坐标、纵坐标与右下角的横坐标、纵坐标。通过设置检测框置信度阈值为0.5和IoU=0.4能有效地检测到每个水表读数字符,检测结果示意图如图4所示。

水表读数的分布存在明显的规律性,即:水表字符有5位读数,且按0~9依次变化;每个字符之间存在一定的间隙;时常出现两个字符上下并列且各占一部分的“半字”情况,而两个字符所占比例的差异决定了“半字”的实际精度。根据这些先验信息,将水表读数分为无“半字”与有“半字”读数两类,而基于字符边框定位的方法来提取水表读数具体数值的流程如图5所示。

d1为上边框的高度;d2为下边框的高度图4 水表检测结果示意图Fig.4 Schematic diagram of water meter test results

图5 基于字符边框定位的水表读数提取流程图Fig.5 Flow chart of water meter reading extraction based on character frame positioning

在改进YOLOv4网络输出预测信息后,通过每个预测框的Tx值对预测框进行由小到大的排序。对无“半字”的水表读数识别,直接输出排序后的ClassIDs作为水表读数的数值。对有“半字”的水表读数,为了精准识别到小数点后一位,首先,依次对前目标框boxes[i]与后目标框boxes[i+1]的Ty值做差,对比得到Ty差值最小的boxes[i]与boxes[i+1],其中,boxes[i]为i目标框的位置信息;接着根据两者目标框的Th值来确定哪个目标框位于水表读数的上部,并将上部字符作为该位水表读数的整数位;进而通过判断boxes[i]与boxes[i+1]各自Ty与Th的差值,通过d1和d2所占的比例,得到该位水表读数的小数位,用T表示;最后整合输出所有的整数位与小数,即可获得包含1位小数的6位完整水表读数数值,如图6所示。

图6 水表读数识别效果图Fig.6 Water meter reading recognition effect diagram

3 实验结果与分析

3.1 实验平台

为了验证所提方法性能,选用YOLOv3、YOLOv4、YOLOv4-Mobilenetv3(YOLOv4-MV3)、SSD和RetinaNet五种网络模型作为对比方法。各检测方法实验的环境均为Ubuntu 16.04操作系统,深度学习硬件平台为i5-7500 CPU @3.4GHZ,显卡型号为GTX 1080。

3.2 实验数据集

实验所用水表数据集均通过30万像素的OV7725摄像头拍摄得到。水表数据集共5 567张,其按类别分为无“半字”905张和有“半字”2 190张,同时包含受光照不均、雾化、抖动等干扰的水表复杂场景图像618张。

实验中训练模型采用PASCAL VOC的数据集格式,先用Labelimg 标注工具对每张图片目标物体所在区域进行手工数据标注矩形框,得到真实框 ground truth用于训练。数据集的标签种类依据水表读数0~9设置为10类,如读数0设置为“0”标签。数据集按照8∶1∶1的比例划分为训练数据集、验证数据集与测试数据集。

3.3 模型训练

为了确保实验的公平性,本文方法网络与其他5种网络的模型训练参数保持一致,输入的原始水表图片为192×256像素,通过输入将改进的YOLOv4网络中调整为416×416像素。初次训练设置批量为8,冻结迭代次数为50,学习率为0.001;第二次训练设置批量为8,迭代次数为100,学习率为0.000 1。

为缩短训练时间同时提高模型的泛化能力,实验引入迁移学习,预先将训练了11 520张水表读数图片的网络模型迁移到改进的YOLOv4网络模型中,然后使用上述训练参数对预训练模型进行训练调整。

3.4 评价指标

实验选用了Padilla等[20]提出的准确率(precision,P)、召回率(recall,R)、平均准确率(average precision,AP)、调和均值F1以及平均精度均值(mean average precision,MAP)5个指标来进行评价,评价指标的计算公式分别为

(7)

(8)

(9)

(10)

(11)

式中:TP为正确检测到水表读数的数量;FP为检测的水表读数出现分类错误的数量;FN为图片中的目标漏检的数量;K为标签样本的总数量;F1为准确率P和召回率R的调和平均值;AP为准确率与召回率所绘制的曲线面积图;MAP为P和R所绘制曲线面积图的均值。P值越大,说明水表读数检测的准确率越高;R值越大,表明水表读数检测中漏检概率越低。但有时候P和R是一对矛盾值,因此采用F1来评价模型好坏,F1越逼近于1说明模型优化的越好。MAP值越高,证明水表检测模型具有更强的鲁棒性和泛化能力。另外,实验中还记录了各网络模型所占内存的大小,用来评价其网络参数量的多少。

3.5 水表读数识别结果

实验有所识别方法对普通和复杂场景图像读数的识别性能指标对比如表1和表2所示,识别效果对比如图7所示。

表1 各方法对普通场景水表图像读数识别的指标对比Table 1 Comparison of indicators for recognition of water meter image readings in common scenes by various methods

表2 各方法对复杂场景水表图像读数识别的指标对比Table 2 Comparison of indicators for recognition of water meter image readings in complex scenes by various methods

图7 各方法对多种场景水表读数的识别效果对比图Fig.7 Comparison chart of the recognition effect of various methods on water meter readings in various scenarios

由表1可知,在普通场景下,本文方法性能指标均优于其他5种网络模型方法,其中,准确率提升了0.04%以上,召回率提升了0.05%以上,F1提升了0.1%以上,MAP提升了0.03%以上,模型参数量压缩了14.3%以上。由表2可知,在复杂场景下,本文方法的性能指标与其他5种网络模型方法相比具有更大的优势,其中,准确率提升了0.11%以上,召回率提升了0.38%以上,F1提升了0.4%以上,MAP提升了0.06%以上。

图7展示了各方法对数据集中选取的1幅普通场景水表图片(从左到右第一张)和4幅复杂场景水表图片(从左到右第二~第五张,依次为曝光场景、黑暗场景、图像传感器抖动场景、出现水滴或雾化污染场景)的读数识别效果对比图。由图7可知,对于普通场景水表图像,各方法均可正确检测水表读数,但对于复杂场景水表图像,5种对比方法均出现了错检或漏检问题。如在曝光场景下,YOLOv4-MV3出现漏检情况;在黑暗场景下,YOLOv4-MV3以及YOLOv3出现漏检情况;在图像传感器抖动场景下,YOLOv3以及SSD出现漏检情况,YOLOv4-MV3、RetinaNet以及YOLOv4出现将数字1错检成0的情况;在出现水滴或雾化污染场景下,YOLOv4-MV3、SSD及YOLOv3出现漏检情况,YOLOv4与RetinaNet出现将读数7错检成1的情况;而本文方法均能够正确地检测出水表读数,显然,本文方法对复杂场景图像及“半字”读数具有更好的识别效果。

4 结论

提出了一种基于改进YOLOv4的水表读数识别方法。该方法改进YOLOv4利用深度可分离卷积代替原有的标准卷积,并在此基础上引入SE注意力机制和MobileNetv2瓶颈结构,使得网络模型的参数量和计算量降低为原来的1/6左右,同时结合加权平均非极大值方法有效改善了水表读数字符特别是“半字”的漏检与错检问题。由实验结果可得,所提方法的准确率、召回率等性能指标均优于对比方法。下一步工作是将其应用于低算力嵌入式设备中,为实现商业化提供可能。

猜你喜欢

水表读数字符
论高级用字阶段汉字系统选择字符的几个原则
字符代表几
一种USB接口字符液晶控制器设计
图片轻松变身ASCⅡ艺术画
水表检定装置不确定度分析计算的相关思考
防冻水表
读数
读数
读数
读数