【论文精读】ICLR2022 - 语言驱动的语义分割

【论文原文】:LANGUAGE-DRIVEN SEMANTIC SEGMENTATION

作者信息】:Boyi Li Cornell University, Cornell Tech Kilian Q. Weinberger Cornell University Serge Belongie University of Copenhagen Vladlen Koltun Apple René Ranftl Intel Labs

获取地址:https://arxiv.org/abs/2201.03546

博主关键词: 小样本学习,语义分割,视觉语言模型

推荐相关论文:

【论文速递】ICLR2023 - 基于视觉语言预训练模型的医疗图像小样本学习及零样本推理性能研究
- https://blog.csdn.net/qq_36396104/article/details/130353850?spm=1001.2014.3001.5501

摘要:

我们提出了 LSeg,一种用于语言驱动语义图像分割的新型模型。LSeg使用文本编码器计算描述性输入标签(例如“草”或“建筑物”)的嵌入,以及使用基于Transformer的图像编码器来计算输入图像的每像素密集嵌入。图像编码器通过对比度目标训练以将像素嵌入与相应语义类别的文本嵌入对齐。文本嵌入提供了一种灵活的标签表示形式,在这种表示形式中,语义上相似的标签映射到嵌入空间中的相似区域(例如“猫”和“有毛的”)。这使得LSeg能够在测试时推广到以前未见过的类别,而无需重新训练甚至不需要单个额外的训练样本。我们证明了我们的方法在零样本和少样本语义分割方面具有高竞争力的性能,并且即使提供了一个固定的标签集,也可以与传统分割算法的准确性相匹配。代码和演示可在 https://github.com/isl-org/lang-seg 获得。

关键词 -小样本学习,图像分割,Transformer ,文本编码。

简介:

语义分割是计算机视觉中的核心问题,其目标是将图像分割为有着各自语义类别标签的连续区域。目前现有的语义分割方法通常假定可以对像素分配有限的语义类别标签。标签的数量由训练数据集决定,通常涵盖从少至数十个类别(Everingham等,2015)到数百个类别(Zhou等,2019;Mottaghi等,2014)。然而,英语语言定义了数十万个名词(Li等,2020c),限制的标签数量很可能会严重阻碍现有语义分割模型的潜在识别性能。

现有方法中标签数量受限的主要原因是注释图像以产生足够的训练数据的成本。为创建训练数据集,人类注释员必须将数千个图像中的每个像素都与一个语义类别标签相关联,这是一项极其费力且成本高昂的任务,即使只使用少量标签集。随着标签数量的增加,注释的复杂性会显著增加,因为人类注释员必须了解精细的候选标签。此外,当图像中存在适用于多个不同描述或受到标签层次结构支配的对象时,注释员之间的一致性也将成为问题。

为解决这个问题,零样本和小样本的语义分割方法被提出。few-shot方法(Shaban等,2017;Rakelly等,2018;Siam等,2019;Wang等,2019;Zhang等,2019;Nguyen&Todorovic,2019;Liu等,2020b;王等,2020;Tian等,2020;Boudiaf等,2021;Min等,2021)提供了一种只用少量标注图像学习区分新类别的方法。但是,这些方法仍需要包含新类别的标记数据以便进行转移。另一方面,zero-shot方法通常利用单词嵌入来发现或生成已知类和未知类之间的相关特征(Bucher等,2019;Gu等,2020),而无需额外的注释。这个领域的现有作品使用标准单词嵌入(Mikolov等,2013)并关注于图像编码器。

在这里插入图片描述

Fig. 1. 示例结果。LSeg 能够处理未见过的标签,以及任意长度和顺序的标签集。这使得能够动态合成zero-shot语义分割模型。从左到右,每次运行中被删除的标签都有下划线标记,而添加的标签则用粗体红色标记。

在本研究中,我们提出一种简单的方法,利用现代语言模型增强语义分割模型的灵活性和普适性。我们的工作受到 CLIP 模型(用于图像分类,Radford等,2021)的启发,该模型将高容量图像和文本编码器配对,以产生健壮的zero-shot分类器。我们建议使用针对视觉数据共同训练的最新文本编码器(例如 CLIP),将训练集中的标签嵌入到嵌入空间中,并训练一个视觉编码器,以便从输入图像中生成与相应标签嵌入接近的每像素嵌入。由于文本编码器被训练,以使密切相关的概念靠近彼此(例如,“狗”比“车辆”更接近“宠物”), 我们可以将文本编码器的灵活性转移到视觉识别模块中,同时仅使用现有语义分割数据集提供的限制标签集进行训练。如图1(最上排)所示的例子,该模型可以成功地标记属于“宠物”类的像素,尽管训练集中没有包含此标签。

我们的方法使得能够动态合成zero-shot语义分割模型。换句话说,用户可以任意地扩展、缩小或重新排列任何图像的标签集。我们还引入了一个输出模块,可以在保持这种灵活性的同时对预测进行空间正则化。我们在图1中展示了我们模型灵活性的一些示例。LSeg 能够基于给定的标签集输出不同的分割图。例如,在最后一行,输出(a)识别了椅子,并将所有非椅子对象标记为“其他”,因为这是模型提供的仅有的两个标签。当添加标签时,如(b)和(c)中所示,模型将能够成功地使用扩展标签集对其他对象进行分割。

我们对各种zero-shot和few-shot语义分割任务进行了定量评估。我们的方法在zero-shot设置中表现优异,并在多个few-shot基准测试中具有竞争力。与我们进行比较的最新基线不同,我们的方法不需要额外的训练样本。我们的实验还表明,与标准的固定标签分割方法相比,引入文本嵌入只会产生微不足道的性能损失。

相关工作:

广义语义分割。 大多数现有的语义分割模型都限于由训练数据集中的标签定义的固定标签集(Minaee等,2021)。few-shot语义分割方法旨在在测试时有一个或少量标注的新类别可用时放宽固定标签集的限制。这些方法学习在要标记的查询图像和可能包含新语义类别的标注支持图像之间找到可靠的视觉对应关系(Shaban等,2017; Rakelly等,2018; Siam等,2019; Wang等,2019; Zhang等,2019; Nguyen&Todorovic,2019; Liu等,2020b; Wang等,2020; Tian等,2020; Boudiaf等,2021; Min等,2021)。虽然这种策略可以显著增强最终模型的普适性,但它要求至少有一个带有目标标签集的标记示例图像可用,这并不总是实际可行的。

zero-shot语义分割方法旨在在没有新类别的任何其他样本的情况下对未见的对象进行分割。类标签的文本嵌入在这些作品中发挥着核心作用。Bucher等人(2019)和Gu等人(2020)建议利用词嵌入和生成模型来生成未见类别的视觉特征,而Xian等人(2019)建议将视觉特征投影到简单的词嵌入空间,并关联生成的嵌入来为像素分配标签。胡等人(2020)建议使用不确定性感知学习来更好地处理已知类别的嘈杂标签,而Li等人(2020b)引入了一种结构化学习方法来更好地利用已知和未知类别之间的关系。虽然所有这些都利用了文本嵌入,但根据我们的了解,我们的论文是第一个表明可以合成与固定标签和few-shot语义分割方法同等的zero-shot语义分割模型的论文。

已经提出了各种解决方案(Zhang等,2020b; Liu等,2020a; Perera等,2020; Zhou等,2021)来进行开放集识别(Scheirer等,2012; Geng等,2020)。它们旨在提供有关给定样本是否落在训练分布之外的二进制决策,但并不旨在预测全新类别的标签。

最后,不同的工作方向通过使用特征对准、自我训练和信息传播策略(Yang等,2021; Wang等,2021)来探索语义分割的跨域适应方法。这些工作的目标是增强模型对新视觉领域的可转移性,但它们没有解决标签集受限的问题。因此,它们与我们的工作是相互独立的。

语言驱动的识别。 语言驱动的识别是一个活跃的研究领域。该领域内常见的任务包括视觉问答(Antol等,2015)、图像字幕生成(Vinyals等,2014)和图像-文本检索(Li等,2020a)。CLIP(Radford等,2021)展示了不常与语言相关的传统识别任务可以强烈受益于语言辅助。CLIP结合对比学习、高容量语言模型和视觉特征编码器,来合成极其强健的zero-shot图像分类模型。近期的工作将这个基本范例扩展来执行灵活的物体检测。ViLD(Gu等,2021)介绍了一种先进的zero-shot物体检测方法,它利用了CLIP,而MDETR(Kamath等,2021)提出了一种端到端的方法,用从先进语言模型获取的文本特征调节基于transformer的基础探测器。像CLIP一样,这些工作表明通过语言辅助,物体检测模型的鲁棒性和普适性可以得到大大提高。我们的工作受到这些方法的启发,并据我们所知,提出了第一种利用高容量语言模型灵活合成zero-shot语义分割模型的方法。

语言驱动的语义分割:

我们的方法——语言驱动的语义分割(LSeg)将文本标签和图像像素嵌入到一个共同的空间中,并将最接近的标签分配给每个像素。我们在图2中展示了该框架,并在下面详细描述了每个部分。

文本编码器。 文本编码器将N个潜在标签嵌入到连续的向量空间 R C \mathbb{R}^C RC 中,产生N个向量 T 1 , . . . , T n ∈ R C T_1,...,T_n ∈ \mathbb{R}^C T1...TnRC 作为输出(图2中的蓝色向量)。多种网络架构都是可能的,我们在整个过程中使用预训练的对比语言-图像预训练(CLIP)(Radford等人,2021)。通过设计,输出向量集合对于输入标签的顺序是不变的,并且允许它们的数量N自由地变化。

图像编码器。 与文本编码器类似,图像编码器为每个输入像素(下采样后)生成一个嵌入向量。我们利用密集预测transformsers(DPT)(Ranftl等人,2021)作为底层架构。假设H×W是输入图像的大小,s是用户定义的下采样因子(在我们的实现中,s = 2)。我们定义 H ~ = H s , W ~ = W s \tilde{H}= \frac{H}{s},\tilde{W}= \frac{W}{s} H~=sHW~=sW。输出是一个密集的嵌入 I ∈ R H ~ × W ~ × C I∈\mathbb{R}^{\tilde{H}×\tilde{W}×C} IRH~×W~×C(图2中的绿色张量)。我们将像素(i,j)的嵌入称为 I i j I_{ij} Iij

在这里插入图片描述

Fig. 2:概述。文本编码器将标签嵌入到一个向量空间中。图像编码器从图像中提取每个像素的嵌入,并将每个像素的特征与所有标签嵌入进行相关性分析。图像编码器的训练目的在于最大化文本嵌入和真值像素类别嵌入之间的相关性。最后的空间正则化块对预测进行空间正则化和清理。

**词像素相关张量。**在图像和标签被嵌入之后,我们通过内积进行相关性分析,从而创建一个大小为 H ~ × W ~ × N \tilde{H}×\tilde{W}×N H~×W~×N的张量(图2中的橙色张量),其中N是标签的数量,定义为:
f i j k = I i j ⋅ T k f_{i j k}=I_{i j} \cdot T_k fijk=IijTk
我们将像素(i,j)的嵌入与所有N个单词的内积向量称为 F i j ∈ R N F_{ij}∈\mathbb{R}^N FijRN,其中 F i j = ( f i j 1 , f i j 2 , . . . , f i j k ) T F_{ij}=(f_{ij1},f_{ij2},...,f_{ijk})^T Fij=(fij1fij2...fijk)T。在训练过程中,我们鼓励图像编码器提供靠近相应真值类别的文本嵌入的像素嵌入。具体而言,给定N个标签的文本嵌入 T k ∈ R C T_k∈\mathbb{R}^C TkRC和像素(i,j)的图像嵌入 I i j ∈ R C I{ij}∈\mathbb{R}^C IijRC,我们旨在最大化与像素(i,j)的真实标签 k = y i j k=y_{ij} k=yij相对应的 f i j k f_{ijk} fijk项的点积。我们通过在整个图像上定义像素级softmax目标来实现这一点:
∑ i , j = 1 H , W softmax ⁡ y i j ( F i j t ) \sum_{i, j=1}^{H, W} \operatorname{softmax}_{y_{i j}}\left(\frac{F_{i j}}{t}\right) i,j=1H,Wsoftmaxyij(tFij)
其中,t是一个用户定义的温度参数,我们将其设置为 t = 0.07 t=0.07 t=0.07(参见Wu等人,2018;Radford等人,2021)。在训练过程中,我们采用像素级softmax和带温度缩放的交叉熵损失最小化,这在语义分割中是标准的做法。

在这里插入图片描述

空间正则化。 由于内存限制,图像编码器对像素嵌入的预测分辨率比输入图像分辨率低。我们使用一个额外的后处理模块,对预测进行空间正则化和上采样以恢复到原始输入分辨率。在此过程中,我们必须确保所有操作对标签保持等变性。换言之,输入通道之间不应有任何交互,其顺序由单词的顺序定义,因此可以任意选择。我们评估了两种满足此属性的函数:一种是深度可分离卷积(Chollet, 2017)的简单级联和非线性激活函数(DepthwiseBlock);另一种是额外增加了一层针对标签集合的最大池化操作来扩充深度可分离卷积的block(BottleneckBlock)(Li等人,2019)。在最后一步中,我们使用双线性插值来恢复到原始分辨率的预测。我们将这些函数称为“空间正则化块”,并在图3中说明了它们的示意图。

训练细节。 我们使用 ViT(Dosovitskiy等人,2021)或 ResNet(He等人,2016)2的官方 ImageNet 预训练权重来初始化图像编码器的骨干部分,并随机初始化DPT的解码器。在训练过程中,我们冻结文本编码器,仅更新图像编码器的权重。我们为每个图像提供由每个训练集定义的完整标签集合,以便将其提供给文本编码器。

我们的模型可以在任何语义分割数据集上进行训练,并通过文本编码器支持灵活混合多个数据集。现有的语义分割模型将输出中的一个固定通道表示为像素属于相应语义类别的概率。相比之下,我们的方法可以动态处理具有不同长度、内容和顺序的标签集合。这种属性使得仅需改变馈入文本编码器的标签,即可合成任意的零样本语义分割模型。

实验:

我们主要设计 LSeg 用于zero-shot设置,此时用于推断的标签在训练过程中从未见过。然而,由于zero-shot设置缺乏标准化协议、足够的数据集和基准,我们将 LSeg 与zero-shot和few-shot语义分割模型在一些少样本基准上进行了比较。需要注意的是,few-shot方法可以访问更多信息,因此预计会产生更高的准确性。但是,与我们的方法相比,标记样本的需求严重限制了它们的灵活性。

实验步骤:

我们遵循了最新的少样本方法HSNet(Min等,2021)的协议,并在三个广泛使用的少样本语义分割基准上进行评估:PASCAL-5 i ^i i(Everingham等,2015)、COCO-20 i ^i i(Lin等,2014)和FSS-1000(Li等,2020c)。按照少样本分割的标准协议,我们使用平均交并比(mIoU)和前景-背景交并比(FB-IoU)作为评估指标。mIoU计算所有类别的平均IoU,FB-IoU计算折叠i中前景和背景IoU的平均值,并忽略对象类别。

如果没有另外说明,我们使用带有CLIP-ViT-B/32提供的文本编码器的LSeg模型,并利用以ViT-L/16为骨干的DPT作为图像编码器。对于提供背景或未知类别的数据集,我们将相应的背景标签设置为“other”。我们使用带有动量0.9的SGD优化器和带衰减率0.9的多项式学习率调度器。我们使用六个Quadro RTX 6000进行6个样本批量大小的训练。

PSCAL-5 i ^i i AND COCO-20 i ^i i

PASCAL-5 i ^i i和COCO-20 i ^i i是从PASCAL VOC 2012 (Everingham等,2015)和COCO数据集 (Lin等,2014)中分别创建的少样本分割数据集。PASCAL-5 i ^i i由20个对象类别与相应的掩模注释组成,已平均分成了4个每个包含5个类别的折叠。我们将不同的折叠表示为5 i ^i i,其中 i ∈ { 0 , 1 , 2 , 3 } i∈ \{0, 1, 2, 3\} i{0,1,2,3}。类似地,COCO-20 i ^i i由20个类别的4个折叠组成。

我们将LSeg与各种最新的少样本模型进行了比较:OSLSM (Shaban等,2017)、CoFCN(Rakelly等,2018)、AMP-2 (Siam等,2019)、 PANet (Wang等,2019)、PGNet(Zhang等,2019)、 FWB (Nguyen和Todorovic,2019)、PPNet (Liu等,2020b)、DAN(Wang等,2020)、PFENet(Tian等,2020)、RePRI(Boudiaf等,2021)和HSNet (Min等,2021)。这些少样本方法提出了基于预训练已知类别、微调目标类中几张图像来分割未见过的对象的策略。此外,我们还与采用DeepLabv3+框架的竞争性零样本基线ZS3Net (Bucher等,2019)以及利用DeepLabv2的Xian等人(2019)进行了比较。我们遵循他们提供的在ImageNet (Deng等,2009)上预训练的模型的官方代码、训练设置和训练步骤,并在所有折叠上进行交叉验证。假设 n i n_i ni是第i折中类别的数量,对于每个折叠i,我们使用其他折叠中的图像进行训练,并在目标折叠i中随机抽取1000张图像进行评估。我们在表1和表2中展示了在PASCAL-5 i ^i i和COCO-20 i ^i i上的结果。我们的模型(带有相同的ResNet101骨干)在所有折叠和数据集上都比零样本基线表现出更好的效果,甚至可以与几种少样本方法相媲美。我们还观察到,使用更大的骨干(ViT-L/16)可以明显提高LSeg的性能。

在这里插入图片描述

FSS-1000

FSS-1000 (Li等人,2020c)是一个针对少样本分割的最新基准数据集。它包含了1000个带有像素级标注分割掩码的物体类别。与之前的数据集如PASCAL和COCO相比,它包含了相当数量的未见过或未注释的对象。按照标准协议,我们将这1000个类别分为训练、验证和测试类别,分别为520、240和240个类别。我们使用0.05的基础学习率,并训练模型60个epochs。

表格3比较了我们的方法和最新的少样本模型。值得注意的是,在相同的ResNet101下,LSeg能够达到与最先进的单样本方法相媲美的结果。此外,LSeg甚至超过了一个最先进的单样本方法:在更大的骨干ViT-L/16下,87.8 mIoU(我们的方法)高于86.5 mIoU(HSNet),表明LSeg在未见过的类别上具有很好的泛化能力。图4展示了一些未见过类别的分割结果示例。

在这里插入图片描述

在这里插入图片描述

探讨和论述:

消融实验

我们进一步在实证层面探索了LSeg的各种属性。我们在ADE20K数据集(Zhou等人,2019)上进行实验,该数据集是一个标准的语义分割数据集,包括了各种各样的图像,并提供了150个不同类别的像素级分割。我们将基础学习率设置为0.004,并训练240次迭代的模型。我们使用带有0.9动量的SGD和多项式学习率调度器,衰减率为0.9。除非另有说明,否则我们将LSeg与DPT和较小的ViT-B/32骨干以及CLIP ViT-B/32文本编码器一起使用。

空间正则化块。 我们首先对空间正则化块的两个变体进行了消融研究,用于清理输出。我们去掉不同类型的块,以及堆叠不同数量的块(N∈[0, 1, 2, 4])。结果如表4所示。我们注意到通过添加几个正则化块可以实现一致的改进。堆叠两个BottleneckBlocks可以实现最强的改进,这是一个很小的开销。

在这里插入图片描述

文本编码器。 原则上,LSeg支持任意文本编码器。我们在表5中展示了使用不同文本编码器的影响,其中我们去掉了由CLIP零样本图像分类模型(Radford等人,2021)提供的各种编码器。注意,所有文本编码器都采用了纯粹基于文本的变换器架构。编码器之间的主要区别在于它们与CLIP预训练期间配对的图像编码器(例如,“ViT-B/32”所表示的文本编码器是与ViT-B/32图像编码器一起训练的)和嵌入维度的大小。

我们观察到,使用RN50×16在所有文本编码器中实现了最佳性能,并且超过了最弱的ViT-B/32文本编码器2.5%。我们猜测这是因为该编码器所提供的嵌入更大的缘故。

固定标签集合的比较。 语言辅助有助于提高对未注释或未见过类别的识别性能。然而,有人担心这种灵活性会影响对具有固定标签集合的任务的性能。为了测试这一点,我们在ADE20K数据集上使用标准协议对LSeg进行训练,其中训练和测试标签是固定的(也就是说,在测试时没有看不见的类别标签)。我们将结果与高度竞争的标准语义分割模型进行比较,包括OCNet(Yuan等,2020)、ACNet(Fu等,2019)、DeeplabV3(Chen等,2017;Zhang等,2020a)和DPT(Ranftl等,2021)。结果列在表6中。我们发现,在使用RN50×16文本编码器时,LSeg表现竞争力,并且与最接近的固定标签分段方法(DPT)相比仅有微不足道的性能损失。

在这里插入图片描述

定性研究结果:

最后,我们在7个不同数据集(Lambert等人,2020)的混合上对LSeg进行了训练,包括ADE20K(Zhou等人,2019)、BDD(Yu等人,2020)、Cityscapes(Cordts等人,2016)、COCO-Panoptic(Lin等人,2014;Caesar等人,2018)、IDD(Varma等人,2019)、Mapillary Vistas(Neuhold等人,2017)和SUN RGBD(Song等人,2015)。请注意,我们在没有进行任何预处理或重标记的情况下,使用这些数据集提供的原始标签集对模型进行训练。我们按照ADE20K的训练协议进行训练,并使用ViT-L/16骨干和ViT-B/32文本编码器对LSeg进行训练200个轮次,学习率为0.004。如果一个类别有多个标签,在训练时我们只使用第一个提供的标签。我们从网络中选择图像,并在图5中展示结果,以说明所得模型的用途。

以前未见过的相关标签。 我们在图5(a)中展示了LSeg推广到新类别的能力的一些显著示例。在第一行的左侧,我们首先使用“天空”、“道路”、“房屋”和“植物”的标签集,观察到该模型能够将图像分割为所提供的类别。然后,我们将标签“房屋”更改为“建筑物”,将标签“植物”更改为“绿色植物”。在这个不同但语义相关的标签集上,该模型产生了与之前类似的分割效果。尽管在任何训练图像中都没有出现“绿色植物”甚至“绿色”这个标签。在第二行中也展示了类似的效果,LSeg成功地将图像分割并正确地指定了标签“蛋糕”或“甜点”(同样,在训练期间未出现标签“甜点”),同时成功地抑制了视觉和语义相似的标签“面包”。

在这里插入图片描述

层次式未知标签。 图5(b)展示了LSeg可以隐式地提供标签层次结构的正确分割地图。在第一行中,该模型能够识别图像的“猫”、“植物”和“草”的部分,因为这些标签存在于训练集中。当将“猫”替换为标签“毛茸茸”时,我们注意到该模型能够成功地识别这个类别的父类别(即,大多数猫都是有毛的,但并非所有有毛的物体都是猫)。同样地,当删除标签“草”时,我们注意到原来的“草”区域被合并到“植物”中,这再次表明了文本嵌入所提供的灵活性所构建的隐式层次结构。第二行展示了类似的情况,LSeg识别了沙发和其他物体。然而,左边的小架子被分割为未知的类别“其他”。当我们将“沙发”改为“家具”时,LSeg成功地将沙发和小架子都识别为“家具”。请注意,“家具”从未出现在训练标签集中。

在这里插入图片描述

失败案例。 尽管LSeg通常能够取得非常有前途的结果,我们还是观察到一些失败案例,如图6所示。左图说明LSeg只使用了来自一个类别的正样本进行训练。当测试时间输入标签不包含相应像素的真实标签时,该模型将最高的概率分配给文本嵌入空间中最接近的标签。在这个特定的例子中,由于狗的视觉特征显然更接近“玩具”而不是“草”,并且没有其他标签可以解释视觉特征,所以该模型分配了标签“玩具”。右侧展示了第二个失败案例,在多个解释与标签集一致时,该模型会专注于一个最可能的物体。在这个特定的例子中,房子的窗户被标记为“房屋”而不是“窗户”,尽管“窗户”标签是可用的选择。我们希望这些失败案例可以为未来的工作提供信息,包括增加负样本训练或构建精细的语言驱动的语义分割模型,当多个解释适合数据时,这些模型可以潜在地分配多个标签。

结论:

我们介绍了LSeg,一种新颖的方法和架构,用于训练语言驱动的语义分割模型。LSeg提供了一种灵活的标签表示方法,该方法将在嵌入空间中语义相似的标签映射到相似的区域,并学习将视觉概念在该空间中关联起来以产生语义分割。我们的公式使得可以即时合成任意标签集的零样本语义分割模型。我们的实证结果表明,由此得到的模型是零样本语义分割的强大基线,甚至可以与少样本分割模型相媲美,同时不会牺牲现有固定标签集上的准确性。

智慧地球(AI•Earth)社区
学术论坛地址:https://bbs.csdn.net/forums/paper
Logo

AI·Earth

更多推荐