APP下载

基于改进特征金字塔的遥感图像全景分割*

2023-08-02朱雯婕

计算机与数字工程 2023年4期
关键词:全景分支实例

幸 羚 朱雯婕 徐 昇

(南京林业大学信息科学技术学院 南京 210037)

1 引言

遥感图像解析的关键内容之一是目标的分类和识别。近年来,出现了更具挑战性的遥感场景图像,该类问题有着更小的类间差异和更大的类内变化,而图像分辨率和尺度也复杂多变[1~2]。全景分割[3]是语义分割和实例分割的融合,预测的信息最全面,不仅包括语义分割为每个像素分配预先定义好的语义类别标签,还包括实例分割为同一类别不同物体预测的实例ID。把全景分割技术应用于遥感图像实现快速精准地分类遥感图像,将直接促进遥感相关技术发展。然而,当前很少有工作利用全景分割实现遥感图像的分类和识别。

语义分割为图像每一个像素点进行类别预测。近年来,硬件计算能力逐渐提高,受深度学习网络研究驱动,语义分割任务常建立在全卷积神经网络(FCN)[13]上。FCN 采用跨层方法同时兼顾局部位置信息和全局语义信息,从抽象特征中恢复像素所属类别。但是对图像进行池化操作后,降低了特征图的分辨率,丢失了空间位置信息,又没有充分考虑像素与像素之间的关系,致使分割边界不连续,结果粗糙。之后Chen 等提出DeepLab4[4]网络,将输入图像经过空洞卷积得到特征图,扩大感受野,缩小步长,解决了反复池化和下采样导致分辨率下降的问题。但空洞卷积导致占用过多内存,计算过于复杂。FCN的变体U-Net[5],采用编码器-解码器结构,利用扩张路径将空间信息和特征融合,产生精准分割。但是块交叠导致部分预算多余,耗费内存大,运行速度慢。

实例分割不仅检测输入图像的目标,而且把类别标签分配给目标的每个像素。与语义分割的最大区别是实例分割能区分相同前景语义类别中的不同实例。实例分割可分为单阶段的实例分割和两阶段的实例分割。单阶段方法包括TensorMask[17]等,没有区域提议步骤,计算速度快,满足实时性需求,但是精度稍低,边缘信息模糊。经典的双阶段方法Mask R-CNN[6],有区域提议步骤,分割精度高,但是推理速度缓慢,结果依赖于候选框提取的质量。

实例分割和语义分割属于不同的视觉预测任务,其数据增强方式、训练优化策略和网络结构具有较大的不同。全景分割任务关键在于融合子任务及统一网络和训练策略。迄今全景分割方法AUNet[8]、JSIS-Net[9]、OANet[7]、Single network[10]等分别用两个相互独立的模型实现语义和实例分割任务,不共享网络参数或图像特征,导致计算开销大,迫使算法需要将两分支结果通过适当策略进行融合。但由此又产生了额外的问题,融合时存在像素分配冲突的问题,降低全景预测质量。对于语义或实例分支,添加辅助任务会降低与单任务基线相比的准确性,所以该类方法同时训练两个分支但基准测试各自独立的特性,没有充分探究两个分支之间的相互联系与影响。而Kirillov 等提出的Panoptic FPN[20]网络是一个端到端的图像全景分割网络,实现了以统一的方式来表示和预测前景实例对象和背景未定型区域。但对于全景分割任务中前景实例对象特别是远距离小目标分割精度低的现象,仍然无法有效改善,边缘信息依旧比较模糊,背景未定型区域的分割效果也有待进一步优化。

针对上述全景分割方法所存在的问题,本文以Panoptic FPN 网络为基准进行改进优化,提出了自顶向下进行全景分割的方法。与前述方法相比,本文方法具有如下特点:

1)在ResNet 特征提取网络的基础上添加特征金字塔网络FPN,将高层的高语义信息和底层的高分辨率信息结合,融合多尺度特征,解决深层特征图小且目标细节丢失的问题,提高遥感图像的全景分割的准确率。

2)在语义分割分支进行上采样时,利用双线性插值法让物体的边缘特征更加清晰,这样有利于更加准确地恢复图像细节信息,提高遥感图像的全景分割准确率。

3)在联合训练两个分支时,调整损失函数权重,重新加权,在不增加过多计算量的同时,使得两个分支的子任务相互增益,更加有利于神经网络的训练及优化。

2 算法设计

本文全景分割网络以FPN作为骨干网络,提取多尺度信息,而后续接实例分割分支用于预测实例对象。再在实例分割分支的基础上增加语义分割分支,预测背景未定型区域,实现只通过单一网络同时预测语义分割和实例分割任务。

2.1 实例分割分支

实例分割分支主要由骨干网络模块、RPN 模块、ROI Align 模块和全连接层模块组成,基本结构如图1 所示。算法不仅可以高效检测图像目标,而且在不增加太多额外计算量的情况下同时为每个实例生成一个分割掩码,最终得到实例分割和目标检测的结果。

图1 实例分割分支的基本结构

1)骨干网络模块。多种R-CNN 框架可作为实例分割分支的骨干网络,为了提高结果的精度同时保证易于训练和计算复杂度低,本文选择残差网络ResNet101 和ResNet50 作为主干网络,提取遥感图像的特征。ResNet 网络不仅解决了因为网络层数的增加而发生网络退化的问题,而且让网络的优化更容易实现。为了提取图像的不同尺度的特征,常用的经典方法是采用图像金字塔的方式对图片进行多尺度变化增强。但是该方法的内存需求大,计算量大。而Feature Pyramid Network(FPN)[11]的提出缓解了图像金字塔方式需要占用大量内存计算图像特征的问题。所以本文选择把FPN 应用到ResNet 网络上来融合深度卷积网络各个层次的特征,并让每一个尺度的特征都有较强的语义信息。融合特征Fo可由式(1)获得,其中Fℎ表示浅层高分辨率特征,Fl表示深层低分辨率特征。

FPN 基本模块如图2 所示。将ResNet 网络中卷积层提取的不同分辨率的特征作为FPN的输入,感知多尺度物体,通过连续上采样和自下而上、自上而下和横向连接得到同时具有高层语义信息和低层视觉信息特征的输出。FPN的基本架构如图3所示。其中上采样把不同特征尺寸转换为对应大小,以ResNet101 为例,自下而上是ResNet101 特征从低层向高层传播,特征尺寸逐渐变小,抽象程度逐渐变高即语义信息逐渐变强,如图3 左半部分。自上而下就是通过上采样放大高层特征并与当前ResNet101 中的特征相加,把高层特征映射到低层特征,如图3 右半部分。横向连接通过1×1 的卷积核提取ResNet101 模型输出的特征,在满足生成特征更有效的条件下,中间层的通道数被减少,保证每一个维度的特征的通道数相同。具体来说,给定一系列不同尺度的输入特征{C2,C3,C4,C5},特征金字塔模块将其作为输入,输出聚合过的特征{P2,P3,P4,P5}。FPN 模块的工作原理可以大致概括为如下:

图2 FPN基本模块

图3 FPN基本架构

其中,l表示金字塔的层级,R是上采样操作,fl是1×1 的卷积操作。实例分割分支的骨干网络分别修正为ResNet101-FPN和ResNet50-FPN。

2)RPN 模块。RPN 本质是基于滑窗的无类别目标检测器,而滑动窗口会遍历图像的每一个像素点。因为在目标检测之前,网络不被告知图片的目标物体数量,所以RPN 模块会预先生成多个边界框,在训练阶段不断调整位置,使得和真实物体框的偏差最小,最后输出最可能包含目标的区域候选,也叫Anchor。Anchor 是包含四个坐标的矩形框。骨干网络输出的特征图经过定位层即一个3×3 卷积,使得提取出来的特征更加鲁棒,并输出Anchor的四个坐标偏移。之后进入分类层,对应不同的1×1 卷积,得到真实检测框、预测检测框和交叉熵值,输出Anchor 的前景和背景的概率。RPN 的模型结构如图4 所示。如果真实检测框和得到的检测框之间的重叠度大于0.7,则推断出此部分像素是前景;如果与真实检测框的重叠度小于0.3,则推断出是背景。

图4 RPN模型

3)ROI Align 模块。ROI Align[6]是一种区域特征聚集方式,解决ROI Pooling 操作中两次量化造成的区域不匹配问题。ROI Align 取消量化操作,遍历候选区域的时候保持浮点数边界不做量化,分割候选区域的时候对每个单元的边界也不做量化,最大限度保证信息完整。本文实验设定采样点为4,对每一个候选区域平分为四份,每一份都用双线性插值法计算中心点位置像素,得到四个点像素值。双线性插值法的具体计算方法如下:设四个像素点为Q11(x1,y1),Q12(x1,y2),Q21(x2,y1),Q22(x2,y2),像素值分别是f(Q11),f(Q12),f(Q21),f(Q22),横向插值插入两个点R1(x,y1),R2(x,y2),纵向插值插入一个点P(x,y),其像素值为f(P)如式(6)。先计算横向插值,由Q12和Q22得f(R2),由Q11和Q21得f(R1),如式(4)和式(5)所示,再结合R1和R2像素值如式(7)和式(8)所示,最终纵向插值得点P(x,y)像素值f(x,y),如式(9)所示。

4)全连接层模块。高层的抽象级别高,有较强的语义信息,易于从中获得类别信息。而底层有着高分辨率,易于从中获取图像的颜色和纹理等。全连接层把特征映射到标记空间中,减少特征位置对分类造成的影响,得到图像的语义信息。全连接层还把特征向量映射成一维特征向量,为计算损失函数而准备。

2.2 基于FPN的语义分割分支

语义分割任务是为输入图像的每一个像素点都预测一个语义类别。为了使生成的结果是高精度的,有必要提高特征分辨率,近年来顶级的方法有FCNs[13,21]等,但是这些方法往往使用扩张的卷积,也称为Atrous Convolution。尽管很有效,但是需要大量内存和计算量,这无疑限制了骨干网络的类型,不利于网络的灵活性。最为重要的是,这与实例分割分支不够兼容。因此我们选择使用FPN。与对称编码器-解码器[12]相反,FPN 使用的是轻量级的解码器,能识别多尺度特征,捕获精细结构。虽然FPN是为目标检测设计的,但是运用在语义分割上也是有效的。因此本文通过在语义分割分支的FPN 骨干网络上附加一个简单快速的语义分割分支实现语义分割任务。

语义分割分支把来自FPN 的所有级别的信息合并为单一输出。具体合并的办法是从最高级别特征层也就是语义信息最丰富的一层开始至最低级别特征层也就是分辨率最高的一层,每一级别的层次都执行三个上采样阶段,每一个上采样阶段是由3×3 卷积、组归一化、ReLU 和2 个双线性上采样组成,产生一系列1/4 比例的特征图。最后再经过1×1 的卷积核、4 个双线性上采样和软最大为原始图像上的每一个像素生成一个类标签。

2.3 训练及优化

全景分割输出结果包括每个像素的类别标签和实例ID,并将像素分为两类stuff 和things。对于未定形的stuff 区域不分配实例ID,具有相同标签和ID 的像素都属于同一个对象,但是对于无法确定的像素,比如不在分类范围内模糊的像素则会给一个void标签。考虑到全景分割具有非重叠性,为了解决语义分割和实例分割的输出结果部分重合的问题,采用与极大值抑制(NMS)思想类似的方法进行后处理。对于不同实例之间的重合,根据置信度得分进行消除。对于实例和语义分割之间的重合,按照实例优先的原则去重。同时去除标记为“其他”的未定型的stuff 区域和低于给定面积阈值的区域。

实例分支的损失函数包括分类损失函数Lc、检测框回归函数Lb和平均二进制交叉熵损失函数Lm,最终的损失函数为三者之和。分类损失函数区分图像的背景和存在的各个类别。检测框回归函数用来得到最佳的检测框。平均二进制交叉熵损失为不同类别的RoI 提供独立的掩码预测,解耦语义分割任务和分类。分类损失函数和检测框回归函数通过采样RoI 的数量进行归一化,平均二进制交叉熵损失函数通过RoI 判定为前景的数量进行归一化。语义分支损失函数Ls计算每个像素的预测和真值标注之间的交叉熵损失,由已分类的像素点数量进行归一化。鉴于实例分支和语义分支有不同的归一化方法和尺度,简单把两者的损失函数相加会降低其中一个任务的最终性能。因此,通过重新加权来矫正损失函数如式(10)。不断调整权重λi和λs,使得两分支子任务相互增益,改善单任务基础上的结果,提高预测质量。

3 实验与分析

3.1 数据集和评价指标

本文模型在实验时使用COCO[22]数据集进行预训练。COCO 数据集以场景理解为目标,包括91类目标、80个物体类别,150万物体实例,大于20万张标注图像。鉴于COCO 数据集过于庞大,本文实验选取包括树木、道路、建筑、小汽车等37 个常用数据项进行模型训练。

为以统一方式对待所有未定型区域和实例对象,引入全景质量(PQ)[3]综合衡量全景分割质量。计算方法为分割质量SQ 和识别质量RQ 相乘如式(11)。

其中SQ 表示匹配后的预测分割与标注分割的平均IoU,只有严格大于0.5时才认为两个分割是匹配的,其计算公式如式(12)所示。其中IoU(p,g)是预测真值g 和预测对象p 之间的交并比(检测相应物体准确率的一个测量标准)。

RQ反映全景分割中每个实例对象识别的准确性。可通过被预测模型的正类的正样本TP、正类的负样本FP、负类的正样本FN 计算得到。计算公式如式(13)。

PQ 不是语义和实例分割度量的简单结合,而是针对未定型区域和每一类实例对象按照式(12)和式(13)分别计算,得到单个类别的SQ、RQ、PQ值,再将所有类别的相应值分别取平均值。如式(14)所示,其中Nc是总的类别数,后续实验中的SQ、RQ、PQ都是式(14)中的计算结果。

3.2 实验设置

本文实验环境为Linux 操作系统,显卡型号为NVIDIA RTX 3070,使用的编译环境为Python3.8和对应版本CUDA10.2,使用框架为PyTorch1.10,需下载对应版本的CUDA 和PyTorch[12]官方预构建的Detectron2框架。模型参数中的初始学习率设置为0.01,动量超参数设置为0.9,权重衰减超参数设为1×10-4,并进行50K次迭代训练。

为有效防止GPU 内存溢出,把最长边长度大于1400 的输入图像进行随机裁剪,缩放至最小边大小为800。对实例分割子任务,在候选框提取训练阶段,设置锚的大小为16,长宽比例设定在0.5、1、2 范围内。对于语义分割子任务,与实例分割网络并行处理,共享网络参数。不同的是,主干网络FPN 每个金字塔层级有256 个输出通道,而在语义分割分支降为128个。

3.3 实验定量分析

为验证FPN 与ResNet 相结合的骨干网络相对于单独的ResNet 网络的改进效果,保持使用相同的环境,设置相同的参数。分别使用ResNet50 和ResNet101 作为基础网络,在COCO 数据集上进行对比实验,结果如表1 所示。经过FPN 算法改进的骨干网络兼顾分辨率和特征语义,可获得多尺度的特征图,使得模型得到了优化和提升。在不同的网络模型大小下,均能带来1.2%左右的性能提升,证明FPN 算法的引入可以更好提升实例分割和语义分割的准确率乃至全景分割综合性能。

表1 特征金字塔增益实验

为比较模型R50-FPN、R101-FPN 自身的效果,在相同实验环境以及相同参数下针对种全景分割模型性能与其他全景网络对比。实验结果如表2所示。相比于采用以Mask R-CNN 为实例分割分支的全景分割网络OANet,R50-FPN、R101-FPN 模型在分割未定型区域上略为逊色,但对于前景实例分割对象表现更好,最终的全景质量分别提升0.2%和1.7%。而R101-FPN 模型相对R50-FPN 模型全景质量提高1.5%。

表2 与其他全景分割模型的实验对比

3.4 实验定性分析

图5 直观展示了R101-FPN 和R50-FPN 模型在遥感图像(前三行)和街景图像(第四行)上可视化全景分割效果对比。从前两行可看出,两者都成功识别图像中的植被覆盖区域。但从“屋顶”和“植被”识别情况看,R101-FPN 模型对于实例对象的识别精度更高。从第三行可发现,对于复杂边界仍不能实现较好的分割效果,如两模型都不能成功识别“道路”,还出现错误识别“窗户”、“天空”的情况。因为图像中的道路存在汽车或阴影等干扰,相邻像素对应感受野内的图像信息差别不大,而相邻像素位于目标分割区域边界,不利于分割。从第四行可以看出,两个模型在处理平面街景中的全景分割效果相对遥感图像更好,基本精准识别所有物体,全景分割精度更高。而从“车”和“花”的分割情况可以看出,R101-FPN 在实例分割边缘处理上相比于R50-FPN 表现更佳,边缘信息更加准确和清晰。因为R101-FPN 网络的层数更多,提取到不同级别的抽象特征更加丰富,而越深的网络提取的特征也越抽象。

图5 全景分割效果对比实验

4 结语

本文从单一网络结构的全景分割网络出发,提出以ResNet101-FPN 和ResNet50-FPN 为骨干网络的全景分割网络R101-FPN 和R50-FPN,对遥感图像进行分类处理。通过引入FPN 算法对骨干网络进行优化以及利用双线性插值法进行上采样,在保证计算复杂度低且内存需求小的情况下,提高模型识别和分割小尺度物体的精度以及边缘处理的能力。模型R50-FPN 和R101-FPN 全景质量相对于OANet 模型分别提高0.2%、1.7%,而R101-FPN 相比于R50-FPN 全景质量提高1.5%,边缘信息也更加清晰。但本文模型还有改进空间。实验结果表明,模型在遥感图像上表现不如街景图像,因为遥感图像中不可避免会出现如:道路上的汽车、房屋的阴影等干扰项。而模型抗干扰能力较弱,对复杂边界分割效果不好,需改善。本文的评价指标没有很好反映边缘分割效果,后续研究可以提出边缘友好型分割度量标准。

猜你喜欢

全景分支实例
戴上耳机,享受全景声 JVC EXOFIELD XP-EXT1
巧分支与枝
全景敞视主义与侦探小说中的“看”
一类拟齐次多项式中心的极限环分支
从5.1到全景声就这么简单 FOCAL SIB EVO DOLBY ATMOS
全景搜索
完形填空Ⅱ
完形填空Ⅰ
生成分支q-矩阵的零流出性
硕果累累