结合上下文与类别感知特征融合的高分遥感图像语义分割
Semantic segmentation of high-resolution remote sensing images based on context- and class-aware feature fusion
通讯作者: 罗 杰(1995-),男,硕士研究生,研究方向为遥感图像处理。Email:1349876941@qq.com。
责任编辑: 张仙
收稿日期: 2023-10-14 修回日期: 2024-03-6
基金资助: |
|
Received: 2023-10-14 Revised: 2024-03-6
作者简介 About authors
何晓军(1975-),男,博士,副教授,主要从事遥感影像处理、人工智能、大数据处理等方面的研究。Email:
为了解决遥感图像语义分割任务中上下文依赖关系提取不足、空间细节信息损失导致分割精度下降等问题,提出了一种结合上下文与类别感知特征融合的语义分割方法。该方法首先以ResNet-50作为特征提取的主干网络,并在下采样中采用注意力模块,以增强特征表示和上下文依赖关系的提取; 然后在跳跃连接上构建大尺寸的感受野块,提取丰富的多尺度上下文信息,以减少目标之间尺度变化的影响; 其后并联场景特征关联融合模块,以全局特征来引导局部特征融合; 最后在解码器部分构建类别预测模块和类别感知特征融合模块,准确融合底层的高级语义信息与高层的细节信息。将所提方法在Potsdam和Vaihingen数据集上验证可行性,并与DeepLabv3+,BuildFormer等6种常用方法进行对比实验,以验证其先进性。实验结果表明,所提方法在Recall,F1-score和Accuracy指标上均优于其他方法,尤其是对建筑物分割的交并比(intersection over union,IoU)在2个数据集上分别达到90.44%和86.74%,较次优网络DeepLabv3+和A2FPN分别提升了1.55%和2.41%。
关键词:
To address the accuracy reduction in the semantic segmentation of remote sensing images due to insufficient extraction of contextual dependencies and loss of spatial details, this study proposed a semantic segmentation method based on context- and class-aware feature fusion. With ResNet-50 as the backbone network for feature extraction, the proposed method incorporates the attention module during downsampling to enhance feature representation and contextual dependency extraction. It constructs a large receptive field block on skip connections to extract rich multiscale contextual information, thereby mitigating the impacts of scale variations between targets. Furthermore, it connects a scene feature association and fusion module in parallel behind the block to guide local feature fusion based on global features. Finally, it constructs a class prediction module and a class-aware feature fusion module in the decoder part to accurately fuse the low-level advanced semantic information with high-level detailed information. The proposed method was validated on the Potsdam and Vaihingen datasets and compared with six commonly used methods, including DeepLabv3+ and BuildFormer, to verify its effectiveness. Experimental results demonstrate that the proposed method outperformed other methods in terms of recall, F1-score, and accuracy. Particularly, it yielded intersection over union (IoU) values of 90.44% and 86.74% for building segmentation, achieving improvements of 1.55% and 2.41%, respectively, compared to suboptimal networks DeepLabv3+ and A2FPN.
Keywords:
本文引用格式
何晓军, 罗杰.
HE Xiaojun, LUO Jie.
0 引言
近年来,基于深度学习的方法在遥感图像处理领域被广泛应用[8
综上所述,为了解决遥感语义分割任务中空间细节信息损失、上下文依赖关系提取不足、特征融合不充分、多尺度上下文信息提取不足导致精度低的问题,本文提出了一种结合上下文与类别感知特征融合的语义分割方法(context and class-aware feature fusion segmentation method,CCFFSM),在下采样中采用点积注意力和通道注意力并联(dot-product attention module and channel attention module parallel,DAM_CAM),以增强空间细节信息和上下文依赖关系的提取。跳跃连接上采用大尺寸的感受野块(large receptive field block,L_RFB),用于提取丰富的多尺度上下文信息,其后连接场景关联特征融合模块(scene-context-aware feature fusion module,SCM),对特征进行融合和优化。最后通过类别预测模块(category prediction module,CPM)和类别感知特征融合模块(class-aware feature fusion module,CFM)的组合进行上采样操作输出结果。同时,在Potsdam和Vaihingen这2个高分辨率遥感数据集上进行实验,并将本文方法与6个语义分割方法进行对比实验,以验证其有效性。
1 CCFFSM网络
本文的CCFFSM采用非标准的编解码结构,如图1所示。考虑到高分辨率遥感图像尺寸大、背景复杂、类别多等特点,在编码器上采用ResNet[26]系列中的ResNet-50作为特征提取的主干网络,其深层次的残差网络不仅具有较强的特征提取能力,还能避免训练过程中梯度消失现象。同时,下采样过程中随着特征从低级到高级的变化,语义信息越来越丰富,但空间细节信息逐渐减少,为了处理这一问题,在每个下采样层后连接DAM_CAM,以关注空间细节信息并提取上下文依赖关系。另外,考虑到遥感图像中目标尺度的差异性,在跳跃连接上并联L_RFB,以提取丰富的多尺度上下文信息。由于高级特征具有丰富的语义信息但分辨率较低,而低级特征具有较好的分辨率但语义较粗糙,所以采取将高级和低级特征送入SCM,以实现特征有效融合,并将融合后的特征送到解码器端。在解码器端,通过构造CPM得到不同尺度的预测结果; 然后将结果送入CFM,实现不同层次的特征融合,有效降低细节信息的丢失。
图1
1.1 DAM_CAM模块
高分辨率遥感图像中目标信息复杂,多尺度目标使得分割结果容易出现不准确。因此,特征细节信息和上下文依赖关系对整个语义分割任务来说是极其重要的。基于此,本文在网络的下采样中采用DAM_CAM来关注图像上下文依赖关系和通道关联性,如图2所示,将来自上层的特征feature分别输入到DAM_CAM中。
图2
在点积注意力模块中,feature分别经过3个1×1的卷积(Conv),得到3个不同的特征矩阵Q,K,V; 将K变形并进行归一化(Norm)后的结果与变形后的V相乘得到相关性矩阵F1; 接着将Q变形并归一化(Norm)后乘以F1得到加权后的特征F2,最后将F2与feature相加输出结果。利用点积注意力模块能够捕获图像上下文依赖关系,得到具有全局意义的特征图。
在通道注意力模块中,feature进行形状变换,得到矩阵X,Y,Z。将Z转置变换后与Y相乘得通道间的相关性矩阵E1,对E1进行softmax操作后与矩阵X相乘得到加权后的特征E2。softmax操作将确保每个通道的权重在0~1之间,表示其在整个通道中的重要性。最后,将E2进行形状变换后与feature相加输出结果。
最终,将来自点积注意力和通道注意力模块的输出结果进行相加,得到DAM_CAM的输出结果。
1.2 L_RFB
为了捕获丰富的多尺度上下文信息,受RFB_s[27]的启发,本文采用了一个L_RFB,如图3所示,L_RFB包含5个分支,每个分支首先连接一个1×1的卷积,以降低特征图的通道数; 然后3,4,5分支分别串联一个1×k和一个k×1(k表示卷积大小,k=3,5,7)的卷积,其后再连接一个空洞率分别为3,5,7的3×3卷积。最后将2,3,4,5分支的输出特征图在通道维度上进行拼接(concat),形成一个通道数为原来4倍的特征张量。接着,将拼接后的特征经过3×3的卷积后,再与第1个分支的特征进行残差连接,并使用ReLU激活函数对结果进行非线性变换。如图1所示,本文将L_RFB放在跳跃连接处,并与编码器中的DAM_CAM模块进行串联,该模块利用不同尺寸的卷积核及不同空洞率来扩大感受野,以捕获丰富的多尺度上下文信息,再通过通道拼接和残差连接增加特征的多样性并防止梯度消失现象。
图3
1.3 SCM模块
为解决图像语义分割中全局与局部特征信息融合不充分、特征细节信息损失、图像中模糊区域不能准确分割等问题,本文采用SCM模块,如图4所示。将深层次的特征feature_d通过全局自适应平均池化(AdaptiveAvgPool)和一个1×1的卷积层,全局自适应平均池化得到全局特征, 1×1卷积是调整特征的通道数; 同时将浅层的特征feature_s通过1×1卷积调整特征的通道数; 然后,将处理后的深层和浅层特征进行逐像素相乘并在通道维度上进行求和,通过sigmoid函数进行归一化得到关系矩阵,就可以从关系矩阵中知道在训练过程中每个通道的重要性程度,从而为不同通道的特征赋予不同的权重,训练过程中通过联系空间场景的相关背景来提高前景特征的识别能力; 最后,把所得到的权重与原特征进行逐像素相乘,这样,就实现对特征的加权融合。融合后的特征可以引导模型更好地理解图像的整体语义和全局结构,从而帮助提高语义分割的性能。
图4
1.4 CPM模块
CPM结构如图5所示,第一个子模块由一个步长(stride)为1的3×3卷积、批归一化层(Batch Norm)、修正线性单元(rectified linear unit,ReLU)和丢弃率为0.5的失活层(Dropout)组成; 第二个子模块与第一个相似,只是Dropout的丢弃率为0.1; 最后再连接一个1×1的卷积来调整通道数。CPM在上采样过程中生成不同尺度的预测结果,使模型能够在各个尺度上综合考虑特征,提高对不同尺寸目标的适应能力。
图5
1.5 CFM模块
在语义分割任务中,许多模型解码器采用简单的上采样操作来输出图像,特征的融合也只是简单拼接或相加,从而导致全局信息和空间细节信息的损失,并且没有考虑特征之间的关联性和重要性,对于复杂的语义分割任务存在一定的局限性。因此,本文在解码器部分采用CFM模块,如图6所示。
图6
CFM将高级语义特征
对
将每个类别的特征逐一添加到元素中,得到最终的融合特征O,即
通过类别感知特征的融合,可同时兼顾不同类别信息和全局、局部特征,并能够将来自高级特征的全局上下文信息与来自低级特征的局部信息进行有效结合,生成更加综合和具有语义理解能力的特征图; CFM可以更有效地避免全局信息和空间细节信息丢失,保留更多有用的特征信息。
2 实验结果分析
2.1 数据源及其预处理
本文提出的CCFFSM分别在Potsdam和Vaihingen数据集上进行实验。这2个数据集中有6个类别,包括不透水表面、建筑物、低矮植被、树木、汽车和背景,具体的细节如表1所示。
表1 Potsdam和Vaihingen数据集
Tab.1
数据集 | Potsdam数据集 | Vaihingen数据集 |
---|---|---|
数据来源 | ISPRS | ISPRS |
波段 | IRRGB DSM | IRRG DSM |
使用波段 | R,G,B | R,G,B |
地面采样距离/cm | 5 | 9 |
样本大小/像素 | 6 000×6 000 | 1 996×1 995~3 816×2 550 |
样本数量/个 | 38 | 33 |
为了有效地评估和验证CCFFSM的性能,将2个数据集分别划分成训练集和测试集。在Vaihingen数据集中,将ID为2,4,6,8,10,12,14,16,20,22,24,27,29,31,33,35,38的17幅图像作为测试集,其余16幅图像用于训练。在Potsdam数据集中,把ID为2_13,2_14,3_13,3_14,4_13,4_14,4_15,5_13,5_14,5_15,6_13,6_14,6_15,7_13 的14幅图像作为测试集,其余24幅图像中,除ID为7_10以外的23幅图像用于训练。由于这2个遥感数据集的图像分辨率高、尺寸较大且不统一,不适合直接输入到网络模型中进行训练。因此,将图像及其标签图使用滑动裁剪方式,将图像裁剪为512像素×512像素大小的子图,并且在图片输入网络的过程中通过反射、翻转、缩放、平移、尺度变换、噪声扰动、颜色变化等操作对数据集进行数据增强。
2.2 实验设置
本次实验环境是基于深度学习框架PyTorch 1.10.0,Python 3.8和CUDA 11.3,使用RTX A4000(16 GB)显卡。训练过程中batchsize设为16,进行了100轮的迭代训练。为了实现快速收敛,本文选择Adam作为优化器,学习率设为0.000 1。使用交叉熵损失函数作为训练损失函数,用于衡量模型预测结果与真实标签之间的差异。
2.3 对比实验
为验证本文方法的有效性,本文进行了对比实验,采用相同的实验配置以及与本文相同的参数设置,分别实现了与UNet,PSPNet,DeepLabv3+,HRNet,A2FPN和BuildFormer分割模型的对比实验。本文在Vaihingen和Potsdam数据集上评估了模型的分割性能。本文采用了精确率(Precision)、召回率(Recall)、F1分数(F1-score)和准确率(Accuracy)等4个评价指标进行评估。
表2展示了在Potsdam数据集上的实验结果,从表中加粗的字体可以看出,本文方法的所有指标都优于其他6种语义分割方法,其中相比于较新的模型BuildFormer,在Precision,Recall,F1-score和Accuracy上分别提升了1.94%,1.19%,1.32%和1.17%。与经典的UNet网络模型相比,在Precision,Recall,F1-score和Accuracy上分别提升了1.03%,2.05%,1.57%和1.35%。值得注意的是,本文方法在Recall上表现出色,达到了84.47%,Recall的提升意味着遗漏的像素更少,对目标的准确分割更有帮助。
表2 在Potsdam数据集上的实验结果
Tab.2
模型 | Precision | Recall | F1-score | Accuracy |
---|---|---|---|---|
UNet | 87.43 | 82.77 | 84.50 | 87.36 |
PSPNet | 84.34 | 81.46 | 82.53 | 86.38 |
DeepLabv3+ | 87.09 | 83.65 | 84.92 | 87.67 |
HRNet | 85.11 | 80.88 | 82.25 | 85.94 |
A2FPN | 86.71 | 83.18 | 84.52 | 87.42 |
BuildFormer | 86.65 | 83.48 | 84.71 | 87.52 |
CCFFSM | 88.33 | 84.47 | 85.83 | 88.54 |
为了更加直观地展示上述模型的分割结果,将原始图像、真实标签和预测结果进行可视化,如图7所示。可以看出,本文方法CCFFSM的整体性能优于其他对比方法,本文方法对不同类别分割结果相比较于其他方法更准确。
图7
图7
不同方法在Potsdam数据集上的部分可视化结果
Fig.7
Partial visualization results of different methods on the Potsdam dataset
表3展示了Vaihingen数据集上的结果,从表中加粗的字体可以看出,本文方法在Precision,Recall,F1-score和Accuracy均优于其他6种方法。其中与A2FPN和BuildFormer模型相比,本文的方法在Recall上分别提升了0.6%和3.95%,在F1-score分别提升了1.3%和3.77%。与DeepLabv3+相比,在Precision,Recall,F1-score和Accuracy上分别提升了3.51%,6.47%,7.46%和3.1%,通过上述实验数据可以清晰看出本文所提出的方法能有效地提高分割性能。
表3 在Vaihingen数据集上的实验结果
Tab.3
模型 | Precision | Recall | F1-score | Accuracy |
---|---|---|---|---|
UNet | 86.11 | 76.21 | 78.55 | 87.39 |
PSPNet | 77.21 | 72.08 | 73.84 | 83.74 |
DeepLabv3+ | 83.80 | 74.14 | 75.60 | 86.15 |
HRNet | 84.09 | 75.61 | 78.23 | 86.98 |
A2FPN | 85.35 | 78.45 | 80.20 | 88.10 |
BuildFormer | 85.57 | 75.94 | 78.29 | 87.86 |
CCFFSM | 86.74 | 78.94 | 81.24 | 88.82 |
为了直观地展示上述模型的分割结果,将原始图像、真实标签和预测结果进行可视化,如图8所示。本文方法CCFFSM的整体性能优于其他对比方法。此外,从图中可以看到,本文所提方法在分割建筑物等大尺寸目标类别时,边缘更加平滑,目标更加清晰。
图8
图8
不同方法在Vaihingen数据集上的部分可视化结果
Fig.8
Partial visualization results of different methods on the Vaihingen dataset
另外,除上述对比实验外,本文还统计了除背景外的5种地表覆盖类型在2个公开数据集上的语义分割结果以及6种不同方法的交并比(intersection over union,IoU)和平均交并比(mean intersection over union,mIoU)评价指标,如表4和表5所示,表中加粗字体表示各类别最高的IoU及最优mIoU。从表4中可以看出,在Potsdam数据集上,本文提出的CCFFSM对不透水表面和建筑物的分割IoU分别达到了82.32%和90.44%,高于其他6种方法; 而且mIoU相比于其他方法提高了1.54%~7.78%,说明本文所提方法的有效性。从表5中可以看出,在Vaihingen数据集上,本文的方法CCFFSM在建筑物和树木这2个类别的分割准确性比其他方法高,在IoU指标上分别达到了86.74%和75.54%,相比于BuildFormer提高了3.66%和2.22%。然而,在这2个公开的数据集上,所有模型对低矮植被和汽车的分割准确性都不理想。其原因是这2个类别之间存在较小的类内差异,如颜色、纹理等方面显示出较高的相似性; 此外,植被广泛分布,边缘多样且不规则,边界模糊。方法在准确分割不规则边缘方面仍有改进的空间,而且很难识别属于这些类别的散布对象。
表4 Potsdam数据集IoU得分
Tab.4
模型 | IoU | mIoU | ||||
---|---|---|---|---|---|---|
不透水 表面 | 建筑物 | 低矮 植被 | 树木 | 汽车 | ||
UNet | 80.18 | 88.59 | 71.32 | 72.26 | 79.67 | 78.40 |
PSPNet | 78.47 | 87.79 | 69.34 | 72.46 | 64.17 | 74.44 |
DeepLabv3+ | 81.19 | 89.06 | 71.11 | 72.79 | 80.94 | 79.01 |
HRNet | 78.13 | 85.98 | 70.26 | 69.95 | 75.92 | 76.04 |
A2FPN | 80.91 | 88.48 | 70.69 | 72.59 | 78.44 | 78.22 |
BuildFormer | 80.96 | 88.65 | 71.93 | 71.89 | 80.43 | 78.77 |
CCFFSM | 82.32 | 90.44 | 72.54 | 75.02 | 80.82 | 80.23 |
表5 Vaihingen数据集IoU得分
Tab.5
模型 | IoU | mIoU | ||||
---|---|---|---|---|---|---|
不透水 表面 | 建筑物 | 低矮 植被 | 树木 | 汽车 | ||
UNet | 78.74 | 83.24 | 64.12 | 73.33 | 53.24 | 70.53 |
PSPNet | 71.55 | 77.94 | 58.38 | 67.36 | 28.66 | 60.77 |
DeepLabv3+ | 76.18 | 81.13 | 62.24 | 71.88 | 43.58 | 67.00 |
HRNet | 77.47 | 81.16 | 64.68 | 73.08 | 46.11 | 68.50 |
A2FPN | 79.07 | 84.70 | 65.73 | 74.42 | 56.70 | 72.12 |
BuildFormer | 79.17 | 83.68 | 65.84 | 73.90 | 51.04 | 70.72 |
CCFFSM | 79.70 | 86.74 | 68.31 | 75.54 | 53.44 | 72.75 |
图9
图9
CCFFSM在Potsdam数据集上的全局分割效果
Fig.9
Global segmentation performance of CCFFSM on the Potsdam dataset
图10
图10
CCFFSM在Vaihingen数据集上的全局分割效果
Fig.10
Global segmentation performance of CCFFSM on the Vaihingen dataset
2.4 消融实验
为验证本文方法中各模块的作用,本文在Vaihingen遥感数据集上进行了相关消融实验,实验配置环境和训练优化参数与对比实验一致。结果如表6所示。由表可知,在CCFFSM中去掉DAM_CAM模块,与之前相比F1-score和mIoU分别降低了2.09%和2.26%,说明在分割方法使用DAM_CAM模块可以提升模型的分割性能; 去掉L_RFB模块,与之前相比F1-score和mIoU分别降低0.5%和1.25%,说明多尺度上下文特征信息可以有效补充目标的特征,对提升模型的分割性能至关重要; 去掉SCM模块,与之前相比F1-score和mIoU分别降低了1.35%和0.3%,说明SCM模块对特征的准确融合起到一定作用; 去掉CPM模块,与之前相比F1-score和mIoU分别降低了0.62%和1.58%,说明CPM模块对降低细节信息损失起到了作用; 去掉CFM模块,与之前相比F1-score反而提升了0.26%,但是mIoU降低了11.19%,虽然模型的F1-score有所提升,但是从mIoU来看,CFM模块在解码部分还是对模型的整体性能的提升发挥了重要的作用。
表6 CCFFSM方法消融实验结果
Tab.6
模块 | F1-score | mIoU |
---|---|---|
L_RFB+SCM+CPM+CFM | 79.58 | 71.14 |
DAM_CAM+SCM+CPM+CFM | 80.83 | 71.85 |
DAM_CAM+L_RFB+CPM+CFM | 80.16 | 72.51 |
DAM_CAM+L_RFB+SCM+CFM | 80.74 | 71.62 |
DAM_CAM+L_RFB+SCM+CPM | 81.45 | 65.43 |
DAM_CAM+L_RFB+SCM+CPM+CFM | 81.24 | 72.75 |
3 结论
针对在遥感图像语义分割任务中空间细节信息丢失、上下文依赖关提取不足、多尺度上下文信息提取不足和特征融合不充分导致分割精度低等问题,本文提出了一种用于高分辨率遥感图像语义分割的CCFFSM模型。
1)在编码阶段采用DAM_CAM模块,提取上下文依赖关系。在跳跃连接处,构建L_RFB模块,提取丰富的多尺度上下文信息,并在其后连接SCM模块,根据前景融合重要的特征。在解码阶段,首先构建CPM模块,得到不同层次不同尺度的预测结果,然后把结果送入CFM模块中,根据不同类别进行有效融合,以保留更多重要的语义信息。
2)在Potsdam和Vaihingen数据集上的对比实验结果表明,在相同的实验条件下,CCFFSM方法在多种指标上都优于其他6种对比方法; 尤其对建筑物分割的IoU分别达到了90.44%和86.74%,说明本文方法能有效提高分割性能。此外,在Vaihingen数据集上消融实验也验证了本文方法中各个模块的有效性。
未来研究的重点可以考虑在保证精度的同时,轻量化模型以提升遥感图像的处理速度。
参考文献
基于语义分割网络的高分遥感影像城市建成区提取方法研究与对比分析
[J].
Research and comparative analysis on urban built-up area extraction methods from high-resolution remote sensing image based on semantic segmentation network
[J].
State and parameter estimation of the AquaCrop model for winter wheat using sensitivity informed particle filter
[J].
A change detection method based on multi-scale adaptive convolution kernel network and multimodal conditional random field for multi-temporal multispectral images
[J].
黔西南采煤塌陷区高分遥感动态监测——以六盘水市煤矿采空塌陷区为例
[J].
High-resolution remote sensing-based dynamic monitoring of coal mine collapse areas in southwestern Guizhou:A case study of coal mine collapse areas in Liupanshui City
[J].
Sobel edge detection based on weighted nuclear norm minimization image denoising
[J].
Region merging using local spectral angle thresholds:A more accurate method for hybrid segmentation of remote sensing images
[J].
Segmentation quality evaluation using region-based precision and recall measures for remote sensing images
[J].
结合DCNN与短距条件随机场的遥感影像道路提取
[J].
Road extraction from remote sensing image by integrating DCNN with short range conditional random field
[J].
Small object detection method based on adaptive spatial parallel convolution and fast multi-scale fusion
[J].
新型语义分割D-UNet的建筑物提取
[J].
New building extraction method based on semantic segmentation
[J].
Remote sensing image defogging networks based on dual self-attention boost residual octave convolution
[J].
Fully convolutional networks for semantic segmentation
[C]//
基于改进U-Net网络的花岗伟晶岩信息提取方法
[J].
Research on granite-pegmatite information extraction method based on improved U-Net
[J].
Building extraction from high-resolution aerial imagery using a generative adversarial network with spatial and channel attention mechanisms
[J].
基于Unet网络多任务学习的遥感图像建筑地物语义分割
[J].
Multi-task learning for building object semantic segmentation of remote sensing image based on Unet network
[J].
Pyramid scene parsing network
[C]//
Encoder-decoder with atrous separable convolution for semantic image segmentation
[C]//
Deep high-resolution representation learning for human pose estimation
C]//
融合混合注意力机制与多尺度特征增强的高分影像建筑物提取
[J].
Fusion of hybrid attention mechanism and multi-scale feature enhancement for high-resolution satellite image building extraction
[J].
SCAttNet:Semantic segmentation network with spatial and channel attention mechanism for high-resolution remote sensing images
[J].
注意力引导与多特征融合的遥感影像分割
[J].
Remote sensing image segmentation based on attention guidance and multi-feature fusion
[J].
A2-FPN for semantic segmentation of fine-resolution remotely sensed images
[J].
Building extraction with vision Transformer
[J].
An image is worth 16×16 words:Transformers for image recognition at scale
[J/OL].
Deep residual learning for image recognition
[C]//
Receptive field block net for accurate and fast object detection
[C]//
/
〈 |
|
〉 |
