胡 敏, 陈 楠, 毕进娜
(中石化石油物探技术研究院有限公司, 南京 211100)
在石油勘探工作中,选定勘探工区后,要进行观测网设计、车载导航、道路规划等系列工作,这些工作都与工区实际环境相关,需要对无法穿过的物体进行合理的位置偏移,因此在设计过程中需要获取工区各种障碍物的位置信息。传统的工区障碍物位置确定利用软件进行人工获取识别,而人工确定障碍物的工作是不可重复利用的,即需要针对每一个勘探工区都进行相同的工作,对之后的新勘探工区没有再次利用的价值。另一方面,随着无线地震采集节点的使用以及第5代移动通信技术(5G)智能节点的研发及后期的市场化,地震采集工作将变得高密度化、高效率化,人工确定工区障碍物分布的方法远远跟不上无线节点的工作效率需求。综上两个方面,有必要研究高效率的工区障碍物识别方法。
人工矢量化工区障碍物是一项大量的机械性且重复的工作,而目前的人工智能在很多领域如自然语言处理、计算机视觉等取得了很好的效果,大大提高相应领域的生产效率[1-3]。工区障碍物识别主要是需要针对工区的卫星图片辨识出建筑、道路、水体等地震采集节点不能布设的地理位置和所在范围,本质上是对获取的工区卫星图片进行语义分割,分割的任务就是提取像素意义上的障碍物。语义分割算法分为传统图像分割算法和基于卷积神经网络的语义分割算法两大类[4]。传统图像分割算法中,图像背景与目标的灰度有明显差异时适合选取阈值法进行分割[5],图像不同区域灰度或者RGB值发生明显突变时适合选取基于边缘的分割方法[6],即传统的图像分割算法都有其特殊使用情景。而基于卷积神经网络的语义分割算法经过多场景训练集的训练能够具有更强的泛化性能。在文献[7]中,全卷积神经网络(full convolutional neural network,FCN)作为深度学习语义分割第一个网络模型,首次将端到端的卷积神经网络推广到语义分割,设计反卷积层进行上采样,并提出跳跃联合即将对应像素点在深层和浅层处的特征进行求和来进行上采样,但FCN的参数太多,占用大量计算机内存,训练比较困难。经典的语义分割网络U-Net[8]在FCN的基础上进行了改进,主要是用于医学图像上的分割,同样采取了跳跃性连接,但与FCN不同的是,U-Net网络是将深层和浅层对应的特征信息直接进行粘贴联合,能在医学小数据集上取得较好的效果。另一个经典的语义分割网络是SegNet[9]网络,与U-Net网络结构类似,整体都是前半部分编码后半部分解码,只是没有形成“U”形,该网络不仅复制了编码器的特征,还复制了最大池化指数,使得该网络在内存使用上比前两者更高效。因此SegNet从工程方向上考虑是一个比较实用的深度网络。在已有的涉及图像处理的实际工作中,如文献[10]为弥补网络对建筑物特征信息利用的不足将局部二值模式纹理特征与SegNet进行结合,文献[11]利用SE(squeeze-excitation)注意力机制改变特征图权重系数来提高SegNet编码能力,文献[12]提出了基于SegNet多尺度特征融合的云图分割方法从而提高了云图语义分割任务的泛化能力等工作中SegNet都具有良好的指导意义。
综合前述已有的工作不难发现,SegNet虽然具有很强的工程使用价值,但是都需要针对不同的问题情景结合相应的预处理或者后处理算法,才能得到更好的使用效果。采用SegNet网络进行前端的语义分割,但是仅仅依靠深度网络模型达到良好的语义分割效果,需要数万级甚至数十万级的训练数据[13-14],即在本文的实际任务中需要制备大量的由所用地图软件平台获取的卫星图片标签,针对每种风格的卫星图片要制备的标签数量级达数十万,这与本文的研究目的(节约成本、提高效率)是相违背的,因此希望基于少量样本就能获取良好的语义分割效果,可以结合概率图模型[8]对结果进行优化处理。
深度网络学习领域里对图像进行像素级别的语义分割常用的是全卷积神经网络FCN,以及FCN的变种网络。这些网络都有卷积层下采样提取特征和反卷积层上采样恢复原图尺寸的操作,导致图像的部分特征损失,因此语义分割结果出现不同类别物体边界模糊的问题。而深度学习和概率图模型结合是一个趋势,语义分割领域的通用框架[15-16]是:前端使用FCN进行语义分割,得到粗略分割结果,后端使用条件随机场(conditional random fields,CRF)或马尔科夫随机场(Markov random field,MRF)对深度网络的输出结果进行优化,得到较为清晰的分类界限。本文中除了前端深度网络和后端CRF组合使用,在此结果上再基于区域连通去除小面积分割噪点,但这个操作会留下未被分类的像素点孔洞,因此利用支持向量机(support vector machine,SVM)得到关于特征的概率与SegNet得到的标签空间位置概率进行融合的方法来对孔洞像素点类别分类。本节主要对使用的CRF、特征与空间概率融合法进行详细介绍。
图像的每个像素i基于SegNet的结果被标记为类别标签xi,原图像素点i的像素值和空间位置记为该点观测值yi,考虑由所有像素点构成的无向拓扑图,则每个像素点是无向图的节点,再将相邻像素两两建立边联系,此时构成图1所示的全连接条件随机场。
图1 全连接条件随机场
图像所有像素标签记为X,原始图像为全局观测记为Y,条件随机场符合吉布斯分布,即(X,Y)~Gibbs:
(1)
式中:P(X|Y)为在图像原始观测到的像素值信息的条件下每个像素点进行标签标记的分类结果概率也即条件概率;E(X|Y)为状态标签X的Gibbs能量的计算公式;Z(Y)为归一化因子[17]。Gibbs能量的计算公式为
(2)
式中:一元势函数ψu(Xi|Yi)由SegNet网络结果确定,与像素点i在像素特征Yi下标签为Xi的概率成反比;二元势函数[18]ψp(Xi,Xj|Yi,Yj) 由原图像的像素值和位置信息等特征确定,用来衡量任意两个像素点对在给定相应的观测值下标签为Xi和Xj的代价,使得原图特征相似的像素点有更大的可能性被分为相同的标签。Gibbs能量则是衡量当前分割结果的代价,代价越小Gibbs概率越大,返回的语义分割结果使得吉布斯概率最大。
在CRF优化处理基础上,依然存在一些错分的小面积部分,经过连通域处理后小面积部分处于未被指定标签的状态,借鉴高光谱遥感图片中基于少许先验标签的空间概率和光谱特征支持向量机(SVM)概率融合的语义分割法[19],此时可以基于这些未被分类像素点在SegNet已分类结果的空间信息对应的概率和由SVM输出的属于每个类别的特征概率进行融合确定标签类别。设有L个类别,以某个未标注的像素点为中心开统计窗w,并设该像素点的标签变量Xk取值为xk,xk∈{1,2,…,L},空间概率为
(3)
(4)
为了利于后期模型在生产上应用,选取当前试验阶段使用的奥维地图软件获取卫星图片自制数据集。由于人力有限,本文中抓取了尺寸大小为6 912×2 880、分辨率为18 m的RGB图像(图2),GPU限制下需要将图像切割成小图,这里将切割成256×256的小图,共297张,挑选其中的16张回拼成大图用来做测试集,其余281张图片作为原始训练集。使用Labelme对297张原图进行5个类别标注,分别是房屋(building标记为1)、道路(road标记为2)、水域(water标记为3)、植被(green标记为4)及背景(background标记为0),Labelme每标注完一张图片自动生成相应的由边界点坐标组成的json文件,随后编写Python语言脚本将json文件批量转换成训练使用的灰度标签,图3可视化显示了其中2张标签。这里对测试集部分也进行标签标注,方便之后进行预测效果指标的统计。
图2 奥维地图获取的tif图片
图3 部分标签制作效果示意
由于图像打标签消耗大量人力,短时间内训练标签数量不足,为了防止数据过少造成模型过拟合,需要提高训练数据集丰富性以提高模型的泛化能力。这里对原始训练集和每一对图像和相应的标签做数据增强,包括旋转角度、调整亮度、调整对比度、调整锐度、调整色度和翻转。经过数据增强之后,训练集数量扩充到2 529张,数据增强效果如图4所示。
图4 部分数据增强
本文使用的SegNet网络结构如图5所示。输入层是3通道的256×256图像,网络分为编码和解码两部分,前半部分为编码层,通过多次卷积和池化进行不同深度的特征提取,后半部分为解码层,通过多层反卷积和上采样进行原图尺寸恢复。输出层是经过Softmax 层得到像素点属于各个类别的概率值,像素点的标签识别为最大概率值对应的类别。搭建的该网络用2020-CCF-BDCI提供的10万级数据集CamVid进行测试,网络损失率和正确率稳定且分别收敛到0.002以下和0.900以上。
对281张原始训练集对应的所有标签进行按类别逐像素统计,结果见表1。由统计结果可见,考虑的4个主要类别中道路的占比严重失衡,该分布下的数据集训练出来的模型很难将道路正确识别出来。因此需要对占比取倒数来作为训练模型时权重参数输入,即class_weight={129.87,4.32,15.04,4.55,2.19}。
表1 数据集像素类别分布
将增强后的2 529对数据集和标签按照8∶2的比例随机分为训练集和交叉验证集,由于计算机CPU计算力限制,batch_size最大设置为10,则steps_each_epoch设置为202,经过多次实验,epoch设置为300、loss函数选择mean_squared_error、优化器选择adam时训练和测试效果较好。
搭建的SegNet网络在上述数据集和参数设置下训练并且收敛。训练集上损失loss=0.001 2,准确率accuracy=0.99;交叉验证集上损失loss=0.242 0,准确率accuracy=0.93。分别对训练测试集和测试集进行模型预测,为了减少图片切割对边界预测的影响,先对输入的原图进行膨胀填充,然后以滑动步长为128将图片切割为256×256的小图进行预测,每次取小图预测结果的中心部分128×128,最后得到SegNet网络预测结果以预测集为例,如图6所示。
图6 SegNet在训练集和测试集上的预测效果
由SegNet结果发现,测试集上分类边界不清晰,且对道路这一类别的识别较差,因此需要对SegNet的结果进行优化处理。如果直接进行CRF处理会将面积较小但识别正确的道路平滑为其他类别,因此需要在CRF优化之前先对道路做二分类提取,然后对道路二分类的结果进行膨胀处理,再将二分类的结果覆盖在SegNet的五分类结果上,作为下一步CRF处理的输入。系列处理如图7所示。
图7 道路二分类膨胀及与SegNet语义分割的融合
将上述二分类与五分类融合的结果即图7(d)作为CRF的状态输入,图6(c)作为CRF的观测输入,构成线性条件随机场。将标签状态概率置为0.7,全局观测原图的RGB和位置信息概率置为0.3,即原图信息在原有结果上对语义分割进行调整。CRF处理前后效果如图8所示,不同类别的分界线较处理之前清晰,但依然存在很多错误分类的小面积噪点。
图8 CRF处理前后效果对比
定义四邻域连接即认为属于相同连通区域,设置连通区域阈值为150像素点,将CRF处理之后的语义分割结果中连通区域面积小于150像素点的区域删除,得到图9(b)的结果,留有删除标签之后的未标记孔洞(黑色部分)。度量孔洞处像素点与周围已经被标注的像素点之间RGB特征、空间坐标相似性,即基于特征与空间融合的方法对孔洞处像素点进行标签识别,效果如图9(c)所示,可见比消除杂波之前分割更加干净。
图9 特征与空间概率融合前后效果对比
最终的测试集预测结果如图10(c)所示,测试集原图与最终预测结果的融合如图10(d)所示。从直观上看预测结果与图10(b)实际标签较吻合,但评价语义分割效果需要从量化的指标进行,主要用准确率和交并比来衡量。每个类别对应的指标见表2,水域和植被在准确率和交并比两个指标上表现均很高,道路的交并比最低,说明将其他类识别为道路的占比和将道路识别为其他类别的占比都比较高,这与来源的数据中道路类别占比较低有关,而且从图10(c)最终预测结果可以发现房屋和道路相互之间被错误分类,这与原图中某些道路段与房屋具有相似或相近的RGB特征有关。
表2 测试集最终语义分割指标
图10 SegNet语义分割之后优化处理的效果
提出了基于SegNet网络并结合条件随机场、特征与空间融合等多种后处理方法进行地形地貌图片的语义分割方法。由于该方法后期会用于生产实践中,因此从生产实践中应用的卫星图片软件获取原图,并使用Labelme进行标签制作,完成了297张原始图片标签标注工作。在仅有的281张训练数据的条件下,概率图模型处理之后的语义分割模型对测试集各类预测准确率都较高,依次有房屋0.832 1、道路0.867 8、水域0.938 0以及植被0.890 5,对工区障碍物能进行高效且有效分割提取。因此本文的方法可达到在少量标签下具备较强的泛化能力的效果,只需要少量标签便可以获取较好的语义分割效果,也即能够小成本、灵活地运用到任何特定的语义分割场景中。