SAM-Med2D:打破自然图像与医学图像的领域鸿沟,医疗版 SAM 开源了!

2023-11-17

关注公众号,发现CV技术之美

本文转载自书生 OpenGVLab。

ab791ae62fabdfd98336e9a39d4e8290.png

由于医学图像和自然图像之间存在较大差异,以及缺少大规模医学图像基准数据集,这是导致AI在医学领域进展缓慢的原因之一。构建大规模基准数据集和可靠的基线模型,能够推动AI在医疗领域的快速发展,加速医疗向更通用的方向转变。欢迎感兴趣的读者加入群聊与我们讨论!(二维码见文末)

论文: 

https://arxiv.org/abs/2308.16184

开源代码(点击“阅读原文”即可直达): 

https://github.com/OpenGVLab/SAM-Med2D

Gradio demo: 

https://openxlab.org.cn/apps/detail/litianbin/SAM-Med2D

文章和代码公开3天内,获得多家媒体报道,在推特阅读量突破十万。

16abcdbdc1c814ce8c6d3115a93b414d.png

7b3f63bd1ddad222ce8551798cfb4583.png

14434ebf54f7026655f5adae2a51c7b4.png

a6d6d30481485b82370525e100350874.png

62ca8994e76da4b8b70aa3c4cdc79f41.png

e49b0a8a78f031221dc29f65b3d891dd.png

左右滑动查看媒体报道

自然图像VS医学图像

众所周知,ImageNet的出现极大推动了基于深度学习的人工智能的发展。它为计算机视觉领域提供了一个大规模的数据集和强大的基线模型,使得研究者们能够在自然图像分类、分割、检测等任务上取得了突破性的成果。Segment Anything Model (SAM)代表了自然图像分割领域最先进的研究进展。然而,直接将预训练的SAM应用于医学图像分割,效果并不理想。这种限制主要源于自然图像和医学图像之间存在显著的领域差异。SAM的训练数据(图1a.上)完全来自于高清自然图像,导致其缺乏医疗领域的特定知识。

医学图像和自然图像存在显著差异本质就是成像方式完全不同:自然图像是以自然光为光源,通过手机、相机等设备转换为RGB格式的图像,像素值范围也是0-255之间;医学图像是通过特定的协议和扫描仪收集的,其展现方式因其特定的临床目的而各异,包括电子、激光、X射线、超声波等,成像都不是RGB图,其像素值范围从几千到几十万不等(见图1a右侧柱状图)。

714310de10c9db3995ac86206cfea66c.jpeg图1a. 自然图像(上)与医学图像(下)对比

另外,由于标注成本高且标注质量参差不齐,导致医学图像在不同医院和临床研究中的质量存在很大差异。上述挑战导致医学图像和自然图像在数据量、数据质量上存在显著差异。图1b比较了公开的自然图像数据集和医学图像数据集的数据量规模差异。

b31ee779f3d067139f2778178bcc8ee6.jpeg

图1b. 医学图像和自然图像数据量规模差异

基于以上问题,医学领域缺乏大规模基准数据集和可靠的基线模型的支持。我们的目标是填补这一空白,推动AI在医疗领域的快速发展,加速医疗向更通用的方向转变。为了实现这一目标,我们研发了SAM-Med2D首先,团队收集了迄今为止最大最全的医学图像分割数据集,它由4.6M张图片和19.7M masks组成,涵盖了当前公开可用数据集中几乎所有对象类型,弥补了SAM缺乏医学领域知识的问题。在此数据基础上,作者团队全面微调了SAM:在同等分辨率时,FT-SAM在Bbox提示模式下实现了11.93%的提升;SAM-Med2D实现了17.67%的提升。在单点提示模式下,SAM-Med2D相较于SAM表现出了压倒性的优势 (18.94% vs. 70.01%)。在单点提示模式下,SAM-Med2D表现出了压倒性的优势 (18.94% vs. 70.01%)。

SAM-Med2D三大亮点

1.最大规模的医学图像分割数据集:作者团队收集并整理了一个庞大而全面的医学图像数据集,涵盖了多种临床分割任务和图像模态。这使得SAM-Med2D在训练过程中能够获得更准确和具有代表性的医学图像信息,弥补了 SAM 在医学领域数据不足的问题。

2.更全面的微调方案:相对于现有的医学SAM方法,作者对SAM的三个重要组成部分都进行了微调,使SAM-Med2D能够更好地适应医学图像的特殊特征和变化,提高分割结果的准确性和稳定性。图2对比了最近基于SAM的微调方法。

108cfa08b7828f6a0620b24a2350c00a.png

图2: SAM-Med2D是一种全面的微调方法,支持对医学图像进行多种提示来生成mask

3.优异的医学图像分割性能:对SAM-Med2D从不同维度进行了全面的性能评估。结果表明,SAM-Med2D在各种医学图像分割任务中表现出色,在同等分辨率时,FT-SAM在Bbox提示模式下实现了11.93%的提升,而SAM-Med2D实现了17.67%的提升。在单点提示模式下,SAM-Med2D表现出了压倒性的优势 (18.94% vs. 70.01%)。

迄今为止最大最全

的医学图像数据集

01

数据准备

大模型成功的经验告诉我们,数据量对于模型的学习至关重要。通过学习更多的数据,模型可以获得更加丰富的领域知识,并更好地适应不同的应用场景。尽管SAM已经在超过1B的masks上进行了训练,但其训练集与医学领域的数据相比存在较大的差距,这也是SAM在医学领域表现不理想的原因之一。

5836790589020541532fcb71c8d83b97.png

图3:本研究所使用的数据集概述。(a) 总共 31 个主要器官及其相应的解剖结构,* 表示数据集中存在病变标签。(b) 呈现了模态的分布及其在数据集中的相应比例 (以对数缩放)。(c) 按解剖结构分类的图像和masks的数量,以及包含数据集的总数

为此,作者团队收集整理了迄今为止最大的医学图像分割数据集,它由4.6M张图片和19.7M masks组成。图3(b)显示了该数据集10种不同的成像模式和对应的数据占比。根据解剖学结构和是否包含病灶将数据集分为5个大类,即Head and Neck、Thorax、Abdomen、Pelciv、Contains lesions,图3(c)显示了这些类别的图片和masks数量。我们从这些数据集中的271种标签中整理和汇总出31种主要的器官(图3 (a)),这涵盖了当前公开可用数据集中几乎所有对象类型,弥补了SAM缺乏医学领域知识的问题。此外,引入了9个MICCAI 2023数据集(包含约0.52M图片和1.31M masks)验证模型的泛化性。我们相信,通过更加全面、多样化的训练数据,SAM将更好地适应医学图像领域的复杂性和特殊性,为医疗健康领域的应用提供更加准确和可靠的技术支持。这也将为医学图像分割领域的研究和发展带来新的机遇和挑战。

b6e53f0b7a09de3537d287367d9253d2.png

图4: SAM-Med2D概览。我们冻结图像编码器,并将可学习的适配器层合并到每个 Transformer 块中,以获取医学领域的特定领域知识。我们使用Point、Bbox 和Mask信息微调提示编码器,同时通过交互式训练更新解码器的参数

02

从SAM到SAM-Med2D

在这项工作中,作者对SAM进行了微调,微调后的方法称为SAM-Med2D,它可以有效地扩展到医学图像领域。如图4所示,SAM-Med2D由三个主要组件组成:image encoder、prompt encoder和mask decoder。该框架允许在不同提示下为同一图像生成不同的mask。对于image encoder,在微调时冻结了原始图像编码器中的所有参数,并为每个Transformer块部署了一个Adapter层。对于prompt encoder,考虑三种提示模式进行微调 (Point、Bbox和Mask)。与MedSAM,MSA等基于SAM的微调方法相比保留了更完整的提示功能,增强了其在医学成像领域的适用性。对于mask decoder,没有对其结构做任何更改,在训练期间保持每一次迭代都更新其参数。为了使模型具有歧义感知能力,每个prompt会同时预测多个mask(默认为三个)。

与SAM和其他交互式分割方法相同,作者模拟交互式分割的方式对SAM-Med2D进行训练。每个批次的数据需要迭代9次,在第一次迭代时等概率选择一个前景点或Bbox作为稀疏提示,前景点从GT中随机样点,Bbox为GT的最大外接矩形框,对每个坐标中进行最大值为5个像素的偏移。需要注意的是,除第一次迭代时模型同时更新Adapter层、prompt encoder和mask decoder的参数外,后续的迭代仅更新mask decoder的参数。从第二次迭代开始,将上一次迭代生成的mask和GT之间的误差区域随机选择1,3,5或9个点作为后续的稀疏提示,并将上一次迭代生成的低分辨率特征图映射到[0,1]的范围内作为当前迭代的密集提示。同时,在最后一次迭代和任意一次中间迭代只输入密集提示以鼓励模型从所提供的Mask中受益。

03

评估SAM-Med2D

进行全面的性能评估能助力科研社区更深入地理解影响算法感知医疗对象能力的因素,进而改进方法并提升其在实际应用中的效能。然而,以往的评估工作受制于数据量有限以及缺乏通用医疗图像分割方法的瓶颈,导致评估几乎都局限在小规模数据集和有限的类别上,无法充分揭示算法的优势和适用范围。为填补这一研究空白,作者全方位、多维度地对SAM-Med2D进行了评估,为未来的研究者提供交互式分割方法的基准标准。

在模型方面,选择了SAM作为基础模型,并从其交互方式中选择了两种直观的提示模式(Bbox和Point)对SAM-Med2D进行评估。这样的选择是因为Bbox和Points是常用的交互方式,同时可以作为简单高效的标注手段。通过评估SAM-Med2D在这两种提示模式下的性能,我们可以深入研究它们在医学图像分割任务中的优势和不足。

在数据方面,作者评估了SAM-Med2D在MRI、CT、超声等10种不同模态医学图像上的表现。这样的综合评估将使研究者能够了解SAM-Med2D在特定模态下的优势和挑战,并揭示其在多模态图像中的潜在应用能力。然后,考虑到不同解剖学结构和器官具有各自独特的形态、特征和变化模式,作者对SAM-Med2D在4种解剖学结构和31种主要器官上的表现进行了评估。这样的评估有助于深入了解SAM-Med2D在不同场景下的性能差异,并能够有针对性地改进方法以应对特定结构和器官的挑战。最后,作者也高度重视SAM-Med2D的泛化能力,在9个MICCAI 2023数据集上进行了测试。这些数据集代表了来自不同来源、不同机构或不同设备采集的医学图像,具有多样性。通过在这些数据集上评估SAM-Med2D,能够验证其在泛化到新数据上的能力。

实验结果

01

定量评估

beff75f306b6bc2c6c2ca595253c6c97.png图5: SAM、FT-SAM (仅微调decoder)和我们的SAM-Med2D在测试集上的实验结果7f8feed3393d576648d4435336b8f9e3.png图6: (a) 从解剖学结构角度比较四种方法的分割性能。(b) 从成像模式角度比较四种方法的分割性能b7c94829299fc90abb17a4f20097a687.png图7: FT-SAM 和 SAM-Med2D 在 31 个器官中的分割性能比较ca1dd5aa20e63d37e61cfb55b23512f6.png图8: 在 9 个 MICCAI2023 数据集上进行泛化验证,其中“*”表示不加adapter层参数的 SAM-Med2D

02

定性评估

26d62f2ac1be7ac0d5a11e021dc2c852.png

图9: 定性比较SAM-Med2D和SAM。前三行描述了不同模态的分割结果,而后三行描述了不同解剖结构的分割结果

edcb2b076955a1508c5b946b4fb3b94a.png图10: 单个图像多目标分割结果融合, 仅可视化 1 Point提示的结果。右边为SAM的分割结果

总结

SAM-Med2D通过在大规模医学图像数据集上微调来适应各种医学图像场景。与预训练的SAM相比取得了令人满意的性能改进和泛化能力。在同等分辨率时,FT-SAM在Bbox提示模式下实现了11.93%的提升,而SAM-Med2D实现了17.67%的提升。在单点提示模式下,SAM-Med2D表现出了压倒性的优势 (18.94% vs. 70.01%)。

作者还对不同模型在解剖学结构,不同成像模式和主要器官维度进行了综合评估,SAM-Med2D在各方面优于预训练的SAM和FT-SAM。此外,在9个MICCAI 2023数据集的泛化实验证明了在大规模数据集上预训练的模型具有强大的领域可迁移性。尤其是使用点提示模式时,SAM-Med2D可以更快地生成所需的mask,甚至优于其他方法使用 Bbox 提示模式的结果。未来作者团队将继续扩大数据规模、增加提示策略使SAM-Med2D具备医疗领域的“everything”能力。同时,SAM-Med2D的代码和预训练模型将开放给社区使用,希望这项工作能让医学计算机视觉领域的研究人员受益。

欢迎医院、研究院、高校、公司等机构的合作,请邮件联系hejunjun@pjlab.org.cn

ae69cd830f7ea6a14fada7f0cf36a48b.jpeg

END

欢迎加入「医学影像交流群

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SAM-Med2D:打破自然图像与医学图像的领域鸿沟,医疗版 SAM 开源了! 的相关文章

随机推荐

  • 不小心删除了网络适配器中的无线网卡驱动?

    昨天电脑蓝屏了几次 查了下问题 有人说把win10的网卡重新安装下就好了 结果 我直接把网络适配器的无线网卡驱动给卸载了 就是这个样子 点击卸载后 网络适配器下面没有无线网卡的驱动 电脑也连不了网 还没有网线 驱动精灵就是垃圾 它没有适配我
  • 校招高频必背考点

    2 操作系统 2 1 基础 进程与线程的本质区别 以及各自的使用场景 进程是操作系统资源分配的基本单位 线程是操作系统调度的最小单位 一个进程可以中可以有多个线程 线程依赖于进程存在 进程状态 阻塞 就绪 运行 进程调度算法的特点以及使用场
  • 【分析笔记】全志 T507 PF4 引脚无法被正常设置为中断模式的问题分析

    相关信息 硬件平台 全志T507 系统版本 Android 10 Linux 4 9 170 问题描述 PF4 无法通过标准接口设置为中断模式 而 PF1 PF2 PF3 PF5 正常可用 分析过程 一开始以为是引脚被其它驱动占用引起 或者
  • vue路由配置

    import Vue from vue import Router from vue router Vue use Router Note 路由配置项 hidden true 当设置 true 的时候该路由不会再侧边栏出现 如401 log
  • flutter项目中 advance_image_picker 组件使用

    一 说明 Advance image picker 是flutter 插件 用于从Android 和 ios 图像库中选择多张图片 使用相机拍摄新照片 并对其进行编辑 下图为最终效果 这里有个bug 在连续多测按 旋转摄像头时 程序会出现卡
  • 关于TypeError:xxx() missing 1 required positional argument: ‘S‘问题处理意见

    关于TypeError xxx missing 1 required positional argument S 问题处理意见 关于调用python模块的方法总结 在调用自己保存的模块 py文件时 导入后就直接进行 文件名 函数进行调用 会
  • 查询手机所在地理位置的简单方法

    有时候坐在长途汽车或火车上 想知道现在到什么地方了 可以通过手机来简单定位 对于没有GPS功能的手机 要想知道当前所在地理位置 可以通过基站定位 具体有以下几种方法 1 直接查看基站编号 使用某些手机的工程模式 或者利用专门的软件 比如S6
  • Java中new Date().getTime()时间戳问题

    1 getTime 返回值 Java和JavaScript都支持时间类型Date 他们的getTime 方法返回的是毫秒数 默认返回的是13位数字 单位是毫秒 2 注意事项 Returns the number of millisecond
  • 无线 连接公司服务器,客户端无线连接服务器

    客户端无线连接服务器 内容精选 换一换 您可以在弹性负载均衡服务中创建一个负载均衡器 该负载均衡器会接收来自客户端的请求 并将请求转发到一个或多个可用区的后端服务器中进行处理 请求的流量分发与负载均衡器配置的分配策略类型相关 共享型和独享型
  • apache kafka_Apache Kafka简介

    apache kafka During the last years technologies for building real time data pipelines and event streaming apps have emer
  • 红队隧道应用篇之DNS协议传输(九)

    简介 DNS隧道是一种相对隐蔽的隧道 通过将其他协议封装到DNS协议中来进行传输通信 因为DNS协议是网络中的基础协议且必不可少 所以大部分防火墙和入侵检测设备是不会对DNS流量进行拦截 这就给DNS作为隐蔽通信提供了有力条件 从而可以利用
  • 程序员面试题精选100题(30)-赋值运算符重载函数[C/C++/C#]

    程序员面试题精选100题 30 赋值运算符重载函数 C C C 问题 给出如下CMyString的声明 要求为该类型添加赋值运算符函数 class CMyString public CMyString char pData NULL CMy
  • 蓝桥杯题库 历届试题部分(C++、Java)代码实现(46-60)

    文章目录 五 历届试题 PREV 46 填字母游戏 PREV 47 区间移位 PREV 48 数组操作 PREV 49 发现环 PREV 50 对局匹配 PREV 51 观光铁路 PREV 52 小数第n位 PREV 53 分考场 PREV
  • 使用 ChatGPT 总是出现「Something went wrong」解决方案

    1 前言 最近使用 ChatGPT 总是出现 Something went wrong If this issue persists please contact us through our help center at help ope
  • ARM汇编快速入门

    本文主要分享如何快速上手ARM汇编开发的经验 汇编开发中常见的Bug以及Debug方法 用的Convolution Dephtwise算子的汇编实现相对于C 版本的加速效果三方面内容 前言 神经网络模型能够在移动端实现快速推理离不开高性能算
  • c++STL标准库排序函数std::sort使用

    Qt系列文章目录 文章目录 Qt系列文章目录 前言 一 错误原因 二 修改后的代码 前言 C sort 排序函数 C STL 标准库中的 sort 函数 本质就是一个模板函数 正如表 1 中描述的 该函数专门用来对容器或普通数组中指定范围内
  • js json格式数组自定义key

    封装对象数组的key进行自定义的方法 changeKey arr key let newArr arr forEach item index gt let newObj for var i 0 i lt key length i newOb
  • python 学习笔记 opencv 安装

    OpenCV opencv 是一个跨平台的计算机视觉库 有英特尔公司发起并参与开发 在以下领域应用广泛 增强现实 人脸识别 手势识别 人机交互 动作识别 运动跟踪 物体识别 图像分区 机器人 Windows python下的安装 下载地址
  • VSCode下载和安装教程(超详细)以及解决VSCode下载速度特别慢的问题

    文章目录 1 引言 2 下载VSCode 3 解决VSCode下载速度特别慢 4 安装VSCode 1 引言 今天用WebStorm运行前端代码时 发现不太好打断点 于是 打算改用VSCode来运行前端代码 但前提是要安装VSCode 如下
  • SAM-Med2D:打破自然图像与医学图像的领域鸿沟,医疗版 SAM 开源了!

    关注公众号 发现CV技术之美 本文转载自书生 OpenGVLab 由于医学图像和自然图像之间存在较大差异 以及缺少大规模医学图像基准数据集 这是导致AI在医学领域进展缓慢的原因之一 构建大规模基准数据集和可靠的基线模型 能够推动AI在医疗领
Powered by Hwhale