APP下载

基于Mask R-CNN算法的尾矿库干滩长度视频测量研究

2021-01-19孙叶青申屠南瑛

计量学报 2020年12期
关键词:水线尾矿库水域

杨 俊, 孙叶青, 申屠南瑛, 李 青

(中国计量大学 灾害监测技术与仪器国家地方联合工程实验室,浙江 杭州 310018)

1 引 言

在尾矿坝溃坝事故频发的背景下[1],相关部门规定尾矿库必须安装在线监测系统并保证正常可靠运行。因此,研发一种在线监测的新方法成为了当务之急。尾矿坝用于堆贮各种矿石尾料,是排出尾矿的场所;而干滩长度是指干滩顶至尾矿库内水线之间的最短水平距离,是决定尾矿库能否安全可靠运作的重要指标之一,示意图如图1所示。

图1 尾矿库组成结构Fig.1 Tailings pond structure

近年来图像处理和视觉测量等方法[2,3]被应用于尾矿坝干滩长度测量系统中,这些方法对尾矿坝实地图片进行处理,对水线进行分割,再配合设置的标定物进行测量工作。此类方法存在着一些问题:(1) 没有考虑水面倒影、边界不清晰等情况下的水线难以分割性,仅限于分析理想情况下的图片,在适用范围上具有局限性;(2) 仅限于单类图片的研究,无法进行在线监测,实用性不够;(3) 不适用于非理想天气条件下的测量。改进的分水岭算法[4]以及基于视觉测量的方法[5,6]都只选择良好天气情况下的图片进行分析,手动剔除噪声部分面积,将问题进行简化,不能进行实时监测。此外,这两种方法都在测量过程中采用人为安放标志物的方法作为水线坐标参考物,不仅存在安全隐患,还增加了误差来源。至少存在两种误差:第一,在人为安放标志物过程中产生的误差,导致参照系不合理,并影响后续测量的真实值;第二,由于标志物在全图中所占比例小,标志物坐标需要人为提取,会产生像素坐标误差,影响测量值。

Mask R-CNN算法是CNN(卷积神经网络)算法的一种,本文利用此算法训练出能自动对监控画面进行水域和干滩分割的神经网络模型。在无需人工安放标志物及手工提取像素坐标值的情况下直接进行水滩分割,获取水线轮廓及其像素坐标。将坐标输入给拟合出的计算公式即可获得干滩长度,从而建立起了端对端模式的干滩长度实时监测系统,且适用于多类图片。

2 干滩摄像系统

本实验选取地点为某铜矿尾矿库, 尾矿库等级为Ⅲ级。

随着自然因素变化,水际线在两岸间的相对位置会发生变化,从而使得感兴趣区域(region of interest, ROI)在不断改变[7]。本文在尾矿库两岸各安装一个摄像头,一个安装于离坝顶水平距离为2 m的平地上,一个安装于对岸的山体上。当水位浅时,水位线靠近山体一侧,山体一侧的摄像头即可获得高清画面,从而输出干滩长度值。

区别于其它安装于尾矿坝顶处的干滩监控系统,本文采用2个监控摄像头,既不会受由于子坝堆积而产生的位置变化的影响又能提供高质量图像,安装位置如图2所示。

图2 摄像头安装位置Fig.2 Camera installation locations

3 干滩长度测量算法

监控画面中包含了废砂废水、水面化学漂浮物、周边山体以及植物倒影等干扰内容。此外,尾砂的排放、季节、光照等条件的变化也是测量干扰项。为了测得干滩长度,首先需要定位干滩所在的区域,先识别出水线,从水线位置到坝岸的水平距离即是干滩长度。

目前,使用深度学习方法进行图像处理已经成为研究热点。与传统的分割算法相比,神经网络能够自主学习目标特征,区别图中的前景和背景,提高识别的准确性。本文基于水与干滩之间的特征差异以及水线自身特征(像素间梯度差异),训练出能自动识别干滩的神经网络模型,继而获得水线坐标。在测量过程中,本文将干滩长度值量化为水线坐标来进行分析,直接由水线坐标来测得干滩长度,大大减小了误差。基于此,采用Mask R-CNN算法[8],首先准确分开水域和干滩,即可进一步测量干滩长度。方案设计如图3所示。

图3 方案设计框架Fig.3 Program design framework

3.1 Mask R-CNN 算法结构

Mask R-CNN算法以R-CNN系列,FPN(feature pyramid networks),FCIS(fully convolutional instance segmentation)等神经网络目标检测算法为基础。在Faster R-CNN[9]对每个候选区域输出类别和边界框(bounding boxs)进行偏移的基础上,Mask R-CNN又增加了1个分支得以输出物体掩膜(object mask)。本文中掩膜区域边界即是水线。

3.1.1 RPN网络

在Mask R-CNN网络中,RPN(区域候选网络)与FPN相结合,RPN的特点在于通过滑动窗口的方式实现候选框的提取,每个滑动窗口位置生成9个不同尺度、不同宽高的候选窗口,提取对应9个候选窗口的特征,用于目标分类和边框回归,与Fast R-CNN[10]类似。基于此,目标分类需要区分候选框内特征是否为水域,边框回归确定更精确的水域位置,从而能够获取水线,RPN网络结构如图4所示。

图4 RPN网络结构图Fig.4 RPN network structure diagram

3.1.2 FPN网络

对物体检测网络而言,低层的特征语义信息少,但目标位置准确;高层的特征语义信息比较丰富,但目标位置比较粗略。用FPN网络结合低层高分辨率的特征,能把更抽象、语义更强的高层特征图进行上取样,并把该特征横向连接(lateral connections)至前一层特征,因此高层特征得到加强。横向连接中使用1×1的卷积核来产生最粗略的特征图,3×3的卷积核对每个融合结果进行卷积,消除上采样的混叠效应,以生成最后需要的特征图。添加FPN网络使得水域定位更为准确,FPN网络如图5所示。

图5 FPN网络结构图Fig.5 FPN network structure diagram

3.2 损失函数方程

计算损失值之前,要设定锚(anchors)的标定方法。本文的检测目标为水域,样本标定规则为:

(1) 如果锚框对应的参考框(reference box)与实际情况(ground truth)的比值(IOU)最大,记为正样本。

(2) 如果IOU>0.7,标定为正样本[11];对于一些极端情况,例如所有的IOU≤0.7,可以采用第(1)规则生成。

(3) 如果IOU<0.3,则标记为负样本。

(4) 剩下的既不是正样本也不是负样本,不用于最终训练。

训练区域候选网络(RPN)的损失值由分类损失和回归损失按一定比重组成。计算归一化指数函数损失(softmax loss)需要根据锚对应的实际情况的标定结果和预测结果进行计算,计算方法如下:

tx=(x-xa)/wa,ty=(y-ya)/ha

(1)

tw=lg(w/wa),th=lg(h/ha)

(2)

(3)

(4)

(5)

L=Lcls+Lreg+Lmask

(6)

(7)

(8)

由于在实际过程中,2个损失值差距过大,用参数λ=Nreg/Ncls平衡二者。使得网络损失计算过程中能够均匀考虑。式(7)中损失函数sL1的计算公式为:

(9)

Lmask为实例分割损失,输出大小为K·m2,其中K为类别数量,m表示RoI Align特征图的大小。对每一个像素应用sigmoid,然后取RoI上所有像素的交叉熵的平均值作为Lmask。在本文模型中,总损失值包括定位水域、水滩分割以及在目标区域填充掩膜时产生的误差,继而用梯度下降法降低损失,最终即可定位到准确的水域,从而获取准确的水线坐标。

3.3 Mask R-CNN算法流程

Mask R-CNN是一个两阶段的框架:在第1阶段扫描图片并且产生提议(proposal);第2阶段是将生成的提议进行分类,并且产生边界框和掩膜。整体网络在系统中完成了3个重要步骤:(1) 目标检测,绘制目标框;(2) 分类目标,区分物体类别[12];(3) 像素级目标分割,对于每个目标,在像素层面区分其前景和背景。网络框图如图6所示。

图6 Mask R-CNN算法框图Fig.6 Mask R-CNN Algorithm block diagram

4 网络模型

4.1 直方图均衡化

直方图均衡化是通过拉伸像素强度分布范围来增强图像对比度的一种方法。本文使用直方图均衡化操作对图像进行预处理[13],转化水与干滩之间像素梯度值,放大水土之间特征差异,从而能够提升神经网络学习效率以及模型识别准确率。图7(a)、(b)分别为处理前后结果对比图,直方图均衡化处理后的图(b)比图(a)有更好的边缘细节捕捉能力。

图7 处理前后对比图Fig.7 Comparison before and after processing

4.2 模型参数调试

Anchors大小、ROI个数、训练图像维度决定了算法能否捕捉细微边界从而准确地分割图像[14]。本文通过实验研究,对参数进行了多次设定,最终获得了在合理的区间内的3项主要参数值,如表1所示。此外,训练过程中batch-size为1,采用学习率权值衰减方法,初始值为0.001,每次衰减0.000 1,动量为0.9。取了表1中5种不同参数进行训练,其损失值如图8所示。

图8 损失值Fig.8 Loss value

表1 参数设定值Tab.1 Parameter setting

结果表明:在50个训练周期内,每个周期训练100次的情况下可完好拟合。此时,将参数值设定为表1中的值时,损失值都为理想值,都能获得良好的训练结果。

5 实验和结果分析

5.1 实验样本集

为了增强模型泛化能力,本实验挑选出不同特征的尾矿库图像作为数据集,每张图大小均为2 560×1 440 像素。训练集图片来自不同时间,分为4种情况,其中晴朗天气下共150张,阴暗条件下共150张,暴雨后镜头模糊情况下150张,雪天150张,共计600张图片作为训练集。部分训练集图片如图9(a)~图9(d)所示。

图9 训练样本Fig.9 Training samples

每张图片都采用手工打标签的方式,每张图中有水域和背景2个类别,标签示意图如图10所示。

图10 标签示意图Fig.10 Labeled image

5.2 训练结果

本实验的硬件环境为Intel Core CPU i7-8750,GPU为NVIDIA GTX1060,内存6 GB。该实验基于TensorFlow框架并使用Python实现。结果图为图11所示,在不同时间下的监控图片中,下部灰色区域为水域。其中雪后图的水域识别与其他3张不同,是因为只有沙土部分全部湿润才算作干滩,雪天时候沙土全部湿润,是正确的识别。

图11 识别结果Fig.11 Recognition results

5.3 水线识别

在水滩分割的基础上,提取水线坐标用于最终的干滩长度测量。基于此,本文使用OpenCV阈值分割及轮廓提取算法[15],对水域进行轮廓提取并自动输出轮廓最高点坐标,得到水线在图片上的所属位置。由于水域面积已经被填充为灰色,且轮廓是闭合的理想曲线,直接提取灰色区域外轮廓即可获取水线并输出最高点坐标。具体步骤为:将图片进行阈值分割并获取水线,做水线的外接矩形,矩形最高点纵坐标即为水线纵坐标。识别结果如图12所示,输出水线的外接矩形最高点纵坐标为1 030。

图12 原图及最终结果图Fig.12 Original image and final result image

5.4 测量模型

图片上水线位置代表着实际位置,两者同步变化,且具有强线性关系。摄像头的位置固定,因此每张图片的大小相同。自变量仅为水线坐标,因此只要输出每张图片轮廓的纵坐标并与实地测量得到的干滩长度进行对比分析,即可拟合出干滩长度测量模型。测得图片中水线坐标以及实际测量距离,如表2所示。

表2 水线坐标-实测距离对比Tab.2 Comparison of waterline coordinates and measured distances

使用OriginPro 8软件对数据进行分析,在经过多种方式拟合后,得知在Polynomial Order=5时,拟合情况最佳。本文使用95%置信区间进行参数拟合,水线坐标与干滩实测值的函数绘制图如图13所示。

图13 水线坐标-实测值拟合曲线Fig.13 Fitting curve of waterline coordinates and measured values

曲线拟合的自由度为14,残差平方和为3.041 02,标准差为0.259 02,校正相关系数平方R2=0.999,拟合度高。已知此模型后,输入水线坐标即可获得干滩的真实长度。将有效位数展开至6位,可在一定程度上减小由高阶项计算所带来的误差,此时得到函数表达式为:

f(x)=-1.688 70×10-2x5+9.060 95×104x4
-1.942 19×10-2x3+0.207 867×102x2
-1.110 76×104x+2.370 69×106

(11)

5.5 测量结果

在Maple工具下,将图11中反馈得到的像素坐标值1 030 dpi带入图13中的拟合函数f(x),得到185.262 m,与真实值185.4 m之间误差为0.138 m,误差小于1‰,满足干滩长度测量精度要求。将上述20点全部带入函数中,平均误差仅为1.16‰。

6 结束语

本文将深度学习算法应用于干滩长度的测量,算法模型分为两部分:

(1) 训练出能自动分割水域的神经网络模型,之后自动识别水线轮廓并输出坐标值。

(2) 将图像中水线轮廓坐标与实际干滩长度进行回归分析,拟合出测量算法公式;将坐标值输入给计算公式后,即可输出干滩实际长度,且精度满足实际要求。

本文方法解决了传统图像分割算法中存在的不完全分割以及过分割问题,又采用简便的线性回归计算即可省去复杂的模型推导,为干滩长度测量提供了准确、实时的计算方法。

猜你喜欢

水线尾矿库水域
某铁矿山尾矿库回采工艺设计实例
长期运行尾矿库的排渗系统渗透特性的差异化反演分析
提升水域救援装备应用效能的思考
进博会水域环境保障研究及展望
柳江水域疍民的历史往事
筑牢尾矿库安全防线
城市水域生态景观设计探讨
水线光缆
规模化肉鸡养殖场水线管理
水线草熊果酸和齐墩果酸含量测定