DiffTumor

DiffTumor

基于扩散模型的跨器官早期肿瘤合成与检测方法

DiffTumor项目提出了一种新颖的跨器官早期肿瘤合成方法。该方法基于扩散模型,通过学习胰腺早期肿瘤特征,可合成肝脏和肾脏的早期小肿瘤。研究发现不同腹部器官的早期小肿瘤在影像学上具有相似性。该方法经放射科医生评估和AI算法测试,证实了其在肿瘤检测任务中的有效性。DiffTumor为医学影像领域的数据增强和跨器官肿瘤检测开辟了新思路。

DiffTumor肿瘤合成泛化能力AI检测医学影像Github开源项目

可泛化的肿瘤合成

我们已经证明,在不同腹部器官中,许多类型的小肿瘤(小于2cm)看起来非常相似。这意味着我们可以仅通过训练胰腺肿瘤的扩散模型,就能让人工智能检测肝脏或肾脏的肿瘤(Q. Chen等人 CVPR 2024)。这些研究已经通过放射科医生的研究(通过挑战他们区分合成肿瘤和真实肿瘤)和使用模拟数据训练的人工智能算法的全面测试得到了验证。

<p align="center"><img width="100%" src="https://yellow-cdn.veclightyear.com/835a84d5/d3fad6cd-7f9a-42b5-b3f2-fdc61ae96b96.png" /></p>

论文

<b>走向可泛化的肿瘤合成</b> <br/> Qi Chen<sup>1</sup>, Xiaoxi Chen<sup>2</sup>, Haorui Song<sup>3</sup>, Zhiwei Xiong<sup>1</sup>, Alan L. Yuille<sup>3</sup>, Wei Chen<sup>3</sup>Zongwei Zhou<sup>3,*</sup> <br/> <sup>1 </sup>中国科学技术大学, <br/> <sup>2 </sup>上海交通大学, <br/> <sup>3 </sup>约翰霍普金斯大学 <br/> CVPR, 2024 <br/> 论文 | 代码 | 幻灯片 | huggingface

我们已经在常见问题解答(FAQ)中记录了有关该论文的常见问题。

我们已经在Awesome Synthetic Tumors Awesome中总结了与肿瘤合成相关的出版物。

我们已经发布了视觉图灵测试的视频。 看看你能否分辨出哪个是真实肿瘤,哪个是合成肿瘤。

0. 安装

git clone https://github.com/MrGiovanni/DiffTumor.git cd DiffTumor

查看安装说明以创建环境并获取所需的依赖项。

1. 训练自编码器模型

你可以在AbdomenAtlas 1.0数据集上自行训练自编码器模型。AbdomenAtlas 1.0的发布可以在https://huggingface.co/datasets/AbdomenAtlas/AbdomenAtlas_1.0_Mini找到。

cd STEP1.AutoencoderModel datapath=<你的数据路径> (例如, /data/bdomenAtlasMini1.0/) gpu_num=1 cache_rate=0.05 batch_size=4 dataset_list="AbdomenAtlas1.0Mini" python train.py dataset.data_root_path=$datapath dataset.dataset_list=$dataset_list dataset.cache_rate=$cache_rate dataset.batch_size=$batch_size model.gpus=$gpu_num

我们提供了自编码器模型的预训练检查点,该模型在AbdomenAtlas 1.1数据集上进行了训练(详见SuPreM)。如果你不想重新训练自编码器模型,这个检查点可以直接用于第2步。只需将其下载到STEP2.DiffusionModel/pretrained_models/AutoencoderModel.ckpt

cd STEP2.DiffusionModel/pretrained_models/ wget https://huggingface.co/MrGiovanni/DiffTumor/resolve/main/AutoencoderModel/AutoencoderModel.ckpt

2. 训练扩散模型

在我们的研究中,扩散模型专注于肿瘤区域的生成(简单的纹理和小形状)。早期肿瘤在三个腹部器官中看起来相似,使模型能够从少量的例子中有效地学习这些特征。如果你想训练合成早期肿瘤的扩散模型,你需要首先处理数据以筛选出早期肿瘤标签。我们以训练早期肝脏肿瘤的扩散模型为例。

下载公开数据集MSD-Liver(更多数据集可以在安装说明中看到)。

wget https://huggingface.co/MrGiovanni/DiffTumor/resolve/main/Task03_Liver.tar.gz tar -zxvf Task03_Liver.tar.gz

我们提供了早期肿瘤和中/晚期肿瘤的预处理标签。

wget https://huggingface.co/MrGiovanni/DiffTumor/resolve/main/preprocessed_labels.tar.gz tar -zxvf preprocessed_labels.tar.gz
<details> <summary style="margin-left: 25px;">预处理详情</summary> <div style="margin-left: 25px;"> 1. 根据[安装说明](documents/INSTALL.md)下载数据集。 2. 修改[data_transfer.py](https://github.com/MrGiovanni/DiffTumor/blob/main/data_transfer.py)中的`data_dir`和`tumor_save_dir`。 3. `python -W ignore data_transfer.py`

开始训练。

cd STEP2.DiffusionModel/ vqgan_ckpt=<预训练的AutoencoderModel> (例如,/pretrained_models/AutoencoderModel.ckpt) fold=0 datapath=<你的数据路径> (例如,/data/10_Decathlon/Task03_Liver/) tumorlabel=<你的标签路径> (例如,/data/preprocessed_labels/) python train.py dataset.name=liver_tumor_train dataset.fold=$fold dataset.data_root_path=$datapath dataset.label_root_path=$tumorlabel dataset.dataset_list=['liver_tumor_data_early_fold'] dataset.uniform_sample=False model.results_folder_postfix="liver_early_tumor_fold'$fold'" model.vqgan_ckpt=$vqgan_ckpt

我们提供了针对肝脏、胰腺和肾脏的早期和中晚期肿瘤分别训练的扩散模型预训练检查点。如果你不想重新训练扩散模型,可以直接使用这些检查点进行第3步。只需将其下载到STEP3.SegmentationModel/TumorGeneration/model_weight

3. 训练分割模型

下载健康CT数据

准备自动编码器和扩散模型。将预训练权重放入STEP3.SegmentationModel/TumorGeneration/model_weight

cd STEP3.SegmentationModel/TumorGeneration/model_weight/ wget https://huggingface.co/MrGiovanni/DiffTumor/resolve/main/AutoencoderModel/AutoencoderModel.ckpt wget https://huggingface.co/MrGiovanni/DiffTumor/resolve/main/DiffusionModel/liver_early.pt wget https://huggingface.co/MrGiovanni/DiffTumor/resolve/main/DiffusionModel/liver_noearly.pt cd ../..

开始训练。

cd STEP3.SegmentationModel healthy_datapath=<你的数据路径> (例如,/data/HealthyCT/) datapath=<你的数据路径> (例如,/data/10_Decathlon/Task03_Liver/) cache_rate=1.0 batch_size=12 val_every=50 workers=12 organ=liver fold=0 # U-Net backbone=unet logdir="runs/$organ.fold$fold.$backbone" datafold_dir=cross_eval/"$organ"_aug_data_fold/ dist=$((RANDOM % 99999 + 10000)) python -W ignore main.py --model_name $backbone --cache_rate $cache_rate --dist-url=tcp://127.0.0.1:$dist --workers $workers --max_epochs 2000 --val_every $val_every --batch_size=$batch_size --save_checkpoint --distributed --noamp --organ_type $organ --organ_model $organ --tumor_type tumor --fold $fold --ddim_ts 50 --logdir=$logdir --healthy_data_root $healthy_datapath --data_root $datapath --datafold_dir $datafold_dir

nnU-Net

backbone=nnunet logdir="runs/$organ.fold$fold.$backbone" datafold_dir=cross_eval/"$organ"_aug_data_fold/ dist=$((RANDOM % 99999 + 10000)) python -W ignore main.py --model_name $backbone --cache_rate $cache_rate --dist-url=tcp://127.0.0.1:$dist --workers $workers --max_epochs 2000 --val_every $val_every --batch_size=$batch_size --save_checkpoint --distributed --noamp --organ_type $organ --organ_model $organ --tumor_type tumor --fold $fold --ddim_ts 50 --logdir=$logdir --healthy_data_root $healthy_datapath --data_root $datapath --datafold_dir $datafold_dir

Swin-UNETR

backbone=swinunetr logdir="runs/$organ.fold$fold.$backbone" datafold_dir=cross_eval/"$organ"_aug_data_fold/ dist=$((RANDOM % 99999 + 10000)) python -W ignore main.py --model_name $backbone --cache_rate $cache_rate --dist-url=tcp://127.0.0.1:$dist --workers $workers --max_epochs 2000 --val_every $val_every --batch_size=$batch_size --save_checkpoint --distributed --noamp --organ_type $organ --organ_model $organ --tumor_type tumor --fold $fold --ddim_ts 50 --logdir=$logdir --healthy_data_root $healthy_datapath --data_root $datapath --datafold_dir $datafold_dir


我们提供了分割模型(U-Net、nnU-Net和Swin UNETR)的预训练检查点,这些模型在肝脏、胰腺和肾脏的真实和合成肿瘤上进行了训练。

<details>
<summary style="margin-left: 25px;">U-Net</summary>
<div style="margin-left: 25px;">

| 肿瘤 | 下载 |
| ----  | ----     |
| 肝脏  | [链接](https://huggingface.co/MrGiovanni/DiffTumor/resolve/main/SegmentationModel/unet_synt_liver_tumors.pt) |
| 胰腺  | [链接](https://huggingface.co/MrGiovanni/DiffTumor/resolve/main/SegmentationModel/unet_synt_pancreas_tumors.pt) |
| 肾脏  | [链接](https://huggingface.co/MrGiovanni/DiffTumor/resolve/main/SegmentationModel/unet_synt_kidney_tumors.pt) |

</div>
</details>

<details>
<summary style="margin-left: 25px;">nnU-Net</summary>
<div style="margin-left: 25px;">

| 肿瘤 | 下载 |
| ----  | ----     |
| 肝脏  | [链接](https://huggingface.co/MrGiovanni/DiffTumor/resolve/main/SegmentationModel/nnunet_synt_liver_tumors.pt) |
| 胰腺  | [链接](https://huggingface.co/MrGiovanni/DiffTumor/resolve/main/SegmentationModel/nnunet_synt_pancreas_tumors.pt) |
| 肾脏  | [链接](https://huggingface.co/MrGiovanni/DiffTumor/resolve/main/SegmentationModel/nnunet_synt_kidney_tumors.pt) |

</div>
</details>

<details>
<summary style="margin-left: 25px;">Swin UNETR</summary>
<div style="margin-left: 25px;">

| 肿瘤 | 下载 |
| ----  | ----     |
| 肝脏  | [链接](https://huggingface.co/MrGiovanni/DiffTumor/resolve/main/SegmentationModel/swinunetr_synt_liver_tumors.pt) |
| 胰腺  | [链接](https://huggingface.co/MrGiovanni/DiffTumor/resolve/main/SegmentationModel/swinunetr_synt_pancreas_tumors.pt) |
| 肾脏  | [链接](https://huggingface.co/MrGiovanni/DiffTumor/resolve/main/SegmentationModel/swinunetr_synt_kidney_tumors.pt) |

</div>
</details>

## 4. 评估

```bash
cd SegmentationModel
datapath=/mnt/ccvl15/zzhou82/PublicAbdominalData/
organ=liver
fold=0
datafold_dir=cross_eval/"$organ"_aug_data_fold/

# U-Net
python -W ignore validation.py --model=unet --data_root $datapath --datafold_dir $datafold_dir --tumor_type tumor --organ_type $organ --fold $fold --log_dir $organ/$organ.fold$fold.unet --save_dir out/$organ/$organ.fold$fold.unet

# nnU-Net
python -W ignore validation.py --model=nnunet --data_root $datapath --datafold_dir $datafold_dir --tumor_type tumor --organ_type $organ --fold $fold --log_dir $organ/$organ.fold$fold.unet --save_dir out/$organ/$organ.fold$fold.unet

# Swin-UNETR
python -W ignore validation.py --model=swinunetr --data_root $datapath --datafold_dir $datafold_dir --tumor_type tumor --organ_type $organ --fold $fold --log_dir $organ/$organ.fold$fold.unet --save_dir out/$organ/$organ.fold$fold.unet

我们还在HuggingFace 🤗上提供了DiffTumor的singularity容器

inputs_data=/path/to/your/CT/scan/folders outputs_data=/path/to/your/output/folders wget https://huggingface.co/qicq1c/DiffTumor/resolve/main/difftumor_final.sif SINGULARITYENV_CUDA_VISIBLE_DEVICES=0 singularity run --nv -B $inputs_data:/workspace/inputs -B $outputs_data:/workspace/outputs difftumor_final.sif

引用

@inproceedings{chen2024towards,
  title={面向可泛化的肿瘤合成},
  author={陈琦 and 陈晓曦 and 宋浩睿 and 熊志伟 and Yuille, Alan and 魏晨 and 周宗伟},
  booktitle={IEEE/CVF计算机视觉与模式识别会议论文集},
  pages={11147--11158},
  year={2024}
}

致谢

本研究得到了Lustgarten胰腺癌研究基金会和McGovern基金会的支持。代码库修改自NVIDIA MONAI。论文内容受待审专利保护。

编辑推荐精选

博思AIPPT

博思AIPPT

AI一键生成PPT,就用博思AIPPT!

博思AIPPT,新一代的AI生成PPT平台,支持智能生成PPT、AI美化PPT、文本&链接生成PPT、导入Word/PDF/Markdown文档生成PPT等,内置海量精美PPT模板,涵盖商务、教育、科技等不同风格,同时针对每个页面提供多种版式,一键自适应切换,完美适配各种办公场景。

AI办公办公工具AI工具博思AIPPTAI生成PPT智能排版海量精品模板AI创作热门
潮际好麦

潮际好麦

AI赋能电商视觉革命,一站式智能商拍平台

潮际好麦深耕服装行业,是国内AI试衣效果最好的软件。使用先进AIGC能力为电商卖家批量提供优质的、低成本的商拍图。合作品牌有Shein、Lazada、安踏、百丽等65个国内外头部品牌,以及国内10万+淘宝、天猫、京东等主流平台的品牌商家,为卖家节省将近85%的出图成本,提升约3倍出图效率,让品牌能够快速上架。

iTerms

iTerms

企业专属的AI法律顾问

iTerms是法大大集团旗下法律子品牌,基于最先进的大语言模型(LLM)、专业的法律知识库和强大的智能体架构,帮助企业扫清合规障碍,筑牢风控防线,成为您企业专属的AI法律顾问。

SimilarWeb流量提升

SimilarWeb流量提升

稳定高效的流量提升解决方案,助力品牌曝光

稳定高效的流量提升解决方案,助力品牌曝光

Sora2视频免费生成

Sora2视频免费生成

最新版Sora2模型免费使用,一键生成无水印视频

最新版Sora2模型免费使用,一键生成无水印视频

Transly

Transly

实时语音翻译/同声传译工具

Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。

讯飞绘文

讯飞绘文

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

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

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

TRAE编程

AI辅助编程,代码自动修复

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

AI工具TraeAI IDE协作生产力转型热门
商汤小浣熊

商汤小浣熊

最强AI数据分析助手

小浣熊家族Raccoon,您的AI智能助手,致力于通过先进的人工智能技术,为用户提供高效、便捷的智能服务。无论是日常咨询还是专业问题解答,小浣熊都能以快速、准确的响应满足您的需求,让您的生活更加智能便捷。

imini AI

imini AI

像人一样思考的AI智能体

imini 是一款超级AI智能体,能根据人类指令,自主思考、自主完成、并且交付结果的AI智能体。

下拉加载更多