分割大模型论文阅读——Medical SAM Adapter Adapting Segment Anything Model for Medical Image Segmentation

期刊分析

期刊名: arXiv
代码: https://github.com/KidsWithTokens/Medical-SAM-Adapter
在这里插入图片描述

摘要

Segment Anything Model (SAM) 最近在图像分割领域广受欢迎,因为它在各种分割任务中具有令人印象深刻的功能及其基于提示的界面。然而,最近的研究和个别实验表明,由于缺乏医学专业知识,SAM 在医学图像分割方面表现不佳。这就提出了如何增强 SAM 对医学图像的分割能力的问题。在本文中,我们没有对 SAM 模型进行微调,而是提出了医学 SAM 适配器 (Med-SA),它使用轻量而有效的适应技术将特定领域的医学知识融入到分割模型中。在 Med-SA 中,我们提出了空间深度转置 (SD-Trans) 来使 2D SAM 适应 3D 医学图像,并提出超提示适配器 (HyP-Adpt) 来实现提示条件适应。我们对跨各种图像模态的 17 个医学图像分割任务进行了综合评估实验。 Med-SA 的性能优于多种最先进 (SOTA) 医学图像分割方法,同时仅更新 2% 的参数。我们的代码发布于 https://github.com/KidsWithTokens/Medical-SAM-Adapter。


引言

最近,分割任何模型(SAM)(Kirillov et al. 2023)作为一种强大且多功能的视觉分割模型而受到广泛关注。它可以根据用户提示生成多样且详细的分割掩模。尽管其在自然图像上性能优越,但许多最近的研究也表明(Deng et al. 2023;Roy et al. 2023;He et al. 2023)它在医学图像分割方面的性能不佳。使医学图像分割具有交互性(例如采用 SAM 等技术)具有巨大的临床价值。交互式系统可以根据临床医生的指示优先考虑感兴趣的领域,为他们提供更加身临其境和个性化的体验。例如,在单个眼底图像中,经常存在重叠且错综复杂的结构,例如血管、视盘、视杯和黄斑。交互式分割可以极大地帮助临床医生有效地区分目标组织与这些复杂的结构。考虑到获取大规模注释数据集的难度,采用 SAM 这样的基础交互模型进行临床应用变得至关重要。

SAM 在医学图像上的性能有限是由于其缺乏医学特定知识,包括图像对比度低、组织边界模糊和微小病变区域等挑战。 解决此问题的最先进 (SOTA) 方法是专门针对医疗数据完全微调普通 SAM 模型(Ma 和 Wang 2023),这在计算和内存占用方面都相当昂贵。此外,是否有必要进行全面微调值得怀疑,因为之前的研究表明,预训练的视觉模型对医学图像具有很强的可移植性(Raghu et al. 2019;Xie and Richmond 2018)

在本文中,我们尝试以最小的努力将训练有素的 SAM 应用于医学图像分割。从技术上讲,我们选择使用称为“Adaption”的参数高效微调 (PEFT) 技术来微调预训练的 SAM(Hu et al. 2021)。Adaption一直是自然语言处理(NLP)领域流行且广泛使用的技术,用于微调各种下游任务的基本预训练模型。 Adaption的主要思想是将带有部分参数的Adapter模块插入到原始模型中,并且只更新少量额外的Adapter参数,同时保持大型预训练模型的冻结。

然而,将适应技术直接应用到医疗场景中并不是那么简单。第一个挑战来自图像形态。与自然图像不同,许多医学图像是 3D 的,例如 CT 和 MRI 扫描。目前尚不清楚如何将 2D SAM 模型应用于 3D 医学图像分割。其次,虽然 Adaption 在 NLP 领域取得了成功,但将其应用于视觉模型,特别是像 SAM 这样的交互式视觉模型的研究还很有限。在交互式视觉模型中,用户提供的视觉提示在最终预测中起着至关重要的作用。如何将适应与这些重要的视觉提示结合起来仍有待探索。

为了克服这些挑战,我们提出了一种称为医疗 SAM 适配器 (MedSA) 的新型适应框架。在 Med-SA 中,我们引入了空间深度转置 (SD-Trans) 技术来实现 2D 到 3D 的适应。在SD-Trans中,我们将输入嵌入的空间维度转置为深度维度,允许相同的自注意力块可以在给定不同输入的情况下处理不同的维度信息。然后,我们提出超提示适配器(HyP-Adpt)来实现提示条件适应,其中我们使用视觉提示生成一系列可以有效应用于适应嵌入的权重,促进广泛和深入的提示适应交互。

我们进行了涵盖 CT、MRI、超声图像、眼底图像和皮肤镜图像等各种图像模态的 17 种医学图像分割任务的综合评估实验。结果表明,Med-SA 的性能优于 SAM 和完全微调的 SAM (MedSAM)(Ma 和 Wang 2023),但性能差距显着。 Med-SA 还超越了几种专为医学图像分割而设计的 SOTA 方法,例如 nnUNet、TransUNet、UNetr 和 Swin-UNetr。更重要的是,Med-SA 通过仅更新 SAM 总参数中 2% 的额外参数来实现这种卓越的性能。

• 我们提出了一般医学图像分割的适应方法。我们的框架 Med-SA 是 SAM 架构的简单而强大的扩展,显着增强了其医疗应用的功能,同时仅更新了总参数的 2%。
• 我们提出SD-Trans 来实现高维(3D) 医学数据的分割,解决医学图像模式带来的挑战。
• 我们提出HyP-Adpt 来促进即时条件适应,承认用户提供的提示在医疗领域的重要性。
• 我们对 17 个具有各种图像模态的医学图像分割任务进行了广泛的实验,清楚地证明了 Med-SA 相对 SAM 和以前最先进方法的优越性。在广泛使用的腹部多器官分割 BTCV 基准上,Med-SA 的性能优于 Swin-UNetr 2.9%,vanilla SAM 优于 34.8%,完全微调的 SAM (MedSAM) 优于 9.4%。


相关工作

交互式分割

交互式分割有着悠久的历史,最初被研究人员视为一种优化技术(Grady 2006;Gulshan et al. 2010;Kim、Lee 和 Lee 2010;Rother、Kolmogorov 和 Blake 2004)。 DIOS(Xu 等人,2016)的开创性工作通过集成深度学习并将正面和负面点击合并为距离图,彻底改变了交互式分割。随后的研究(Li、Chen 和 Koltun,2018 年;Liew 等人,2019 年)侧重于通过预测多个潜在结果并允许选择网络或用户在其中进行选择来解决不确定性。 CDNet(Chen et al. 2021b)通过结合自注意力来生成更一致的预测,进一步增强了交互式分割。 RITM(Sofiiuk、Petrov 和 Konushin 2022)和 AccuracyNet(Forte 等人 2020)引入了使用以前的掩模作为输入,以增强预测的稳健性和准确性。最近,SAM(Roy et al. 2023)证明了交互式分割对零样本分割的显着影响,并强调了其在视觉基础模型中的潜在重要性。然而,尽管交互式医学图像分割在临床实践中发挥着至关重要的作用,但其关注度却有限。例如,根据不同的要求和用例,单个眼底图像可能需要对多个目标进行分割,例如血管、视盘、视杯和黄斑。我们的 Med-SA 为交互式医学图像分割提供了一个极好的起点,旨在激发该领域的未来研究。

参数高效的微调

PEFT 已被证明是一种针对特定用途微调大型基本模型的有效策略(Zaken、Ravfogel 和 Goldberg 2021)。与完全微调相比,它保持大部分参数冻结,并且学习的参数明显较少,通常不到总数的 5%。这可以实现高效的学习和更快的更新。研究还表明,PEFT 方法比完全微调效果更好,因为它们可以避免灾难性遗忘,并能更好地泛化到域外场景,特别是在低数据情况下(Zaken、Ravfogel 和 Goldberg,2021)。在所有 PEFT 策略中,Adaption(Hu et al. 2021)作为一种有效工具脱颖而出,可以为下游任务微调大型基础视觉模型,不仅在 NLP 中,而且在计算机视觉中。最近的研究表明,自适应可以很容易地应用于各种下游计算机视觉任务中(He et al. 2022;Chen et al. 2022)。因此,我们认为 Adaption 是将 SAM 引入医疗领域的最合适技术。我们预计这种简单、干净但功能强大的 Med-SA 将为基础医学模型的开发释放更大的可能性。

方法

初步:SAM 架构

首先,我们概述 SAM 架构。 SAM 包含三个主要组件:图像编码器、提示编码器和掩模解码器。图像编码器基于 MAE 预训练的标准 Vision Transformer (ViT)。具体来说,我们使用 ViT-H/16 变体,它采用 14×14 窗口注意力和四个等距全局注意力块,如图 1 (a) 所示。图像编码器的输出是输入图像的 16 倍下采样嵌入。提示编码器可以是稀疏的(点、框)或密集的(掩模)。在本文中,我们仅关注稀疏编码器,它将点和框表示为位置编码,并与每种提示类型的学习嵌入相加。掩码解码器是经过修改以包括动态掩码预测头的 Transformer 解码器块。解码器使用双向交叉注意力来学习提示和图像嵌入之间的交互。之后,SAM 对图像嵌入进行上采样,MLP 将输出标记映射到动态线性分类器,该分类器预测给定图像的目标掩模。
在这里插入图片描述

Med-SA 架构

我们的目标是通过微调来增强 SAM 架构针对医学图像分割任务的医疗能力。我们没有完全调整所有参数,而是保持冻结预训练的 SAM 参数,设计一个适配器模块并将其集成到指定位置。适配器充当瓶颈模型,依次由下投影、ReLU 激活和上投影组成,如图 1 (b) 所示。下投影使用简单的 MLP 层将给定的嵌入压缩到较低的维度,而上投影使用另一个 MLP 层将压缩的嵌入扩展回其原始维度。

在 SAM 编码器中,我们为每个 ViT 块使用两个适配器。对于标准 ViT 块(如 1(a) 所示),第一个 Adapter 位于多头注意力之后、残差连接之前(如 1(b) 所示)。第二个 Adapter 被放置在多头注意力之后的 MLP 层的残差路径中。在第二个适配器之后,我们立即使用缩放因子 s 来缩放嵌入(Chen et al. 2022)。

在这里插入图片描述
在 SAM 解码器中,我们为每个 ViT 块合并了三个适配器。第一个适配器用于集成提示嵌入,为了实现这一点,我们引入了一种称为超级提示适配器(HyPAdpt)的新颖结构,在解码器中的第二个 Adapter 的部署方式与编码器中的部署方式完全相同,以适应 MLP 增强嵌入。第三个Adapter是在图像embedding的残差连接之后部署的,以提示交叉注意力。适应后再进行残差连接和层归一化连接,输出最终结果。

SD-Trans

由于 2D 图像与 MRI 和 CT 扫描等流行的 3D 模式之间存在尺寸差异,使 SAM 适应医学图像分割提出了挑战。在临床使用中,了解切片之间的相关性对于准确决策至关重要。虽然 SAM 可以应用于体积的每个切片以获得最终分割,但它未能考虑 3D 医学图像分割中固有的紧密体积相关性,正如之前的研究所强调的那样(Hatamizadeh 等人,2022b,a;Xing 等人,2022)。 2023)。为了解决这一限制,我们提出了 SD-Trans,其灵感来自于图像到视频的适应(Liu et al. 2019)。具体结构如图1©所示。

如图所示,在每个块中,我们将注意力操作分为两个分支:空间分支和深度分支。对于给定的深度为 D 的 3D 样本,我们将 D × N × L 输入到空间分支的多头注意力中,其中 N 表示嵌入数量,L 表示嵌入长度。这里,D 对应于操作的数量,允许在 N × L 上应用交互,捕获空间相关性并将其抽象为嵌入。在深度分支中,我们转置输入矩阵以获得 N ×D ×L ,然后将其输入到相同的多头注意力中。尽管采用相同的注意力机制,但交互现在发生在 D × L 上,从而实现了深度相关性的学习和抽象。最后,我们将深度分支的结果转回其原始形状,并将它们添加到空间分支的结果中,合并深度信息。

在这里插入图片描述

HyP-Adpt

虽然适应技术已在之前的一些作品中应用于视觉模型,但适应在交互式视觉模型中的应用在很大程度上仍未得到探索。源任务和下游任务之间的交互行为可能表现出显着的差异。因此,将在交互模型中起着关键作用的视觉提示纳入适配器中变得至关重要。对此,我们提出了一种名为 HyPAdpt 的解决方案,旨在实现即时条件适应。

HyP-Adpt 背后的想法受到 HyperNetworks(Ha、Dai 和 Le 2016)的启发,它使用一个网络为另一个网络生成权重以进行知识调节。我们采用了超网络的高级概念,但对其进行了重新设计,以便在功能级别上有效地应用它。具体来说,我们仅利用投影和整形操作从提示嵌入生成一系列权重图。然后将这些权重图直接应用于(矩阵乘积)适配器嵌入。与生成整个网络相比,这种方法可以实现广泛而深入的特征级交互,同时还显着减少所需参数的数量。

在这里插入图片描述
在这里插入图片描述

训练策略

对于交互式分割,我们在模型训练过程中采用点击提示和边界框(BBox)提示。为了生成 BBox 提示,我们采用与 SAM 相同的方法。然而,由于原始 SAM 论文提供的有关点击提示生成的详细信息有限,因此我们设计了自己的方法,在此介绍。

我们的点击提示生成过程背后的基本概念涉及使用正点击来指示前景区域和负点击来指示背景区域。我们结合随机和迭代点击采样策略来根据这些提示来训练模型。最初,我们利用随机采样进行提示初始化,随后,我们使用迭代采样过程合并几次点击。这种迭代采样策略模拟与真实用户的交互,因为每次新的点击都被放置在网络使用先前点击集生成的预测的错误区域中。我们参考(Lin et al. 2020)进行随机采样生成,并参考(Mahadevan、Voigtlaender 和 Leibe 2018)来模拟迭代采样过程。详细的实现可以在我们发布的代码中找到。

实验

在这里插入图片描述
在这里插入图片描述

数据集

我们对五个不同的医学图像分割数据集进行了实验,这些数据集可以分为两类。第一类侧重于评估一般分割性能。为此,我们选择了腹部多器官分割,因为它代表了医学图像分割中最重大的挑战之一。我们利用了 BTCV 数据集(Fang 和 Yan 2020),这是一个广泛使用且公开可用的基准,以 12 个解剖结构作为基准。

其他四项任务用于验证模型对不同模式的泛化,包括眼底图像上的视盘和视杯分割、脑 MRI 图像上的脑肿瘤分割、超声图像上的甲状腺结节分割以及皮肤镜图像上的黑色素瘤或痣分割。对于眼底图像分割,我们在 REFUGE2(Fang et al. 2022)数据集上进行了实验。对于脑肿瘤分割,我们在 BraTs 2021 数据集(Baid et al. 2021)上进行了实验。对于甲状腺结节分割,我们使用 TNMIX 基准,这是一个混合数据集,包含来自 TNSCUI (Ma et al. 2017) 的 4554 个图像和来自 DDTI (Pedraza et al. 2015) 的 637 个图像。最后,对于黑色素瘤或痣分割,我们在 ISIC 2019 数据集(Milton 2019)上进行了实验。所有数据集都是公开的。
在这里插入图片描述

实施细节

在本研究中,我们主要按照官方 ViT-H SAM GitHub 存储库实施 Med-SA 管道。对于 2D 医学图像训练,我们遵循 SAM 的默认训练设置。对于 3D 医学图像训练,我们使用较小的批量大小 16。对于 REFUGE2、TNMIX 和 ISIC 数据集,我们对模型进行了 40 个 epoch 的训练。对于 BTCV 和 BraTs 数据集,我们将训练扩展到 60 个 epoch。与完全微调的训练相比,我们选择了较小的纪元数,因为我们观察到模型在我们的设置中收敛得更快。在交互模型中,我们尝试了四种不同的提示设置。其中包括:(1) 随机 1 个正点,表示为“1-point”,(2) 三个正点,表示为“3-point”,(3) 与目标重叠 50% 的边界框,表示为“BBox 0.5”,以及(4)与目标重叠 75% 的边界框,表示为“BBox 0.75”。所有实验均使用 PyTorch 平台实现,并在 4 个 NVIDIA A100 GPU 上进行训练/测试。我们使用默认设置来重现比较方法。

腹部多器官分割与SOTA的比较

为了验证我们提出的 Med-SA 模型的总体性能,我们将其与多器官分割数据集 BTCV 上的 SOTA 分割方法进行比较。定量结果如图1所示。在表中,我们将Med-SA与公认的医学图像分割方法进行了比较,包括nnUNet (Isensee et al. 2021)、TransUNet (Chen et al. 2021a)、UNetr (Hatamizadeh et al. 2021a)、UNetr (Hatamizadeh et al. 2022b)、Swin-UNetr(Hatamizadeh 等人,2022a)、EnsDiff(Wolleb 等人,2021)和 SegDiff(Amit 等人,2021),以及普通 SAM 和完全精细化的 SAM(MedSAM)(Ma)和王 2023)。我们使用 Dice 分数评估分割性能。

在表中,我们可以看到,当仅使用 1 点提示时,Med-SA 比 SAM 取得了显着的改进。值得注意的是,在 BTCV 数据集上,单点 Med-SA 在所有 12 个器官上都实现了 SOTA 性能,在整体性能上超越了其他方法。随着我们提供更细粒度的提示,结果不断改善,最终 Dice 达到 89.8%(BBox 0.75)。这一结果明显优于之前的 SOTA (Swin-UNetr) 2.9%。值得注意的是,Swin-UNetr 由 138M 个可转动参数组成,而我们只更新 13M 个参数。令人惊讶的是,我们甚至在所有即时变化中都优于完全微调的 MedSAM 模型。通过所提出的 SD-Trans 和 HyP-Adpt,我们仅更新了总可转动参数的 2%(13M vs 636M),从而优于 MedSAM,这凸显了所提出技术的有效性。

当比较交互式分割模型(SAM、MedSAM、MedSA)中不同提示的性能时,我们注意到 3 点提示略优于 1 点提示。 BBox 0.75 的性能通常与 3 点提示相当或更好。然而,值得注意的是,BBox 0.5 的性能低于标准,这表明准确的边界框注释对于实现性能改进的重要性。所有交互式模型(包括 SAM、MedSAM 和 Med-SA)在不同的提示下都表现出相似的行为,这表明它们对提示的响应具有一致性。

考虑到 1 中 SAM 的性能,我们观察到在目标医学图像分割任务中,SAM 的零样本性能通常不如完全训练的模型(例如 MedSAM(Ma 和 Wang 2023)),无论使用什么提示。虽然这种比较可能看起来不公平,但当我们将 SAM 的零样本性能与完全训练的医学图像模型进行比较时,SAM 在自然图像数据集中表现出了卓越的零样本性能。这表明与自然图像分割相比,SAM 的零样本可迁移性对于医学图像的效果较差,这在之前的研究中也已观察到(Deng et al. 2023;Roy et al. 2023;He et al. 2023)。这一发现强调需要特定的技术来使 SAM 适应医学图像分割。

图 3 给出了 Med-SA 和 SAM 之间性能的定性比较。从图中可以看出,Med-SA对人眼难以识别的部分进行了准确的分割。相反,在许多器官边界视觉清晰的情况下,SAM 会失败。这进一步强调了对医学图像的通用分割模型进行微调以实现最佳性能的必要性。

与多模态图像上的 SOTA 进行比较

我们还将 Med-SA 与针对不同图像模态的三个医学图像分割任务的专门优化的分割方法进行了比较。结果如表2所示。在表中,提出了ResUnet(Yu et al. 2019)和BEAL(Wang et al. 2019)用于视杯分割,TransBTS(Wang et al. 2021b)和EnsemDiff(Wolleb et al. 2021b)和EnsemDiff(Wolleb et al. 2019)被提出用于视杯分割。 2021)被提出用于脑肿瘤分割,MTSeg(Gong et al. 2021)和UltraUNet(Chu,Zheng,and Zhou 2021)被提出用于甲状腺结节分割,FAT-Net(Wu et al. 2022)和BAT(Wang)等人2021a)提出了黑色素瘤分割。 SegDiff、nnUNet、TransUNet、UNetr 和 Swin-UNetr 被提出用于一般医学图像分割。使用 Dice 分数、IoU 和 HD95 指标评估分割性能。

从表中我们可以看到,这些专门优化的方法通常在各自的领域内表现良好,但应用于其他领域时性能会下降。例如,UltraUNet 在甲状腺结节分割方面实现了之前的 SOTA,但与其他方法相比,在视盘分割方面表现最差。另一方面,通用方法通常在大多数模式下都能取得良好的结果,但在特定任务(例如脑肿瘤分割和甲状腺结节分割)中无法优于专用方法。

将我们的注意力转向交互式模型 SAM 和 MedSAM,我们观察到零样本 SAM 难以处理医学图像中边界不明确的器官/组织,例如视盘/视杯分割或甲状腺结节分割。就完全微调的 MedSAM 而言,由于其 3D 图像处理的局限性,它在脑肿瘤分割方面存在不足。然而,我们的 Med-SA 在所有分割任务中都实现了 SOTA 性能,证明了其泛化到各种医学分割任务和图像模式的能力。在广泛使用的 BraTs 基准上,由于其对 3D 图像的适应性,MedSA 在 Dice 分数上比之前的 SOTA Swin-UNetr 好 2.1%,在 HD95 指标上比之前的 SOTA Swin-UNetr 好 1.86,同时使用了不到 10% 的可转动参数。

消融实验

在这里插入图片描述
我们进行了一项全面的消融研究,以验证所提出的 SD-Trans 和 HyP-Adpt 的有效性。结果如图 3 所示,其中基线(第一行)表示 SAM 和原始适应方法的简单组合。在基线设置中,3D 图像被视为一系列 2D 图像并单独处理,在适应过程中不涉及提示。如表所示,与 3D 数据基准(BTCV 和 BrainTumor)上的普通 SAM 加自适应设置相比,我们的 2D 到 3D 设计显着提高了性能。这一改进凸显了我们提出的 2D 到 3D 设计的有效性。在提示条件自适应中,我们将 HyP-Adpt 与两个更简单的替代方案进行了比较:加法和串联,用于组合提示嵌入。虽然加法和串联也显示出一定的有效性,但所取得的改进仍然很小。另一方面,使用所提出的 HyP-Adpt 可以显着提高性能,进一步验证我们提出的 HyP-Adpt 设计的有效性。

总结

在本文中,我们扩展了 SAM(一种强大的通用分割模型)来解决医学图像分割问题,引入了 Med-SA。利用简单而有效的 SD-Trans 和 HyPAdpt 的参数高效自适应,我们在原始 SAM 模型的基础上取得了实质性改进。我们的方法在涵盖 5 种不同图像模式的 17 项医学图像分割任务中实现了 SOTA 性能。我们预计这项工作将成为推进基础医学图像分割的垫脚石,并激发新型微调技术的发展。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
基于 Ianvs 和 Sedna 终身学习的复现分割任意物体的模型需要一定的技术和资源支持。Ianvs 是一个自适应学习方法,而 Sedna 是一个基于强化学习的终身学习框架。 要复现分割任意物体的模型,你可以考虑以下步骤: 1. 数据准备:收集包含任意物体分割任务的数据集。可以使用已有的数据集,如 COCO、PASCAL VOC 或 Cityscapes,或者自行标注数据集。 2. 模型选择:选择一个适合的分割模型作为基础网络。常用的模型包括 U-Net、Mask R-CNN、DeepLab 等。根据具体任务和资源情况选择合适的模型。 3. 强化学习框架:将 Sedna 终身学习框架应用于模型训练过程中。Sedna 可以帮助模型在不断接收新任务时进行知识迁移和持续学习。 4. 自适应学习方法:结合 Ianvs 的自适应学习方法来进一步提升模型的性能。Ianvs 可以帮助模型快速适应新任务,并在训练过程中动态调整网络结构。 5. 训练和优化:使用准备好的数据集对模型进行训练,并优化模型性能。可以使用常见的优化方法,如梯度下降和学习率调整。 6. 模型评估:使用测试集评估模型的性能,包括分割精度、速度等指标。根据评估结果进行模型调整和改进。 请注意,复现这样的模型是一个复杂的任务,需要深入了解相关的深度学习、强化学习和终身学习技术,并具备相应的计算资源和数据集。建议参考相关文献或代码库,如论文《Sedna: A Framework for Adapting Object Detectors to New Domains》和相关的开源项目,以获得更详细的指导和实现方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Philo`

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值