SynthSeg

SynthSeg

通用深度学习脑部MRI分割工具 适用多种对比度和分辨率

SynthSeg是一种深度学习脑部MRI分割工具,可处理不同对比度和分辨率的扫描。无需重新训练即可适用于各年龄段和健康状况的人群,可处理预处理或未预处理的扫描,并能应对白质病变。SynthSeg 2.0版本增加了皮层分区、自动质量控制和颅内容积估计功能,提高了其在分析大规模异质临床脑MRI数据集中的实用性。

SynthSeg脑部扫描分割深度学习

SynthSeg

在本仓库中,我们介绍SynthSeg,这是第一个可以对任何对比度和分辨率的脑部扫描进行分割的深度学习工具。SynthSeg无需任何再训练即可直接使用,并且对以下因素具有鲁棒性:

  • 任何对比度
  • 任何分辨率,最高可达10mm切片间距
  • 广泛的人群:从年轻健康到老年和患病人群
  • 有预处理或无预处理的扫描:偏场校正、颅骨剥离、标准化等
  • 白质病变

生成示例

SynthSeg最初是为自动分割任何对比度和分辨率的脑部扫描而设计的。

SynthSeg:无需再训练即可分割任何对比度和分辨率的大脑MRI扫描
B. Billot, D.N. Greve, O. Puonti, A. Thielscher, K. Van Leemput, B. Fischl, A.V. Dalca, J.E. Iglesias
医学图像分析 (2023)
[ 文章 | arxiv | bibtex ]

随后,我们将其扩展到可以处理异构临床扫描,并执行皮质分区和自动质量控制。

用于大规模分析异构临床脑部MRI数据集的鲁棒机器学习分割
B. Billot, M. Colin, Y. Cheng, S.E. Arnold, S. Das, J.E. Iglesias
PNAS (2023)
[ 文章 | arxiv | bibtex ]

在这里,我们发布我们的模型,使用户能够在自己的数据上运行SynthSeg。我们强调,预测结果始终以1mm等方分辨率给出(无论输入分辨率如何)。代码可以在GPU上运行(每次扫描约15秒)或在CPU上运行(约1分钟)。


新特性和更新

2023年3月1日:SynthSeg和SynthSeg 2.0的论文发表了!:open_book: :open_book:
经过SynthSeg(医学图像分析)的长期审核过程,以及SynthSeg 2.0(PNAS)更快的审核过程,两篇论文几乎同时被接受!请参见上面的参考文献或引用部分。

2022年10月4日:SynthSeg现已支持Matlab! :star:
我们很高兴Matlab 2022b(及以后版本)现在在其医学图像工具箱中包含了SynthSeg。他们有一个文档示例说明如何使用它。但为了简化操作,我们编写了自己的Matlab包装器,您可以用一行代码调用它。只需下载这个zip文件,解压缩,打开Matlab,然后输入help SynthSeg获取使用说明。

2022年6月29日:SynthSeg 2.0发布! :v:
除了全脑分割外,它现在还可以进行皮质分区、自动QC和颅内体积(ICV)估计(见下图)。此外,大多数这些功能与SynthSeg 1.0兼容(见表格)。

新特性

版本表格

2022年3月1日:鲁棒版本 :hammer:
SynthSeg有时在信噪比低或组织对比度非常低的扫描上会失效。因此,我们开发了一个新模型以提高鲁棒性,称为"SynthSeg-robust"。当SynthSeg给出如下图所示的结果时,您可以使用这种模式:

鲁棒

2021年10月29日:SynthSeg现已在FreeSurfer的开发版本中提供! :tada:
请参见这里了解如何使用它。


一行命令试用!

安装所有Python包后(见下文),您可以简单地使用以下命令在自己的数据上测试SynthSeg:

python ./scripts/commands/SynthSeg_predict.py --i <输入> --o <输出> [--parc --robust --ct --vol <体积> --qc <质量控制> --post <后处理> --resample <重采样>]

其中:

  • <input> 是要分割的扫描或文件夹的路径。也可以是文本文件的路径,每行包含一个要分割的图像路径。
  • <output> 是保存输出分割结果的路径。必须与 <input> 类型相同(即文件路径、文件夹或文本文件,每行包含一个输出分割的路径)。
  • --parc(可选)除全脑分割外还执行皮层区域划分。
  • --robust(可选)使用变体以提高鲁棒性(例如在分析间距较大的临床数据时)。这可能比其他模型更慢。
  • --ct(可选)用于豪斯菲尔德单位的CT扫描。将强度限制在[0, 80]范围内。
  • <vol>(可选)保存所有扫描中所有分割区域体积(单位:mm³)的CSV文件路径(例如 /path/to/volumes.csv)。如果 <input> 是文本文件,则 <vol> 也必须是文本文件,每行对应一个受试者的CSV文件路径。
  • <qc>(可选)保存QC分数的CSV文件路径。格式要求与 <vol> 相同。
  • <post>(可选)保存后验概率软概率图的路径(格式要求与 <output> 相同)。
  • <resample>(可选)SynthSeg分割结果始终以1mm等方分辨率给出。因此,图像总是在内部重采样到这个分辨率(除非它们已经是1mm分辨率)。使用此标志保存重采样的图像(格式要求与 <output> 相同)。

还有其他可选标志:

  • --cpu:(可选)强制代码在CPU上运行,即使有可用的GPU。
  • --threads:(可选)Tensorflow使用的线程数(默认使用一个核心)。使用CPU版本时增加此值可减少运行时间。
  • --crop:(可选)在分割前将输入图像裁剪到给定形状。必须能被32整除。图像围绕中心裁剪,分割结果给出原始大小。可以给出单个整数(如 --crop 160)或多个整数(如 --crop 160 128 192,按RAS坐标排序)。默认处理整个图像。使用此标志可加快分析或适应GPU内存。
  • --fast:(可选)禁用某些操作以加快预测速度(快一倍,但略微不太准确)。使用 --robust 标志时不适用。
  • --v1:(可选)运行SynthSeg的第一个版本(SynthSeg 1.0,2022年6月29日更新)。

重要提示: SynthSeg始终给出1mm等方分辨率的结果,不受输入影响。但这可能导致某些查看器无法正确将分割结果叠加在相应图像上。在这种情况下,可以使用 --resample 标志获取与分割结果处于相同空间的重采样图像,以便在任何查看器中一起可视化。

完整的分割结构列表及其对应值可在labels table.txt中找到。该表格还详细说明了后验概率图的排序。

安装

  1. 克隆此仓库。

  2. 创建虚拟环境(例如使用pip或conda)并安装所有必需的包。 这些依赖于你的Python版本,这里我们列出了Python 3.6(requirements_3.6)和Python 3.8(见requirements_3.8)的要求。 选择权在你,但在每种情况下,请严格遵守确切的包版本。 如果你使用pip,安装依赖项的一种方法是运行setup.py(在激活的虚拟环境中):python setup.py install。否则,我们还提供了使用pip/conda为Python 3.6/3.8安装所需包的最小命令。

# Conda, Python 3.6:
conda create -n synthseg_36 python=3.6 tensorflow-gpu=2.0.0 keras=2.3.1 h5py==2.10.0 nibabel matplotlib -c anaconda -c conda-forge

# Conda, Python 3.8:
conda create -n synthseg_38 python=3.8 tensorflow-gpu=2.2.0 keras=2.3.1 nibabel matplotlib -c anaconda -c conda-forge

# Pip, Python 3.6:
pip install tensorflow-gpu==2.0.0 keras==2.3.1 nibabel==3.2.2 matplotlib==3.3.4

# Pip, Python 3.8:
pip install tensorflow-gpu==2.2.0 keras==2.3.1 protobuf==3.20.3 numpy==1.23.5 nibabel==5.0.1 matplotlib==3.6.2
  1. 访问此链接UCL dropbox,下载缺失的模型。然后将它们复制到models文件夹。

  2. 如果你希望在GPU上运行,还需要安装Cuda(Python 3.6用10.0,Python 3.8用10.1)和CUDNN(两者都用7.6.5)。请注意,如果你使用了conda,这些已经自动安装了。

就是这样!你现在可以使用SynthSeg了!🎉

它是如何工作的?

简而言之,我们使用基于贝叶斯分割前向模型的生成模型,即时采样合成图像来训练网络。关键是,我们采用了领域随机化策略,在每个小批次中从无信息均匀先验中完全随机抽取生成参数。通过向网络展示极其多变的输入数据,我们迫使它学习领域无关的特征。因此,SynthSeg能够直接对任何目标域的真实扫描进行分割,无需重新训练或微调。

下图首先说明了训练迭代的工作流程,然后概述了生成模型的不同步骤:

[图片:Overview]

最后,我们展示了合成图像的其他示例以及它们的目标分割叠加:

[图片:Training data]

如果您有兴趣了解更多关于SynthSeg的信息,可以阅读相关发表的文章(见下文),并观看这个演讲,该演讲在MIDL 2020上介绍了SynthSeg初步版本的相关文章(对MR对比度而非分辨率的鲁棒性)。

[图片:Talk SynthSeg]

训练您自己的模型

该存储库包含训练、验证和测试您自己的网络所需的所有代码和数据。重要的是,所提出的方法只需要一组解剖分割来进行训练(不需要图像),我们在data中包含了这些数据。虽然提供的函数有详细的文档说明,但我们强烈建议从以下教程开始:

  • 1-generation_visualisation:这个非常简单的脚本展示了用于训练SynthSeg的合成图像示例。

  • 2-generation_explained:第二个脚本描述了用于控制生成模型的所有参数。我们建议您仔细阅读本教程,因为在开始训练自己的模型之前,了解如何形成合成数据至关重要。

  • 3-training:这个脚本重新使用了上一个教程中解释的参数,并专注于学习/架构参数。这里的脚本正是我们用来训练SynthSeg的脚本!

  • 4-prediction:这个脚本展示了在网络训练完成后如何进行预测。

  • 5-generation_advanced:在这里,我们详细介绍了更高级的生成选项,适用于训练特定对比度和/或分辨率的SynthSeg版本(尽管这些类型的变体被证明不如在第3个教程中训练的SynthSeg模型表现好)。

  • 6-intensity_estimation:这个脚本展示了在训练特定对比度版本的SynthSeg时如何估计GMM的高斯先验。

  • 7-synthseg+:最后,我们展示了如何训练SynthSeg的鲁棒版本。

这些教程涵盖了大量材料,将使您能够训练自己的SynthSeg模型。此外,所有函数的文档字符串中提供了更详细的信息,所以不要犹豫查看这些内容!

内容

  • SynthSeg:这是包含生成模型和训练函数的主文件夹:

    • labels_to_image_model.py:包含MRI扫描的生成模型。

    • brain_generator.py:包含BrainGenerator类,它是labels_to_image_model的包装器。只需实例化该类的对象并调用generate_image()方法即可轻松生成新图像。

    • training.py:包含训练分割网络的代码(解释了所有训练参数)。该函数还展示了如何在训练设置中集成生成模型。

    • predict.py:预测和测试。

    • validate.py:包括验证代码(必须在真实图像上离线进行)。

  • models:在这里您可以找到SynthSeg的训练模型。

  • data:如果您想训练自己的SynthSeg模型,该文件夹包含一些大脑标签图示例。

  • script:包含教程以及从终端启动训练和测试的脚本。

  • ext:包括外部包,特别是lab2im包和neuron的修改版本。

引用/联系

此代码采用Apache 2.0许可。

  • 如果您使用皮质分区自动QC鲁棒版本,请引用以下论文:

用于异质临床脑MRI数据集大规模分析的鲁棒机器学习分割
B. Billot, M. Colin, Y. Cheng, S.E. Arnold, S. Das, J.E. Iglesias
PNAS (2023)
[ 文章 | arxiv | bibtex ]

  • 否则,请引用:

SynthSeg:无需重新训练即可对任何对比度和分辨率的脑部MRI扫描进行分割 B. Billot, D.N. Greve, O. Puonti, A. Thielscher, K. Van Leemput, B. Fischl, A.V. Dalca, J.E. Iglesias 医学图像分析 (2023) [ 文章 | arxiv | bibtex ]

如果您对使用此代码有任何疑问,或有任何改进建议,请提出问题或联系我们:bbillot@mit.edu

编辑推荐精选

Manus

Manus

全面超越基准的 AI Agent助手

Manus 是一款通用人工智能代理平台,能够将您的创意和想法迅速转化为实际成果。无论是定制旅行规划、深入的数据分析,还是教育支持与商业决策,Manus 都能高效整合信息,提供精准解决方案。它以直观的交互体验和领先的技术,为用户开启了一个智慧驱动、轻松高效的新时代,让每个灵感都能得到完美落地。

飞书知识问答

飞书知识问答

飞书官方推出的AI知识库 上传word pdf即可部署AI私有知识库

基于DeepSeek R1大模型构建的知识管理系统,支持PDF、Word、PPT等常见文档格式解析,实现云端与本地数据的双向同步。系统具备实时网络检索能力,可自动关联外部信息源,通过语义理解技术处理结构化与非结构化数据。免费版本提供基础知识库搭建功能,适用于企业文档管理和个人学习资料整理场景。

Trae

Trae

字节跳动发布的AI编程神器IDE

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

TraeAI IDE协作生产力转型热门AI工具
酷表ChatExcel

酷表ChatExcel

大模型驱动的Excel数据处理工具

基于大模型交互的表格处理系统,允许用户通过对话方式完成数据整理和可视化分析。系统采用机器学习算法解析用户指令,自动执行排序、公式计算和数据透视等操作,支持多种文件格式导入导出。数据处理响应速度保持在0.8秒以内,支持超过100万行数据的即时分析。

使用教程AI工具酷表ChatExcelAI智能客服AI营销产品
DeepEP

DeepEP

DeepSeek开源的专家并行通信优化框架

DeepEP是一个专为大规模分布式计算设计的通信库,重点解决专家并行模式中的通信瓶颈问题。其核心架构采用分层拓扑感知技术,能够自动识别节点间物理连接关系,优化数据传输路径。通过实现动态路由选择与负载均衡机制,系统在千卡级计算集群中维持稳定的低延迟特性,同时兼容主流深度学习框架的通信接口。

DeepSeek

DeepSeek

全球领先开源大模型,高效智能助手

DeepSeek是一家幻方量化创办的专注于通用人工智能的中国科技公司,主攻大模型研发与应用。DeepSeek-R1是开源的推理模型,擅长处理复杂任务且可免费商用。

KnowS

KnowS

AI医学搜索引擎 整合4000万+实时更新的全球医学文献

医学领域专用搜索引擎整合4000万+实时更新的全球医学文献,通过自主研发AI模型实现精准知识检索。系统每日更新指南、中英文文献及会议资料,搜索准确率较传统工具提升80%,同时将大模型幻觉率控制在8%以下。支持临床建议生成、文献深度解析、学术报告制作等全流程科研辅助,典型用户反馈显示每周可节省医疗工作者70%时间。

Windsurf Wave 3

Windsurf Wave 3

Windsurf Editor推出第三次重大更新Wave 3

新增模型上下文协议支持与智能编辑功能。本次更新包含五项核心改进:支持接入MCP协议扩展工具生态,Tab键智能跳转提升编码效率,Turbo模式实现自动化终端操作,图片拖拽功能优化多模态交互,以及面向付费用户的个性化图标定制。系统同步集成DeepSeek、Gemini等新模型,并通过信用点数机制实现差异化的资源调配。

AI IDE
腾讯元宝

腾讯元宝

腾讯自研的混元大模型AI助手

腾讯元宝是腾讯基于自研的混元大模型推出的一款多功能AI应用,旨在通过人工智能技术提升用户在写作、绘画、翻译、编程、搜索、阅读总结等多个领域的工作与生活效率。

AI 办公助手AI对话AI助手AI工具腾讯元宝智能体热门
Grok3

Grok3

埃隆·马斯克旗下的人工智能公司 xAI 推出的第三代大规模语言模型

Grok3 是由埃隆·马斯克旗下的人工智能公司 xAI 推出的第三代大规模语言模型,常被马斯克称为“地球上最聪明的 AI”。它不仅是在前代产品 Grok 1 和 Grok 2 基础上的一次飞跃,还在多个关键技术上实现了创新突破。

下拉加载更多