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

编辑推荐精选

AEE

AEE

AI Excel全自动制表工具

AEE 在线 AI 全自动 Excel 编辑器,提供智能录入、自动公式、数据整理、图表生成等功能,高效处理 Excel 任务,提升办公效率。支持自动高亮数据、批量计算、不规则数据录入,适用于企业、教育、金融等多场景。

UI-TARS-desktop

UI-TARS-desktop

基于 UI-TARS 视觉语言模型的桌面应用,可通过自然语言控制计算机进行多模态操作。

UI-TARS-desktop 是一款功能强大的桌面应用,基于 UI-TARS(视觉语言模型)构建。它具备自然语言控制、截图与视觉识别、精确的鼠标键盘控制等功能,支持跨平台使用(Windows/MacOS),能提供实时反馈和状态显示,且数据完全本地处理,保障隐私安全。该应用集成了多种大语言模型和搜索方式,还可进行文件系统操作。适用于需要智能交互和自动化任务的场景,如信息检索、文件管理等。其提供了详细的文档,包括快速启动、部署、贡献指南和 SDK 使用说明等,方便开发者使用和扩展。

Wan2.1

Wan2.1

开源且先进的大规模视频生成模型项目

Wan2.1 是一个开源且先进的大规模视频生成模型项目,支持文本到图像、文本到视频、图像到视频等多种生成任务。它具备丰富的配置选项,可调整分辨率、扩散步数等参数,还能对提示词进行增强。使用了多种先进技术和工具,在视频和图像生成领域具有广泛应用前景,适合研究人员和开发者使用。

爱图表

爱图表

全流程 AI 驱动的数据可视化工具,助力用户轻松创作高颜值图表

爱图表(aitubiao.com)就是AI图表,是由镝数科技推出的一款创新型智能数据可视化平台,专注于为用户提供便捷的图表生成、数据分析和报告撰写服务。爱图表是中国首个在图表场景接入DeepSeek的产品。通过接入前沿的DeepSeek系列AI模型,爱图表结合强大的数据处理能力与智能化功能,致力于帮助职场人士高效处理和表达数据,提升工作效率和报告质量。

Qwen2.5-VL

Qwen2.5-VL

一款强大的视觉语言模型,支持图像和视频输入

Qwen2.5-VL 是一款强大的视觉语言模型,支持图像和视频输入,可用于多种场景,如商品特点总结、图像文字识别等。项目提供了 OpenAI API 服务、Web UI 示例等部署方式,还包含了视觉处理工具,有助于开发者快速集成和使用,提升工作效率。

HunyuanVideo

HunyuanVideo

HunyuanVideo 是一个可基于文本生成高质量图像和视频的项目。

HunyuanVideo 是一个专注于文本到图像及视频生成的项目。它具备强大的视频生成能力,支持多种分辨率和视频长度选择,能根据用户输入的文本生成逼真的图像和视频。使用先进的技术架构和算法,可灵活调整生成参数,满足不同场景的需求,是文本生成图像视频领域的优质工具。

WebUI for Browser Use

WebUI for Browser Use

一个基于 Gradio 构建的 WebUI,支持与浏览器智能体进行便捷交互。

WebUI for Browser Use 是一个强大的项目,它集成了多种大型语言模型,支持自定义浏览器使用,具备持久化浏览器会话等功能。用户可以通过简洁友好的界面轻松控制浏览器智能体完成各类任务,无论是数据提取、网页导航还是表单填写等操作都能高效实现,有利于提高工作效率和获取信息的便捷性。该项目适合开发者、研究人员以及需要自动化浏览器操作的人群使用,在 SEO 优化方面,其关键词涵盖浏览器使用、WebUI、大型语言模型集成等,有助于提高网页在搜索引擎中的曝光度。

xiaozhi-esp32

xiaozhi-esp32

基于 ESP32 的小智 AI 开发项目,支持多种网络连接与协议,实现语音交互等功能。

xiaozhi-esp32 是一个极具创新性的基于 ESP32 的开发项目,专注于人工智能语音交互领域。项目涵盖了丰富的功能,如网络连接、OTA 升级、设备激活等,同时支持多种语言。无论是开发爱好者还是专业开发者,都能借助该项目快速搭建起高效的 AI 语音交互系统,为智能设备开发提供强大助力。

olmocr

olmocr

一个用于 OCR 的项目,支持多种模型和服务器进行 PDF 到 Markdown 的转换,并提供测试和报告功能。

olmocr 是一个专注于光学字符识别(OCR)的 Python 项目,由 Allen Institute for Artificial Intelligence 开发。它支持多种模型和服务器,如 vllm、sglang、OpenAI 等,可将 PDF 文件的页面转换为 Markdown 格式。项目还提供了测试框架和 HTML 报告生成功能,方便用户对 OCR 结果进行评估和分析。适用于科研、文档处理等领域,有助于提高工作效率和准确性。

飞书多维表格

飞书多维表格

飞书多维表格 ×DeepSeek R1 满血版

飞书多维表格联合 DeepSeek R1 模型,提供 AI 自动化解决方案,支持批量写作、数据分析、跨模态处理等功能,适用于电商、短视频、影视创作等场景,提升企业生产力与创作效率。关键词:飞书多维表格、DeepSeek R1、AI 自动化、批量处理、企业协同工具。

下拉加载更多