Du Y, Bai F, Huang T, et al. SegVol: Universal and Interactive Volumetric Medical Image Segmentation[J]. arXiv preprint arXiv:2311.13385, 2023.[代码开源]
【论文概述】
本文思路借鉴于自然图像分割领域的SAM,介绍了一种名为SegVol的先进医学图像分割模型,旨在构建一种图像分割基础模型,这是一个面向体积医学图像分割的通用和交互式模型。SegVol的设计目的是通过处理各种解剖类别来提高医学图像分割的准确性和效率。该模型通过在9万个未标记的计算机断层扫描(CT)体积和6千个标记的CT体积上进行训练,能够支持超过200个解剖类别的分割,模型利用语义和空间prompts来实现。SegVol通过使用轻量级架构实现高效率,采用**“缩小-放大”机制减少计算成本**,同时能保持精确的分割。通过一系列实验,SegVol在多个分割基准测试中展现出卓越性能,尤其在复杂病变数据集上的表现显著超过现有先进模型如nnU-Net。
【一.Introduction总结】
这篇论文的Introduction写得很好,提供了对SegVol模型背景、动机、特点和性能的全面概览,这里特别总结如下:
【二.数据处理】
数据预处理
本文收集了25个开源数据集,首先基于每个Voxels的平均体素值计算一个阈值。高于此阈值的体素被视为前景。计算前景体素的99.95百分位和0.05百分位,并将其作为剪切原始体素的上下界,进一步使用均值和标准偏差对前景体素进行归一化。
伪掩模生成和去噪
大多数数据集仅具有少数分割目标的注释,例如几个器官。因此,深度模型可能会学习数据集和分割目标之间的虚假相关性,并在推理阶段产生较差的结果。论文使用经典FH算法先产生伪mask,但由于FH产生的伪mask可能含有噪声或者错误,本文采取以下策略进一步处理:1)在应用时,伪掩码被替换为ground-truth掩码。2)过滤掉小于整个体积的1‰的微小结构。3)对每个mask进行膨胀和腐蚀操作。
论文中用于预处理的FH分割算法,这里补充概述一下:“FH algorithm”指的是Felzenszwalb和Huttenlocher提出的图像分割算法。这种算法是一种用于分割数字图像的高效且有效的方法。其核心思想是将图像视为一个图(graph),其中像素代表节点,而节点之间的边代表像素之间的相似度。算法的目的是将图像分割成多个区域,这些区域内部的像素在某种意义上是相似的,而不同区域的像素则具有较大差异。
FH算法的主要特点包括:
1.基于图的表示:算法将图像表示为图,其中图中的每个节点对应一个像素,节点之间的边表示像素间的相似性。
2.分段准则:算法使用特定的准则来决定是否将图中的两个相邻节点(即两个像素)划分到同一个分割区域。这通常涉及比较节点间的相似性(如颜色、亮度或纹理)和预设的阈值。
3.效率:该算法以其计算效率而闻名,能够快速处理大型图像,使其适合于各种应用。
4.灵活性和广泛适用性:尽管该算法最初是为一般图像分割设计的,但它可以通过调整参数适应不同类型的图像和特定的分割需求。
在医学图像处理领域,这种类型的算法可能被用于生成伪标签或辅助标记,从而帮助训练更复杂的模型(如SegVol),尤其是在标记数据稀缺的情况下。通过使用这些伪标签,可以增强模型对未标记数据的理解,从而提高其在实际医学应用中的性能和准确性。
【三.模型结构】
模型结构图:
a. SegVol的主要结构包括图像编码器、文本编码器、提示编码器和mask解码器。除了文本编码器外,所有网络都是可学习的。图像编码器提取体积输入的图像嵌入。图像嵌入与提示嵌入一起输入到解码器中,以预测分割mask
具体组成的各部分概述如下:
使用VIT,以MAE方式先在96k CTs上自监督训练,然后在6k CT,带有150k标记mask的数据上监督训练。(p.s 这一步就耗费很大了)
Text prompt encoder
直接使用CLIP模型对输入的prompts编码,给定一个单词或短语作为提示,使用模板s ='A computerized tomography of a [text prompt]'撰写prompts。然后将 s s s标记化为 t t t。文本编码器接受 t t t作为输入并输出文本嵌入。(p.s直接上多模态模型)
Spatial prompt encoder
借鉴SAM,使用了point prompts,box prompts,分别编码为embedding,然后和上一步的文本prompts embeddings 拼接: z prompt? = F P E ( p , b , s , θ P E ) = [ z point? , z box? , z text? ] . \boldsymbol{z}_{\text {prompt }}=\mathcal{F}_{\mathrm{PE}}\left(\boldsymbol{p}, \boldsymbol{b}, \boldsymbol{s}, \boldsymbol{\theta}_{\mathrm{PE}}\right)=\left[\boldsymbol{z}_{\text {point }}, \boldsymbol{z}_{\text {box }}, \boldsymbol{z}_{\text {text }}\right] . zprompt??=FPE?(p,b,s,θPE?)=[zpoint??,zbox??,ztext??].
Mask decoder
解码器设计稍微比常规的多了一些:使用自注意力和交叉注意力在两个方向上融合图像嵌入和提示嵌入,然后采用转置卷积和插值操作来生成mask。由于文本嵌入是实现通用分割的关键,并且学习文本与体积区域之间的关联也更为困难,通过在联合提示嵌入 z prompt? \boldsymbol{z}_{\text {prompt }} zprompt??旁引入一个平行的文本输入 z text? \boldsymbol{z}_{\text {text }} ztext??来增强文本信息。进一步在mask解码器中计算转置卷积输出的上采样嵌入与文本嵌入之间的相似度矩阵。在插值之前,将相似度矩阵与mask预测的逐元素乘法应用于模型,之后模型输出mask。
【四.训练方法】
Prompt generation
模型支持point、box、text prompts及他们的混合prompts。
损失函数
binary cross-entropy (BCE) loss 和 Dice loss
【五.Zoom-out-zoom-in Mechanism】
这是本文的主要创新点之一,这里稍微详细一点记录一下
设计动机
zoom-out-zoom-in机制的设计动机源于处理体积医学图像分割时面临的几个关键挑战:
基于这些挑战,Zoom-out-zoom-in机制被设计出来,其目标是:
因此,Zoom-out-zoom-in机制是对现有体积医学图像分割方法的一种重要改进,它使得处理大规模医学图像数据集变得既高效又准确。
Multi-view training
为了适应不同大小的体数据,并使放大缩小推理,构造了两种训练数据。一种是对大尺寸CT进行缩放以适应模型的输入尺寸,并获得缩小视图的训练数据;另一种方法是将原始的大尺寸CT裁剪成模型输入尺寸的立方体。通过这种方式,获得了放大视图的训练数据。该过程如图C所示。
Zoom-out-zoom-in Inference
d. 缩小-放大推理:SegVol首先进行全局推理,然后对提取的感兴趣区域(ROI)进行局部推理,以优化结果。
步骤总结如下:
Zoom-out和全局推理:
定位感兴趣区域(ROI)并Zoom-in:
应用滑动窗口进行局部推理:
生成局部框提示:
填充并输出最终结果:
总体来说,这一机制通过首先进行快速的全局分析,然后对关键区域进行更详细的局部分析,有效地平衡了处理速度和分割精度。
【六.数据集】
这里就贴图了,不做太多解释。从医学开源数据集中收集了25个CT图像分割数据集,形成了一个综合数据集,涵盖了CT图像分割中的各种热点问题。收集的综合数据集包括四个主要人体区域:头颈部、胸部、腹部和骨盆,包含47个重要区域中的200多个器官、组织和病变类型。共有5772个CT参与了该综合数据集的训练和测试,总共有149199个带有语义的体积mask标签。第二个图展示了来自四个主要人体区域的综合数据集样本,以2D切片形式呈现。为了增强SegVol的空间分割能力,执行了FH算法以生成510k个伪体积mask标签,用于填补这些实例中未标注的区域。此外,为了构建通用的体积医学图像特征提取器,收集了90k个未标注的开源CT进行预训练。这些数据和标注构成了SegVol的基础。
联合数据集的概述和示例。A.联合数据集概述。联合数据集包括47个重要区域,每个区域包含该空间区域内的一个或多个重要解剖结构。B.关节数据集的主要类别:其掩码标签数量排名前30位,以及人体四个主要部位的掩码标签计数在关节数据集中所占的比例。C.从关节数据集中采样的15个不同类别的器官、组织和病变的示例,以切片视图呈现。
【七.性能】
box prompts比point更加有效,组合的比单一的有效,增加Zoom操作涨点
多模态大模型的共性,数据量增长,性能也在持续增长