【论文阅读笔记】SAM-Adapter: Adapting Segment Anything in Underperformed Scenes

1.论文介绍

SAM-Adapter: Adapting Segment Anything in Underperformed Scenes
SAM适配器:在表现不佳的场景中适配任何片段

2023年 ICCV Workshops
Paper Code

SAM Fails to Segment Anything? – SAM-Adapter: Adapting SAM in Underperformed Scenes:
Camouflage, Shadow, Medical Image Segmentation, and More
SAM无法分割任何内容?- SAM适配器:在表现不佳的场景中适配SAM:摄影、阴影、医学图像分割等
2023年 arXiv
Paper Code

2.摘要

大型模型(也称为基础模型)的出现为人工智能研究带来了重大进展。一个这样的模型是Segment Anything(SAM),它是为图像分割任务而设计的。然而,与其他基础模型一样,我们的实验结果表明,SAM在某些分割任务中可能会失败或表现不佳,例如阴影检测和隐藏对象检测(隐藏对象检测)。这项研究首先为将大型预训练图像分割模型SAM应用于这些下游任务铺平了道路,即使在SAM表现不佳的情况下。而不是微调SAM网络,我们提出SAM适配器,它采用了特定于域的信息或视觉提示到分割网络,通过使用简单而有效的适配器。通过将特定任务的知识与大模型学习到的一般知识相结合,SAM-Adapter可以显着提高SAM在挑战性任务中的性能,如大量实验所示。我们甚至可以超越特定任务的网络模型,并在我们测试的任务中实现最先进的性能:隐藏对象检测,阴影检测。我们还测试了息肉分割(医学图像分割),并取得了更好的结果。我们相信,我们的工作为SAM在下游任务中的应用开辟了机会,在各个领域都有潜在的应用,包括医学图像处理、农业、遥感等。

Keywords:SAM,SAM适配器

3.Introduction

人工智能研究已经见证了一种范式转变,模型在大量数据上进行了大规模训练。这些模型,或称为基础模型,如BERT,DALL-E和GPT-3,在许多语言或视觉任务中显示出有希望的结果。最近,在基础模型中,Segment Anything(SAM)作为在大型视觉语料库上训练的通用图像分割模型具有独特的地位。事实证明,SAM在不同的场景中具有成功的分割能力,这使其成为图像分割和计算机视觉相关领域的突破性一步。然而,由于计算机视觉涵盖了广泛的问题,SAM的不完整性是显而易见的,这与其他基础模型相似,因为训练数据无法涵盖整个语料库,并且工作场景会发生变化。在这项研究中,我们首先在一些具有挑战性的低级结构分割任务中测试SAM,包括隐藏对象检测(隐藏场景)和阴影检测,我们发现在一般图像上训练的SAM模型在这些情况下不能完美地“分割任何东西”。因此,一个关键的研究问题是:如何利用大型模型从大量语料库中获得的能力,并利用它们来造福下游任务?

在这里,我们介绍SAM适配器,它作为上述研究问题的解决方案。这项开创性的工作是首次尝试使大型预训练图像分割模型SAM适应特定的下游任务,并提高性能。正如其名称所述,SAMAdapter是一种非常简单但有效的自适应技术,它利用了内部知识和外部控制信号。具体来说,它是一个轻量级模型,可以用相对少量的数据学习对齐,并作为一个额外的网络,从该任务的样本中注入特定于任务的指导信息。使用视觉提示将信息传递到网络,这已被证明是高效和有效的,可以使冻结的大型基础模型适应许多下游任务,并且具有最少数量的附加可训练参数。

具体来说:SAM适配器可以直接应用于各种任务的定制数据集,以提高性能的协助SAM。可以毫不费力地将联合收割机多个显式条件组合起来,以多条件控制微调SAM。

本文的主要贡献可以概括如下:

  • 首先,对作为基础模型的Segment Anything(SAM)模型的不完备性进行了分析,提出了如何利用SAM模型为下游任务服务的研究问题。
  • 其次,我们首次提出了自适应方法SAM-Adapter,以使SAM适应下游任务并实现增强的性能。适配器将特定于任务的知识与大型模型学习的一般知识相结合。可以灵活地设计特定于任务的知识。
  • 第三,尽管SAM的骨干是一个简单的普通模型,缺乏为两个特定的下游任务量身定制的专门结构,但我们的方法仍然超过了现有的方法,并在这些下游任务中达到了最先进的(SOTA)性能。

4. 网络结构详解

使用SAM作为backbone
SAM适配器的目标是利用从SAM中学习的知识。因此,本文使用SAM作为分割网络的骨干。SAM的图像编码器是ViT-H/16模型,具有14 x14窗口注意力和四个等间隔的全局注意力块。保持预训练图像编码器的权重冻结。还利用SAM的掩码解码器,它由一个修改后的Transformer解码器块和一个动态掩码预测头组成。使用预训练的SAM的权重来初始化我们方法的掩码解码器的权重,并在训练期间调整掩码解码器。在SAM的原始掩码解码器中不输入任何提示。

图像编码器参数不训练,只训解码器,提示编码器不使用。

适配器
在这里插入图片描述
接下来,任务特定的知识Fi被学习并通过适配器注入到网络中。采用了提示的概念,它利用了基础模型已经在大数据集上被训练的事实。使用适当的提示来引入特定于任务的知识可以增强模型对下游任务的泛化能力,特别是当注释数据很少时。所提出的SAM适配器的架构如上图所示。目标是保持适配器的设计简单而高效。因此,选择使用仅由两个MLP和两个MLP中的激活函数组成的适配器。具体地,适配器获取信息Fi并获得提示Pi:
在这里插入图片描述
其中 M L P t u n e i MLP^i_{tune} MLPtunei是用于为每个适配器生成任务特定提示线性层。 M L P u p MLP_{up} MLPup是所有适配器共享的上投影层,用于调整Transformer要素的尺寸。Pi是指附加到SAM模型的每个Transformer层的输出提示。GELU是GELU激活函数。信息Fi可以被选择为各种形式。

输入任务特定信息
值得注意的是,信息Fi可以根据任务而具有各种形式,并且可以被灵活地设计。例如,它可以以某种形式从任务的特定数据集的给定样本中提取,例如纹理或频率信息,或一些手工制作的规则。此外,Fi可以是由多个引导信息组成的合成形式:
在这里插入图片描述
其中Fj可以是一种特定类型的知识/特征,并且wj是用于控制合成强度的可调节权重。

5.实验

在实验中,选择了两种类型的视觉知识,补丁嵌入Fpe和高频分量Fhfc,wj被设置为1。因此,Fi由Fi = Fhfc +Fpe导出。MLPi tune具有32个线性层,MLPi up是一个线性层,其将来自GELU激活的输出映射到Transformer层的输入数量。我们使用SAM的ViT-H版本。平衡BCE损失用于阴影检测。BCE损失和IOU损失被用于隐藏对象检测和息肉分割。AdamW优化器用于所有的实验。初始学习率设置为2 e-4。余弦衰减应用于学习率。对图像对象分割的训练进行20个epoch。阴影分割训练了90个epoch。息肉分割被训练120个时期。实验使用PyTorch在四个NVIDIA Tesla A100 GPU上实现。

其实就是把提示编码器换成高频分量+补丁分量,然后以SAM为backbone,微调SAM使其适配下游任务。

<think>嗯,用户的问题是关于如何通过超声SAM适配器对SAMSegment Anything Model)进行调整以实现乳腺病变分割的。首先,我需要理解SAM的基本架构和它的适配方法。SAM是一个通用的图像分割模型,但在医学图像,特别是超声图像中,由于噪声大、边界模糊等特点,直接应用可能效果不佳。因此,需要对其进行适配调整。 根据引用中的信息,比如引用[3]提到使用了条件生成对抗网络(cGAN)并添加了空洞卷积层来学习不同分辨率的特征,这可能是一个有用的思路。此外,频道方向加权块和特定的损失函数(如SSIM和L1范数)也被用来提升分割效果。这些方法可能可以应用到SAM的适配器中。 接下来,用户需要具体的实现步骤。首先,可能需要分析SAM的架构,确定在哪里插入适配模块。比如,在编码器中加入轻量级适配层,或者在解码器中进行特征融合。然后,针对超声图像的特点,可能需要设计特定的模块,比如多尺度特征提取或边界细化模块,类似于FRBNet中的反馈细化边界网络(引用[1])。 另外,数据预处理和增强也是关键,因为超声图像的质量可能参差不齐。可能需要使用动态对比度增强等技术来改善图像质量。在训练策略上,迁移学习和两阶段训练可能有效,先冻结SAM的大部分参数,只训练适配层,再微调整个网络。 还需要考虑如何结合领域知识,比如形状特征和边界信息,可能需要在损失函数中加入边界敏感的部分,如Dice损失和边界加权损失的组合。同时,引用[3]提到的分类阶段使用的统计特征,可能可以用于后续的良恶性分类,但用户当前的问题集中在分割部分。 最后,实现步骤可能包括代码层面的修改,比如在SAM的编码器中插入适配层,定义新的损失函数,并进行训练和验证。需要确保代码示例正确,并参考现有的医学图像分割框架,如nnUNet或MONAI,以提高可靠性。</think>### Ultrasound SAM Adapter实现乳腺超声图像病灶分割的关键步骤 根据现有医学影像分割领域的研究成果[^1][^3],实现SAM模型在乳腺超声图像中的适配需要以下核心步骤: 1. **特征适配层设计** -SAM的ViT编码器中插入轻量级适配模块,公式表示为: $$ h_{adapted} = h_{SAM} + \alpha \cdot \text{Conv3x3}(h_{SAM}) $$ 其中$\alpha$为可学习参数,用于保留原始特征的同时注入超声图像特征[^3] - 添加多尺度特征提取模块,使用空洞卷积组合: ```python class DilatedConvBlock(nn.Module): def __init__(self): super().__init__() self.conv1 = nn.Conv2d(256, 128, 3, dilation=2) self.conv2 = nn.Conv2d(256, 128, 3, dilation=4) ``` 2. **边界敏感机制** 采用FRBNet的边界细化思想,在解码阶段建立双路径特征交互: ```python def boundary_refinement(mask_feat, boundary_feat): edge_weights = torch.sigmoid(boundary_feat) return mask_feat * (1 + edge_weights) ``` 3. **超声图像预处理** - 动态对比度增强算法: $$ I_{enhanced} = \frac{I - \mu}{\sigma + \epsilon} \cdot \gamma + \beta $$ 其中$\gamma,\beta$为自适应参数,根据图像局部统计特性计算 4. **混合损失函数** 结合结构相似性和边界约束: $$ \mathcal{L} = \lambda_1 \text{Dice}(y,\hat{y}) + \lambda_2 \text{SSIM}(y,\hat{y}) + \lambda_3 \sum_{p\in \partial}||\nabla \hat{y}_p||_2 $$ 参数设置$\lambda_1=0.6, \lambda_2=0.3, \lambda_3=0.1$ 5. **实现代码框架** ```python class SAMAdapter(nn.Module): def __init__(self, sam_model): super().__init__() self.sam = sam_model self.adapter_layers = nn.ModuleList([ AdapterBlock(hidden_size=256) for _ in range(4) # 在4个关键层插入适配器 ]) def forward(self, x): features = self.sam.image_encoder(x) for i, layer in enumerate(self.adapter_layers): features[i] = layer(features[i]) return self.sam.mask_decoder(features) ```
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值