APP下载

融合图像去雾与Tiny-YOLOv3的护帮板状态检测研究

2022-02-24白尚旺龚大立党伟超潘理虎

太原科技大学学报 2022年1期
关键词:准确率大气函数

魏 强,白尚旺,龚大立,党伟超,潘理虎

(1.太原科技大学 计算机科学与技术学院,太原 030024;2.精英数智科技股份有限公司,太原 030024)

采煤机采煤后,护帮板要对综采工作面煤壁进行支护。生产实践表明,如果采煤后护帮板没有及时护帮,工作面煤壁可能因采动应力而发生片帮,造成砸死砸伤事故[1]。为了避免此类事故的发生,煤矿传统做法是由液压支架工检测护帮板是否护帮,但液压支架工作业时间长,容易出现因身体疲劳没有检测到液压支架护帮板未护帮的情况。为解决液压支架工因身体疲劳导致漏检的问题,将目标检测技术应用到护帮板状态检测是一项很有必要的研究。

现阶段液压支架护帮板状态研究大多基于传感器技术实现,如梁海权[2]等人提出将励磁体分别放置于护帮板和液压支架伸缩梁上获得电压值,通过电压运算电路得到液压支架护帮板状态;黄金福[3]等人提出在护帮板上安装压力传感器和倾角传感器护帮板传感器单元,通过倾角传感器得到护帮板当前的伸收角度并控制每个护帮板的伸收;魏文艳[4]等人提出在液压支架顶梁、护帮千斤顶油缸里和护帮板上安装接近开关、压力传感器和行程传感器,通过接收的传感信息控制液压支架护帮板的动作。徐勇智[5]通过收集安装在护帮板和液压支架上传感器的数据,对护帮板运动过程和传感器数据处理及分析,从而对护帮板收放状态进行判断。以上方法均是接触式测量,需安装传感器设备,成本较高、安装繁琐、维护困难,容易受到电磁干扰,导致测量结果不准确。针对以上问题,王渊[6]等人提出一种图像识别的护帮板状态监测方法,通过获取视频某一帧图像并进行去雾处理,然后使用机器视觉测量方法对护帮板状态进行监测,但该方法不能实时检测护帮板状态。

目标检测技术已经成功用于机器人导航、智能视频监控、工业检测、航空航天等诸多领域,并取得很好的效果。目前检测速度和精度较好的目标检测算法是YOLOv3[7-8],但消耗的计算资源较多,在性能较高的设备上才能满足实时检测。而Tiny-YOLOv3是YOLOV3的简化模型,通过降低卷积层的深度减少计算量,在低性能设备上能满足实时检测。同时考虑到综采工作面环境恶劣,采集的视频数据存在采煤时产生的煤尘和喷雾,导致护帮板特征提取困难。为减少尘雾对检测任务的影响,有必要对采集的数据进行去雾处理。但传统图像去雾算法包含大量浮点型数据和矩阵运算,在CPU上去雾时间较长。因此,本文提出一种融合图像去雾与Tiny-YOLOv3的检测算法,并优化图像去雾算法的CUDA实现,加快图像去雾速度,提高本文算法检测效率。

1 融合图像去雾与Tiny-YOLOv3的算法

1.1 算法流程

本文算法首先将煤矿井下视频监控图像进行去雾处理,接着将去雾图像输入到Tiny-YOLOv3算法完成护帮板状态检测,最后将标注后的图像帧合并成视频输出。算法流程图如图1所示。

图1 算法流程图

检测算法的主要步骤:

Step1.调用cv2.VideoCapture()函数获取视频数据;

Step2.将视频数据用Image.fromarray()函数保存为图片;

Step3.把图片按横纵比例缩放;

Step4.调用图像去雾算法对缩放图片进行去雾;

Step5.用yolo.detect_image()函数对图片进行检测;

Step6.调用np.asarray()将图片合成视频。

1.2 图像去雾算法

图像去雾算法根据McCartney[9]的图像退化模型描述有雾图像成像原理,模型表示如式(1)所示:

H(x)=F(x)t(x)+A(1-t(x))

(1)

式中x是图像像素的2D空间位置,H(x)是有雾图像,F(x)是无雾图像,A是全局大气光,t(x)是透射率,描述光线通过传输介质到达相机未散射的部分。场景中的雾气越重会导致透射率越低,图像衰减越严重。大气光表示图像因散射光导致的颜色偏移。对公式(1)变型后得到:

(2)

根据输入图像H(x)计算出F(x)、A和t(x),得到去雾图像。显然这个方程有无数解,因此,本文采用去雾效果较好的暗通道先验[10]求解方程。

基于暗通道先验的思想,对于任意不含有大量明亮区域的图像,通过比较图像RGB三通道的像素值,总存在某一个通道的像素值趋近于0.即:

(3)

式中Ω(x)表示以像素点x为中心的局部区域,c∈{r,g,b}表示RGB三通道。

考虑到煤矿图像一般由较暗的岩石和大型机械的阴影组成,RGB三通道像素值整体较小,通道之间像素值相差不大,煤矿图像可以用RGB任意单通道图像代替暗通道图像。为验证该方法有效性,本文随机选取500张煤矿清晰图像,绘制单通道图像和暗通道图像的直方图,通过对比发现图2和图3的像素值分布情况大致相同,验证了任意单通道图像代替暗通道图像方法的有效性。

图2 RGB三通道图像素值分布

图3 暗通道图像素值分布

图像去雾算法具体步骤如下:

a)计算暗通道图像。用RGB任意单通道图像代替。

b)计算全局大气光。通过排序选取暗通道图中亮度最大的前0.1%的像素点的均值作为全局大气光值A.

(4)

式中c∈{r,g,b},并将式(4)变形得到:

(5)

接着在RGB三通道求最小值得:

(6)

由式(3)可知:

(7)

结合式(6)和式(7)计算得初始透射率为:

(8)

d)精细化透射率及图像还原。初始透射率还原的图像会出现“块效应”。为了克服这一问题,算法采用He[11]等人提出导向滤波算法精细化透射率。最后将大气光值和精细化透射率代入式(2)即可得到去雾图像。

1.3 Tiny-YOLOv3算法

首先,输入大小为416*416*3的图像,结合7个卷积层和最大池化层提取特征,并借鉴FPN(feature p-yramid network,FPN)[12]的思想,得到两个不同尺度大小的特征图,根据尺度不同的特征图对目标进行检测。其中卷积层结构为Convolution2D+BatchNormalization+LeakyRelu结构。图4展示了Tiny-YOLOv3的结构。

图4 Tiny-YOLOv3算法结构

训练模型时,Tiny-YOLOv3使用的损失函数由预测框的位置(x,y),预测框的大小(w,h),预测类别和预测置信度四部分组成。公式(9)中显示了Tiny-YOLOv3的表达式:

(9)

其中n是每批次的训练个数,公式(9)中每个因子的损失函数如下:

(10)

(11)

(12)

(13)

其中objectmask表示实际是否包含对象,(w,h)是预测框的宽度和高度,bianrycrossentropy是二进制交叉熵函数,square是方差函数。truexy是目标的实际位置,predxy是预测位置;truewh是标注框的大小,predwh是预测框的大小;trueclass是目标的分类,predclass是预测的类;predmask是预测是否包含对象,ignoremask与IOU相关,如果IOU的值小于设定阈值,则ignoremask为0.

2 优化图像去雾算法的CUDA实现

为保证图像去雾算法和Tiny-YOLOv3融合后不影响算法的实时性,本文在Xue[13]等人对暗通道去雾算法的CUDA并行处理基础上优化了图像去雾算法的CUDA实现,优化过程包括以下四步:第一步用RGB任意单通道图像代替暗通道图像,第二步按列分组求大气光值,第三步优化初始透射率,第四步优化精细化透射率的计算过程。

2.1 计算暗通道图像和全局大气光值

计算暗通道图像是用RGB任意单通道图像代替暗通道图像,不涉及比较运算耗时较小。而计算全局大气光值需将图像保存在线程块中,然后通过排序方式求得,但线程块之间通信耗困难,不满足CUDA线程并发和独立计算的特性。

为满足CUDA线程特性,本文提出一种简化计算全局大气光值的方法,该方法通过按列分组的方法计算全局大气光值,满足线程特性且不影响去雾效果。按列分组方法是将图像的每列像素值放入线程块中,独立计算每列的局部大气光值,然后通过归约算法比较不同列之间的大气光值,得到局部大气光值最大的一列,取该列像素值的均值作为近似全局大气光值。该方法计算的全局大气光值接近传统方法的全局大气光值,在不影响去雾效果的前提可以有效提升并行效率。

图5 归约算法图

2.2 初始透射率

根据1.2节可知计算初始透射率的过程为三步,需要将计算过程设计三个kernel函数,第一个将局部区域 各通道像素值除以大气光值A,第二个计算暗通道图像,第三个计算初始透射率,如图6所示。但在计算初始透射率的过程中,CPU需要频繁调用这三个kernel函数,时间消耗较大。

图6 kernel函数

为了减少kernel函数的调用次数,节省时间开销,将数据从全局存储器中读取到共享存储区中进行计算,并合并kernel函数,实现整个计算过程在GPU内完成,减少数据重复调用和数据交互耗时。具体过程如图7所示。

图7 kernel函数合并

2.3 精细化透射率和图像还原

精细化透射率采用导向滤波算法,而导向滤波算法的主要计算量集中在box_filter函数,因此对box_filter函数的优化是一项重要的工作。

本文采取的box_filter函数优化方法[14]如图8所示。传统方法存在大量重复的计算且需要多次分配内存,而优化方法将保留中间结果存放于共享存储器,有效的减少重复计算,提高内存使用效率。图像还原的计算过程仅涉及矩阵简单的四则运算,通过CUDA容易实现,时间消耗较少,本文不再赘述。

图8 并行累加

3 实验准备

3.1 实验环境

实验运行环境的操作系统为Windows10,处理器主频为3.4 GHz、系统内存为16 G,GPU为NVIDIA GTX 1080Ti,图像去雾算法CUDA实现的编译语言为C++,Tiny-YOLOv3算法的编译语言为Python.

3.2 数据来源

实验数据来自某煤矿综采工作面时长为60 min,图像大小为1 920×1 080的视频。

3.3 数据预处理

将视频数据每隔10帧存储为一张图片,共得到18 000张图像,把得到的图像均分为两部分。对第一部分的9 000张图像不做任何处理,第二部分的9 000张图像做去雾处理,把这两部分图像作为未去雾处理和去雾处理的对照数据集。图9为未处理图像,图10为去雾图像。

图9 未处理图像

图10 去雾图像

3.4 数据集的制作

将去雾图像数据集和未处理图像数据集按照VOC2007数据集的格式制作,采用labelImg数据标注工具对两部分数据进行标注,生成网络训练所需的xml配置文件。标注内容为如图11所示。两部分数据集是按照8∶1∶1的比例分为训练集、验证集和测试集,数量分别为7 200张、900张和900张。

图11 标注内容

3.5 Tiny-YOLOv3算法的参数选取

本文的检测对象是护帮板,形状一般为长方形,大小固定,而Tiny-YOLOv3的先验框数量和长宽不适用于本文数据集。通过K-means聚类算法获取适合本文数据集的先验框数量和长宽。聚类结果如图12所示,纵坐标的平均畸变越小表明类内的距离越小。根据肘部法则最终确定本文数据集的先验框数量k值为6,对应的先验框长宽为[111,215]、[126,185]、[126,211]、[137,218]、[144,248]、[155,285].

图12 K-means聚类结果

将Tiny-YOLOv3配置文件中的检测类别class改为1,过滤器的值改为,这样可以在不影响检测任务的条件下,减少算法运算量。算法的训练迭代次数设置为5 600次,初始学习率设置为0.01.通过调整参数发现,当迭代分别为4 000和5 600次时,对应的学习率分别为0.007和0.005,网络具有一定的收敛性。图13展示了整个网络的训练损失图,从图中可以看出,当迭代次数为5 600时基本上收敛。

图13 本文算法的训练损失图

4 实验结果与分析

4.1 去雾效果比较

为验证本文图像去雾算法能够有效减少护帮板周围的煤尘和喷雾,提高图像清晰度,分别与文献[10]、文献[15]和文献[16]去雾算法对煤矿图像进行去雾实验。图14给出了本文去雾算法与其他去雾算法对煤矿图像的去雾效果比较。从图14的去雾效果可以看出,本文去雾算法与其他去雾算法相比可以有效地去除煤矿图像中的煤尘和雾气,处理后的图像对比度、清晰度得到了提升,细节得到了很好的保留。

图14 去雾效果比较

4.2 去雾速度比较

为了保证图像去雾算法能够实时去雾,对后续检测任务的实时性影响较小,实验将输入大小为1 920×1 080的图片缩放成大小960×540后执行图像去雾操作。表1展示了本文去雾算法与Xue[13]算法在处理大小960×540的煤矿图片的各步骤运行时间的比较。由表1的结果比较可以看出本文去雾算法在GPU上比Xue算法去雾速度提升较为明显,对大小为960×540的煤矿图片去雾时间仅需9 ms,比Xue算法去雾速度快了27 ms,保障后续检测任务的实时性。

表1 不同去雾方法各步骤的运行时间

4.3 检测准确率和速度比较

为了验证融合图像去雾算法对YOLOv3和Tiny-YOLOv3检测准确率和速度的影响,本文设置了两组对比实验。第一组对比实验是只采用YOLOv3和Tiny-YOLOv3进行护帮板情况的检测;第二组对比实验分别在两个检测算法中融合图像去雾算法,比较融合后的检测算法准确率和速度。表2展示了不同算法在测试集上准确率和速度的结果对比。

表2 不同算法检测准确率和速度对比

通过表2的实验结果发现,第一组对比实验中单纯使用YOLOv3比Tiny-YOLOv3的检测准确率提高了10.6%,检测速度YOLOv3比Tiny-YOLOv3低22fps.结果表明,YOLOv3比Tiny-YOLOv3的检测准确率高,但检测速度不能满足实时检测的要求。在第二组对比实验中,融合了图像去雾算法YOLOv3算法比本文算法准确率提高了7.1%,检测速度YOLOv3比Tiny-YOLOv3低20 fps.结果表明,本文算法在准确率比融合图像去雾的YOLOv3算法稍有下降,但检测速度满足实时检测的要求。其次,通过两组对比实验发现,融合图像去雾的检测算法比原检测算法的准确率有明显提高。这意味着融合图像去雾算法能够提高检测算法的检测准确率,准确率提高的主要原因是图像去雾算法能够有效减少煤尘和喷雾对检测任务的影响,使检测算法提取的特征更接近实际值,检测准确率提高。

最后实验权衡检测精度和检测速度得出结论:融合图像去雾算法的YOLOv3准确率虽然较高,但受限于煤矿的低性能设备,检测速度不能满足实时检测的要求。为了同时满足检测准确率和速度的要求,本文选择检测准确率较高且满足实时检测要求的本文算法。实验表明,本文算法比Tiny-YOLOv3准确率提升22.8%,且满足实时检测的要求。

表3具体展示了本文算法和Tiny-YOLOv3算法在测试集上的结果。

表3 不同算法检测结果对比

从表3的检测结果发现,Tiny-YOLOv3算法与本文算法相比,使用Tiny-YOLOv3算法漏检和错检的对象数量分别为224个和104,比本文算法漏检和错检对象个数分别多164个和61个。通过定量分析得出本文检测算法在检测煤矿护帮板方面比Tiny-YOLOv3算法更准确,有效减少了漏检和错检对象的个数。最后展示本文算法和Tiny-YOLOv3算法的检测结果,如图15-18所示。

图15 本文算法检测结果

图16 本文算法漏检结果

图17 Tiny-YOLOv3算法错检结果

图18 Tiny-YOLOv3算法漏检结果(虚线框为漏检对象)

5 结束语

本文提出一种检测护帮板状态的融合算法,首先将视频分帧并进行去雾处理,然后将去雾图像输入到Tiny-YOLOv3算法中进行检测,最后输出检测结果。实验结果表明,在煤矿护帮板检测场景下,与Tiny-YOLOv3算法相比,本文算法满足实时性的同时具有更高的检测精度,对综采工作面安全生产起决定性的作用,同时也对综采工作面无人化、自动化的发展起到了一定的促进作用。但本文算法仍存在不足,当应用在其他煤矿时,会出现误识别和未识别的情况。作者将在后续工作中通过优化Tiny-YOLOv3算法的方式,解决过拟合问题,提高本文算法的泛化能力。

猜你喜欢

准确率大气函数
宏伟大气,气势与细腻兼备 Vivid Audio Giya G3 S2
乳腺超声检查诊断乳腺肿瘤的特异度及准确率分析
多层螺旋CT技术诊断急性阑尾炎的效果及准确率分析
不同序列磁共振成像诊断脊柱损伤的临床准确率比较探讨
颈椎病患者使用X线平片和CT影像诊断的临床准确率比照观察
如何“看清”大气中的二氧化碳
大气光学现象
关于函数的一些补充知识
高中数学中二次函数应用举隅オ
无独有偶 曲径通幽