一种用于海上平台缆控注水井的多类型指针式仪表识别方法

2022-09-27 02:22刘长龙张玺亮徐元德蒋少玖
系统仿真技术 2022年2期
关键词:指针仪表聚类

陈 征, 刘长龙, 张 乐, 张玺亮, 徐元德, 蓝 飞, 蒋少玖

(1.中海石油(中国)有限公司天津分公司, 天津 300459;2.中海油能源发展股份有限公司工程技术分公司, 天津 300452)

目前海上平台缆控注水井作业现场中指针式仪表的读取工作大部分仍采用人工巡检的方式, 识别过程枯燥、麻烦且容易受到主观因素的影响[1-2]。另外现阶段对指针式仪表的研究大多数都是对一种指针仪表的研究, 如何准确识别多种类型指针式仪表是目前一大挑战。

随着计算机视觉和目标检测技术的不断发展, 深度学习在指针式仪表识别中的应用越来越广泛。徐发兵等[3]通过使用卷积神经网络和改进的场景文本检测器(EAST)算法对仪表进行检测读数。邢浩强等[4]利用卷积神经网络模型检测完成仪表读数识别。周登科等[5]通过深度卷积神经网络实现仪表图像的倾斜校正和旋转校正。尽管目前利用深度学习实现指针式仪表检测算法越来越多, 但这些方法网络规模大, 识别效果和准确性仍有待提高, 难以在算力有限的计算机上完成对指针式仪表的实时高效检测[6]。

针对目前指针式仪表识别效率低、识别不准确等问题, 实现海上平台缆控注水井中不同类型指针式仪表的识别工作, 本文提出了一种用于海上平台缆控注水井的多类型指针式仪表识别方法, 改进的YOLOv5算法与基于图像处理的模板匹配法相结合, 该方法能够识别不同类型的指针式仪表, 识别效果显著, 定位表盘位置准确, 对指针角度和读数具有较高的识别率。

1 算法流程

针对指针式仪表的多类型识别, 本文将YOLOv5算法与模板匹配法相结合, 实现仪表图像读数, 算法流程图如图1所示。

图1 算法流程图Fig.1 Algorithm flow chart

具体流程为首先将测试图像转换为灰度图像, 用YOLOv5算法检测测试图像的仪表类型, 读取出测试图像对应的模板图像及其先验信息;其次通过模板匹配定位测试图像的表盘, 在测试图像的表盘上绘制矩形并截取矩形, 匹配并返回矩形的坐标信息;再次通过K-means二值化矩形图像, 根据矩形图像的坐标信息计算其中心点坐标;最后通过直线旋转法获取指针的角度, 将指针角度与模板图像中每个刻度对应的角度进行对比, 并根据与刻度的关系计算出仪表的读数。

2 基于改进的YOLOv5仪表类型检测

2.1 YOLOv5网络模型

本文使用YOLOv5作为检测网络来进行仪表类型识别, YOLOv5的整体结构中增加了Focus和SPP结构, YOLOv5网络结构如图2所示。

图2 YOLOv5网络结构图Fig.2 YOLOv5 network structure diagram

YOLOv5在图像输入时对图像进行了Mosaic数据增强操作, 并且在推理时采用了自适应缩放操作, 该方法可根据输入图像尺寸的不同进行自适应填充, 提升了37%的推理速度。其次, 还设计了位于网络最前端的Focus结构, 该结构最主要的内容是对输入数据进行切片操作, 可有效提升图片特征提取质量。YOLOv5设计了2种与YOLOv4[7]结构中相同的CSP网络结构, 并且将其用于Backbone层和Neck层。Neck层 采 用 了FPN+PAN(Perceptual Adversarial Network)结合的方式, 使用了新设计的CSP结构, 同时增强了网络对特征的融合能力。

2.2 改进的YOLOv5模型

2.2.1 损失函数的改进

损失函数[8]是对深度神经网络误测样本评判的重要基础。损失函数的选取对模型收敛效果影响很大, 因此选用恰当的损失函数可以达到良好的识别效果。本文使用GIOU_Loss作为BBox损失函数, 并且在进行非最大值抑制时使用了加权非最大值抑制NMS方法, 在不增加计算资源的情况下对检测图像中一些有重叠的目标检测效果较好, GIOU_Loss损失函数的计算, 如式(1)所示。

GIOU_Loss函数增加了相交尺寸的测量方法, 可以处理边框有时并不重叠的问题, 并且有利于损失函数获得进一步的收敛, 从而增强模型的识别效率。

2.2.2 DenseNet网络替换Res unit残差网络

虽然YOLOv5有着良好的检测效果, 但对一些目标特征不明显或者小目标有着一定的检测误差, 为了进一步提高目标的特征提取能力, 本文使用DenseNet网络[9]中的密集卷积块(Dense block)代替YOLOv5中CSP1_3的Res unit残差网络。

在传统的CNN中, 网络有多少层就会对应多少个连接, 而Dense block的输入是之前所有层的输出, 即网络有m层, 则会有m(m+1)/2个连接。

YOLOv5中原始残差网络的第m层输出如式(2)所示。

其中fm(Xm-1)表示第m层对第m-1层的输出的非线性变换, Xm-1表示第m-1层的输出。

本文采用密集卷积块的方式, 第m层通过对前m-1层的特征输出图做网络融合, 增强特征获取的能力, 其输出如式(3)所示, 即

2.3 仪表类型识别

2.3.1 识别前操作

读取测试图像, 通过透视变换消除表面角度倾斜造成的仪表图像畸变, 然后根据仪表竖直中轴线对称的关键点, 计算仪表水平方向的旋转角度并进行旋转校正。在识别测试图像仪表类型之前先将其转换为灰度图像, 使用加权平均法将测试图像转换为灰度图像以便提高运算速度, 也为后面图像处理工作做准备。

2.3.2 仪表类型识别

在构建模板图像数据库时, 记录下每个模板对应的先验信息, 其先验信息包括刻度及其像素坐标、中心点像素坐标。对模板图像数据库进行类型标注, 然后用改进的YOLOv5模型进行训练, 设置断点续训, 在训练的前几个周期内预热学习率, 在小的学习率下使模型慢慢趋于稳定后, 使用预先设置的学习率进行训练, 初始学习率为0.01, 最终的学习率为0.002, 用余弦退火算法计算衰减学习率。设置标称batch size为8, 即当设置的batch size=4时, 模型梯度累计2次之后再进行模型的更新, 扩大批处理的大小, 缓解由于设施配置有限而导致梯度频繁更新的问题。训练完成之后即可读取测试图像进行测试, 识别出对应仪表类型, 并读取对应模板图像和先验信息, 用于定位仪表表盘。

3 基于模板匹配的表盘定位及读数获取

3.1 模板匹配法

使用改进的YOLOv5模型识别测试图像仪表类型时, 会读取对应模板图像和模板图像对应的先验信息, 然后将模板图像在测试图像上进行模板匹配, 定位仪表表盘。

模板匹配的基本原理是在一幅图像中寻找与另一幅模板图像相似部分[10], 通过相似性计算找到模板在被搜索图像的坐标位置

假设模板A的尺寸为W×H, 待搜索图像B的尺寸为M×N, 令模板A在图像B上平移, 搜索区域所覆盖的子图像记为Bi, j, 其中i、j为子图像左上角顶点在图像B中的坐标。i、j的搜索范围为1≤i≤M-m, 1≤j≤N-n, 通过比较A和Bi, j的相似性, 完成模板匹配过程[11]。计算如公式(4)所示。

根据I(i, j)得到被搜索图像中与模板图像相似度最高的区域位置, 并根据实际模板大小计算得到该区域中心所在坐标位置。模板匹配结果如图3所示。

图3 模板匹配结果图Fig.3 Template matching results

根据模板匹配和模板图像的先验信息可以得到仪表表盘的坐标信息, 根据仪表表盘的左上角坐标和右下角坐标可以计算出表盘中心坐标。

3.2 指针角度获取

3.2.1 K-means二值化图像

使用K-means方法对图像进行二值化处理, Kmeans二值化处理的步骤如下所示。

(1)随机选择k个初始的聚类中心, 因为要二值化图像, 所以本文选取k=2。

(2)计算每个样本到各聚类中心的距离, 将每个样本归到其距离最近的聚类中心。

(3)以簇内样本均值作为该簇新的聚类中心。

(4)判断聚类中心是否发生变化, 若有变化则重新回到步骤(2), 若无变化则输出最终聚类中心及每个样本所属类别。

令聚类中心为cj, 计算每个样本到聚类中心的距离, 如式(5)所示, 即

通过K-means二值化, 把图像分成两类, 在图像中随机选择中心点像素值, 计算各像素点到2个中心聚类的距离, 并根据最小距离重新对相应对象进行划分, 重新计算每个有变化聚类的均值, 循环直到每个聚类不再发生变化为止, 在此过程中建立压缩调色板, 将图像中的每个像素分配到调色板的一种颜色中, 将K-means分类结果通过压缩调色板分类创建压缩后的新图像, 将所有像素重新着色成黑色和白色即可得到二值化后的图像。

3.2.2 指针拟合

将K-means二值化后的图像使用直线旋转法按一定的角度拟合指针。首先在图像的二维空间中以确定的表盘中心为原点建立笛卡尔坐标系, 以原点为起点画一条直线, 长度为确定的表盘半径, 并且以原点为圆心在表盘上进行旋转, 起始位置在笛卡尔坐标系的x轴处。计算直线在旋转过程中与表盘黑色像素的重合率, 重合率最高处就是指针所在位置。

指针拟合的目的是获取指针对应的角度, 首先获取角度集θ, 如式(6)所示, 即

计算直线在旋转过程中与表盘黑色像素的重合率vi, 令pi为角度是θi的直线上所采样的像素点个数, gray(xij,yij)为角度是θi的直线上第j个像素点的灰度值, 选取重合率最大的vi所对应的角度, 即为指针拟合的角度。重合率的计算, 如式(7)所示, 即

3.3 仪表读数获取

将模板图像的先验信息通过余弦绝对值公式和反余弦公式计算, 可以得到每个刻度对应的角度, 将每个刻度及对应角度放入一个集合S中。

余弦绝对值的计算, 如式(8)所示, 即

反余弦的计算, 如式(9)所示, 即

式(8)、(9)中, (x, y)为模板图像的中心点坐标, (xc, yc)为刻度坐标,V为余弦坐标值,θ为刻度对应的角度。

对集合S中的刻度进行递增排序, 通过比较测试图像指针拟合获取的角度θi和集合S中的角度大小关系, 可以得到测试图像指针所在的刻度范围(n≤t≤m), 并通过角度之间的比例关系计算出测试图像的刻度值。

4 实验与结果分析

4.1 实验环境

为保证改进的YOLOv5模型的训练效率, 本文实验需要配置较好的硬件进行整个模型的训练和测试, 其中操作系统为Ubuntu 21.10, 显卡为GeForce RTX 2060 Max-Q, 内存为16G。为了提高实验的运算速度, 实验中使用了GPU(Graphic Processing Unit)进行加速运算。实验中模型的搭建、训练和测试均是在Pytorch框架下完成, 编程语言为Python。使用CUDA(Compute Unified Device Architecture)并行计算架构, 并且将用于深层神经网络的GPU加速库cuDNN(CUDA Deep Neural Network library)集成到Pytorch框架下, 用来提高计算机的计算能力。

4.2 数据集构建

本文数据集中的图像主要来源于海上平台缆控注水井作业现场中的实际仪表图像, 包含了10种不同类型的指针仪表, 共计800幅, 使用Albumentations框架对数据集进行数据增强, 数据增强的目的是增加数据集的多样性, 以此来增强模型的泛化能力。数据增强的方式包括旋转、弹性变化和HSV偏移, 经过数据增强[12], 原指针仪表图像数据集从原来的800幅扩充到2400幅, 将数据集按照8∶2的比例划分为训练集和测试集, 即训练集的数量为1920幅, 测试集的数量为480幅, 经过标注后将数据集输入到神经网络中进行训练。

4.3 结果及分析

本文通过对YOLOv5中损失函数的改进, 同时将DenseNet网络中的密集卷积块(Dense block)代替YOLOv5中CSP1_3中的Res unit残差网 络, 改 进了YOLOv5模型, 极大地提高了目标检测的能力, 增强了模型的识别效率。改进之后的YOLOv5模型在准确率上达到了95.20%, 相比原始的YOLOv5模型提升了7.97%, 相比YOLOv4模型提升了15.16%, 准确率对比情况如表1所示。

表1 准确率对比表Tab.1 Accuracy comparison table

经过改进的YOLOv5模型的实验验证表明, 超过95.20%的图像都能准确识别所对应的模板类型, 再经过模板匹配后能准确定位到仪表表盘, 最终的仪表读数达到了较高的准确度, 识别速度也比较快。表2为随机选取10组测试图像的识别结果示例, 每组测试图像分别来源于10种类型图像测试集的随机抽取。

表2 仪表识别结果示例Tab.2 Example of instrument identification results

从表2的实验结果来看, 10组测试图像的识别结果精确度很高, 符合人工读数的误差范围。针对实际情况中仪表图像质量低的问题, 解决办法是在测试图像转化为灰度图像之前进行伽马变换操作, 而后测试图像的亮度值得到有效提升, 再经过模板匹配等得到了准确的识别结果。

5 结 语

为了能够更好地实现海上平台缆控注水井中指针式仪表的识别效果, 本文提出了一种用于海上平台缆控注水井的多类型指针式仪表识别方法, 首先对YOLOv5模型中的损失函数进行了改进, 增强了模型的识别效率。使用DenseNet网络中的密集卷积块(Dense block)代替YOLOv5 CSP1_3中的Res unit残差网络, 进一步提高了目标的特征提取能力, 将其与基于图像处理的模板匹配法相结合, 再经过K-means二值化和指针拟合等操作得到仪表读数。该方法对于指针式仪表识别效果显著, 表盘位置定位准确, 识别速度快, 在复杂环境下也能完成识别工作。

猜你喜欢
指针仪表聚类
浙江中控自动化仪表有限公司
浙江中控自动化仪表有限公司
垂悬指针检测与防御方法*
面向WSN的聚类头选举与维护协议的研究综述
为什么表的指针都按照顺时针方向转动
基于高斯混合聚类的阵列干涉SAR三维成像
奔驰E260车行驶过程中仪表灯熄灭
基于Spark平台的K-means聚类算法改进及并行化实现
基于加权模糊聚类的不平衡数据分类方法
宝马745Li车制动灯常亮且组合仪表上多个故障灯点亮