基于电力行业的智能读表系统--基于RK3399嵌入式设备部署

本文介绍了一种基于深度学习的智能读表系统,该系统能够自动识别传统机械指针表具的读数,解决了电力能源厂区内人工读表的难题。系统采用目标检测加语义分割的技术方案,并详细介绍了模型训练、优化及边缘部署的过程。

前言

新基建
本文主要讲述,基于RK3399pro开发,C++实现工业落地。

一、背景

【需求】
1. 电力能源厂区存在很多传统的机械指针表具(原因:成本低,准确度高,工作范围比较广,比如高温等能比较好的工作,纯量占有比较大的数量)。与数字式仪表不同,机械表具无法将表具度数实时发送到监控系统,需要人工进行读数检查。
2. 电力能源厂区需要消耗大量的人力去现场读表巡检,增加了企业的人力成本,巡检周期长、频率低,更是让设备的质检、系统的稳定运行得不到有效保证。
3. 如果在非巡检期间表具度数到达异常区域,表具无法发送告警信息,异常无法被很快发现。

总结:电力能源厂区需要定期监测表计读数,以保证设备正常运行及厂区安全;

【现状】:

  • 厂区分布分散,表计种类多、散
  • 人工巡检耗时长,无法实时;
  • 部分工作环境危险,且难以触达;
  • 人工读表容易产生误差。

二、系统架构

智能云读表系统

服务端推理方案
终端通过摄像头获取表计图像,通过网络将图像回传到云端服务,由云端服务器进行推理识别。该方案在GPU上推理进行。(如,直接使用Paddle Inference在GPU上进行推理)
以LoRa具体讲解就是:

  1. LoRa终端设备携带摄像头放置在仪表前获取仪表图像,并通过LoRa无线网络传输给普通的LoRa网关。
  2. LoRa网关通过LTE或者广域网络图片传输到CLAA的智能云服务平台,由智能云服务器进行表具读数识别,并将结果发送给各个用户应用服务器。
    在这里插入图片描述

边缘智能读表系统

移动/嵌入式端推理方案
终端通过摄像头获取表具图后通过自身附带的AI芯片在嵌入式系统进行推理。(如使用基于Paddle-lite开发对应的推理程序进行推理)
以LoRa具体讲解就是:

  1. LoRa终端设备携带摄像头放置在仪表前获取仪表图像,并通过LoRa无线网络传输给LoRa边缘智能网关设备。
  2. LoRa边缘智能网关内部署智能读表推理进程,输入仪表图片,输出仪表读数,并发送给用户应用服务器。
    在这里插入图片描述

三、技术方案

面临的问题:

  1. 表具种类多(比如圆的、方的等),相似度大,样本采集困难,不易分类
    外表高度相似,只有量程不同;
    外表一致,刻度数目相同,只有单位不同;
    表具单位被指针遮挡无法识别。
  2. 在复杂环境下,读数的精确度不容易保证
    表具图片过小不清楚;刻度细小,无法完全识别。
    表具图像倾斜角度大;指针高度导致读数误差。
  3. 室外环境恶劣导致读数难以识别
    光源不确定,明暗差别大;
    镜面反光或阴影强烈;
    雨水或成图尘土;
    污泥或异物遮挡。
    在这里插入图片描述

总体方案

传统机械式指针表具无法将表具读数外传,需要人工进行读取,本项目使用深度学习方法实现传统机械式指针表具读数的自动读取。
在这里插入图片描述
针对推理部署,本项目提供了使用C++开发的,可以在RK3399Pro ARM64平台、linux系统上运行程序源码,以及程序运行所需要的针对ARM平台优化过的模型文件。

总体方案:目标检测+语义分割
表计读数方案共分为3个步骤
第一步【检测表计】:使用目标检测算法检测待识别表具区域
第二步【分割指针&刻度】使用语义分割算法分割出表具的刻度和指针
第三步【计算读数】计算表具读数

三步骤技术实现具体如下:

  1. 目标检测
    平衡考虑算法的推理速度和检测效果,目标检测算法采用yolov3检测框架,主干网络使用MobileNetv2实现。目标检测部分只做检测,不对表具进行分类。

  2. 语义分割
    根据目标检测的结果,从原图中裁剪出表具区域图像,作为语义分割模型的输入,考虑到刻度和指针均为细小区域,采用分割效果较好的DeepLapv3+模型实现。(不过后来验证,将DeepLapv3+换成了U-Net,原因后续会提到)

  3. 读数计算
    预先配置表具相关数据(单位、量程等),结合语意分割结果计算出表具最终读数。即,根据指针的相对位置和预知的量程计算出各表计的读数。
    ,表计多为分散安装,大多数情况每个摄像头只拍摄一个表计。在表计集中安装的情况下,多个表计基本为同类表计。需要识别表计种类(量程和单位)的场景很少。表计的单位量程等信息通过配置的形式输入给推理过程,结合分割结果计算表计读数)(拍摄完表的图片,就知道表的量程等信息了)

得到读数之后就处理业务相关的信息,比如报警等。

目标检测

目标检测方案

  1. 目标检测算法采用YOLOv3模型实现,被检测表具基本没有很小目标的情况,所以根据经验,人工重新设计了锚框的尺度,以便更加准确的预测目标区域。
  2. 目标检测部分只对表具进行检测,不进行分类识别,原因如下:
    • 由于表具的种类繁多,且相似度很高,尤其是同一个厂家的同一种类表具,其只有量程或单位不同,对其进程分类是比较困难的,在单位被指针遮挡情况下根本无法识别到表具的单位。
    • 厂矿表具多为分散安装,大多数情况每个摄像头质拍摄一个表具,在表具集中安装的场景下,多个表具基本为同类表具,所以需要识别表具种类(量程和单位)的场景很少。
  3. 表具的单位量程等信息,通过匹配的形式输入给推理进程,结合分割结果综合计算表具读数。

目标检测模型训练

模型: YOLOv3
训练:
模型选择: yolov3_darknet53 / MobileNetv2
预训练模型:Darknet53_pretrained.tar

原生YOLOv3效果

  • COCO数据集精度33.0
  • 推理速度快于SSD3倍,快于RetinaNet 3.8倍(关于3.8倍,本人没有验证,只是他人告知)

YOLOv3设计

  • 骨干网络:更优的Darknet53(服务端推理方案);
    MobileNetv2(移动端/嵌入式端,本文基于嵌入式端推理方案)
  • 每个anchor预测单独的类别,即输出通道数由B5+C,增加到为B(5+C)。
  • 3个尺度上检测,提高召回率
  • 分类激活函数:用sigmoid代替softmax

优化YOLOv3:
关于yolo系列的优化,它的主要思想就是利用trick的叠加,我之前有一篇博文分享了关于yolo系列优化的方案,可以参考用在此处,会使得模型精度和速度都会得到提升。
在这里插入图片描述

评估:评估程序进行评估。

目标检测结果

在这里插入图片描述

语义分割

常见分割模型:DeepLabv3+,U-Net, ICNet, PSPNet, HRNet, Fast-SCNN。

语义分割方案

  1. 目标检测表具图像区域作为语义分割模型的输入,避免语义分割的多尺度问题
  2. 表具刻度与指针都较为细小,采用效果较好的DeepLapv3+分割模型
  3. 如果原图检测出多个表具目标,则将多个表具区域图片以“batchsize=n”输入网络
    在这里插入图片描述
    在这里插入图片描述

分割模型在经过卷积之后,输出的特征分辨率比较小,再赋到原图上面,分割的原图的精度就会下降。
解决
- 采用Atrous Convolution(空洞卷积)(也就是在卷积核上插入0),在不增加计算量的情况下增大感受野;
- 在不同的卷积成中使用不同的Atrous Rate优化多尺度物体的检测效果。

简单的半监督只是蒸馏方案(SSLD)
应用背景

  • 大模型预测效果好,但预测速度太慢,速度不符合使用需求
  • 小模型预测速度快,但预测效果差,精度不符合使用需求

知识蒸馏

  • 对于需要训练的学生网络(较小),使用一个较大的教师网络(精度更高)去指导学生网络训练
    把这两个模型组成一个网络,输出预测的输出,训练的过程中,教师模型梯度固定,学生模型可以反向,进行参数的更新。输出js的散度,就可以知道概率的相似度,使得这个小模型的概率会更好。经过训练之后,这个小模型就会有所提升。

目的

  • 探索模型的性能边界
  • 精度更高的预训练模型
  • 有助于其他视觉任务的提升

考虑因素

  • 教师网络、数据选择
  • 数据分布、损失函数

在这里插入图片描述

语义分割模型训练与结果

模型: DeepLapv3+
训练
模型选择: deeplap3p_xception65
预训练模型: 百度Paddle提供的deeplap3p_xception65_bn_coco
评估: 评估程序进行评估,DeepLabv3+语义分割算法的评估结果,刻度和指针的IOU达到了70%以上。

结果
在这里插入图片描述

服务端
考虑到刻度和指针均为细小区域,且主要在有GPU的设备上部署的话,所以语义分割模型选择预测效果更好的DeepLapv3+,骨干网络选择MobileNetV3-SSLD

语义分割训练中解决的问题

问题描述
1. 刻度识别不全,有时无法识别出任务刻度和指针。
2. 侧向安装的仪表,表盘下方的刻度识别效果不好。
3. 图像尺度小的表盘,刻度识别的宽度很宽。

针对性的分析,提出优化策略
1. 训练时加大batchsize值,可以明显提升识别效果,优化刻度识别不全问题,减少无法识别出任何刻度和指针的情况。
2. 数据增强,预处理阶段做旋转、裁剪、翻转、模糊颜色扰动等。其中,“旋转和翻转”对”表盘下方的刻度识别效果不好的问题“有很大改善。”模糊“对提高小尺寸图片识别效果作用很大。
3. 针对场景的,更细粒度的标注:开始使用labelme中的line方式对图片进行标注,该方式标注线固定为10个像素宽度,所以对于小尺寸仪表图像的刻度识别就很宽,而大尺寸仪表的识别就很窄,甚至刻度缺失。针对这个问题我们修改了生成真值图的方式,使相同尺寸的图片产生相同宽度的刻度标注线。
在这里插入图片描述

问题解决效果

评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值