文章目录
- 前言
- 1. Abstraction & Introduction
- 1.1. Abstraction
- 1.2. Introduction
- 1.2.1. What is SAM?
- 1.2.2. How to segment medical images with SAM?
- 2. Methodology
- 2.1. SAM is used in the process of segmentation of medical images
- 2.1.1. Semi-automated annotation
- 2.1.2. SAM assisting other segmentation models
- 2.1.3. New medical image foundation segmentation models
- 2.2. Experiments
- 2.2.1. Settings
- 2.2.2. Prompt Point Generation Scheme
- 总结
前言
本文主要介绍了 Segment Anything Model 在自然图像分割领域取得显著成就后,较早的将 SAM 在医学图像领域做评测的工作。
原论文链接:Segment Anything Model for Medical Image Analysis: an Experimental Study
1. Abstraction & Introduction
1.1. Abstraction
Segment Anything Model (SAM)
是一个在超过 10 亿个注释(主要是自然图像)上训练的基础模型,旨在以交互方式分割用户定义的感兴趣对象。尽管该模型在自然图像上的表现令人印象深刻,但目前尚不清楚该模型在转向医学图像领域时会受到怎样的影响。
本文对 SAM
分割医学图像的能力进行了广泛的评估,评估对象包括来自不同模式和解剖学的 11 个医学影像数据集。研究表明,SAM
的性能因任务和数据集而异,某些数据集的性能令人印象深刻,但其他数据集的性能则差至中等。
1.2. Introduction
为新的医学成像数据和任务开发和训练分割模型实际上具有挑战性,这是因为收集和整理医学图像既昂贵又耗时,而且还需要经验丰富的医生为图像提供仔细的掩膜注释。基础模型和零点学习可以通过使用在大量数据上训练的神经网络来显著减少这些困难,而无需使用传统的监督训练标签。
1.2.1. What is SAM?
Segment Anything Model
是一种分割模型,其目的是在给出提示时分割用户定义的感兴趣对象。提示的形式可以是一个点、一组点(包括整个掩膜)、一个边界框或文本。即使在提示不明确的情况下,也要求模型返回有效的分割掩膜。
有关 Segment Anything Model 的介绍可以参考我的另一篇 blog:SAM【1】:Segment Anything
1.2.2. How to segment medical images with SAM?
从技术上讲,SAM
可以在没有提示的情况下运行,但预计它在医学成像中不会有用。这是因为医学图像通常具有图像中许多感兴趣的特定物体,并且需要对模型进行训练才能识别这些物体。
2. Methodology
2.1. SAM is used in the process of segmentation of medical images
2.1.1. Semi-automated annotation
人工标注医学图像是该领域开发分割模型的主要挑战之一,因为这通常需要医生花费宝贵的时间。在这种情况下,SAM
可作为一种工具用于加快标注速度。
在最简单的情况下,人类用户为 SAM
提供提示,SAM
会生成一个掩膜供用户批准或修改;另一种方法是,SAM
在整个图像中以网格形式给出提示,并为多个对象生成遮罩,然后由用户命名、选择或修改。
2.1.2. SAM assisting other segmentation models
SAM
与另一种算法一起自动分割图像,以弥补 SAM
无法理解分割物体的语义信息的不足。例如,SAM
根据分布在图像上的点提示,可以生成多个对象掩码,然后由一个单独的分类模型将其归类为特定对象。同样,独立的检测模型可以生成图像的对象边界框,作为 SAM
生成精确分割掩码的提示。
此外,在训练语义分割模型的过程中,可以将 SAM
与语义分割模型循环使用。例如,在训练过程中,分割模型在未标记图像上生成的掩码可用作 SAM
的提示,以便为这些图像生成更精确的掩码,这些掩码可用作正在训练的模型的迭代改进监督训练示例。
2.1.3. New medical image foundation segmentation models
新的医学图像基础分割模型的开发过程可以由 SAM
的开发过程来指导;或者,在各种医学影像领域的医学图像和掩膜上对 SAM
进行微调,而不是从头开始训练,因为这可能需要更少的图像。
2.2. Experiments
2.2.1. Settings
评估是通过为每个对象创建一个或多个提示并评估 SAM
生成的掩码相对于给定数据集和任务的真实掩码注释的准确性来完成的。同时,本文始终使用SAM为给定提示生成的置信度最高的掩码。
选择 mIoU
作为评估指标。然而,经验研究表明,SAM
的性能在同一图像的不同类别中会有很大差异。因此,本文将 N
个类别的多类预测问题转换为 N
个二元分类问题,因此使用 IoU
作为最终评价指标就足够了。
2.2.2. Prompt Point Generation Scheme
本文使用了一种通用的、直观的策略来模拟现实点提示的生成,该策略反映了用户如何以交互方式生成提示,实现的细节如下图所示:
生成逻辑:
- 主要模拟了人在选点时候的思维:在选点的时候,用户通常会从明显最错误或者明显最正确的地方的中心选点,理论上这样可以尽可能地涵盖用户需要的部分
- 将第一个提示点
p
1
p1
p1 初始化为掩膜前景中距背景最远的点
- 即第一个提示点 p 1 p1 p1 是一个 positive prompt
- 需要注意的是,
SAM
需要一个 positive prompt 以确定分割的对象,所以传入SAM
的第一个 point prompt 必须为 positive prompt
- 由公式 P = a r g m a x ( i , j ) ( d [ ( i , j ) , ( k , l ) ] ) \mathcal{P} = argmax_{(i, j)} (d[(i, j), (k, l)]) P=argmax(i,j)(d[(i,j),(k,l)]) 得到一组符合上述条件的点
- 从上述符合条件的点集中选择随机选择一个符合条件的点,作为第一个输入
- 将 point prompt 的坐标输入
SAM
得到预测分数最高的一个 mask Y 1 Y_1 Y1 - 获得预测错误的区域:
E
1
=
Y
1
∪
M
−
Y
1
∩
M
E_1 = Y_1 \cup M - Y_1 \cap M
E1=Y1∪M−Y1∩M
- Y 1 ∪ M Y_1 \cup M Y1∪M:预测的 mask 在原掩膜中覆盖的面积与前景点集的并集
- Y 1 ∩ M Y_1 \cap M Y1∩M:预测的 mask 在原掩膜中覆盖的面积与前景点集的交集
- E 1 E_1 E1:预测的 mask 和前景点集中没有被正确预测的部分,即预测错误区域
- 随后的 point prompt 是距离迭代更新误差区域
E
n
E_n
En 边界最远的点
SAM
一次性只能接受一个 point prompt,并返回一个预测 mask,即多个 point prompt 是在每次SAM
输出的预测 mask 的基础上迭代输入的过程- 每次迭代得到一个误差区域 E n E_n En 边界最远的点集
- 从点集中随机选取一个点作为输入
- 获得
SAM
的预测输出 - 更新预测误差区域
- 得到最后的预测结果
总结
本文主要是在 SAM
提出的基础上,对 SAM
能否在医学图像分割中应用做了一次评测,具体的数据集和结果可以参考原论文中的结果图。
这篇笔记侧重对 SAM
之后在医学图像分割中的应用以及微调的学习与理解,同时分析了本文提出的具有较高效率、比较模拟用户选点习惯的 point prompt 生成算法做了讨论与记录。
但同时,本文并没有研究 3D 的数据集,但 3D 数据在医学图像领域中十分常见,这也将会是之后研究的一个重点方向。