Skip to main content

PICAI 基线

项目描述

用于 MRI 中前列腺癌检测的基线 AI 模型

该存储库包含实用程序,用于为 MRI 中的临床显着前列腺癌 (csPCa) 建立和训练基于深度学习的检测模型。反过来,这些模型作为PI-CAI 挑战的官方基准 AI 解决方案。截至目前,将提供并支持以下三种模型:

就预期的文件夹结构数据准备管道而言,所有三种解决方案都具有相同的起点。

问题

请随时提出您在这里遇到的任何问题。

安装

picai_baseline可以克隆和 pip 安装:

git clone https://github.com/DIAGNijmegen/picai_baseline
cd picai_baseline
pip install -e .

这可确保脚本在本地存在,从而使您能够运行提供的 Python 脚本。此外,由于该-e选项,这允许您修改基线解决方案。

或者,picai_baseline可以直接 pip 安装:

pip install git+https://github.com/DIAGNijmegen/picai_baseline

常规设置

我们定义了在不同基线算法之间共享的设置步骤。要遵循基线算法教程,必须首先完成此设置。

文件夹结构

我们定义了三个必须事先准备好的主要文件夹:

  • /input/包含PI-CAI 数据集之一。这可以是公共培训和开发数据集、私人培训数据集、隐藏验证和调整队列或隐藏测试队列。
    • /input/images/包含映像文件。对于公共培训和发展数据集,可以在此处检索这些数据。
    • /input/labels/包含注释。对于公共培训和发展数据集,可以在此处检索这些数据。
  • /workdir/存储中间结果,例如预处理的图像和注释。
    • /workdir/results/[model name]/在训练期间存储模型检查点/权重(启用暂停/恢复训练的能力)。
  • /output/存储训练输出,例如训练的模型权重和预处理计划。

数据准备

除非另有说明,否则本教程假定将下载并解压缩PI-CAI:公共培训和开发数据集。在下载数据集之前,请阅读其文档专门的论坛帖子(所有更新/修复,如果有的话)。要下载并解压缩数据集,请运行以下命令:

# download all folds
curl -C - "https://zenodo.org/record/6624726/files/picai_public_images_fold0.zip?download=1" --output picai_public_images_fold0.zip
curl -C - "https://zenodo.org/record/6624726/files/picai_public_images_fold1.zip?download=1" --output picai_public_images_fold1.zip
curl -C - "https://zenodo.org/record/6624726/files/picai_public_images_fold2.zip?download=1" --output picai_public_images_fold2.zip
curl -C - "https://zenodo.org/record/6624726/files/picai_public_images_fold3.zip?download=1" --output picai_public_images_fold3.zip
curl -C - "https://zenodo.org/record/6624726/files/picai_public_images_fold4.zip?download=1" --output picai_public_images_fold4.zip

# unzip all folds
unzip picai_public_images_fold0.zip -d /input/images/
unzip picai_public_images_fold1.zip -d /input/images/
unzip picai_public_images_fold2.zip -d /input/images/
unzip picai_public_images_fold3.zip -d /input/images/
unzip picai_public_images_fold4.zip -d /input/images/

如果unzip没有安装,可以使用 Docker 解压文件:

docker run --cpus=2 --memory=8gb --rm -v /path/to/input:/input joeranbosma/picai_nnunet:latest unzip /input/picai_public_images_fold0.zip -d /input/images/
docker run --cpus=2 --memory=8gb --rm -v /path/to/input:/input joeranbosma/picai_nnunet:latest unzip /input/picai_public_images_fold1.zip -d /input/images/
docker run --cpus=2 --memory=8gb --rm -v /path/to/input:/input joeranbosma/picai_nnunet:latest unzip /input/picai_public_images_fold2.zip -d /input/images/
docker run --cpus=2 --memory=8gb --rm -v /path/to/input:/input joeranbosma/picai_nnunet:latest unzip /input/picai_public_images_fold3.zip -d /input/images/
docker run --cpus=2 --memory=8gb --rm -v /path/to/input:/input joeranbosma/picai_nnunet:latest unzip /input/picai_public_images_fold4.zip -d /input/images/

请按照此处的说明设置 Docker 容器。

此外,通过以下命令收集训练注释:

git clone https://github.com/DIAGNijmegen/picai_labels /input/labels/

交叉验证拆分

我们准备了PI-CAI: Public Training and Development Dataset中所有 1500 个案例的 5 折交叉验证拆分。我们确保训练/验证拆分之间没有患者重叠。您可以按如下方式加载这些拆分:

from picai_baseline.splits.picai import train_splits, valid_splits

for fold, ds_config in train_splits.items():
    print(f"Training fold {fold} has cases: {ds_config['subject_list']}")

for fold, ds_config in valid_splits.items():
    print(f"Validation fold {fold} has cases: {ds_config['subject_list']}")

此外,我们使用专家派生的 csPCa 注释准备了所有案例的 5 倍交叉验证拆分。这些拆分是上述拆分的子集。您可以按如下方式加载这些拆分:

from picai_baseline.splits.picai_nnunet import train_splits, valid_splits

picai_eval从命令行使用时,我们建议将拆分保存到磁盘。然后,您可以传递这些picai_eval以确保找到所有案例。您可以使用以下方法导出标记的交叉验证拆分:

python -m picai_baseline.splits.picai_nnunet --output "/workdir/splits/picai_nnunet"

数据预处理

我们按照nnU-Net Raw Data Archive格式准备我们的数据集以供使用。为此,您可以使用该picai_prep模块。注意,picai_prep安装模块时应该自动安装picai_baseline模块,并且安装在Dockerpicai_nnunetpicai_nndetectionDocker 容器中。

要将数据集/input/转换为nnU-Net Raw Data Archive格式并将其存储在 中/workdir/nnUNet_raw_data,请按照此处提供的说明进行操作,或设置目标路径prepare_data.py并执行它:

python src/picai_baseline/prepare_data.py

要调整/修改预处理管道或其默认规范,请prepare_data.py相应地更改脚本。

或者,您可以使用 Docker 运行 Python 脚本:

docker run --cpus=2 --memory=16gb --rm \
    -v /path/to/input/:/input/ \
    -v /path/to/workdir/:/workdir/ \
    -v /path/to/picai_baseline:/input/picai_baseline/ \
    joeranbosma/picai_nnunet:latest python3 /input/picai_baseline/src/picai_baseline/prepare_data.py

基线算法

我们为 3D 中的 csPCa 检测/诊断提供端到端的训练管道。每个基线都包含一个模板,用于将训练好的 AI 模型封装在 Docker 容器中,并将其作为“算法”上传到grand-challenge.org平台。

网络

我们包括一个基线U-Net,为参与者提供一个游乐场环境并启动他们的开发周期。U-Net 基线以最小的复杂性生成快速结果,但这样做是以牺牲次优性能和适应任何其他任务的低灵活性为代价的。

→ 在此处阅读完整文档

神经网络

nnU-Net 框架[1]为医学图像分割提供了一个高性能框架,可以直接适应 csPCa 检测。

→ 在此处阅读完整文档

nn检测

nnDetection 框架适用于医疗对象检测[2]。设置 nnDetection 并调整其实现并不像nnUNetUNet基线那样简单,但它可以提供强大的 csPCa 检测模型。

→ 在此处阅读完整文档

参考

[1] Fabian Isensee、Paul F. Jaeger、Simon AA Kohl、Jens Petersen 和 Klaus H. Maier-Hein。“nnU-Net:一种基于深度学习的生物医学图像分割的自配置方法”。自然方法 18.2(2021):203-211。

[2] Michael Baumgartner、Paul F. Jaeger、Fabian Isensee、Klaus H. Maier-Hein。“nnDetection:一种用于医疗对象检测的自配置方法”。医学图像计算和计算机辅助干预国际会议。施普林格,湛,2021。

[3] Joeran Bosma、Anindo Saha、Matin Hosseinzadeh、Ilse Slootweg、Maarten de Rooij、Henkjan Huisman。“具有报告引导病变注释的半监督学习,用于 bpMRI 中基于深度学习的前列腺癌检测”。arXiv:2112.05151。

[4] 乔兰·博斯马、娜塔莉亚·阿尔维斯和亨克扬·豪斯曼。“用于医学成像的高性能和可重复的基于深度学习的癌症检测模型”。正在审查中。

如果您正在使用此代码库或其中的一部分,请引用以下文章:

A. Saha、JJ Twilt、JS Bosma、B. van Ginneken、D. Yakar、M. Elschot、J. Veltman、JJ Fütterer、M. de Rooij、H. Huisman,“人工智能和放射科医生在前列腺癌检测中的应用” MRI:PI-CAI 挑战(研究协议)”,DOI:10.5281/zenodo.6667655

中文提供:

@ARTICLE{PICAI_BIAS,
    author = {Anindo Saha, Jasper J. Twilt, Joeran S. Bosma, Bram van Ginneken, Derya Yakar, Mattijs Elschot, Jeroen Veltman, Jurgen Fütterer, Maarten de Rooij, Henkjan Huisman},
    title  = {{Artificial Intelligence and Radiologists at Prostate Cancer Detection in MRI: The PI-CAI Challenge (Study Protocol)}}, 
    year   = {2022},
    doi    = {10.5281/zenodo.6667655}
}

下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

picai_baseline-0.5.2.tar.gz (117.4 kB 查看哈希

已上传 source

内置分布

picai_baseline-0.5.2-py3-none-any.whl (157.7 kB 查看哈希

已上传 py3