前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基于计算机视觉的水表读数读取 | 案例分享

基于计算机视觉的水表读数读取 | 案例分享

作者头像
AI算法与图像处理
发布2021-05-07 11:04:08
3.1K0
发布2021-05-07 11:04:08
举报
文章被收录于专栏:AI算法与图像处理

本文分享如何利用现有的技术解决 水表自动读数问题。 核心的思路是:定位数字区域并截取、将目标区域中的数字分割出来、识别各个位置的数字。 涉及的技术:YOLOv3 目标检测、图像处理、分类

可以自动化的任务必须是自动化的。但是,人类开发的普通任务被证明是由机器完成的复杂任务。图像中的数字阅读就是其中之一。

读取图像中数字的任务很容易被人类完成,但是当试图在机器上实现这一功能时,困难就出现了。光照条件、图像角度、噪声、清晰度等。有许多变量会影响系统的性能。

这个小项目分析了计算机视觉技术在用水表读数中的应用。

https://github.com/RodrigoSalles/Water_meter_computer_vision

确定目标

现在许多公司都接受通过电表/水表的照片来发送用电量和用水量的读数。这样公司就很容易面对成千上万需要处理的图像。

这个小项目旨在分析使这个过程自动化成为可能的技术。

通过做一点研究,你可以看到有几种解决方案。有些是“封闭式”的,而另一些只有在受控条件下才能表现良好。由于这些技术有很多应用的可能性,我发现多关注一点会很有趣,从而学到更多。

简而言之,项目的目标是读取仪表图像中的数字:

所使用的数据集来源:https://ieee-dataport.org/open-access/water-meter-dataset

思路拆解

如何读取图片中的数字?这里将这个问题分解成三个部分。

第一:在第一阶段的目标是找到一些方法来识别和截取感兴趣区域(roi),其中包括数字。

第二:现在的目标是分割第一步裁剪的图像中包含的数字

第三:读取步骤2产生的数字

现在开始做第一步:

有几种可能的方法来分割包含数字的区域。很多都是用来读取车牌的,基于形态学的操作,比如腐蚀、膨胀等。效果不错,但是这里想尝试一些更健壮的算法。例如使用卷积神经网络来完成这项任务。

为了实现这个目标,采用了YOLOv3系统(you look only once)。该算法利用了具有特殊性质的卷积神经网络。该网络只有完全连接的卷积网络(FCN)。它被称为Darknet-53,它包含53个卷积层,每个卷积层后面是一个batch normalization层和Leaky ReLU激活。(这里你也可以将其跟换成最新的算法例如 yolov4 yolov5 pp yolo 等等)

关于yolo 的训练教程,网上很多,这里分享一个youtube上分享的教程,以及一个包含1000多个水表图像的数据集(可以在这里找到)。

为了训练网络,我们需要自己标注图像。这里原作者采用LabelImg软件标记了500张图片(未公开)。

YOLO 教程:https://www.youtube.com/watch?v=_FNfRtXEbr4 数据集:https://ieee-dataport.org/open-access/water-meter-dataset

labelImg标注

这里使用google 的 colab来训练这个模型。在平台提供的GPU的帮助下,训练了5个小时,效果非常令人满意。

定位了感兴趣的区域后,很容易从获得的坐标中切出包含数字的区域。

测试图片:

第二步对裁剪的区域进行数字分割

裁剪的区域

这里使用传统的方法将第一步中的数字区域分割出来。具体的步骤如下:

1、将图片转为灰度图:

为问题选择了最佳阈值(使用TOZERO获得最佳结果-如果像素值小于所采用的限制,则将其设置为零,并保持其他值):

利用findContours函数(OpenCV)定位轮廓。对发现的轮廓进行排序,并根据其面积进行过滤。选择了最可能包含数字的区域的值。

所得结果如下:

这里比较尴尬的是,数字6没有被识别。

第三步:数字读取

MNIST dataset

最后一个阶段的任务是读取步骤2中分割的数字。为了完成这个任务,将采用另一个卷积神经网络,借助于著名的MNIST数据集进行训练。

MNIST数据集是一个缩写词,代表 Modified National Institute of Standards and Technology dataset。它是一个由60000个小正方形组成的数据集, 数字在0到9之间的28x28像素灰度图像。

算法得到的结果如下图所示。可以看出,网络表现良好,识别数字6的错误来自第二阶段。

下一步优化方向

该项目中最复杂的部分之一是分割。影响系统性能的因素很多,需要调整的参数也很多。如何改进这一制度?第一和第三阶段显示出良好的效果。错误出现在第二阶段。后面的数字识别也并不非常的准确。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-04-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AI算法与图像处理 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 确定目标
  • 思路拆解
  • 下一步优化方向
相关产品与服务
图像识别
腾讯云图像识别基于深度学习等人工智能技术,提供车辆,物体及场景等检测和识别服务, 已上线产品子功能包含车辆识别,商品识别,宠物识别,文件封识别等,更多功能接口敬请期待。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档