李 颖,李秀宇,卢兆林,李世银
(中国矿业大学 信息与控制工程学院,江苏 徐州 221116)
煤炭是我国主要的能源和重要的生产原料,煤炭分选能够减少燃煤造成的环境污染问题,其中煤粉颗粒粒度是煤炭分选过程中的重要参考信息。基于图像处理的粒度分析方法凭借准确性和快速性成为研究的重点,利用图像处理技术提取颗粒特征,进而对煤粉颗粒进行粒度分析。其中,图像分割是关键技术,通过分割样品图像能够得到图像中颗粒数目、形状、尺寸分布等信息,为煤炭分选提供依据[1-4]。
现有的煤炭颗粒图像分割算法可分为传统算法和基于深度学习的算法[5,6]。利用传统算法处理较复杂的煤炭颗粒图像时会出现一些问题,如阈值分割易受噪声干扰,边缘检测需要处理优化边缘,区域分割中常用的分水岭算法则会存在过分割的情况,为了解决颗粒粘连等问题,还需引入数学形态学等算法进行后处理。传统算法主要依赖于图像灰度分布相关的阈值、边缘等特征,而煤炭图像中颗粒与背景的灰度分布较为接近,很难提取传统特征,因此利用传统分割算法处理煤粉颗粒CT图像中颗粒过多过小和颗粒形态复杂等问题,分割效果并不理想[7-9]。
基于深度学习的分割算法则是利用卷积神经网络学习煤粉颗粒特征进行分割。近年来,深度学习快速发展,广泛地应用于各类图像处理任务中[10],煤矿智能分选领域也进行了相关尝试,利用深度学习解决各种煤炭图像分割与识别问题,发现基于深度学习的算法可以更加快速、准确[11-13]。
其中基于深度学习的实例分割算法不仅能够分割背景和颗粒,还可以直接利用端到端的分割模型得到单独颗粒信息。因此本文采用实例分割算法来分割煤粉颗粒CT图像,接下来主要介绍本文提出的分割算法、数据集、实验结果和结论等。
本文旨在精确分割煤粉颗粒,得到单独颗粒信息,因此采用基于Mask R-CNN[14]的实例分割算法。Mask R-CNN在自然图像处理上效果显著,但是直接应用于煤粉CT图像存在颗粒漏分割、分割颗粒形态不完整等问题,针对上述问题,本算法首先在特征金字塔网络中添加压缩激励(squeeze-and-excitation,SE)[15]模块来增强特征的通道信息,同时将压缩激励模块(simplified squeeze-and-excitation,SSE)改进后用于增强高层和低层特征间语义信息,这样能够有效提高小颗粒定位的准确性,减少欠分割;然后重新设计分割分支以达到更精细的分割;最后在训练阶段选取参数时,参考添加锚点框预处理结果可以更加合理选择训练参数,提高分割准确性。
本文提出的基于深度学习的煤粉分割模型结构如图1所示,该模型分为两个阶段,第一阶段采用残差网络和特征金字塔网络(feature pyramid network,FPN)[16]提取颗粒语义特征和位置特征,得到不同尺度的特征图,然后将特征图传入候选区域生成网络(region proposal network,RPN)生成候选框。第二阶段将候选区域映射到特征图后传入RoIAlign层,进行固定尺寸的池化操作,进而对头部网络中的目标分类、边界框回归和掩膜分割等任务进行处理。
图1 基于深度学习的煤粉颗粒图像分割模型
第一阶段的作用是提取颗粒位置特征和语义特征并生成候选区域。首先利用特征提取网络提取图像特征,得到不同尺度的特征图;然后将特征图传入候选区域生成网络获取候选框。
特征提取网络如图1所示,本文采用残差网络和特征金字塔网络为基础提取图像特征。利用残差网络提取不同尺度信息,在本文中共提取5个尺度的特征图,标记为C1,C2,C3,C4,C5,这5个特征图具有不同的分辨率,相对于原始图片的大小是 {1/4,1/8,1/16,1/32,1/64}, 由于C1的特征图较大,计算负担加大,故不采用。
特征金字塔网络包含自下至上连接、自上至下连接和横向连接3种连接方式,能够输出多个尺度的特征图。其中,自下至上连接是指在残差网络中可利用底层特征图通过降采样得到高层特征图,另外两种连接方式与图1特征金字塔部分中箭头的方向一致,输出特征记作P2,P3,P4,P5,与对应的C2,C3,C4,C5大小相同。在原始的特征金字塔网络中自下至上连接只采用了上采样的方式,不适于解决较小煤粉颗粒目标特征表达能力弱的问题。为此本文引入压缩激励(SE)模块,结构图如图2所示,SE模块首先采用全局池化操作对特征图进行压缩,得到一个具有全局感受野的特征图;然后利用两个全连接层去构建通道间的相关性,本文将特征维度降低到输入维度的1/16,通过ReLU激活后利用全连接层提升到原来的维度,这样既可以增加网络的非线性,减少计算量,也可更好地拟合通道间复杂的相关性;最后将通过Sigmoid激活函数得到的结果作为权重与原始特征图相乘得到输出特征,使用该操作可增强残差网络的输出特征图的通道信息。
图2 压缩激励模块结构
图3 SSE模块结构
利用卷积神经网络提取特征时,随着网络深度的增加,模型可以学习到更多的图像特征,但是较小的煤粉颗粒目标随网络深度的增加可能会出现特征减少、特征表达能力减弱等问题,导致最终学习到的特征非常有限。故本文考虑了不同分辨率特征之间的关系,对原有的压缩激励模块进行针对性改进,进一步增强图像特征间的联系。改进后的压缩激励模块(SSE)如图3所示,其不再用于增强同一个特征的通道信息,而是用于两个特征图之间,一般我们称经过更多层卷积后的特征为高层特征。首先将高层特征进行全局池化操作,然后将原有激励操作合并成一个1×1卷积,获得统一的通道数(本文采用256),最后采用批归一化(batch normalizatoin,BN)和Sigmoid激活函数,得到一个与高层特征相关的输出。低层特征经卷积得到与高层特征相同的通道数,再与高层特征相关的输出进行点乘得到新的特征,新的特征与高层特征两倍上采样相加,得到最终的输出。这样既保持原有的压缩激励操作能够增强通道信息的优点,又能增强不同分辨率的特征图的语义信息,提升了图像分割的性能。
RPN的作用是生成目标的候选区域,得到与特征金字塔网络输出特征维度相同的特征图,通过两个并行的全连接操作对该特征图进行分类(二分类,包含目标和不包含目标)和目标框坐标回归操作,最后输出一组目标的候选区域以及对应的置信度分数,置信度分数代表候选区域的质量,分数越高,质量越高,可根据实际情况筛选合适的候选区域,输入第二阶段进行目标的细化。
图4 图像目标尺寸分布
在RPN中,为了选取候选区域,一般会在特征图的每一个像素点上预先设定锚点框(anchor box),锚点框一般为预先设定的不同尺寸的长方形,负责选取图像中可能属于数据集中某一类的候选区域,再把候选区域输入到分类网络中进行最终的分类。针对煤粉颗粒数据集,本文采用了锚点框预处理模块,利用k-means聚类算法得到颗粒尺寸分布情况如图4所示,本文将k值设置为50,浅色小圆点从训练集中随机选取的2000个目标框的大小,深色三角为聚类结果,从聚类结果中选择合适的锚点框尺寸。从图中可以看出,煤粉图像中颗粒目标尺寸相对较小,根据COCO数据集[17]的划分标准(目标面积小于32×32为小目标,介于32×32和96×96之间的为中等目标,大于96×96为大目标),图像中小目标和中等目标占比非常大,为了识别所有颗粒,锚点框的尺寸应与图像中颗粒尺寸相匹配,既包含所有目标又不宜太大,针对本文数据集选取的锚点框尺寸为 {10,25,50,75,100}, 比率为 {0.5,1.0,2.0}。
第二阶段主要是将RPN输出的候选区域传入RoIAlign层,得到固定尺寸的特征图用于分类、回归和分割。头部网络处理任务之前,将得到的候选区域映射回特征金字塔输出特征图后传入RoIAlign层,RoIAlign层采用双线性插值的方法使得每个感兴趣区域能够与原图中对应区域对齐,然后对该区域进行池化操作,生成固定大小的特征图进行细分类、目标框回归以及掩膜分割。
Mask R-CNN原有的掩膜预测网络结构相对单一,难以得到较为精细的分割结果。全卷积神经网络[18]用于语义分割时为了得到更加精细的分割结果,不只采用最后的输出进行分割预测,还采用跳级连接添加中间层的特征,实验结果表明,添加中间层特征有助于恢复图像细节。受这一想法的启发,本文对分割分支进行了重新设计,结构图如图5所示,经RoIAlign输出的特征图采用连续卷积计算,每两个卷积进行一次两倍上采样,并将RoIAlign上采样的结果与两个卷积输出上采样的结果相加得到用于预测的特征图,实验结果显示预测掩膜会更加完整。
图5 掩膜预测分支结构
煤粉颗粒分割模型属于多任务学习,可以完成目标分类、检测和分割3个任务,在第二阶段训练时,采用了3个损失函数共同参与网络训练,损失函数的定义如下
L=Lcls+Lbox+Lmask
(1)
3个损失函数分别为分类损失、回归损失和分割损失。分类损失采用Softmax交叉熵损失函数,计算的是输出煤粉颗粒的类别损失。分类损失函数的定义如下
Lcls=-ylog(y′)-(1-y)log(1-y′)
(2)
其中,y表示真实值,y′表示预测值。煤粉颗粒图像可以分为颗粒和背景两类。
回归损失函数采用Smooth L1损失函数,计算方式如式(3)
(3)
分割损失采用的是二进制Sigmoid交叉熵损失函数,计算公式如下
(4)
其中,yi表示真实值,y′i表示预测值,m表示预测掩膜的大小,本文取28×28,该公式计算每一个掩膜的损失函数值。分割损失函数在输出层采用Sigmoid作为激活函数,只能用于二分类,对输出的特征图进行预测,判断特征图中的每一个像素点属于颗粒还是背景来实现分割。
本文采用高分辨三维X射线显微成像系统(3D-XRM)采集煤粉颗粒图像。所获图像样本为1500张连续序列的煤粉CT图像,图片宽高为990×1013,由于标注成本过高,没有对全部图片进行标注,随机选取序列中的图片进行剪裁,利用Labelme[19]进行颗粒标注,每幅图像的颗粒数目从20到60不等,能够充分表达不同的颗粒形态。本文采用训练集数目为100,验证集数目为20,大小为229×229的图像进行训练,数据集样本如图6所示,其中图6(a)是训练集图像,大小为229×229,图6(g)是真实标注的标签(ground truth,GT),所有的颗粒标注为一类,不同的颜色代表不同的实例,即单个颗粒。图6(b)至图6(f)展示了不同的图像增强方式,如图像翻转、图像镜像、图像旋转、图像倍乘、高斯模糊、部分图像变换等,图6(h)至图6(l)是相应的变换对应的标签。通过图像增强增加训练样本数量扩充至1000,可有效减轻过拟合的情况。
图6 训练集图片及其增强方法展示
在本文中,我们采用准确率(Precision)和召回率(Recall)来评价算法,准确率用于衡量结果的准确性,召回率用于衡量结果的好坏,公式如下
(5)
(6)
其中,TP为被正确识别为正样本的实例数,FP为被错误划分为正样本的实例数,FN为被错误划分为负样本的实例数,在本文中,实例数目就是指图像中煤粉颗粒的数目。
同时,我们采用平均精确度(mean average precision,mAP)来评价分割算法的质量,它能够定量地描述准确率和召回率的分布情况,采用多阈值计算平均精确度,共采用10个阈值(阈值是指分割掩膜和真实掩膜的交并比),从0.5开始取值,取值间隔为0.05,最大阈值为0.95,同时,我们取0.5(AP50)和0.75(AP75)两个单阈值来共同衡量分割算法。
本文采用ResNet50和特征金字塔网络作为特征提取网络,采用ResNet50既能获取更快的训练速度也能满足计算要求。理想的深度学习训练需要大量的标注样本,但是数据标注成本较高,很难针对某些任务建成大规模数据集,为了解决训练样本数量不足的问题,可利用迁移学习方法进行处理。迁移学习[20]是解决样本数量不足时有效的训练方法,常见的处理方式是将相关任务的权重迁移到目标任务模型的训练中,然后利用小规模数据集进行参数学习,这样能够得到较好的训练效果。本文的数据集规模较小,因此采用了迁移学习,具体方法为:将采用经过大规模数据集COCO数据集训练的模型参数迁移到本文的模型中,然后利用煤粉数据集进行模型训练,总共训练80个epoch,训练时每个epoch的训练步长为100,批处理尺寸(batch size)设置为2。本文在训练时采用随机梯度下降的方法优化模型,动量设置为0.9,初始学习率设置为0.001,权重衰减指数为0.0001。
在候选区域生成网络训练过程中进行多尺度预测,每个特征图得到的预测的目标框的个数为特征大小乘15个设定的锚点框,总计得到261 888个预测锚点框,计算量非常大。为了减小计算量,增加训练效率,我们首先采用非极大值抑制算法[21]筛选预测框,本文阈值设置为0.7,即如果两个框重叠的面积与总面积之比大于0.7,则该框删掉,否则保留。然后利用交并比(IoU)去选择正样本和负样本,交并比的计算公式如下
(7)
其中,anchor box为预测框,GT box即Ground Truth box,为标注框,如果IoU大于0.7,则为正样本,小于0.3则为负样本,我们设置每张图片保留256个预测框。在头部网络训练中,每张图片随机选取200个感兴趣区域进行训练,正负样本比率选择均为0.33。
设置训练参数时,锚点框的尺寸是预先设定的,锚点框的尺寸应当包含所有目标的大小,在Mask R-CNN中,锚点框的尺寸为 {32,64,128,256,512} 和3个决定形状的比率为 {0.5,1.0,2.0}, 经实验发现这样对煤粉颗粒并不能产生很好的结果,按照建议进行等比例缩小修改,效果更差。故本文根据锚点框预处理模块得到的图4所示的颗粒分布情况,最终选取锚点框的尺寸为 {10,25,50,75,100}, 比率为 {0.5,1.0,2.0}。 在测试阶段,测试图像大小输入为990×1013,最大目标检测数目设置为512,置信度设置为0.9。实验结果见表1,由对比结果可得出,经过锚点框预处理模块合理设计得到的锚点框尺寸能与我们的数据集更好地匹配,可以提升训练效果。
表1 不同锚点框尺寸的对比实验结果/%
我们的实验结果可视化如图7所示,在图中不仅展示了本文算法和Mask R-CNN的可视化结果,还与阈值分割算法[22]、分水岭算法[23]、一阶段实例分割算法YOLACT[24]和二阶段实例分割PANet算法[25]进行直观上的比较。测试集图像是CT序列的原始图像,大小为990×1013。图7(a)为CT序列中任选的一张图片,从图可以看出煤炭CT图像中颗粒数量多并且煤粉颗粒中掺杂矿物颗粒,形态较为复杂。图7(b)是其真实的颗粒标注标签,考虑到图像中的颗粒如果十分分散,不成形态就不进行标注,对整体的分析不会产生影响。图7(c)是采用阈值分割得到的结果,可以看到分割结果图中存在很多细小的斑点,严重影响颗粒形态。图7(d)是采用传统的分水岭算法得到的结果,因为分水岭算法依赖灰度分布情况,而CT图像灰度值前景和背景相差不大,所以不仅存在过分割问题,也很难分割出完整的颗粒形态。图7(e)是选取的典型一阶段实例分割算法YOLACT的测试结果,其分割效果远远不如两阶段的实例分割算法,欠分割非常严重,这是因为单阶段的实例分割依赖掩膜形态,对规则物体效果较好,但对于颗粒这种形态十分不规则的目标效果不理想。图7(f)是Mask R-CNN的测试结果,分割效果较传统算法和YOLACT算法有很大提升,但是仍存在颗粒欠分割等问题。图(g)是PANet算法预测结果,PANet可以看作是Mask R-CNN的改进,但是更多得考虑了底层信息以及信息之间的传递路径,虽然分割效果略有提升,但是模型的参数量却大大增加。图7(h)是本文算法的实验结果,从图中标注的位置可以看出,检测出的颗粒结构比较完整,分割效果最好并且参数量几乎没有增加。
图7 不同分割算法分割结果对比
图7的结果展示了本文算法可以得到更加精细的颗粒形态,为了评价本文分割算法的有效性,验证每个模块对本文方法的贡献,我们采用mAP以及AP50和AP75来评价该算法并与MaskR-CNN和PANet进行对比。改进的压缩激励模块能够增强不同特征之间的语义信息和通道信息,改善颗粒分割情况,由表2可以看出,添加压缩激励模块以及改进的压缩激励模块较原来的算法在平均精度上提高了1.85%。重新设计的分割分支增强了卷积层之间的联系,将不同的卷积层进行相加后得到最终的特征图进行二值分割,不仅可以改善分割出的颗粒形态,平均精度也提高了1.12%。表2表明了添加的模块对颗粒分割的有效性。本文算法与PANet算法比较,发现PANet相较于MaskR-CNN的效果有所提升,说明改善信息路径对小颗粒也有作用,但是PANet更针对于大目标,对颗粒分割改善有限。本文算法对于颗粒目标更有针对性,最终的平均精度可以达到53.73%,较Mask R-CNN的平均精度50.99%提高了2.74%,能够表明本文算法对煤粉颗粒CT图像分割效果较好。
为了进一步验证本文算法能够分割更多的颗粒,改善漏分割情况,将本文算法与原始的Mask R-CNN进行实验对比。表2的召回率是随机选取序列中的5张图片进行颗粒预测的结果。每张图片中的颗粒数目不等,先进行单张计算然后再进行汇总,结果显示,较Mask R-CNN总体的召回率提升了2.24%,由此可以得出,本文算法可以有效提高分割颗粒数目。
为了验证SE模块和SSE模块能够有效改善小颗粒分割效果,分割出更多的颗粒,本文进行消融实验,计算测试集中Mask R-CNN和添加这两个模块后分割出的准确度和召回率,实验结果见表3,从中可以看出,添加SE模块和SSE模块对分割效有所提升,分割平均准确度分别提高了0.95%和1.98%,召回率分别提高了1.83%和1.17%,说明添加SE模块和SSE模块都能够提高小颗粒的分割效果。同时使用这两个模块平均准确率提高了1.85%,召回率提高了2.1%,说明同时使用分割效果更好。
表3 SE模块和SSE模块消融实验结果/%
煤粉颗粒CT图像分割是获取颗粒信息的重要方法,本文主要研究高分辨三维X射线显微成像系统采集到的图像数据,其特点是煤粉颗粒小,形态不规则等。本文采用深度学习的方法,设计端到端的分割模型,以Mask R-CNN为基础,针对煤粉颗粒数据集引入了锚点框预处理方法,利用SE模块和SSE改善颗粒漏分割情况,重新设计了分割分支,实现更精细化分割。实验结果表明,本文算法能够有效分割煤粉颗粒。未来在分割后的煤粉颗粒图像基础上,可对煤粉颗粒的数量、大小、形状等信息进行深入研究,为煤粉质量判断和煤炭分选提供依据。