UniSeg

UniSeg

多模态3D医学图像通用分割模型

UniSeg是一个基于提示驱动的通用分割模型,可对多模态、多领域的3D医学图像进行多器官、肿瘤和椎骨分割。作为强大的分割模型和特征学习器,UniSeg提供完整代码实现、预训练模型及详细使用说明。项目涵盖数据准备、预处理、训练和测试等步骤。在MICCAI SegRap 2023比赛中,UniSeg在两项任务中均获得第二名,展现了其在医学图像分割领域的出色表现。

UniSeg分割模型医学图像MICCAI 2023多器官分割Github开源项目

UniSeg代码

这是我们MICCAI 2023论文"UniSeg:一个提示驱动的通用分割模型以及强大的表示学习器"的官方PyTorch实现。 在这篇论文中,我们提出了一个提示驱动的通用分割模型(UniSeg),用于在具有不同模态和领域的3D医学图像上分割多个器官、肿瘤和椎骨。

<div align="center"> <img width="100%" alt="UniSeg示意图" src="https://yellow-cdn.veclightyear.com/ab5030c0/5c5f5a83-13ae-420d-8c3b-efdf5eedd685.png"> </div>

新闻

  • 2023.07.17:我们更新了代码以更好地支持新的多任务分割。您只需修改UniSeg_Trainer中的self.taskself.task_classself.total_task_num
  • 2023.07.19:我们提供了预测新数据的配置文件。此外,我们更新了新数据预测代码,以限制指定任务的输出类别。
  • 2023.10.13:🎉🎉🎉我们的UniSeg在MICCAI SegRap 2023的两个任务中均获得第二名,仅通过在数据集上进行微调。

要求

CUDA 11.5 Python 3.8 Pytorch 1.11.0 CuDNN 8.3.2.44

使用方法

安装

  • 克隆此仓库。
git clone https://github.com/yeerwen/UniSeg.git
cd UniSeg

数据准备

预处理

  • 步骤1:

    • 通过pip install nnunet安装nnunet。
    • 设置路径,例如:
      • export nnUNet_raw_data_base="/data/userdisk0/ywye/nnUNet_raw"
      • export nnUNet_preprocessed="/erwen_SSD/1T/nnUNet_preprocessed"
      • export RESULTS_FOLDER="/data/userdisk0/ywye/nnUNet_trained_models"
  • 步骤2:

    • cd Upstream
    • 注意,预处理后的数据集的输出路径应在$nnUNet_raw_data_base/nnUNet_raw_data/目录中。
    • 运行python prepare_Kidney_Dataset.py以规范化肾脏数据集的体积名称。
    • 运行python Convert_MOTS_to_nnUNet_dataset.py以预处理MOTS数据集。
    • 运行python Convert_VerSe20_to_nnUNet_dataset.py以预处理VerSe20数据集并生成splits_final.pkl
    • 运行python Convert_Prostate_to_nnUNet_dataset.py以预处理前列腺数据集并生成splits_final.pkl
    • 运行python Convert_BraTS21_to_nnUNet_dataset.py以预处理BraTS21数据集并生成splits_final.pkl
    • 运行python Convert_AutoPET_to_nnUNet_dataset.py以预处理AutoPET2022数据集并生成splits_final.pkl
  • 步骤3:

    • 复制Upstream/nnunet以替换通过pip install nnunet安装的nnunet(地址通常为'anaconda3/envs/你的环境/lib/python3.8/site-packages/nnunet')。
    • 运行nnUNet_plan_and_preprocess -t 91 --verify_dataset_integrity --planner3d MOTSPlanner3D
    • 运行nnUNet_plan_and_preprocess -t 37 --verify_dataset_integrity --planner3d VerSe20Planner3D
    • 运行nnUNet_plan_and_preprocess -t 20 --verify_dataset_integrity --planner3d ProstatePlanner3D
    • 运行nnUNet_plan_and_preprocess -t 21 --verify_dataset_integrity --planner3d BraTS21Planner3D
    • 运行nnUNet_plan_and_preprocess -t 11 --verify_dataset_integrity --planner3d AutoPETPlanner3D
    • 将每个数据集的splits_final.pkl移动到其预处理数据集的地址。例如,'***/nnUNet_preprocessed/Task091_MOTS/splits_final.pkl'。注意,为了遵循DoDNet,我们在Upstream/MOTS_data_split/splits_final.pkl中提供了MOTS数据集的splits_final.pkl
    • 运行python merge_each_sub_dataet.py以形成新的数据集。
    • 为确保我们使用相同的数据划分,我们在Upstream/splits_final_11_tasks.pkl中提供了最终的数据划分。

训练和测试

  • Upstream/run_ssl.shUpstream/UniSeg_Metrics_test.py移动到"***/nnUNet_trained_models/"
  • cd ***/nnUNet_trained_models/
  • 运行sh run_ssl.sh进行训练(GPU内存消耗:约10GB,时间消耗:每个epoch约210秒)。

预训练权重

下游任务

  • cd Downstream
  • 下载BTCV数据集
  • 下载VS数据集
  • 运行python Convert_BTCV_to_nnUNet_dataset.py预处理BTCV数据集并生成splits_final.pkl
  • 运行python Convert_VSseg_to_nnUNet_dataset.py预处理VS数据集并生成splits_final.pkl
  • 更新'Downstream/nnunet/training/network_training/UniSeg_Trainer_DS.py'文件中预训练模型的地址(第97行)。
  • 复制Downstream/nnunet替换通过pip install nnunet安装的nnunet(地址通常为'anaconda3/envs/your envs/lib/python3.8/site-packages/nnunet')。
  • 运行nnUNet_plan_and_preprocess -t 60 --verify_dataset_integrity
  • 运行nnUNet_plan_and_preprocess -t 61 --verify_dataset_integrity
  • 将两个数据集的splits_final.pkl移动到它们预处理后数据集的地址。
  • 为确保我们对下游数据集使用相同的数据划分,我们在Downstream/splits_final_BTCV.pklDownstream/splits_final_VS.pkl中提供了最终的数据划分。
  • 训练和测试:
    • 对于BTCV数据集:CUDA_VISIBLE_DEVICES=0 nnUNet_n_proc_DA=32 nnUNet_train 3d_fullres UniSeg_Trainer_DS 60 0
    • 对于VS数据集:CUDA_VISIBLE_DEVICES=0 nnUNet_n_proc_DA=32 nnUNet_train 3d_fullres UniSeg_Trainer_DS 61 0

对新数据进行预测

  • 下载上游训练模型配置文件
  • 将它们移动到./nnUNet_trained_models/UniSeg_Trainer/3d_fullres/Task097_11task/UniSeg_Trainer__DoDNetPlans/fold_0/并分别重命名为model_final_checkpoint.modelmodel_final_checkpoint.model.pkl
  • cd Upstream
  • 复制Upstream/nnunet替换通过pip install nnunet安装的nnunet
  • 运行CUDA_VISIBLE_DEVICES=1 nnUNet_n_proc_DA=32 nnUNet_predict -i /data/userdisk0/ywye/nnUNet_raw/nnUNet_raw_data/Test/Image/ -o /data/userdisk0/ywye/nnUNet_raw/nnUNet_raw_data/Test/Predict/10/ -t 97 -m 3d_fullres -tr UniSeg_Trainer -f 0 -task_id 7 -exp_name UniSeg_Trainer -num_image 1 -modality CT -spacing 3.0,1.5,1.5
    • -i:输入图像的路径,输入图像的命名格式:name_0000.nii.gz(name_0001.nii.gz)
    • -o:输出掩码的路径
    • -task_id 选择的分割任务。
      • -1表示预测特定模态下的所有分割任务。
      • 0:"肝脏和肝脏肿瘤分割"
      • 1:"肾脏和肾脏肿瘤分割"
      • 2:"肝血管和肝脏肿瘤分割"
      • 3:"胰腺和胰腺肿瘤分割"
      • 4:"结肠肿瘤分割"
      • 5:"肺部肿瘤分割"
      • 6:"脾脏分割"
      • 7:"椎骨分割"
      • 8:"前列腺分割"
      • "9":"脑肿瘤:水肿、非增强和增强分割"
      • "10":"全身肿瘤分割"
    • -num_image:输入图像的通道数
    • -modality:"CT"或"MR"(前列腺)或"MR,MR,MR,MR"(脑肿瘤)或"CT,PET"(全身肿瘤)
    • -spacing:重采样图像的间距
<div align="center"> <img width="100%" alt="UniSeg插图" src="https://yellow-cdn.veclightyear.com/ab5030c0/435e2172-ba27-45a2-a76b-763f6bcba3be.png"> </div>

待办事项

  • 数据集链接
  • 预处理代码
  • 上游代码发布
  • 上游训练模型
  • 下游代码发布
  • 在新数据上使用上游训练模型进行推理

引用

如果此代码对您的研究有帮助,请引用:

@article{ye2023uniseg,
  title={UniSeg: A Prompt-driven Universal Segmentation Model as well as A Strong Representation Learner},
  author={Yiwen Ye, Yutong Xie, Jianpeng Zhang, Ziyang Chen, and Yong Xia},
  booktitle={International Conference on Medical Image Computing and Computer-Assisted Intervention},
  pages={508--518},
  year={2023},
  organization={Springer}
}

致谢

整个框架基于nnUNet v1

联系方式

叶亦文 (ywye@mail.nwpu.edu.cn)

编辑推荐精选

酷表ChatExcel

酷表ChatExcel

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

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

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

DeepEP

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

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

DeepSeek

DeepSeek

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

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

问小白

问小白

DeepSeek R1 满血模型上线

问小白是一个基于 DeepSeek R1 模型的智能对话平台,专为用户提供高效、贴心的对话体验。实时在线,支持深度思考和联网搜索。免费不限次数,帮用户写作、创作、分析和规划,各种任务随时完成!

AI主流办公工具有哪些办公热门AI 助手
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 基础上的一次飞跃,还在多个关键技术上实现了创新突破。

OmniParser

OmniParser

帮助AI理解电脑屏幕 纯视觉GUI元素的自动化解析方案

开源工具通过计算机视觉技术实现图形界面元素的智能识别与结构化处理,支持自动化测试脚本生成和辅助功能开发。项目采用模块化设计,提供API接口与多种输出格式,适用于跨平台应用场景。核心算法优化了元素定位精度,在动态界面和复杂布局场景下保持稳定解析能力。

OmniParser界面解析交互区域检测Github开源项目
流畅阅读

流畅阅读

AI网页翻译插件 双语阅读工具,还原母语级体验

流畅阅读是一款浏览器翻译插件,通过上下文智能分析提升翻译准确性,支持中英双语对照显示。集成多翻译引擎接口,允许用户自定义翻译规则和快捷键配置,操作数据全部存储在本地设备保障隐私安全。兼容Chrome、Edge、Firefox等主流浏览器,基于GPL-3.0开源协议开发,提供持续的功能迭代和社区支持。

AI翻译AI翻译引擎AI翻译工具
下拉加载更多