本发明涉及人工智能技术领域,具体涉及一种基于深度学习的指针式水表读数检测方法。
背景技术:
随着人工智能技术的不断推进和大数据时代的到来,深度学习技术在文字识别、图像识别等领域突破了多个难题,以及近年来显卡等硬件技术日新月异的发展,为基于深度学习网络的进一步实际应用提供了可靠的技术基础。
日常用水作为每家每户的必需品,水费收缴也成为不可或缺的工作,但水表数据记录一直是全国一个耗时又易错的难题。常见记录方式有:(1)人工抄表。这种方式常常花费大量的人力和物力,易出错且速度慢。(2)可自动发送数据的智能电子水表。目前已有部分新建小区采用,但由于这类水表的造价高昂、安装条件要求高,大部分老式楼房并不适合安装,因而难以普及,使用量极少。(3)基于图像识别技术的自动检测和识别水表图片中的读数。通过摄像头拍摄水表图像,利用传统图像识别方法或者深度学习网络进行图像检测与识别,这种方法成本较低,易于推广。但已有基于传统图像识别方法的指针式表盘检测,检测准确度容易受图像噪声的影响,精度也无法满足实际应用的需要。且已有的方法主要针对压力表、监测仪表等具有细长指针的表盘,并不适应于指针式水表的检测。而已有的基于深度学习网络的检测模型有fastr-cnn、ssd、yolo等,虽然各有优势,但是目前所作的研究工作主要是针对数字式表盘,而对指针式表盘的检测与识别效果并不理想,难以广泛应用,其中存在的主要问题是水表中的指针式表盘区域分散,指针短小,表盘刻度小,指针在阴影等干扰因素下特征不明显等。
技术实现要素:
为了克服现有技术存在的缺点与不足,本发明提供一种基于深度学习的指针式水表读数检测方法。
本发明采用如下技术方案:
一种基于深度学习的指针式水表读数检测方法,包括如下步骤:
s1采集含有指针式表盘的水表图片,对图像进行预处理;
s2对预处理后的图像指针表盘进行标注,制作数据标签,将数据标签随机划分成训练集和测试集;
s3构建基于深度学习网络的检测模型;
s4使用训练集训练检测模型,得到适用于指针水表读数的检测模型,并将测试集输入训练好的检测模型中,测试检测模型的性能。
所述s3中基于深度学习网络的检测模型包括基于残差网络的特征提取模块、用于获取感兴趣区域的rpn模块、用于获取分数地图的分类模块及位置敏感的roipooling模块。
所述rpn模块还包括bottleneck结构的残差块,rpn模块通过对预处理后图片每个区域与anchor的偏移量计算及区域隶属于不同类别概率计算,然后根据偏移量及概率筛选出感兴趣区域。
所述分类模块包括resnet101的conv5_x部分及多尺度特征检测部分以及一个卷基层部分,将多尺度特征检测部分的输出及resnet101的conv5_x部分的输出作为输入给卷积层,进一步输出分数地图。
所述卷积层增加一个bottleneck结构的残差块。
所述位置敏感的roipooling模块是对感兴趣区域及分数地图进行pooling;
输入为k2×(c+1)×w′×h′,其中k2为分数地图的尺寸,(c+1)为类别数,w′和h′为区域的宽和高,输出为一个为k2×(c+1)的立体块;
对输出进行投票得到最后的结果,即根据每个区域所属的类别和相应的概率,得到位置敏感区域。
所述anchor设置长度比例为1:1。
所述水表图片中水表指针水平旋转在±30度以内。
本发明的有益效果:
(1)本发明可以大大缩短抄表人力和物力的投入,只需要对水表进行拍摄取样,适合大量水表图片数据的检测;
(2)基于深度学习的神经网络,充分利用了深度网络自学能力,提取水表图像中的指针表盘的图像特征;
(3)通过在rpn模块和分类模块的改进,有效的提高检测准确率和改善因网络过深导致的检测准确率降低的问题;
(4)本发明的模型检测准确率较高,速度较快,鲁棒性强,不仅可以有效检测到指针式表盘,更可以根据指针位置进行分类,亦有利于进一步的指针表盘识别工作。
附图说明
图1是本发明的工作流程图;
图2是本发明检测模型的结构示意图;
图3是本发明改进的rpn模块示意图;
图4是本发明改进的分类模块结构示意图;
图5是本发明实施例中检测结果示意图。
具体实施方式
下面结合实施例及附图,对本发明作进一步地详细说明,但本发明的实施方式不限于此。
实施例
如图1所示,一种基于深度学习的指针式水表读数检测方法,包括采集预处理步骤、制作数据集、构建基于深度学习网络的检测模型、训练模型和测试模型步骤,具体为:
一采集和预处理步骤
用摄像头或移动终端等具有拍摄功能的设备对含有指针式表盘的水表进行图像采集,对图像进行预处理,无需修改原始水表设备,只要拍摄的图像包含水表中的指针式表盘,且水平旋转在±30度以内,正常清晰度即可。并对图片做正方形剪裁、空白处用黑色填充等基本图像处理。且不受限于其他因素,既可用于纯指针式表盘的水表读数检测,亦可用于含有数字式和指针式表盘的水表读数的检测。
二制作数据集
对处理后的图像指针表盘进行标注,制作数据标签,针对水表特性,数据标签将指向不同数字的指针式表盘标注为不同的对象,具体是:当水表指针指向数字“1”到指向数字“2”之间的标注为“数字1”,把指向数字“2”到指向数字“3”之间的标注为“数字2”,一共可得到11类(含背景),有利于指针式表盘的进一步识别工作,将数据标签按照4:1的比例随机划分成训练集和测试集,且使每种不同的水表图片,在训练集和测试集中都有存在。
具体标注可以分“数字0”、“数字1”、“数字2”……“数字9”共11类(包含背景),亦或更加细分为“数字0”、“数字0.5”、“数字1.0”……“数字9”、“数字9.5”共21类。
三构建基于深度学习网络的检测模型
如图2所示,检测模型基于rfcn网络,根据水表中的指针式表盘特性,进行结构改进,整体结构分为基于残差网络的特征提取模块、用于获取感兴趣区域的rpn模块、用于获取分数地图的分类模块及位置敏感的roipooling模块。
构建残差网络的特征提取模块:
本发明采用的基于残差网络的特征提取模块,考虑到残差网络计算量小,易于优化,收敛速度块等优势。采用resnet101的conv1、conv2_x、conv3_x、conv4_x四部分,仅需进行一次特征提取工作,即可共享给后续的改进rpn模块和改进分类模块,大大节省了因多次特征提取的运算时间,其主要结构如表1所示。
表1
构建用于获取感兴趣区域(roi)的改进rpn模块:
改进的rpn模块分为对区域与anchor的偏移量计算,和对区域隶属于不同类别概率的计算两部分。anchor是提前设定好的不同尺度的矩形框,本模块前一部分是将区域的偏移量和anchor计算出对应区域。把所有区域和对应的概率值进行排序,进行非极大值抑制算法(nms)筛选出感兴趣区域。同时,为了解决因网络过深导致的检测准确率降低问题,在计算每个区域的偏移量前增加一个bottleneck结构的残差块,主要结构和关键参数如图3所示。
优选地,在rpn_branch2a和rpn_branch2b两个卷积层后增加对应的batchnorm层、scale层、relu层,在rpn_branch2c卷积层后增加对应的batchnorm层、scale层。
改进的rpn层主要结构有,rpn_conv/3×3、rpn_branch2a、rpn_branch2b、rpn_branch2c、rpn/output、rpn_data、rpn_bbox_pred、rpn_loss_bbox、rpn_cls_score、rpn_cls_score_reshape、rpn_loss_cls、rpn_cls_prob、rpn_cls_prob_reshape及proposal
构建用于获取分数地图(scoremaps)的改进分类模块:
改进的分类模块分为resnet101的conv5_x部分、新增的多尺度特征检测部分、以及将前两个部分的输出作为输入的卷积层部分。其中,多尺度特征检测部分采用的输入是步骤1中resnet101的conv4_x部分中的三个卷积层。为了提高模型准确率,加速收敛,增加了多尺度检测部分,其输入为特征提取模块中conv4_x部分的三个数据;同时,为了解决层深导致的网络退化问题,在这个卷积层中的计算scoremaps前亦新增一个bottleneck结构的残差块。输出分数地图。
主要结构和关键参数如图4所示,改进的分类模块主要结构有res4b3_decrease、res4b10_decrease、res4b19_decrease、det_multi_scale_feat、det_conv/3×3、det_branch2a、det_branch2b、det_branch2c、det/output、res5c_decrease、det/output/res5c_decrease、conv_new_1、conv_new_1_branch2a、conv_new_1_branch2b、conv_new_1_branch2c、conv_new_2、rpn_cls、rpn_bbox。
优选地,多尺度特征检测部分采用的是conv4_x部分中res4b3、res4b10、res4b19三层。在conv_new_2_branch2a和conv_new_2_branch2b两个卷积层后增加对应的batchnorm层、scale层、relu层,在conv_new_2_branch2c卷积层后增加对应的batchnorm层、scale层。
构建位置敏感的roipooling模块:
位置敏感的roipooling模块将改进的rpn模块输出的感兴趣区域在改进的分类模块得到的分数地图上进行pooling。输入为k2×(c+1)×w′×h′,其中k2为分数地图的尺寸,(c+1)为类别数,w′和h′为区域的宽和高,输出为一个为k2×(c+1)的立体块。然后对输出进行投票(vote)得到最后的结果,即每个区域所属的类别和相应的概率。此过程即为选择性池化。
四、训练检测模型
针对搭建完毕的检测的模型,输入训练集使其不断地学习特征,并且根据训练误差进行不断修正,完成网络训练。针对水表中小表盘特点,anchor设置长宽比例为1:1,并调整anchor的基本尺度,稍大于指针式表盘大小即可。
优选地,具体参数为迭代100000次,base_lr=0.0001,stepsize=60000。而anchor具体参数为base_size=16,ratios=[1],scales=[4,8,16]。增加多种规模以适应不同图片中指针式表盘大小不一的情况。
五、测试检测模型
使用测试数据集,对训练好的模型进行检测效果检验。将测试集随机排序,放入训练好的模型中进行指针式水表表盘的位置检测和不同指针朝向的分类,并输出检测模型的性能评估。图5为本发明实施例中指针式水表检测结果示意图。
本发明采用基于rfcn网络的改进模型,有效的利用了深度学习网络特征学习和自我纠错能力,解决了人工抄表慢,指针式水表表盘检测准确率低等问题。本发明模型具有较高的检测性能,分类后的平均检测准确率超过97%,适合大规模数据的检测,具有良好的实际应用价值。
上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受所述实施例的限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围之内。