李现国,刘 晓,冯欣欣
(1.天津工业大学 电子与信息工程学院,天津 300387;2.天津工业大学 天津市光电检测技术与系统重点实验室,天津 300387)
除铁器是一种产生强大磁场吸引力的设备,能将混杂在非磁性物料中的铁磁性杂质清除,按磁力来源不同,分为电磁除铁器和永磁除铁器两类。其中永磁除铁器一般由永磁磁芯、弃铁输送带、减速电机、框架、滚筒等部分组成,配合带式输送机使用,因其能够连续不断地自动卸铁,而且磁场恒定、无冷热态变化、故障点少,故被广泛应用于矿山、选煤厂、港口、电厂、冶金、化工等工业领域[1]。弃铁输送带是永磁除铁器中的消耗品,经常因吸附上的尖锐物体凿穿输送带、输送带跑偏、输送带内置的钢丝绳断裂等原因,出现断裂[2-3],若得不到及时处理会造成设备损坏、堆煤料、停产等事故,比如带式输送机输煤过程中,常因其导致堆煤事故而停工。
输送带断裂检测的传统技术有机械检测法、声光检测法和电磁检测法,它们均存在检测装置易损坏、安装复杂、可靠性和准确性差的缺陷[3-9]。近年来随着机器视觉的快速发展,基于该技术的输送带断裂检测技术及系统是当前研究和应用的重点。郭启皇等[10]和甘福宝等[11],分别提出了基于Otsu算法的输送带断裂检测方法;Yang等[12]提出了输送带撕裂红外光谱成像检测预警方法。这类方法都使用常规的图像处理技术进行故障检测,算法参数设置复杂,检测的鲁棒性和准确性不高。
Alport等[13]提出了基于小波和人工神经网络的钢丝绳芯输送带、接头及其故障的检测算法,该算法对图像质量要求较高,并且算法的准确性有待提高。Liu等[14]提出了一种基于深度卷积网络的输送带边缘检测方法,解决了传统的机器视觉方法检测输送带边缘的准确性问题,但未涉及输送带的断裂检测。
基于深度学习的特征自动提取技术已被广泛应用,在视频检测方面具有显著的效果[15-17]。本文针对现有的永磁除铁器弃铁输送带断裂检测方法不精确、检测装置易损坏、安装复杂等问题,提出一种基于迁移学习的方法,并将该方法部署到英伟达Jetson TX2嵌入式开发平台上,设计一种永磁除铁器弃铁输送带断裂检测系统,以提高故障检测的准确性、实用性和有效性。
图1 所示为在输送煤炭的工作环境下,某一永磁除铁器监控视频中某时刻的监测图像。
图1 永磁除铁器监测图像Fig.1 Monitoring image of permanent magnetic iron remover
对本文的研究来说,永磁除铁器监控视频中,除了弃铁输送带及其相关区域,剩余的部分都是无关特征,可称为干扰信息。这种无关特征会加大深度学习网络训练的难度,导致学习效果达不到预期目标。本文采用OpenCV中的模板匹配技术选取弃铁输送带的特征图像,从而得到源图像中的感兴趣区域(ROI区域)。
模板匹配是把不同相机或同一相机在不同时间、不同成像条件下对同一景物获取的2幅或多幅图像在空间上对准,或根据已知模式到另一幅图中寻找相应模式或在同一幅图像中寻找相同模式的处理方法[18]。设模板图像矩阵为T(x,y)、源图像矩阵为I(x,y)、计算得到的匹配结果矩阵为R(x,y),OpenCV中提供的6种模板匹配算法的计算公式为:
(1)平方差匹配法
(2)归一化平方差匹配法
R(x,y)=
(3)相关匹配法
(4)归一化相关匹配法
R(x,y)=
(5)相关系数匹配法
(6)归一化相关系数匹配法
对于平方差匹配法和归一化平方差匹配法,越小的数值具有越高的匹配结果;而其余的方法,数值越大匹配效果越好。如果模板图像的大小为w×h,使用OpenCV中minMaxLoc()函数查找R(x,y)的最大值或者最小值,将其位置作为源图像中匹配效果最好的矩形区域的左上角,并以(w,h)作为矩形的宽度和高度,得到匹配后的图像。
本文通过实验确定了匹配效果最好的归一化平方差匹配法,并用该方法确定了匹配的位置和区域。图2为使用该方法提取的图1的特征图像。
图2 使用模板匹配提取的图1的特征图像Fig.2 Feature image of Fig.1 extracted after template matching
永磁除铁器监控视频图像样本单一,并且监控视频中弃铁输送带断裂过程较短,为提高深度学习网络的学习效果,需要更多的数据。本文通过对弃铁输送带的图片进行随机旋转、裁剪、亮度变换来扩充数据量,达到数据增强的效果。这样可以让同一张图像在输入到网络时都会有不同的差异,使模型不容易因陷入过拟合而记住单一图像的特点;另外在网络遇到新的图像时,能提升图像识别的准确性。这样训练出的模型具有更高的鲁棒性。原图像和数据增强后的图像对比如图3所示。
图3 原图像和数据增强后的图像对比Fig.3 Comparison between original image and data-enhanced image
残差网络(residual neural network,ResNet)通过在网络的低层与高层之间添加直通的残差单元,解决了网络层数很深时卷积网络出现的梯度消失或者爆炸问题[19]。ImageNet数据集具有上百万张分属于1 000个类别的224×224规格的图片;ResNet在ImageNet测试集的分类中取得了96.43%的准确度,并且根据不同的数据规模ResNet有ResNet-18、ResNet-34、ResNet-50、ResNet-101和ResNet-152等多种版本。本文的数据规模和分类类别数目上远不及ImagNet数据集,并且考虑到Jetson TX2开发平台的运算能力对视频检测实时性的影响,所以选择ResNet18作为网络模型,其网络结构如图4所示。
图4 ResNet18结构Fig.4 Structureof ResNet18
图4显示了ResNet18的网络模型结构,它包含17个卷积层和1个完全连接的层,即18个权重层。RessNet18网络结构的计算公式为
式中:al为l层的输出结果;δ为激活函数;w代表权重参数;b代表偏置。
当前网络层l的输出等于正常网络的输出al-1与网络输入zl的和,然后再经过激活函数。假设从l层到l-1层,按照常规的全连接层反向传播公式为
其中J代表损失函数。但是ResNet增加了shutout连接,激活函数中的内容就增加了一个al-1,通过反向公式求导,得出反向传播公式为
公式中由原来的wl的变成了wl+1。随着网络深度的增加,训练变慢,这主要是由于权重w的正则化,w变得非常小,加上多层级联关系,该层的梯度变化非常小,但是权重值w增加1,梯度增加,这就使网络更易于训练。
因本实验中弃铁输送带的断裂情况分为2类:完好和断裂,所以本文将全连接层的参数结构由1×1×1 000改为1×1×2;每个残差单元包含2个卷积层,如图5所示;恒等映射不会增加额外的参数和计算复杂度,它将输入跨层传递,然后与经过卷积后的输出相加,达到充分训练底层网络的效果。
图5 残差学习单元Fig.5 A building block of residual learning
在图5残差学习单元结构中,假设残差网络的输出为H(x),经过卷积操作后的输出为F(x),则:
式中:w1和w2为卷积操作;δ代表激活函数。此时只要F(x)=0,就构成了前述的恒等映射函数H(x)=x,所以得到一个容易拟合的残差函数。这一过程中要保证F(x)和x的维度是相同的,如果不相同,则可以通过恒等映射执行线性投影ws来匹配维度,则有
式中:ws是通过恒等映射对x的线性变换。
前文虽然利用模板匹配和数据增强来解决ResNet18网络训练时弃铁输送带图像中无关信息干扰和样本数量不足的问题,但弃铁输送带图像样本数量不足的问题仍然突出。本文使用迁移学习的方法进行克服。迁移学习是指将预训练好的模型结构和权重参数应用到一个新的网络模型中的方法[20-23]。迁移学习模型如图6所示。
图6 迁移学习模型Fig.6 Transfer learning model
当目标域数据量很少或者很难获取、或者从头建立模型很费时和复杂时,可使用迁移学习完成与源目标任务相似的功能,有Fine Tuning和Feature Extraction 2种学习方法。本文使用Fine Tuning迁移学习方法,首先使用源数据(ImagNet数据集)预训练ResNet18,然后以训练好的模型参数为基础,利用弃铁输送带图像数据集训练网络时继续优化全部参数,使得目标模型可以更好地完成识别任务。
为了使Jetson TX2能控制GPIO,使得其检测到弃铁输送带断裂时能立刻报警,需要将ResNet18网络模型进行语言转换,从而达到控制TX2外设的目的。TorchScript是一种可以把Pytorch模型转成C++接口可读的模型,是一种从PyTorch代码创建可序列化和可优化模型的方法,是连接C++和Python的桥梁。
Libtorch是Pytorch官方提供的C++接口,使用此接口在Jetson TX2开发平台上部署C++的ResNet18网络模型。
在Jetson TX2检测到输送带断裂时,除了报警器报警外,在PC端用应用程序开发框架(Qt)设计一个监控终端软件,使用TCP/IP协议与Jetson TX2进行通信来进行数据的实时显示。TCP/IP协议能保证网络数据信息及时、完整地传输。
永磁除铁器弃铁输送带断裂系统硬件主要由监控摄像头、Jetson TX2嵌入式开发平台、报警器和监控终端界面组成,其结构框图如图7所示。Jetson TX2是NVIDIA专为深度学习打造的嵌入式平台,具有256个CUDA核心的GPU,共2块CPU(一块是双核的Denver 2,另一块是ARMCortexA57),8 GB运行内存,32 GB flash存储器;它支持NVIDIA JetPack SDK中的Tensor RT、cuDNN、CUDA工 具 包,VisionWorks、Streamer和OpenCV等众多软件,在深度学习运算速度、数据处理能力上具有很大优势,确保了检测的实时性。
图7 输送带断裂检测硬件框图Fig.7 Flow chart of hardwaredesign for conveyor belt breakagedetection
基于Pytorch架构,利用Python语言使用自制的数据集,结合迁移学习方法对ResNet18网络模型进行训练。使用Torchscript将训练后参数最好的ResNet18网络模型转化为C++语言模型,然后采用Libtorch部署到Jetson TX2开发平台上。Jetson TX2检测到弃铁输送带断裂时可控制GPIO进行实时报警同时将信息传送给监控终端进行数据实时显示。弃铁输送带断裂检测系统软件设计流程如图8所示。
图8 弃铁输送带断裂检测系统软件设计流程Fig.8 Flow chart of softwaredesign for conveyor belt breakagedetection
首先采用Fine Tuning和Feature Extraction这2种迁移学习方法对数据集进行训练,通过结果对比选择1种更适合的迁移学习方法。2种迁移学习方法训练结果如图9所示。网络模型训练平台:CPU为Intel(R)Xeon(R)CPUE5-2678 v3,内存为64 G DDR4,GPU为Nvidia Geforce GTX1080Ti,操作系统为64位Ubuntu16.04 LTS,实验框架为Pytorch开源框架。数据集训练次数设置为50。
图9 2种迁移学习方法准确率Fig.9 Accuralcy of two transfer learning methods
由图9可以看出,实验中Fine Tuning迁移学习方法要比Feature Extraction迁移学习方法准确率高,并且Fine Tuning测试结果随着数据集训练次数的增加基本处于稳定状态。所以本文选择Fine Tuning优化模型参数。图10是实验测试结果,可以看到基于此方法可以准确检测到弃铁输送带的断裂情况。
图10 监控视频测试实验结果Fig.10 Experimental resultsof surveillancevideo test
在实验室环境下将网络模型部署到Jetson TX2开发板上进行实验检测,因为实验室没有永磁除铁器,所以使用带式输送机的输送带代替永磁除铁器的弃铁输送带。
实验测试中网络模型的大小为44.8 MB,在Jetson TX2上开启最大功率模式,使用cuda进行加速以提高视频画面的流畅度。Jetson TX2显示器上的监测到的画面如图11所示。
图11 Jetson TX2显示器上监测到的画面Fig.11 Camera screen on Jetson TX2 display
Jetson TX2终端上数据显示如图12所示。图12(a)表示ResNet18部署在Jetson TX2上运行时视频的实时帧率,一般为17帧/s,有时可达18帧/s。当检测到弃铁输送带断裂时,Jetson TX2连接的报警器会报警;图12(b)是模拟报警器从而发出报警信息,max_index为每一帧输送带图像是否断裂标识号,0为断裂,1为完好。
图12 Jetson TX2终端上数据显示Fig.12 Data display on jetson TX2 terminal
测试结果表明,永磁除铁器弃铁输送带断裂检测准确率为93.74%,网络模型图像处理速度为17帧/s,满足视频检测的要求。在弃铁输送带断裂裂口小幅度或者大幅度张开以及彻底断带情况下,检测报警准确率为100%。但由于摄像头距离输送带较远,如果摄像头灰尘遮挡严重,导致视线模糊则检测的准确率会降低,有时会出现错检的情况。
使用Qt设计了监控终端软件,为了测试其有效性和实时性,利用现场采集的视频模拟监控视频,进行测试,测试结果如图13所示。
图13 监控终端软件测试结果Fig.13 Information displayed on monitoring terminal
打开终端软件后,输入Jetson TX2的IP地址和使用的端口号进行连接,连接成功后,输送带状态提示窗口会显示成功连接。当监控终端软件接收到视频画面时,会在输送带状态提示窗口显示当前时间输送带是否断裂等信息。
本文针对永磁自卸除铁器弃铁输送带断裂检测方法不精确,易损坏、检测装置安装复杂等问题,提出一种基于迁移学习的检测方法,并将其部署在Jetson TX2平台上。实验结果表明,本文方法及系统准确率可达93.74%,图像处理速率为17帧/s,当检测到弃铁输送带断裂可现场实时报警。