TotalSegmentator

TotalSegmentator

全身器官自动分割工具适用于CT和MR影像

TotalSegmentator是一款自动分割CT和MR图像中主要解剖结构的开源工具。基于大规模数据集训练,可在不同设备和协议的医学影像上实现稳健分割,支持117个CT类别和56个MR类别。工具提供多种子任务,如肺血管、体表和脑出血等特定器官分割。支持命令行和Python API调用,可在CPU或GPU上运行,并提供Docker容器部署。

TotalSegmentatorCT图像分割MR图像分割深度学习医学影像Github开源项目

TotalSegmentator

TotalSegmentator是一种可以在任何CT或MR图像中分割大多数主要解剖结构的工具。它经过了广泛的不同CT和MR图像(不同的扫描仪、机构、协议等)的训练,因此应该能够很好地适用于大多数图像。大部分训练数据集可以在这里下载:CT数据集(1228名受试者)和MR数据集(298名受试者)。您也可以在totalsegmentator.com在线试用该工具。

公告:我们最近增加了对MR图像的支持。通过使用任务-ta total_mr来尝试,或在我们的论文中查看更多详细信息。

CT主要类别: 替代文本

MR主要类别: 替代文本

点击这里查看所有可用结构。

巴塞尔大学医院研究与分析部门创建。 如果您使用它,请引用我们的Radiology AI论文免费预印本)。如果您将其用于MR图像,请引用TotalSegmentator MRI论文。由于TotalSegmentator在很大程度上基于nnUNet,请同时引用它。

安装

TotalSegmentator可在Ubuntu、Mac和Windows上运行,支持CPU和GPU。

安装依赖项:

可选:

  • 如果使用--preview选项,您必须安装xvfb(apt-get install xvfb)和fury(pip install fury

安装Totalsegmentator

pip install TotalSegmentator

使用方法

对于CT图像:

TotalSegmentator -i ct.nii.gz -o segmentations

对于MR图像:

TotalSegmentator -i mri.nii.gz -o segmentations --task total_mr

注意:允许使用Nifti文件或包含一个患者所有DICOM切片的文件夹(或zip文件)作为输入。

注意:如果在CPU上运行,请使用--fast--roi_subset选项以大大提高运行时间。

注意:这不是医疗设备,不适用于临床用途。

子任务

替代文本

除了默认任务(total)外,还有更多包含更多类别的子任务。如果任务名以_mr结尾,则适用于MR图像,否则适用于CT图像。

可供任何用途开放使用:

  • total:默认任务,包含117个主要类别(点击此处查看类别列表)
  • total_mr:默认任务,包含56个MR图像的主要类别(点击此处查看类别列表)
  • lung_vessels:肺血管(引用论文),肺气管支气管
  • body:身体、躯干、四肢、皮肤
  • cerebral_bleed:脑内出血(引用论文)*
  • hip_implant:髋关节植入物*
  • coronary_arteries:冠状动脉*
  • pleural_pericard_effusion:胸腔积液(引用论文),心包积液(引用论文)*
  • head_glands_cavities:左眼、右眼、左眼晶状体、右眼晶状体、左视神经、右视神经、左腮腺、右腮腺、右下颌下腺、左下颌下腺、鼻咽、口咽、下咽、右鼻腔、左鼻腔、右听道、左听道、软腭、硬腭(引用论文
  • head_muscles:右咬肌、左咬肌、右颞肌、左颞肌、右外翼肌、左外翼肌、右内翼肌、左内翼肌、舌头、右二腹肌、左二腹肌
  • headneck_bones_vessels:喉腔、甲状软骨、舌骨、环状软骨、右颧弓、左颧弓、右茎突、左茎突、右颈内动脉、左颈内动脉、右颈内静脉、左颈内静脉(引用论文
  • headneck_muscles:右胸锁乳突肌、左胸锁乳突肌、上咽缩肌、中咽缩肌、下咽缩肌、右斜方肌、左斜方肌、右颈阔肌、左颈阔肌、右肩胛提肌、左肩胛提肌、右前斜角肌、左前斜角肌、右中斜角肌、左中斜角肌、右后斜角肌、左后斜角肌、右胸骨甲状肌、左胸骨甲状肌、右甲状舌骨肌、左甲状舌骨肌、右椎前肌、左椎前肌(引用论文

*:这些模型并非在完整的totalsegmentator数据集上训练,而是在一些小型数据集上训练。因此,预期它们的稳健性较差。

需要许可证(非商业用途的免费许可证可在这里获取。商业许可请联系jakob.wasserthal@usb.ch):

  • heartchambers_highres:心肌、左心房、左心室、右心房、右心室、主动脉、肺动脉(在亚毫米分辨率上训练)
  • appendicular_bones:髌骨、胫骨、腓骨、跗骨、跖骨、足趾骨、尺骨、桡骨、腕骨、掌骨、手指骨
  • tissue_types:皮下脂肪、躯干脂肪、骨骼肌
  • tissue_types_mr:皮下脂肪、躯干脂肪、骨骼肌(适用于MR图像)
  • brain_structures:脑干、蛛网膜下腔、静脉窦、透明隔、小脑、尾状核、豆状核、岛叶皮质、内囊、脑室、中央沟、额叶、顶叶、枕叶、颞叶、丘脑(注意:这适用于CT)(引用论文,因为我们的模型部分基于此)
  • vertebrae_body:所有椎骨的椎体(不包括椎弓)
  • face:面部区域(用于匿名化)

使用方法:

TotalSegmentator -i ct.nii.gz -o segmentations -ta <task_name>

对所有结构和任务感到困惑?查看这里以搜索可用的结构和任务。

标签ID到类名的映射可在这里找到。

高级设置

  • --device: 选择 cpugpugpu:X(例如,gpu:1 -> cuda:1)
  • --fast: 使用此选项可获得更快的运行时间和更少的内存需求。它将运行较低分辨率的模型(3mm而不是1.5mm)。
  • --roi_subset: 接受以空格分隔的类名列表(例如 spleen colon brain)并仅预测这些类别。可以大大节省运行时间和内存。对于小类别(如前列腺)可能准确度较低。
  • --preview: 这将生成所有类别的3D渲染,让您快速了解分割是否成功以及失败的位置(请查看输出目录中的 preview.png)。
  • --ml: 这将保存一个包含所有标签的nifti文件,而不是为每个类别保存一个文件。在保存nifti文件时节省运行时间。(索引到类名的映射请参见此处)。
  • --statistics: 这将生成一个 statistics.json 文件,包含每个类别的体积(单位:mm³)和平均强度。
  • --radiomics: 这将生成一个 statistics_radiomics.json 文件,包含每个类别的放射组学特征。您需要安装pyradiomics才能使用此功能(pip install pyradiomics)。

通过docker运行

我们还提供了一个docker容器,可以按以下方式使用

docker run --gpus 'device=0' --ipc=host -v /absolute/path/to/my/data/directory:/tmp wasserth/totalsegmentator:2.2.1 TotalSegmentator -i /tmp/ct.nii.gz -o /tmp/segmentations

运行v1版本

如果您想继续使用TotalSegmentator v1(例如,因为您不想更改您的流程),可以使用以下命令安装:

pip install TotalSegmentator==1.5.7

v1的文档可以在这里找到。v1的错误修复在 v1_bugfixes 分支中开发。 我们的Radiology AI出版物引用的是TotalSegmentator v1。

资源需求

Totalsegmentator具有以下运行时间和内存需求(使用Nvidia RTX 3090 GPU): (1.5mm是普通模型,3mm是 --fast 模型。在v2中,由于我们添加了更多类别,运行时间略有增加。)

Alt text

如果您想减少内存消耗,可以使用以下选项:

  • --fast: 这将使用较低分辨率的模型
  • --body_seg: 这将在处理之前将图像裁剪到身体区域
  • --roi_subset <类别列表>: 这将只预测一部分类别
  • --force_split: 这将把图像分成3部分,然后逐一处理。(不要对小图像使用此选项。将这些图像分割成更小的图像会导致视野太小。)
  • --nr_thr_saving 1: 使用多个线程保存大图像会占用大量内存

Python API

您可以通过Python运行totalsegmentator:

import nibabel as nib from totalsegmentator.python_api import totalsegmentator if __name__ == "__main__": # 选项1:提供输入和输出的文件路径 totalsegmentator(input_path, output_path) # 选项2:提供输入和输出作为nifti图像对象 input_img = nib.load(input_path) output_img = totalsegmentator(input_img) nib.save(output_img, output_path)

您可以在这里查看所有可用的参数。在主环境中运行应该可以避免一些多进程问题。

分割图像在扩展头部包含类别名称。如果您想加载这些额外的头部信息,可以使用以下代码(需要 pip install xmltodict):

from totalsegmentator.nifti_ext_header import load_multilabel_nifti segmentation_nifti_img, label_map_dict = load_multilabel_nifti(image_path)

安装最新的主分支(包含最新的错误修复)

pip install git+https://github.com/wasserth/TotalSegmentator.git

其他命令

如果您想知道CT图像的对比相位,可以使用以下命令(需要 pip install xgboost)。更多详情可以在这里找到:

totalseg_get_phase -i ct.nii.gz -o contrast_phase.json

如果您想将一些子类(例如肺叶)合并成一个二值掩码(例如整个肺),可以使用以下命令:

totalseg_combine_masks -i totalsegmentator_output_dir -o combined_mask.nii.gz -m lungcomm 

通常,运行TotalSegmentator时会自动下载权重。如果您想使用额外的命令下载权重(例如在构建docker容器时),请使用:

totalseg_download_weights -t <task_name>

获得非开放任务的许可证号后,您可以使用以下命令设置:

totalseg_set_license -l aca_12345678910

训练/验证/测试集划分

数据集的确切划分可以在数据集内的 meta.csv 文件中找到。这被用于我们论文中的验证。 高分辨率模型(1.5mm)的准确结果可以在这里找到。论文在补充材料图11中展示了这些数字。

重新训练模型和运行评估

有关如何在TotalSegmentator数据集上自己训练nnU-Net,如何像我们论文中那样将数据分割为训练/验证/测试集,以及如何运行与我们论文中相同的评估的更多信息,请参见此处

常见问题

ITK加载错误 当您遇到以下错误消息时

ITK ERROR: ITK only supports orthonormal direction cosines. No orthonormal definition was found!

您应该执行

pip install SimpleITK==2.0.2

或者您可以尝试

fslorient -copysform2qform input_file
fslreorient2std input_file output_file

分割效果不佳 当您得到不好的分割结果时,请检查以下几点:

  • 您的输入图像是否包含原始的HU值,还是强度值被重新缩放到不同的范围?
  • 患者在图像中的位置是否正常?(在轴向视图中,脊柱是否在图像底部?在冠状视图中,头部是否在图像顶部?)

其他

  • TotalSegmentator会发送匿名使用统计数据,以帮助我们进一步改进。您可以通过在 ~/.totalsegmentator/config.json 中将 send_usage_stats 设置为 false 来停用它。
  • 变更和改进中,您可以看到v1和v2之间的差异概述。

参考

更多详情请参见我们的Radiology AI论文可免费获取的预印本)。 如果您使用此工具,请按以下方式引用:

Wasserthal, J., Breit, H.-C., Meyer, M.T., Pradella, M., Hinck, D., Sauter, A.W., Heye, T., Boll, D., Cyriac, J., Yang, S., Bach, M., Segeroth, M., 2023. TotalSegmentator: Robust Segmentation of 104 Anatomic Structures in CT Images. Radiology: Artificial Intelligence. https://doi.org/10.1148/ryai.230024

由于TotalSegmentator大量基于nnUNet,请也引用它。 此外,如果您能告诉我们您使用此工具的目的,我们将非常感激。您也可以告诉我们在未来的版本中应该添加哪些类别。您可以在这里这样做。

类别详情

下表显示了 total 任务的所有类别列表。

TA2是一种标准化的解剖命名方式。大多数TotalSegmentator名称遵循这一标准。 对于某些类别,它们有所不同,您可以在下表中看到。

这里您可以找到TotalSegmentator类别到SNOMED-CT代码的映射。

索引TotalSegmentator 名称TA2 名称
1脾脏
2右肾
3左肾
4胆囊
5肝脏
6
7胰腺
8右肾上腺肾上腺
9左肾上腺肾上腺
10左肺上叶左肺上叶
11左肺下叶左肺下叶
12右肺上叶右肺上叶
13右肺中叶右肺中叶
14右肺下叶右肺下叶
15食管
16气管
17甲状腺
18小肠小肠
19十二指肠
20结肠
21膀胱
22前列腺
23左肾囊肿
24右肾囊肿
25骶骨
26第一骶椎
27第五腰椎
28第四腰椎
29第三腰椎
30第二腰椎
31第一腰椎
32第十二胸椎
33第十一胸椎
34第十胸椎
35第九胸椎
36第八胸椎
37第七胸椎
38第六胸椎
39第五胸椎
40第四胸椎
41第三胸椎
42第二胸椎
43第一胸椎
44第七颈椎
45第六颈椎
46第五颈椎
47第四颈椎
48第三颈椎
49第二颈椎
50第一颈椎
51心脏
52主动脉
53肺静脉
54头臂干
55右锁骨下动脉
56左锁骨下动脉
57右颈总动脉
58左颈总动脉
59左头臂静脉
60右头臂静脉
61左心耳
62上腔静脉
63下腔静脉
64门静脉和脾静脉肝门静脉
65左髂动脉髂总动脉
66右髂动脉髂总动脉
67左髂静脉髂总静脉
68右髂静脉髂总静脉
69左肱骨
70右肱骨
71左肩胛骨
72右肩胛骨
73左锁骨锁骨
74右锁骨锁骨
75左股骨
76右股骨
77左髋部
78右髋部
79脊髓
80左臀大肌臀大肌
81右臀大肌臀大肌
82左臀中肌臀中肌
83右臀中肌臀中肌
84左臀小肌臀小肌
85右臀小肌臀小肌
86左自主肌
87右自主肌
88左髂腰肌髂腰肌
89右髂腰肌髂腰肌
90大脑
91颅骨
92左第1肋骨
93左第2肋骨
94左第3肋骨
95左第4肋骨
96左第5肋骨
97左第6肋骨
98左第7肋骨
99左第8肋骨
100左第9肋骨
101左第10肋骨
102左第11肋骨
103左第12肋骨
104右第1肋骨
105右第2肋骨
106右第3肋骨
107右第4肋骨
108右第5肋骨
109右第6肋骨
110右第7肋骨
111右第8肋骨
112右第9肋骨
113右第10肋骨
114右第11肋骨
115右第12肋骨
116胸骨
117肋软骨

"total_mr"任务的类别映射:

索引TotalSegmentator 名称TA2 名称
1脾脏
2右肾
3左肾
4胆囊
5肝脏
6
7胰腺
8右肾上腺肾上腺
9左肾上腺肾上腺
10左肺
11右肺
12食管
13小肠小肠
14十二指肠
15结肠
16膀胱
17前列腺
18骶骨
19脊椎
20椎间盘
21脊髓
22心脏
23主动脉
24下腔静脉
25门静脉和脾静脉肝门静脉
26左髂动脉髂总动脉
27右髂动脉髂总动脉
28左髂静脉髂总静脉
29右髂静脉髂总静脉
30左肱骨
31右肱骨
32腓骨
33胫骨
34左股骨
35右股骨
36左髋部
37右髋部
38左臀大肌臀大肌
39右臀大肌臀大肌
40左臀中肌臀中肌
41右臀中肌臀中肌
42左臀小肌臀小肌
43右臀小肌臀小肌
44左自主肌
45右自主肌
46左髂腰肌髂腰肌
47右髂腰肌髂腰肌
48左股四头肌
49右股四头肌
50左大腿内侧肌群
51右大腿内侧肌群
52左大腿后部肌群
53右大腿后部肌群
54左缝匠肌
55右缝匠肌
56大脑

编辑推荐精选

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

AI办公办公工具AI工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图热门
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

热门AI开发模型训练AI工具讯飞星火大模型智能问答内容创作多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

Trae

Trae

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

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

AI工具TraeAI IDE协作生产力转型热门
咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

热门AI辅助写作AI工具讯飞绘文内容运营AI创作个性化文章多平台分发AI助手
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

openai-agents-python

openai-agents-python

OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。

openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。

Hunyuan3D-2

Hunyuan3D-2

高分辨率纹理 3D 资产生成

Hunyuan3D-2 是腾讯开发的用于 3D 资产生成的强大工具,支持从文本描述、单张图片或多视角图片生成 3D 模型,具备快速形状生成能力,可生成带纹理的高质量 3D 模型,适用于多个领域,为 3D 创作提供了高效解决方案。

3FS

3FS

一个具备存储、管理和客户端操作等多种功能的分布式文件系统相关项目。

3FS 是一个功能强大的分布式文件系统项目,涵盖了存储引擎、元数据管理、客户端工具等多个模块。它支持多种文件操作,如创建文件和目录、设置布局等,同时具备高效的事件循环、节点选择和协程池管理等特性。适用于需要大规模数据存储和管理的场景,能够提高系统的性能和可靠性,是分布式存储领域的优质解决方案。

下拉加载更多