基于图像分割的水炮射流落点检测

2020-11-17 06:56周俊杰陈姚节
计算机工程与设计 2020年11期
关键词:水炮落点射流

周俊杰,陈 黎+,陈姚节

(1.武汉科技大学 计算机科学与技术学院,湖北 武汉 430081;2.武汉科技大学 湖北省智能信息处理与实时工业系统重点实验室,湖北 武汉 430081)

0 引 言

在消防领域的户外以及海上灭火中,高压水炮主要依赖人员手动操作,而室内大空间消防仍处于较低的自动化水平。在水面执法和警用防爆领域也主要依赖于人员手动操作或者远程遥控。这些方法的局限性在于操作人员危险系数高、劳动强度大和工作效率低。可靠的全自动水炮对于及时消灭隐患、避免二次损害具有重要意义。

现阶段的水炮自动控制技术大多数都依赖于开环控制,即在知道水炮与目标的相对位置时,通过先验数据,计算水炮理论射流轨迹的参数,控制水炮打击目标。由于水炮的射击过程中的反馈信息无法被有效捕捉并提取,从而无法形成有效的闭环控制。而水炮射击作为一种流体控制,在大空间应用环境中极易受到风向、炮口压强变化和载体运动影响,这些不利因素更加确定了闭环控制是水炮自动化绕不开的技术瓶颈。在具体的应用场景中,水炮自动控制系统可通过计算射流落点与打击对象的坐标偏差来修正控制偏差,并最终命中目标消除偏差。因此,研究水炮射流的落点检测有利于推动水炮自动化研究的进程。

1 相关工作

国内外对水炮射流落点定位进行了一定量的研究,主要可分为通过质点运动规律建模和基于图像射流轨迹识别两种方法。文献[1]讨论了通过建模射流轨迹的方法定位落点的问题。然而水炮的射流轨迹与现场环境密切相关,真实环境中的风力、气压都对水炮射流造成很大的影响,仅用理论模型预测会存在一定的不确定因素。文献[2]提出一种不受射流轨迹形态限制的曲线提取方法,在红外图像上利用射流边缘的高频特征分析出射流轨迹集合,从而确定射流落点。文献[3]提出建模射流轨迹的一条三次曲线,单向搜索轨迹上的目标点并在射流末端确定一个ROI,最终在ROI区域进行射流落点识别。本文将射流落点检测问题分为两个阶段来研究。第一阶段是基于深度学习语义分割算法对图像中的射流实例做分割,完整清晰的分割轮廓可以为下一步的分析提供适应于各种背景的基础。第二阶段是基于获取到的轮廓边缘信息决策出射流落点。本文做出了以下3点贡献:

(1)收集并制作了射流分割数据集SPOUT1323。数据集中的图片采集自户外和室内实验场地,以及互联网资源。SPOUT1323数据集共收录了1323张图片,并以二值化掩码标注了图片中的射流实例,其中1000张图片作为训练集,100张作为验证集,223张作为测试集。数据集中包含了在不同时间段、不同天气状况的场景。

(2)本文提出了一种适应于射流分割任务的轻量级深度学习语义分割算法L-Unet。L-Unet参考了Ronneberger等[4]提出的用于生物医学图像分割的Unet设计了轻量级的U型编解码结构,并引入Chen等[5]提出的ASPP构建了滤波器的可变感受野。L-Unet在拥有不错准确度的前提下达到了30 ms的处理速度,ASPP的嵌入使算法应对尺度多变的射流拥有更高的鲁棒性。

(3)本文提出了作为后处理的轮廓分析方法。轮廓分析是在得到完整的射流轮廓后,对射流实例轮廓的梯度进行分析,在一定先验知识的支撑下决策出射流落点。

2 数据集制作

数据集的质量对深度学习算法的表现起着决定性的作用。深度学习算法的优秀的精确性和鲁棒性往往依赖于大规模数据的训练,大规模的数据不仅仅意味着足够大的数据量,更意味着需要足够复杂多样的背景。SPOUT1323数据集包含了来自现场采集以及互联网资源的1323张射流图片。在这些图片中除了常见的射流图像,还包括大风造成射流严重偏向和射流严重雾化图像。从样本背景来看,又包含了海上执法、室内消防和陆地消防,如图1所示。

图1 SPOUT1323数据集

在水炮射击过程中,水炮射流是由水炮炮口射出的水形成的柱状射流。在数据集的标注过程中,本文使用了 Labelme 工具对射流区域进行了手工提取。在实际划分区域时会存在许多界限不明显的区域。如图2(a)所示,射流会在射出炮口后雾化成水幕,如图2(b)中的Ⅱ区域。而只有当射流的主体部分命中后才是有效命中,如图2(b)中Ⅰ区域。因此,在标定射流分割标签时,将主体区域标注而忽略水雾区域。

图2 数据集分割标签

在SPOUT1323数据集中,有100张射流轮廓完整的图片被标注了射流落点,如图3所示。

图3 射流落点标签

3 本文方法

本文提出一种基于图像分割的射流落点检测算法。该方法的总体流程如图4所示,包含射流分割模型和轮廓分析两个阶段。在第一阶段分割出射流的实体轮廓,在第二阶段决策出射流落点。

图4 本文方法总体流程

3.1 L-Unet编解码结构

L-Unet在主体框架的构建过程中广泛地参考了经典的生物医学图像分割算法U-net。L-Unet采取编解码结构布置,编码器由8层卷积核为3×3的卷积层和4层最大值池化层构成,解码器由4层卷积层以及4层反卷积层构成,其结构如图5所示。为了达到非线性以及避免过拟合效果,每个卷积层后面都会添加一个relu激活函数和一个批归一化层[6]。

图5 L-Unet结构

编解码器网络结构最早由Long等[7]提出用于通用语义分割任务。在编码的过程中,卷积层会将输入特征中所包含的信息逐层提取,经历了特征由低级细粒度特征到高级语义特征的学习过程。图像低级特征包括图像中的边缘、色彩和亮度等细粒度特征,这些信息会在低层的卷积层中被学习到。图像的高级语义特征包含目标更多的语义层次的信息,比如目标的外形等。在Zeiler等[8]的卷积神经网络特征可视化研究中发现,当卷积层层数累加时,低级的细粒度特征会被逐渐抽象成高层语义信息。高层语义信息的累积有利于对目标区域像素的分类,但多层卷积同时会导致算法的计算量巨大,因此在卷积网络的设计中通常会引入最大值池化操作。L-Unet编码器包含4个2×2的最大值池化操作,这将会使编码器输出特征分辨率相比于输入图片下降16倍。本文采用了深度可分离卷积[9]替换普通卷积,这牺牲了极小的计算精度,但减少了大量计算参数与计算耗时。

L-Unet的解码器是将高度抽象化的高层语义特征恢复到输入图片大小。在经过编码器的卷积以及池化后,虽然网络提取到了丰富的高层语义信息但存在着细粒度特征损失且分辨率下降的问题。L-Unet的解码器由4个卷积核为3×3的卷积层、1层卷积核为1×1的卷积层和4层反卷积构成。其中3×3卷积是为了进一步获取精细的分割结果,本文的方法是在编码器和解码器之间建立4条跳层连接,将编码器中的低级特征直接恒等映射至解码器中,3×3卷积对拼接的低级特征与高级特征进行融合运算。相比于高级特征,低级细粒度特征在目标边缘分类时更加有效。L-Unet 算法的最终输出是使用1×1的卷积层将与原图尺寸相同、通道数为64的特征图降维到单通道,并通过sigmod激活函数将结果归一化为概率图。

编码器与解码器的组合[10,11]在大多数语义分割公开数据集[12,13]上均能取得不错的分割效果。但公开语义分割数据集中的分割对象和SPOUT1323数据集中的射流实例存在很大的差异性。SPOUT1323数据集中的射流实例尺度更加多变,水炮射流直径、射流实例在图像中的占宽比都随着场景的不同而发生着变化。同时,相比于采用Resnet系列[14,15]层数更深的特征提取网络作为编码器的算法[16,17],L-Unet的轻量级编码器网络无法为算法提供足够的感受野来应对分割对象的大尺度。为了解决上述缺陷,本文在 L-Unet 的编码器与解码器之间引入了Atrous Spatial Pyramid Pooling[18],下文简称ASPP。ASPP的设计是为了解决在语义分割任务中出现的同类目标尺度多变而难以精确分割的问题,通过在特征顶部映射图使用了6和12两种扩张率的空洞卷积生成多尺度感受野。同时将输入特征图全局池化为分辨率为1×1的特征向量,将结果采用双线性插值上采样至输入特征的大小。所生成的多尺度特征图拼接并经过一个1×1的卷积下降维度后与输入特征拼接进入解码器,过程如图6所示,其中C为特征通道数。

图6 多尺度特征融合过程

3.2 损失函数

将射流实例从图像中被分割出来是一个像素二分类问题,本文将射流所处区域像素定义为正样本,反之则为负样本。SPOUT1323数据集中正负样本的比例接近0.7∶9.3,正负样本严重失衡,如果采用常用的平方损失函数

L(Y,f(x))=(Y-f(x))2

(1)

其中,Y表示样本真实标签,f(x) 表示样本预测值。当数据集中的正负样本比例差距大,神经网络就会更加关注样本多的类别,导致网络在训练过程中陷入损失函数的局部最小值,从而产生预测强烈偏向背景的网络。因此为了解决正负样本不均衡造成的问题,L-Unet使用二分类交叉熵损失函数和dice损失函数[19]相结合的损失函数来对网络进行参数更新

(2)

(3)

(4)

H(p,q) 为二分类交叉熵损失函数,D(p,q) 为dice损失函数,HD(p,q) 为本文所使用的损失函数。其中N表示像素点总数,pi∈P表示样本预测值的总和,qi∈Q表示样本真实标签的总和。λ和η是平衡二分类交叉熵损失函数和dice损失函数在梯度下降中贡献的超参系数。

3.3 轮廓分析

轮廓分析是在获得取得射流实例的分割轮廓后决策射流落点的过程。在轮廓分析之前需对L-Unet的输出概率图做预处理,得到标准二值化轮廓图,如图7(c)所示。L-Unet 的输出的概率图以阈值prethreshold=0.5划分像素为正例和负例,得到标准二值化分割图,如图7(b)所示。基于canny边缘检测算子提取出射流轮廓二值化轮廓图,完成轮廓分析的预处理。

图7 射流边缘轮廓检测

射流的轮廓是连续分布的像素集合 {P|p1,p2,p3,…}.本文的思路是挖掘连续轮廓点的依赖关系,即通过设置一定的采样观测点求得射流轮廓局部梯度。通过观察射流轮廓可以得出射流落点通常处于轮廓梯度变化最剧烈的区间。因此,对采样区间内的轮廓梯度进行排序,再由射流射击方位等先验知识筛选出概率最大的射流落点。轮廓分析步骤如下:

(1)均匀采样,设定一个采样间隔,在轮廓像素集合上以间隔d为步长,取观测点。参数d取决于轮廓像素集合的密度和输入图像大小,参数设置过大则会导致局部感受野过大,反之则过小,两者均不能为射流落点决策提供有效的局部梯度特征。本文定义参数d为

(5)

其中,Contour_len为轮廓像素集合长度,Object_wid为轮廓区域宽度,Image_wid为输入图像宽度。

图8 轮廓分析

(3)夹角排序:穷举上述轮廓像素,生成由夹角角度数据组成的队列。并对上述计算的夹角队列按数值大小进行递增排序,数值较小处落点所在区域概率较高。

(4)射流落点决策:水炮由摄像头的左侧(或右侧)向目标射击的情况是可以预先获取到的先验知识,因此通过计算向量夹角中线(如图8(a)中β射线所示)确定轮廓尖锐处的趋向来选定射击落点。当射流是由镜头右侧射向目标时,轮廓向量夹角合理有效区间应为处在第三象限的[-170°,-100°]。当射流是由镜头左侧射向目标时,轮廓向量夹角合理有效区间应为处在第三象限的[-80°,-10°]。将递增夹角序列逐次进行有效性判断,首个出现在有效区间的判定为有效射流落点夹角,取其构成向量的中心轮廓点如图8(a)中e。

(5)射流落点补偿:通过上述4个步骤可以初步得出射流落点,但当射流击中目标往往会形成浪花干扰分割的结果,如图9(a)中的射流会分割为图9(b)中的二值化图片。本文采取的方法是在落点相邻的50个轮廓点搜寻纵坐标最低点,并取其横坐标作为射流落点横坐标。如图9(c)中,A点经补偿后偏移到B点。

图9 落点修正过程

4 实验与分析

4.1 实验环境

硬件设备:CPU为Intel Core i7-9700k 3.7 GHz,GPU为NVIDIA GeForce RTX 2080 Ti 11 GB,内存为DDR4 16 G。软件环境:操作系统为windows10-1903,Python3.7,Pytorch1.1.0。

4.2 数据增强

SPOUT1323数据集中的数据主要来源于实验场地拍摄,所涉及到的实验场地以及所处的天气状况和外界光照强度并不能使L-Unet网络的泛化能力达到很好。因此,在L-Unet网络的训练过程中读取数据时,通过随机旋转、镜像、模糊、光照调整、尺度调整以及添加人工噪声等数据增强方法扩增训练样本集,如图10所示。

图10 数据增强效果

4.3 L-Unet模型

L-Unet模型的训练在上述实验环境下完成。模型的训练采取了按批处理的方式,将6张图片作为一个批次(batch)参与模型参数优化过程。总共需要221个batch完成一个epoch的训练,最终遍历SPOUT1323数据集400个epoch完成训练。训练采用了Adam的参数优化器,学习率调整策略采取的是Poly策略。Poly策略的公式为

(6)

L-Unet是一个典型的语义分割模型,本文在评估L-Unet 性能时采取了准确率(accuracy,ACC)、灵敏度(sensitivity,SE)和特异性(specificity,SP)评估模型的分割性能。3个指标的计算公式如下所示

(7)

(8)

(9)

其中,TP为真阳性,指的是正确分类的射流点个数,TN为真阴性,指的是正确分类的背景像素点个数,FP为假阳性,指的是误分成射流像素的个数,FN为假阴性,指的是误分成背景像素点个数。准确率表示类别预测正确的像素占图像像素总数的比例,从整体上反映了L-Unet模型训练的鲁棒性。灵敏度表示了被正确预测为射流像素占射流像素总数的比例,反映的是射流像素的漏检情况。特异性表示被正确预测为背景的像素占背景像素总数的比例,反映的是射流像素的误检情况。L-Unet模型训练的情况如图11所示。

图11 训练损失下降过程

经过400个epoch的训练,L-Unet训练损失函数稳定在0.0368结束训练。本文对Deeplabv3、U-net与本文提出的 L-Unet 算法在分割性能与计算资源消耗上进行了比较。实验均在704×448的输入图片上进行测试,实验结果见表1。

表1 L-Unet与几种经典分割方法对比

4.4 落点检测

本文在100张标注射流落点的数据上进行了落点检测测试。测试集的图片均采集自实验场地,而非来自网络。这些图片是从多个角度和多个光照强度段采集,单独进行测试。相比于来自网络的射流图像,采集实验场地的图片拍摄角度更加贴近自动水炮的应用需求,且提供更加完整的射流轮廓。落点检测采取的评价指标是精确率(Precision),其计算公式为

(10)

精确率反映的是所有正确预测的射流落点在所有落点检测结果中的比例。其中TP为正确定位的射流落点,FP为定位错误的射流落点。本文以算法射流落点检测结果与标签结果间像素的欧式距离作为TP与FP的区分条件,当误差距离小于阈值threshold=20时则判定为正确预测,否则判定为错误预测。

射流落点检测实验结果见表2。

表2 射流落点检测结果

对其中几组典型结果做分析,每张图片耗时约32 ms(包含第一阶段分割耗时)。如表3所示的5组实验:实验1组展示的是在十分理想的情况下检测的结果,实验环境中光照充足,射流轨迹清晰且无雾化现象,在第一阶段的分割任务中ACC指标达0.995。良好的分割效果使得第二阶段的落点检测达到较高精度;实验2组是在较暗的环境中进行,较暗的光照情况使得一阶段的分割效果产生了下滑现象,主要体现在分割结果中出现了噪点,但并没有对二阶段的落点检测产生不利影响;实验3组是射流的末端出现分散的现象。但在SPOUT1323分割数据标注时将发散部分忽略为背景,这一人为设定在L-Unet训练过程中被模型学习到了。因此,3组中的射流发散没有对射流主体的分割造成严重干扰;实验分组4是在室外实验场地采用大口径水炮射击,相比于前几组实验产生了雾化干扰,这对分割效果产生了较明显的干扰;实验分组5是小口径水炮散射效果。

表3 实验效果展示

通过观察实验中的分割效果图和射流落点定位误差可以看出,射流落点的定位受到一阶段射流分割结果的影响较大,良好的检测结果依赖质量较高的射流分割结果。实验在100张测试数据集上取得了95%的精确率,而检测错误的来源主要是来源于雾化严重的射流对象。

5 结束语

本文提出的水炮射流落点检测方法最大贡献之处在于将深度学习模型引入到射流轨迹提取任务。相比于传统的射流落点检测方法[3]多是应用在背景相对简单的红外图像上,在射流轨迹的提取方式上,采取了深度学习方案的 L-Unet 模型对形态复杂多变的射流具有较强的鲁棒性,这对推动相关技术的实用化具有相当意义。在设计L-Unet的过程中,本文在性能与耗时之间寻找到了平衡点。使得模型在分割准确率达到0.990的可观精度前提下,分割单帧图像仅31 ms。第二阶段的轮廓分析高度依赖第一阶段的射流实体分割精度,通过挖掘射流轮廓点的梯度关系决策出射流落点。本文方法在SPOUT1323数据集射流落点检测数据集上得到了95%的精确率,但仍存在着很大的优化潜力。下一步的工作应将重点放在轮廓分析阶段,增强轮廓分析方法对射流分割结果的抗干扰能力。

猜你喜欢
水炮落点射流
深海逃逸舱射流注水均压过程仿真分析
低压天然气泄漏射流扩散特性研究
基于空间分层组合设计的火箭落点实时计算模型
“防雾霾炮”
铁矿采场多组份水炮泥抑制爆破烟尘试验研究
AC313 直升机加装水箱、水炮总体技术方案通过评审
MSC.365(93)关于修订SOLAS消防系统要求的研究
美火星轨道器拍到欧洲着陆器落点图像
射流齿形喷嘴射流流场与气动声学分析
地铁站台活塞风附壁射流起始段的实测和实验验证