【论文阅读笔记】Customized Segment Anything Model for Medical Image Segmentation

1.论文介绍

Customized Segment Anything Model for Medical Image Segmentation
医学图像分割的自定义分割模型
2023年 arXiv
Paper Code

2.摘要

本文提出SAMed,医学图像分割的一般解决方案。与以往的方法不同,SAMed基于大规模图像分割模型Segment Anything Model(SAM),探索了定制大规模医学图像分割模型的新研究范式。SAMed将基于低秩(LoRA)的微调策略应用于SAM图像编码器,并将其与提示编码器和掩码解码器一起在标记的医学图像分割数据集上进行微调。本文还观察到预热微调策略和AdamW优化器导致SAMed成功收敛和降低损耗。与SAM不同,SAMed可以对医学图像进行语义分割。

Keywords:医学图像分割、SAM、微调

3.Introduction

医学图像分割的目的是根据需要指示相应组织的解剖或病理结构,以便于计算机辅助诊断和智能临床手术。与基于CNN的方法相比,Transformer块的集成使得以全局方式关注和聚合相似特征成为可能,这导致医学图像分割中前所未有的性能。然而,针对特定数据集设计这样的网络需要大量的网络工程。更重要的是,在部署和存储这些模型的特定用途的开销是不可忽略的,由于其相当大的模型大小,这对实际使用提出了巨大的挑战。

如今,人工智能研究界正在经历一场戏剧性的革命。大规模模型的激增,使研究人员能够在统一的框架中解决多种问题。部署这种大规模的模型是更有前途的工业用途的目的,因为他们显着的泛化能力。在医学图像分割领域,如果大规模CV模型,如SAM或SegGPT,可以实现非常有竞争力的性能,这将是没有必要部署一个单一的医学图像分割模型,医学图像分割的解决方案可以直接集成到大规模CV模型。此外,将不需要用于医学图像分割的网络工程的负担,并且用于医学图像分割的单个模型的部署和存储开销也可以大大节省。然而,由于医学图像数据及其相应语义标签的缺乏,大规模CV模型不能直接用于医学图像分割。首先,大规模CV模型根据强度的方差决定不同分割区域之间的边界,这在自然图像中是合理的,但在医学图像中不是,因为解剖或病理结构的分析在医学图像分割中起着关键作用。其次,大规模CV模型无法将分割区域与有意义的语义类别相关联。换句话说,它们不能对医学图像进行语义分割,这阻碍了它们在计算机辅助诊断中的使用。在此基础上,本文探讨了医学图像分割中具有代表性的大规模CV模型SAM(SegmentAnythingModel)的定制方法,并总结出了一些有效的改进策略。我们的方法,SAMed(Segment Anything Model for Medical),是建立在SAM的基础上的,在定制过程中只添加和更新一小部分参数,这意味着SAMed的部署和存储在Segment Anything系统上是微不足道的。

在技术上,我们冻结了图像编码器,并采用基于低秩的微调策略(LoRA)来近似图像编码器中参数的低秩更新,并对SAM的轻量级提示编码器和掩码解码器进行微调。在“vit_B”模式下,更新后的模型大小(18.81 M)仅占原始模型大小(358 M)的5.25%。
如果我们将LoRA应用于图像编码器和掩码解码器,模型大小将进一步减少到6.32M,但性能略有下降。在训练策略方面,我们观察到预热和AdamW优化器可以极大地稳定微调过程,从而提高分割精度。

SAMed可以看作是SAM的一个插件,与SAM完全兼容。在推理过程中,我们只需切换SAMed的更新层,使SAM具有处理医学图像的能力。我们总结了本文的贡献:

  • 我们首先扩展SAM,探索其在医学图像分割与语义标签的能力。
  • 从性能、部署和存储开销等方面考虑,提出了图像编码器的自适应和一系列的微调策略。
  • 我们的方法SAMed在DSC和HD中与以前精心设计的医学图像分割方法相比具有很强的竞争力。

4.网络结构详解

在这里插入图片描述
SAMed的框架与SAM一致。冻结图像编码器,并将额外的可训练LoRA层插入SAM以进行医学图像特征提取。此外,我们微调提示编码器与默认的嵌入和掩码解码器,以实现精确的医学图像的语义分割。

给定空间分辨率为H ×W且通道数分别为C的医学图像 x ∈ R H × W × C x ∈ R^{H×W×C} xRH×W×C,我们的目标是预测其对应的具有分辨率H×W的分割图S,其中每个像素属于预定义类别列表 Y = y 0 , y 1 ,, y k Y = {y_0,y_1,,y_k} Y=y0y1,,yk尽可能地接近真值图S。我们将y_0视为背景类,并且yi,i ∈ {1,.,k}作为不同器官的类别。SAMed的整体架构继承自SAM。
冻结了图像编码器中的所有参数,并为每个Transformer块设计了一个可训练的旁路。如LoRA中所示,这些旁路首先将Transformer特征压缩到低秩空间,并重新投影压缩特征以与冻结的Transformer块中的输出特征的通道对齐。
对于提示编码器,SAMed在推理过程中不需要任何提示即可进行自动分割,极大地有利于自动医疗诊断。我们注意到,如果我们剥离SAM中的所有提示,SAM将更新默认嵌入,因此SAMed也会在训练期间微调此嵌入
SAM的掩码解码器可以大致分为轻量级Transformer解码器和分段头。在SAMed中,使用LoRA微调Transformer解码器是可选的。如果我们冻结Transformer解码器,并使用LoRA层对其进行微调,但不微调其所有参数,我们可以进一步缩小更新参数的模型大小,以便于部署,但性能会略有下降。SAM的原始分割头输出多个分割模板,解决了分割提示中的歧义问题,这在提示工程中是至关重要的。为了与SAM的原始设计保持一致,SAMed还预测多个分割掩码,但每个掩码表示Y中的一个类,因此SAMed预测k个分割掩码。在SAM之后,预测的分割logit大小h × w小于输入大小,因此我们使用双线性上采样将其与原始输入大小对齐。

图像编码器中的LoRA
在这里插入图片描述

与对SAM中的所有参数进行微调相比,LoRA允许SAM在医学图像训练期间更新一小部分参数,这不仅节省了计算开销,而且在保证分割性能的同时降低了微调模型的部署和存储难度。SAMed中的LoRA策略如上图所示。给定的编码令牌序列 F ∈ R B × N × C i n F ∈ R^{B × N×C_{in}} FRB×N×Cin和输出令牌序列 F ∈ R B × N × C o u t F ∈ R^{B×N×C_{out}} FRB×N×Cout 由投影层 W ∈ R C o u t × C i n W ∈ R^{C_{out}×C_{in}} WRCout×Cin操作,LoRA假设W的更新应该是渐进和稳定的,因此它提出应用低秩近似来描绘这种逐渐更新。

遵循此策略,SAMed首先冻结Transformer层以保持W固定,然后添加旁路以完成低秩近似。该旁路包含两个线性层 A ∈ R r × C i n A ∈ R^{r×C_{in}} ARr×Cin B ∈ R C o u t × r B ∈ R^{C_{out}×r} BRCout×r,其中 r < < m i n { C i n , C o u t } r << min\{C_{in},C_{out}\} r<<min{CinCout}。因此,更新后的层W的处理可以描述为:
在这里插入图片描述

由于多头自注意机制以余弦相似度确定要关注的区域,因此将LoRA应用于查询、键或值的投影层以影响注意力分数是明智的。我们观察到,当我们将LoRA应用于查询和值投影层时,SAMed可以获得更好的性能,因此多头自注意的处理策略将变为:
在这里插入图片描述

其中Wq、Wk和Wv是来自SAM的冻结投影层,Aq、Bq、Av和Bv是可训练LoRA参数。

LoRA 策略试图通过降低投影层的秩来实现对模型参数的渐进更新,以确保模型更新的稳定性和渐进性。这样可以降低模型参数更新的复杂度,使模型更容易训练和优化。就是在冻结了image encoder,在每个transformer块旁增加LoRA旁路,它就是两个线性层,第一个线性层输出的特征通道数会小于输入的特征和第二个线性层输出的特征,在transformer的query和value上增加。

提示编码器和掩码解码器
在这里插入图片描述
SAMed将稀疏和密集嵌入集成到编码图像嵌入中。经过Transformer层处理后,分别生成每个类的分割图及其IOU。我们采用后处理来聚合这些分割图到最终的分割结果。

为了追求快速和自动化的医疗诊断,SAMed在推理过程中不需要任何提示。由于SAM中的提示编码器在没有提供提示时使用默认嵌入,因此SAMed保留此默认嵌入并使其在微调过程中可训练。SAM中的掩码解码器由一个轻量级的Transformer层和一个分段头组成。可以选择将LoRA应用于这个轻量级的Transformer层,并直接微调分割头或微调掩码解码器中的所有参数。这两种策略在训练和部署开销方面都是可以接受的,后者可能导致更小的模型大小,更容易部署,但性能较低。SAMed对SAM的分割头进行了一些修改,以定制Y中每个语义类的输出。与SAM的歧义预测不同,SAMed以确定性的方式预测Y的每个语义类别。假设有k个用于分割的类,包括1个背景类和对应于每个有意义的医学组织的k-1个类。SAMed的掩码解码器同时预测对应于每个语义标签的k个语义掩码S l ∈ Rh×w×k。最后,预测的分割图被生成为:
在这里插入图片描述
其中d = −1表示Softmax和argmax操作在最后一个维度(通道维度)上执行。

损失函数
SAMed采用交叉熵和骰子损失来监督微调过程。损失函数可以描述为

其中CE和Dice分别表示交叉熵损失和Dice损失。D表示下采样操作,以使真值图的分辨率与来自SAMed的输出的分辨率相同,因为其空间分辨率低得多。λ1和λ2表示用于平衡这两个损失项之间的影响的损失权重。

Warmup
SAMed利用指数学习率衰减使训练过程逐渐收敛。学习率调整策略可以描述为:
在这里插入图片描述
其中Ilr表示初始学习率。T、WP和MI分别表示训练迭代、预热周期和最大迭代。

AdamW优化器。在实验过程中,我们观察到AdamW 优化器与SAMed中的SGD相比导致性能提高。我们将此现象归因于SAM与其医学图像改进版SAMed优化方案的一致性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/300232.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

探索数据结构:特殊的双向队列

✨✨ 欢迎大家来到贝蒂大讲堂✨✨ &#x1f388;&#x1f388;养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; 所属专栏&#xff1a;数据结构与算法 贝蒂的主页&#xff1a;Betty’s blog 1. 双向队列的定义 **双向队列(double‑ended queue)**是一种特殊的队列…

【并发编程系列】使用 CompletableFuture 实现并发任务处理

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

python买铅笔 2024年3月青少年电子学会等级考试 中小学生python编程等级考试一级真题答案解析

目录 python买铅笔 一、题目要求 1、编程实现 2、输入输出 二、算法分析 三、程序代码 四、程序说明 五、运行结果 六、考点分析 七、 推荐资料 1、蓝桥杯比赛 2、考级资料 3、其它资料 python买铅笔 2024年3月 python编程等级考试级编程题 一、题目要求 1、编…

Bigtable [OSDI‘06] 论文阅读笔记

原论文&#xff1a;Bigtable: A Distributed Storage System for Structured Data (OSDI’06) 1. Introduction Bigtable 是一种用于管理结构化数据的分布式存储系统&#xff0c;可扩展到非常大的规模&#xff1a;数千台服务器上的数据量可达 PB 级别&#xff0c;同时保证可靠…

《QT实用小工具·十七》密钥生成工具

1、概述 源码放在文章末尾 该项目主要用于生成密钥&#xff0c;下面是demo演示&#xff1a; 项目部分代码如下&#xff1a; #pragma execution_character_set("utf-8")#include "frmmain.h" #include "ui_frmmain.h" #include "qmessag…

js计算器实现

文章目录 1. 演示效果2. 分析思路3. 代码实现 1. 演示效果 2. 分析思路 给每个按钮添加点击事件&#xff0c;使用eval()进行计算。 3. 代码实现 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name&q…

低代码革新:软件开发的未来潜力与创新路径探索

过去的一年&#xff0c;挑战与机遇并存。人们一边忧虑市场经济下行所带来的新的增长难题、裁员危机&#xff0c;一边惊叹于AIGC、量子技术等领域不断涌现新的创新成果。 时代发生了改变&#xff0c;传统“互联网”的模式已走入尾声&#xff0c;新一轮的科技革命与产业变革正在到…

学习 MongoDB:打开强大的数据库技术大门

一、基本概念 MongoDB 是一个基于分布式文件存储的文档数据库&#xff0c;由 C 语言编写。它旨在为 Web 应用提供可扩展的高性能数据存储解决方案。 相信MySQL我们非常的熟悉&#xff0c;那么MySQL的表结构与MongoDB的文档结构进行类比的话可能更好理解MongoDB。 MySQL的数据…

Windows下Docker安装Kafka3+集群

编写 docker-compose.yaml 主要参照&#xff1a;https://www.cnblogs.com/wangguishe/p/17563274.html version: "3"services:kafka1:image: bitnami/kafka:3.4.1container_name: kafka1environment:- KAFKA_HEAP_OPTS-Xmx1024m -Xms1024m- KAFKA_ENABLE_KRAFTyes- K…

类和对象(上)

目录 类的定义&#xff1a; 类的访问限定符及封装&#xff1a; 访问限定符&#xff1a; 封装&#xff1a; 类的作用域&#xff1a; 类的实例化&#xff1a; ​编辑 类对象模型&#xff1a; 类对象的大小与存储方式&#xff1a; this指针&#xff1a; this指针的引出&…

《债务与国家的崛起》西方民主制度的金融起源 - 三余书屋 3ysw.net

债务与国家的崛起&#xff1a;西方民主制度的金融起源 你好&#xff0c;今天我们来聊聊由英国知名经济与金融历史学家詹姆斯麦克唐纳所著的《债务与国家的崛起》这本书。19世纪世界历史上发生了一次巨变&#xff0c;即“大分流”。当时西方通过工业革命实现了科技和经济的飞速…

vue项目入门——index.html和App.vue

vue项目中的index.html文件 在Vue项目中&#xff0c;index.html文件通常作为项目的入口文件&#xff0c;它包含了Vue应用程序的基础结构和配置。 该文件的主要作用是引入Vue框架和其他必要的库&#xff0c;以及定义Vue应用程序的启动配置。 import Vue from vue import App …

以动态库链接库 .dll 探索结构体参数

Dev c C语言实现第一个 dll 动态链接库 创建与调用-CSDN博客 在写dll 插件中发现的函数指针用途和 typedef 的定义指针的用法-CSDN博客 两步之后&#xff0c;尝试加入结构体实现整体数据使用。 注意结构体 Ak 是相同的 代码如下 DLL文件有两个&#xff0c;dll.dll是上面提到…

数据可视化高级技术Echarts(快速上手柱状图进阶操作)

目录 1.Echarts的配置 2.程序的编码 3.柱状图的实现&#xff08;入门实现&#xff09; 相关属性介绍&#xff08;进阶&#xff09;&#xff1a; 1.标记最大值/最小值 2.标记平均值 3.柱的宽度 4. 横向柱状图 5.colorBy series系列&#xff08;需要构造多组数据才能实现…

撸代码时,有哪些习惯一定要坚持?

我从2011年开始做单片机开发&#xff0c;一直保持以下撸代码的习惯。 1.做好代码版本管理 有些人&#xff0c;喜欢一个程序干到底&#xff0c;直到实现全部的产品功能&#xff0c;我以前做51单片机的项目就是这样。 如果功能比较多的产品&#xff0c;我不建议这样做&#xff0…

【Linux】指令

1. 简单指令 whoami 显示当前登入账号名 ls /home 现在有的用户名 adduser 用户名 新加用户&#xff08;必须在root目录下&#xff09; passwd 用户名 给这个用户设置密码 userdel -r 用户名 删除这个用户 pwd 显示当前所处路径 stat 文件名 / 文件夹名 显示文件状…

鸿蒙HarmonyOS 与 Android 的NDK有什么不一样?

1. 序言 就像开发Android要用Android Studio一样&#xff0c;Android Studio&#xff08;简称AS&#xff09;其实是基于IDEAgradle插件android插件开发而来。 鸿蒙系统&#xff0c;你可以认为它和android有点像&#xff0c;但又是超越android的存在&#xff0c;除了手机&…

《C语言深度解剖》(2):详解C语言分支语句和循环

&#x1f921;博客主页&#xff1a;醉竺 &#x1f970;本文专栏&#xff1a;《C语言深度解剖》 &#x1f63b;欢迎关注&#xff1a;感谢大家的点赞评论关注&#xff0c;祝您学有所成&#xff01; ✨✨&#x1f49c;&#x1f49b;想要学习更多数据结构与算法点击专栏链接查看&am…

Java实现二叉树(上)

1.树型结构 1.1树型结构的概念 树是一种 非线性 的数据结构&#xff0c;它是由 n &#xff08; n>0 &#xff09;个有限结点组成一个具有层次关系的集合。 把它叫做树是因为它看 起来像一棵倒挂的树&#xff0c;也就是说它是根朝上&#xff0c;而叶朝下的 1.2树型结构的特点…

xshell7连接ubuntu18.04

&#x1f3a1;导航小助手&#x1f3a1; 1.查看ubuntu IP2.开启openssh-server3.静态IP设置4.Xshell连接 1.查看ubuntu IP 输入下面命令查看IP ifconfig -a可以看到网卡是ens33&#xff0c;IP为192.168.3.180。 2.开启openssh-server 1、执行下句&#xff0c;下载SSH服务 s…