1.本发明涉及开关阀门检查控制技术领域,具体涉及基于巡检机器人的焦化炉开闭器阀门的识别检测方法。
背景技术:2.焦化厂室内的焦化炉开闭器阀门的状态识别,主要是靠人工进行状态巡检,但一个焦化厂有近一千个开闭器阀门,需要巡检的内容有:一组阀门开关的状态是否正常,以及阀门铁链联动结构是否正常使能运行等。人工巡检工作量大,繁琐复杂,需大量人力的投入,同时又时效性低,容易出错。而且在焦化厂区内,受到客观工作环境影响,人员检测也会面临,灰尘、粉尘等短期内即可覆盖至各类开闭器阀门上,室内部分位置光线较暗等等因素,都增加了检测成本和检测效率。考虑到开闭器阀门都是传统的设备开关,不具备自主的数据传输和提取功能,但在产业数字化和智能化的时代背景下,越来越多的设备状态数据需要获取,故急需一种能够摒弃人工巡检,实现无人化、自动化的巡检和识别方法,来提取开闭器阀门状态数据,以满足当前智慧工厂的需求。
技术实现要素:3.本发明针对现有技术的不足,提出一种结构简单,采用巡检机器人通过轨道运动巡检检测精度准确高效,并且销售和整机运行数据实时上传服务器,管理科学,具体技术方案如下:
4.一种基于巡检机器人的焦化炉开闭器阀门的识别检测方法,具体步骤为:
5.步骤一:在开闭器阀门上增加便于图像识别的辅助图像标识;
6.步骤二:采集图像数据,进行模型训练,建立焦化炉开闭器阀门数据集;
7.步骤三:通过巡检机器人采集开闭器阀门图像数据,判断状态是否正常,是则继续下一个开闭器阀门图像检查,否则将异常数据发送控制中心。
8.作为优化,所述步骤二具体为:
9.2.1、设定巡检机器人参数,用于采集每个开闭器阀门图像数据;
10.2.2、启动机器人,开始巡检进行数据采集;
11.2.3、数据预处理,利用图像数据增强库对数据进行翻转、旋转、缩放、裁剪、平移、添加噪声等将采集的数据进行数据增强,以提高模型的泛化能力和鲁棒性;
12.2.4、数据标注,利用图形图像注释工具对辅助图像标识进行分别标注,最终生成每张图片的xml文件;
13.2.5、神经网络框架编译;
14.2.6、将数据存放到神经网络框架中;
15.2.7、对文件格式进行转换;
16.2.8、对主干网络进行轻量化级优化,采用mobilenet v2基础网络;
17.2.9、检测尺度网络调整;
18.2.10、激活函数调整,原始mobilenet v2网络中的开始和末尾部分的relu6 激活函数修改为h-swish;
19.2.11、bn层与conv层合并,故模型中将部分网络层的bn层的参数合并到卷积层中,以提升模型运算速度;
20.2.12、框回归损失的调整,为提高精度,框回归损失函数进行优化调整,采用diou,将原始框回归损失函数调整为:
[0021][0022]
其中b,b
gt
分别代表预测框和真实框的中心点,且ρ代表的是计算两个中心点的欧式距离,c代表的是能够同时包含预测框和真实框的最小包区域的对角线距离;
[0023]
2.13、开始训练。
[0024]
作为优化:所述步骤三具体为;
[0025]
3.1、加载已训练完成的权值文件;
[0026]
3.2、图像加载检测,将轨道巡检机器人拍摄的开闭器阀门图像,输入到模型网络中,模型即可输出对应的检测信息,输出信息内容包括,single和double 类别的置信度,检测框的中心点坐标和框的宽高,以及检测框的置信度;
[0027]
3.3、开关状态判别,根据输出的检测框,即辅助标签的位置,中心位置y 坐标信息,来判定当前开闭器阀门的状态,当single标签的中心位置y坐标大于阈值时,则说明开关盖为开启状态,反之则说明开关盖为关闭状态;当double 标签的中心位置y坐标大于阈值y
′2,则说明伸缩杆为被链条提起状态,反之则说明伸缩杆下沉状态;
[0028]
3.4、系统状态判别,根据一组开闭器阀门正常情况下,必须保持一侧为开启状态,另一侧为关闭状态的要求,判断对应的开关状态是否正常。
[0029]
本发明的有益效果为:通过对开闭器阀门添加两类辅助标识,标识表面经过处理,按照检测需求对应安装在开关盖和伸缩杆上,便于检测识别算法实现。然后通过轨道巡检机器人进行巡检拍摄,将拍摄的数据,传输至检测识别模块。检测识别算法是在yolov3的基础上,进行优化改进,更换backbone网络为 mobilenet v2减少网络深度,提升速度。因辅助标识在画幅中较大,故裁剪掉52*52的检测尺度网络,去除对于小目标的检测尺度。将网络中的bn层与conv 层融合的改进,降低了网络运算量,有效解决嵌入式环境中的资源占用量大的问题。最后,为提高检测精度,更换激活函数为h-swish同时调整回框损失函数为diou。最终检测识别算法的精度和耗时均满足无人化自动监测的要求,满足焦化厂智慧工厂的数据采集监控需求。
附图说明
[0030]
图1为本发明中开闭器阀门开启示意图;
[0031]
图2为本发明中开闭器阀门关闭示意图;
[0032]
图3为本发明中单向辅助标识装配示意图;
[0033]
图4为本发明中双向辅助标识装配示意图;
[0034]
图5为本发明中模型构建及训练流程示意图;
[0035]
图6为本发明中深度可分卷积算法示意图;
[0036]
图7为本发明中深度可分卷积参数量和计算量示意图;
[0037]
图8为本发明中relu与relu6函数示意图;
[0038]
图9为本发明中扩张层示意图;
[0039]
图10为本发明中倒残差模块的示意图;
[0040]
图11为本发明中mobilenet v2算法最小单元示意图;
[0041]
图12为本发明中mobilenet v2下采样尺度检测示意图;
[0042]
图13为本发明中sigmod函数示意图;
[0043]
图14为本发明中swish函数示意图;
[0044]
图15为本发明中h-swish函数示意图;
[0045]
图16为本发明中iou结构示意图;
[0046]
图17为本发明中giou的结构示意图;
[0047]
图18为本发明中diou的结构示意图;
[0048]
图19为本发明中检测识别流程图。
具体实施方式
[0049]
下面结合附图对本发明的较佳实施例进行详细阐述,以使本发明的优点和特征能更易于被本领域技术人员理解,从而对本发明的保护范围做出更为清楚明确的界定。
[0050]
一种基于巡检机器人的焦化炉开闭器阀门的识别检测方法,
[0051]
步骤一:在开闭器阀门上增加便于图像识别的辅助图像标识,具体为:
[0052]
其中图1和图2合称为一组,即一组开闭器阀门正常情况下,必须保持一侧为开启状态,另一侧为关闭状态。
[0053]
a1、b1为开闭器阀门的开关盖,正常情况下当开关盖呈a状态时,为阀门开启状态;呈b状态时为阀门关闭状态。
[0054]
a2、b2为链条,一端连接开闭器阀门使能结构,另一端连接伸缩杆(a5,b5)。
[0055]
a3、b3为扇形摆轮,实际情况是a3为红色,b3为蓝色。摆轮通过开闭阀门使能结构控制,当摆轮呈现a状态时,为阀门开启状态;当摆轮呈现b状态时,为阀门关闭状态。
[0056]
a4、b4为单向辅助标识,人工制作并安装在开关盖(a1和b1)上,辅助检测开关盖状态。单向辅助标识随着开关盖的开启和关闭,位置发生变化,通过检测单向辅助标识位置,即可确定开关盖状态。辅助标识表面经过磨砂处理,以减少机器人拍摄时辅助照明的反光影响。
[0057]
a5、b5为伸缩杆,其一端与链条相连接,链条起到吊挂作用,将伸缩杆吊起。当阀门处于开启状态时,伸缩杆下降,深入伸缩杆正下放的洞中,如图1 状态所示;当阀门处于关闭状态时,伸缩杆由铁链拉伸上升,从洞中上升提出,如图2状态所示。
[0058]
a6、b6为双向辅助标识,人工制作并安装在伸缩杆(a5和b5)上,辅助检测伸缩杆的状态。如图所示,双向辅助标识随着伸缩杆运动,发生位置变化,通过检测双向辅助标识位置,即可确定链条状态。辅助标识表面经过磨砂处理,以减少机器人拍摄时辅助照明的反光影响。
[0059]
图3为单向辅助标识的装配示意图,其中a4和b4为单向辅助标识,通过 a7和b7安装连接板安装至开关盖a1和b1上。其中需要注意的是a7和b7长度需要参考实际正视拍摄
时,图1中靠近屏幕面的扇形摆轮a3和b3的位置的大小,要确保,扇形摆轮在开启和关闭状态时,均不可遮挡辅助标识a4和b4。
[0060]
图4为双向辅助标识的装配示意图,其中a2和b2为链条,连接a5和b5 伸缩杆,双向辅助标识a6和b6通过安装连接板a8和b8安装至伸缩杆上。辅助标签的安装位置需要保证,当伸缩杆下降到极限位置时,辅助标签不影响下降深度。
[0061]
步骤二:采集图像数据,进行模型训练,建立焦化炉开闭器阀门数据集;
[0062]
具体为,如图5所示,准备阶段。在辅助标识安装完毕后,设定机器人巡检时间及巡检点信息,同时设定好巡检点对应的云台和相机参数,确保每个巡检点能完整清晰的拍摄一组(或一组内一侧)开闭器阀门图像数据。
[0063]
启动机器人,开始巡检进行数据采集。模型训练阶段,应采集足够数据,建立焦化炉开闭器阀门数据集。
[0064]
数据预处理。利用imgaug对数据进行翻转、旋转、缩放、裁剪、平移、添加噪声等将采集的数据进行数据增强,以提高模型的泛化能力和鲁棒性。
[0065]
数据标注。对增强后的数据利用labelimg软件进行标注,标注的目标标签共两类,一类为单向辅助标识,记为single,另一类为双向辅助标识,记为double,最终生成每张图片的xml文件。
[0066]
darknet网络框架编译。下载darknet网络,在主目录下,修改配置文件 makefile,将gpu、cudnn、opencv的值修改为1保存后,执行指令make,进行编译。
[0067]
数据存放。darknet目录下创建mydata文件夹,并在mydata下创建三个文件夹annotation、jpegimage、imageset。其中annotation存放之前标注后的图像对应的xml文件,jpegimage内存放标注前的图像,在imageset文件夹内再创建一个main文件,存放训练集、验证集、测试集和训练验证集的图片名字的 txt文件:train.txt,val.txt,test.txt和trainval.txt。所有标注的数据,随机打乱顺序存入。其中train和trainval划分比例为9:1,trainval中包括test和val,比例为 9:1。
[0068]
文件格式转换。在scripts/voc_label.py文件中,yolov3提供了将voc数据集转为yolo训练所需要的格式的代码。先修改代码中sets列表为[(“mydata”,
ꢀ“
train”),(“mydata”,“val”),(“mydata”,“test”)],classes列表修改为[“single”,
ꢀ“
doubule”],再修改in_file和out_file路径为当前annotation和mydata/labels路径后,执行代码,在mydata文件夹下生成一个lables文件夹(内存放转换后的 txt文件)和mydata_train.txt、mydata_val.txt、mydata_test.txt文件,
[0069]
backbone轻量级优化。yolov3原始的基础backbone采用darknet53网络,相比于resnet-152和resnet-101计算速度快,精度高。但在焦化炉开闭器阀门检测场景下,不需要如此庞大和高精度的backbone。考虑到开闭器阀门的辅助标识只有两种(single、double),检测场景固定且简单,辅助标识相对于图像大小适中,故为了优化网络模型,提高运行速度效率,降低系统负担,更换原始 backbone为mobilenet v2基础网络。
[0070]
mobilenet系列网络由谷歌提出,是专注于在嵌入式设备上的轻量级神将网络,在串行cpu使用上可节省很多资源,其中mobilenet v1最主要的贡献是使用了深度可分离卷积depthwise separable convolution,可以分成深度卷积 depthwise和逐点卷积pointwise。depthwise separable将突出点是将原本模型的参数量和计算量大大降低,低
至原来的1/8。mobilenet v2主要是将残差网络和 depthwise separable卷积进行了结合。通过分析单通道的流形特征对残差块进行了改进,包括对中间层的扩展以及bottleneck层的线性激活。
[0071]
mobilenet v2网络的特点:
[0072]
如图6所示,深度可分离卷积的参数量由深度卷积和逐点卷积两部分组成:
[0073]
深度卷积的卷积核尺寸dk×dk
×
m;逐点卷积的卷积核尺寸为1
×1×
m,一
[0074]
共有n个,所以深度可分离卷积的参数量是:
[0075]
参数量dk×dk
×
m+m
×n[0076]
深度可分离卷积的计算量:
[0077]
深度可分离卷积的计算量也是由深度卷积和逐点卷积两部分组成:
[0078]
深度卷积的卷积核尺寸寸dk×dk
×
m,一共要做dw×dh
次乘加运算;逐点卷积的卷积核尺寸为1
×1×
m,有n个,一共要做dw×dh
次乘加运算,所以深度可分离卷积的计算量是:
[0079]
计算量dk×dk
×m×dw
×dh
+m
×n×dw
×dh
[0080]
如图7所示,深度可分离卷积的参数量和计算量分别除以标准卷积的参数量和计算量则可得出变化量。
[0081]
可见参数数量和乘加操作的运算量均下降为原来的:
[0082]
如图8所示,图中蓝色是普通的relu,当x小于0时,结果为0;当x大于0时,结果为x不做处理。橙色是relu6,当输入的值大于6的时候,返回6, relu6“具有一个边界”。relu6作为非线性激活函数,在低精度计算下具有更强的鲁棒性。由于relu函数的正区间不施加任何非线性约束,当输入很大时会造成梯度爆炸,因此v1使用的激活函数为relu6。
[0083]
但实际v1在低维度做relu运算时,容易造成信息的丢失。在高维度进行relu运算的话,则信息丢失较少。故在v2网络里,把最后的relu6换为线性激活函数,这个部分即称之为linear bottleneck。
[0084]
如图9所示,由于深度卷积本身没有改变通道的能力,如果输入通道较少,则会出现dw深度卷积只能在低维度上工作,所以需要调整维度。原作者采用pw 逐点卷积来实现升维和降维,具体是在dw深度卷积之前使用pw卷积进行升维 (升维倍数为t,t=6),然后即在相对的更高6倍维度上进行工作。
[0085]
如图10所示,倒残差模块,借鉴restnet网络复用特征,引入shortcut 结构,由于restnet的shortcut结构是先降维-卷积-升维,而mobilenet v2 的shortcut结构是升维-卷积-降维,故取名为inverted residuals。
[0086]
如图11所示,mobilenet v2的block;
[0087]
mobilenet v2的网络结构
[0088][0089][0090]
表1 mobilenet v2的网络结构
[0091]
其中:
[0092]
t是输入通道的倍增系数(即扩张倍数)
[0093]
n是该模块重复次数
[0094]
c是输出通道数
[0095]
s是stride(后面重复都是stride 1)
[0096]
如图12所示,检测尺度网络调整。原始的yolov3有三个检测尺度,13*13、 26*26、52*52,分别对应大、中、小目标的检测,由于场景焦化炉开闭器阀门的检测场景背景固定,检测种类少,且辅助标识的大小在图像数据中显示较大,故决定裁剪掉52*52检测尺度的网络以提高网络检测速度。
[0097]
在第6层输出26*26*96,添加分支通过1*1卷积得到26*26*512,第8层输出13*13*
320,添加分支通过1*1卷积得到13*13*256,经过上采样可得 26*26*256,再接入原先尺度网络,最终得到26*26*255尺度。
[0098]
在第9层输出13*13*1280,添加分支通过1*1卷积得到13*13*255尺度。
[0099]
激活函数调整。借鉴mobilenet v3将原始mobilenet v2网络中的开始和末尾部分的relu6激活函数修改为h-swish。h-swish函数是基于swish函数演变而来的。swish函数特性是平滑、非单调、无上界由下界,在深层模型上效果要优于relu,可相对提高准确率约0.75%,但
[0100]
swish函数中的指数计算特别耗时,特别是在嵌入式环境中,相对占资源,故改进swish函数为h-swish。将swish函数中的sigmod用relu6(x+3)/6来代替,h-swish函数相当于硬直化的swish,有效降低了指数运算在嵌入式环境中的资源占用问题。
[0101]
如图13所示,sigmoid函数为:
[0102][0103]
如图14所示,swish函数,
[0104][0105]
如图15所示,h-swish函数,
[0106][0107]
1)bn层与conv层合并。批次归一化batch normalization层一般是放在卷积层之后,激活层之前,可以加速网络收敛,并且可降低过拟合。但bn层同时又增加了网络向前推进时的运算量,占用了更多的内存或显存空间。故模型中将部分网络层的bn层的参数合并到卷积层中,以提升模型运算速度。
[0108]
批归一化层和卷积层融合:
[0109][0110]
其中,f
i,j
和为输入、输出特征图;w
bn
为bn层的权重矩阵,w
conv
为卷积层的权重矩阵,b
bn
为bn层的偏置,b
conv
为卷积层的偏置。
[0111]
则融合后的卷积层表示为:
[0112]
融合后的权重w=w
bn
·wconv
[0113]
融合后的偏置b=w
bn
·bconv
+b
bn
[0114]
删除bn层后,使用新的权重和偏置,即可得到原始conv层加bn层的相同的结果。
[0115]
2)框回归损失的调整。为提高精度,框回归损失函数进行优化调整,采用diou。将原始框回归损失函数调整为:
[0116][0117]
iou具备能够反映预测检测框与真是检测框的检测效果,以及尺度不变性的特点,但其在两个框没有相交情况下,不能反映两者的重合度,同时也没有梯度回传,无法进行学
习训练。giou与iou不同,不仅可以度量重叠区域,也可以度量非重叠区域,可以更好的反应两者的重合度,但由于缺乏考虑目标anchor 之间的距离,重叠率以及尺度等因素,导致训练过程中可能会出现发散等问题。 diou比giou更加符合目标框回归机制,是的目标框更加稳定。
[0118]
如图16所示,
[0119][0120]
如图17所示,
[0121][0122]
其中c为两个框的最小闭包区域面积;
[0123]
如图18所示,
[0124][0125]
其中b,b
gt
分别代表预测框和真实框的中心点,且ρ代表的是计算两个中心点的欧式距离,c代表的是能够同时包含预测框和真实框的最小包区域的对角线距离。
[0126]
对应损失函数为:l
diou
=1-diou
[0127]
开始训练。调整好以上内容之后,执行train.py文件,注意观测训练日志,在训练同时,模型会根据迭代次数输出对应的权值文件。当loss值停止下降或者在小区间内来回振荡时候,则可以停止训练。保存好模型生成的权重文件 (.weight)。
[0128]
步骤三:通过巡检机器人采集开闭器阀门图像数据,判断状态是否正常,是则继续下一个开闭器阀门图像检查,否则将异常数据发送控制中心。
[0129]
具体为,如图19所示,加载已训练完成的权值文件。
[0130]
3.1图像加载检测。将轨道巡检机器人拍摄的开闭器阀门图像,输入到模型网络中,模型即可输出对应的检测信息。输出信息内容包括,single和double 类别的置信度,检测框的中心点坐标和框的宽高,以及检测框的置信度。
[0131]
3.2开关状态判别。根据输出的检测框(即辅助标签的位置)中心位置y坐标信息,来判定当前开闭器阀门的状态。当single标签的中心位置y坐标大于阈值时,则说明开关盖为开启状态,反之则说明开关盖为关闭状态;当double 标签的中心位置y坐标大于阈值则说明伸缩杆为被链条提起状态,反之则说明伸缩杆下沉状态。
[0132]
3.3系统状态判别。根据一组开闭器阀门正常情况下,必须保持一侧为开启状态,另一侧为关闭状态的要求,判断对应的开关状态是否正常。
技术特征:1.一种基于巡检机器人的焦化炉开闭器阀门的识别检测方法,其特征在于,具体步骤为:步骤一:在开闭器阀门上增加便于图像识别的辅助图像标识;步骤二:采集图像数据,进行模型训练,建立焦化炉开闭器阀门数据集;步骤三:通过巡检机器人采集开闭器阀门图像数据,判断状态是否正常,是则继续下一个开闭器阀门图像检查,否则将异常数据发送控制中心。2.根据权利要求1所述基于巡检机器人的焦化炉开闭器阀门的识别检测方法,其特征在于,所述步骤二具体为:2.1、设定巡检机器人参数,用于采集每个开闭器阀门图像数据;2.2、启动机器人,开始巡检进行数据采集;2.3、数据预处理,利用图像数据增强库对数据进行翻转、旋转、缩放、裁剪、平移、添加噪声等将采集的数据进行数据增强,以提高模型的泛化能力和鲁棒性;2.4、数据标注,利用图形图像注释工具对辅助图像标识进行分别标注,最终生成每张图片的xml文件;2.5、神经网络框架编译;2.6、将数据存放到神经网络框架中;2.7、对文件格式进行转换;2.8、对主干网络进行轻量化级优化,采用mobilenet v2基础网络;2.9、检测尺度网络调整;2.10、激活函数调整,原始mobilenet v2网络中的开始和末尾部分的relu6激活函数修改为h-swish;2.11、bn层与conv层合并,故模型中将部分网络层的bn层的参数合并到卷积层中,以提升模型运算速度;2.12、框回归损失的调整,为提高精度,框回归损失函数进行优化调整,采用diou,将原始框回归损失函数调整为:其中b,b
gt
分别代表预测框和真实框的中心点,且ρ代表的是计算两个中心点的欧式距离,c代表的是能够同时包含预测框和真实框的最小包区域的对角线距离;2.13、开始训练。3.根据权利要求1所述基于巡检机器人的焦化炉开闭器阀门的识别检测方法,其特征在于:所述步骤三具体为;3.1、加载已训练完成的权值文件;3.2、图像加载检测,将轨道巡检机器人拍摄的开闭器阀门图像,输入到模型网络中,模型即可输出对应的检测信息,输出信息内容包括,single和double类别的置信度,检测框的中心点坐标和框的宽高,以及检测框的置信度;3.3、开关状态判别,根据输出的检测框,即辅助标签的位置,中心位置y坐标信息,来判定当前开闭器阀门的状态,当single标签的中心位置y坐标大于阈值y
′1时,则说明开关盖为开启状态,反之则说明开关盖为关闭状态;当double标签的中心位置y坐标大于阈值y
′2,
则说明伸缩杆为被链条提起状态,反之则说明伸缩杆下沉状态;3.4、系统状态判别,根据一组开闭器阀门正常情况下,必须保持一侧为开启状态,另一侧为关闭状态的要求,判断对应的开关状态是否正常。
技术总结一种基于巡检机器人的焦化炉开闭器阀门的识别检测方法,具体步骤为:步骤一:在开闭器阀门上增加便于图像识别的辅助图像标识;步骤二:采集图像数据,进行模型训练,建立焦化炉开闭器阀门数据集;步骤三:通过巡检机器人采集开闭器阀门图像数据,判断状态是否正常,是则继续下一个开闭器阀门图像检查,否则将异常数据发送控制中心。本发明首先通过对开闭器阀门添加两类辅助标识,按照检测需求对应安装在开关盖和伸缩杆上,便于检测识别算法实现。然后通过轨道巡检机器人进行巡检拍摄,将拍摄的数据,传输至检测识别模块。检测识别算法是在yolov3的基础上,进行优化改进,更换backbone网络为MobileNet V2减少网络深度,提升速度。提升速度。提升速度。
技术研发人员:樊帆 周台典
受保护的技术使用者:蓝普金睛(北京)科技有限公司
技术研发日:2022.06.29
技术公布日:2022/11/1