将 Segment Anything 扩展到医学图像领域

文章目录

    • 前言
    • 技术交流
    • SAM 拆解分析
    • 从医学角度理解 SAM 的效用
    • MedSAM
    • 实验
    • 总结

前言

SAM 是一种在自然图像分割方面取得成功的模型,但在医学图像分割方面表现不佳。MedSAM 首次尝试将 SAM 的成功扩展到医学图像,并成为用于分割各种医学图像的通用工具。为了开发 MedSAM,首先需要一个大型医学图像数据集,其中包括来自 11 种不同模态的超过 20 万个 Mask。该数据集用于训练和微调 MedSAM 模型。最重要的是,提供了一种简单的微调方法,使 SAM 适应一般的医学图像分割。

通过对 21 项三维分割任务和 9 项二维分割任务进行综合实验,对 MedSAM 的性能进行了评估。结果显示,在三维和二维分段任务中,MedSAM 的表现优于默认的 SAM 模型。为了方便理解 MedSAM,下面先来看下 SAM 的流程。

技术交流

技术要学会分享、交流,不建议闭门造车。一个人走的很快、一堆人可以走的更远。

文章中的完整源码、资料、数据、技术交流提升, 均可加知识星球交流群获取,群友已超过2000人,添加时切记的备注方式为:来源+兴趣方向,方便找到志同道合的朋友。

方式①、添加微信号:mlc2060,备注:加群
方式②、微信搜索公众号:机器学习社区,后台回复:加群

SAM 拆解分析

基础模型有很强的泛化能力,这种能力通过提示工程(prompt engineering)实现,想要实现提示分割任务,需要解决三个问题:任务目标、模型结构和数据。

分割提示指的是完成图像分割需要的 prompt 或者提示语,最常见的 prompt 包括点、bbox(框)、掩模图和文本描述。任务要求收到任意提示符时均需要输出至少一个有效 mask,即使提示符存在歧义。比如衣服上的点可能是想分割衣服,也可能是想区分人体。这两者至少需要输出一个。

如下图所示,SAM 结构简单,包括一个图像编码器,一个 prompt 编码器和一个轻量级的解码器。

此外,一个大规模的数据集是必不可少的,现有的数据集无法胜任这个任务。故设计了一个数据引擎去制造大量的高质量数据来解决这个问题,通过数据引擎可以得到数据集 SA-1B,总共包含了 1100 万张高分辨率图片和 11 亿个 mask。

关于 Image encoder,输入图像输入前被预处理为 1024*1024,Image encoder 采用MAE VIT-H/16,是经典的视觉 Transformer 结构,最后输出(256,64,64)的图像 embedding。

关于 Prompt encoder,根据不同的 prompt 会有不同的编码方式,点和框的 embedding 通过位置编码获得,Mask 的 embedding 通过卷积操作获得,文本的 embedding 则是通过 Clip 的 encoder 获得。

关于 Mask decoder,首先做 prompt 的 self-attention, prompt 到图像 embedding 的 Cross-attention。Cross-attention 是指在有两个相同维度序列的情况下,而其中一个序列用作查询 Q 输入,而另一个序列用作键 K 和值 V 输入。将两个相同维度的嵌入序列不对称地组合在一起。然后,右侧 MLP 均为三层,输出维度与图像 embedding channel 相同的向量,左侧 MLP 为 2048 个神经元,主要作用为聚合全局特征。使用 MLP 更新 token,再做图像 embedding 到 prompt 的 Cross-attention。经过两轮 decode layer 之后,token 再次与图像 embedding 进行 Cross-attention,output token 作为可训练参数在 decoder 前加入到 prompt 中,分别通过两个 MLP,得到 mask 和 mask 的 IOU。

从医学角度理解 SAM 的效用

SAM 支持三种主要的分割模式:全自动分割模式、边界框模式和点模式,下图是腹部 CT 在不同 Prompt 下 SAM 的分割结果:

全自动分割模式根据图像强度将整个图像划分为六个区域。然而,由于两个主要原因,这种分割结果的实用性有限。一方面,分割结果没有语义标签。另一方面,在临床情景中,医生主要关注有意义的感兴趣区域,如肝脏、肾脏、脾脏和病变。基于边界框的分割模式仅需给出右肾的左上和右下点,就可以生成较好的结果。对于基于点的分割模式,我们首先在右肾中心给出一个前景点,但分割结果包括整个腹部组织。然后,我们在过度分割区域添加一个背景点。分割掩码收缩到肝脏和右肾。在肝脏上添加另一个背景点后,我们最终获得了预期的肾脏分割。

总之,当将 SAM 应用于医学图像分割时,全自动分割模式容易产生无用的区域划分,基于点的模式模糊不清且需要多次预测-校正迭代。相比之下,基于边界框的模式可以明确指定感兴趣区域,无需多次尝试和错误即可获得合理的分割结果。此外,常用的标注方法之一是在放射学中标注最长直径,如固态肿瘤的反应评估标准(RECIST)。基于 RECIST 标注,可以轻松获得目标的边界框提示。因此,我们认为在使用 SAM 进行医学图像分割时,基于边界框的分割模式比全自动分割和基于点的模式具有更广泛的实用价值。

MedSAM

MedSAM 的目标是创建一种用于细分各种医疗图像的通用工具。为了使 SAM 适应医学图像分割,需要选择适当的用户 Prompt 和网络组件进行微调。SAM 的网络架构包含三个主要组件:图像编码器、提示编码器和掩码解码器。

MedSAM 选择微调掩码解码器组件。图像编码器基于 VIT,它在 SAM 中具有最大的计算开销。为了最大限度地降低计算成本,冻结了图像编码器。提示编码器对边界框的位置信息进行编码,可以从 SAM 中预先训练的边界框编码器中重复使用,因此也会冻结该组件。其余需要微调的部分是掩码解码器。

此外,预先计算了所有训练图像的图像嵌入,以避免重复计算每个提示的图像嵌入,这显著提高了训练效率。掩码解码器只需要生成一个掩码而不是三个掩码,因为在大多数情况下,边界框提示符可以清楚地指定预期的分割目标。

实验

整理了一个包含 33 个分割任务的大型多样化数据集,包括各种分割目标,例如脑心室、脑瘤、小脑、胆囊、心脏左心室、肝脏、胰腺、前列腺、腹部肿瘤、COVID-19 感染、头颈部肿瘤、胸腔积液、胃、乳腺肿瘤、血管、心脏和肺部、息肉、视网膜图像中的血管和图像中的结肠腺分割。

医学图像的强度值范围很广,这会使训练变得不稳定。为了解决这个问题,将所有图像标准化到相同的强度范围。对于 CT 图像,他们将强度值限制在 [-500,1000] 的范围,因为该范围涵盖了大多数组织。对于其他图像,他们将强度值削减到 0.95 到 99. 5百分位之间。然后,他们将所有强度值标准化到 [0,255] 范围,并将图像大小调整为 256 × 256 × 3 的统一大小。总而言之,整理了一个庞大而多样的数据集并对图像进行了预处理,以确保MedSAM 模型的稳定训练。

下表是在 3D 的不同模态数据上,MedSAM 和 SAM 的对比结果:

下表是在 2D 的不同模态数据上,MedSAM 和 SAM 的对比结果:

下图分别在 3D 和 2D 数据上做 MedSAM 和 SAM 的分割结果可视化,在同一个 Prompt 下,MedSAM 效果要好很多。

总结

MedSAM 支持用户在自定义数据集上微调 SAM,提供带有小型数据集(包括 2D 和 3D)的分步教程,链接在:https://drive.google.com/file/d/1EvVBTSa9L7pDTmUOp-MHXxGD1lrU9Txk/view?usp=share_link

参考

  • https://arxiv.org/pdf/2304.12306.pdf

  • https://github.com/bowang-lab/MedSAM

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

一文读懂 DNS 解析

导读 文章为“一文读懂域名与网站系列”第二篇,上篇文章主要介绍了域名的注册、建站和管理,通过本文你可以了解以下几个问题: 域名的结构、常用解析记录的类型 DNS 解析的过程 DNS 解析拓展知识 众所周知,互联网中的地址其实是…

Invicti v23.5 for Windows 发布 - 企业应用安全测试

Invicti v23.5 for Windows - 企业应用安全测试 Invicti Standard 11 May 2023 v23.5.0.40516 请访问原文链接:https://sysin.org/blog/invicti/,查看最新版。原创作品,转载请保留出处。 作者主页:sysin.org Invicti 是一种自动…

ESP32在linux下烧录,提示权限有问题,解决方法

执行idf.py -p /dev/ttyACM0 flash下载时,提示这个错误 serial.serialutil.SerialException: [Errno 13] could not open port /dev/ttyACM0: [Errno 13] Permission denied: /dev/ttyACM0 解决方法: 1检查串行端口 /dev/ttyUSB0 是否已被其他程序占用…

系统分析师之项目管理(十七)

一、范围管理 范围管理:确定项目的边界,即哪些工作是项目应该做的,哪些工作不应该包括在项目中。 二、时间管理 时间管理:也叫进度管理,就是用科学的方法,确定目标进度,编制进度计划和资源供应计…

SpringBoot整合Swagger

Swagger的作用&#xff1a;生成前后的接口文档&#xff1a; 了解Swagger的概念及作用 掌握在项目中集成Swagger自动生成API文档 一、SpringBoot集成Swagger 1.依赖&#xff1a; <!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 --><depe…

【A、B、C、D、E类IP地址划分依据,你都会吗?】

IP 地址的格式&#xff1a;IP 地址 网络地址 主机地址 如果 IP 进行了子网划分&#xff1a; 则IP地址网络地址子网地址主机地址 网络地址是互联网上的节点在网络中具有的逻辑地址。MAC 地址&#xff0c;处于数据链 路层&#xff0c;IP 地址处于网络层&#xff0c;端口号处…

人工智能基础部分15-自然语言处理中的数据处理上采样、下采样、负采样是什么?

大家好&#xff0c;我是微学AI&#xff0c;今天给大家介绍一下人工智能基础部分15-自然语言处理中的数据处理上采样、下采样、负采样是什么&#xff1f;在自然语言处理中&#xff0c;上采样、下采样、负采样都是用于处理数据不平衡问题的技术&#xff0c;目的是为了优化模型的训…

C# 对PdfiumViewer工具栏进行自定义,实现放大缩小,首页, 尾页,上一页等功能。

文章目录 前言PdfiumViewer工具栏扩展1 创建winform工程&#xff0c;UI界面2 打印预览3 放大功能4 缩小功能5 按比例缩放6 全屏7 首页和尾页8 上一页和下一页9 页码输入框10 显示当前预览的页码 小结 前言 关于PdfiumViewer的介绍 C# 使用PdfiumViewer实现对PDF文档打印预览&a…

路径规划算法:基于麻雀优化的路径规划算法- 附代码

路径规划算法&#xff1a;基于麻雀优化的路径规划算法- 附代码 文章目录 路径规划算法&#xff1a;基于麻雀优化的路径规划算法- 附代码1.算法原理1.1 环境设定1.2 约束条件1.3 适应度函数 2.算法结果3.MATLAB代码4.参考文献 摘要&#xff1a;本文主要介绍利用智能优化算法麻雀…

Qt使用星空图作为窗口背景,点击键盘的WASD控制小飞机在上面移动。

事件函数的使用依托于Qt的事件机制&#xff0c;一个来自于外部事件的传递机制模型如下所示 信号槽虽然好用&#xff0c;但是无法包含所有的情况&#xff0c;事件函数可以起到对信号槽无法覆盖的一些时机进行补充&#xff0c;事件函数的使用无需连接。 常用的事件函数如下所示。…

【Mysql实战】使用存储过程和计算同比环比

背景 同环比&#xff0c;是基本的数据分析方法。在各类调研表中屡见不鲜&#xff0c;如果人工向前追溯统计数据&#xff0c;可想而知工作量是非常大的。 标题复制10行&#xff0c;并且每行大于10个字符【源码解析】SpringBoot接口参数【Mysql实战】使用存储过程和计算同比环比…

vite跨域问题,你可能需要看这篇文章

最近在学习项目的时候&#xff0c;使用了vite工具进行构建&#xff0c;然后出现了跨域的问题&#xff0c;中间的曲折不过多叙述&#xff0c;直接进入正题。 前端成功启动后的界面&#xff1a; 然后在后端进行的Controller上使用了如下的配置 然后浏览器就会出现跨域的问题 为什…

【论文复现】基于区块链的分布式光伏就地消纳交易模式研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

UE4及Airsim安装时遇到的问题及解决办法

UE4及Airsim安装时遇到的问题及解决办法 目录 UE4及Airsim安装时遇到的问题及解决办法前言UE4下载慢解决方法 Airsim编译过程中提示&#xff1a;无法打开包括文件: “Eigen/Dense”: No such file or directory [D:\software\Visual_studio2022\2022Community\AirSim\Air解决办…

别不信:这些细节关乎你的物联网设备的命运!

《高并发系统实战派》-- 值得拥有 一、设备接入层网络协议的意义 随着物联网的发展&#xff0c;越来越多的设备需要接入云平台进行远程监控和管理。设备接入层网络协议起到了承担设备接入网络的功能&#xff0c;为物联网平台提供了数据交互的基础。设备接入层网络协议对于物联…

【云原生概念和技术】1.2 云原生技术概括(上)

如果想了解或者学习云原生的友友们&#xff0c;欢迎订阅哦&#xff5e;&#x1f917;&#xff0c;目前一周三更&#xff0c;努力码字中&#x1f9d1;‍&#x1f4bb;…目前第一章是一些介绍和概念性的知识&#xff0c;可以先在脑海里有一个知识的轮廓&#xff0c;从第二章开始就…

AUTOSAR入门

简介 AUTOSAR&#xff08;AUTomotive Open System ARchitecture&#xff09;是一种汽车软件架构标准&#xff0c;由德国大陆、博世、宝马等汽车及零部件制造商共同发起&#xff0c;拥有广泛的行业参与。其目标是为了解决汽车电子和软件系统日益复杂的问题&#xff0c;提高可重…

打工人使用ChatGPT的一天!

众所周知&#xff0c;ChatGPT 自去年OpenAI 推出以来&#xff0c;这款 AI 聊天机器人可以说迅速成为了 AI 界的「当红炸子鸡」 作为一名资深的打工人&#x1f477;&#x1f3fb;‍♂️&#xff0c;我们应该怎样利用ChatGPT提高工作效率呢&#xff1f;今天给大家介绍下打工人使…

关于Kerberos认证的一些攻击手法学习总结

Kerberos认证流程 前言 本文主要分享最近学习的关于域内Kerberos认证的一些攻击手法&#xff0c;以自我的理解为主&#xff0c;从原理理解切入到基本工具利用来阐述&#xff0c;个人的理解分析较为啰嗦&#xff0c;嫌太兀长的可以跳着看就好&#xff0c;还请各位谅解。如有错误…

第三十二章 React路由组件的简单使用

1、NavLink的使用 一个特殊版本的 Link&#xff0c;当它与当前 URL 匹配时&#xff0c;为其渲染元素添加样式属性 <NavLink className"list-group-item" to"/home">Home</NavLink> <NavLink className"list-group-item" to&quo…