医学图像分割 nnUNetV2 分割自定义2d数据集

news/2024/10/30 11:28:38/

文章目录

  • 1 环境安装(Pytorch)
    • 1.1 安装conda
    • 1.1 安装pytorch
    • 1.3 安装nnUNet
    • 1.4 安装隐藏层(可选)
  • 2 配置自定义数据集
    • 2.1 数据集格式
    • 2.2 创建需要目录
    • 2.3 数据格式转换
      • 2.3.1 修改路径与数据集名称
      • 2.3.2 修改训练集与测试集
      • 2.3.3 修改掩码所在的文件夹,并修改后缀
  • 3 数据预处理命令与训练命令
    • 3.1 配置环境变量
    • 3.2 对数据集进行预处理
    • 3.3 执行训练
  • 参考

nnUNet: https://github.com/MIC-DKFZ/nnUNet/tree/master

1 环境安装(Pytorch)

1.1 安装conda

使用Anaconda或者 Miniconda,下载https://mirrors.tuna.tsinghua.edu.cn/anaconda/

创建虚拟环境,并激活,这里建议python>=3.9

conda create -n nnUNet python=3.10 -y
conda activate 

1.1 安装pytorch

安装Pytorch: https://pytorch.org/get-started/previous-versions/

根据nvidia版本安装,我的为cu117
在这里插入图片描述

pip install torch==2.0.0+cu117 torchvision==0.15.1+cu117 torchaudio==2.0.1 --index-url https://download.pytorch.org/whl/cu117

1.3 安装nnUNet

参考: https://github.com/MIC-DKFZ/nnUNet/blob/master/documentation/installation_instructions.md

  1. 作标准化基线、开箱即用的分割算法或使用预训练模型进行推理
pip install nnunetv2
  1. 当作框架使用
git clone https://github.com/MIC-DKFZ/nnUNet.git
cd nnUNet
pip install -e .

解释pip install -e .

  • 最后pip install -e .相当于python setup.py,也就是运行上图这个setup.py文件
  • 向终端添加几个新命令。这些命令用于运行整个nnU-Net pipeline。您可以从系统上的任何位置执行它们。所有nnU-Net命令都带有前缀“nnUNet_”,以便于识别

可见setup.py中的命令行格式

entry_points={'console_scripts': ['nnUNetv2_plan_and_preprocess = nnunetv2.experiment_planning.plan_and_preprocess_entrypoints:plan_and_preprocess_entry',  # api available'nnUNetv2_extract_fingerprint = nnunetv2.experiment_planning.plan_and_preprocess_entrypoints:extract_fingerprint_entry',  # api available'nnUNetv2_plan_experiment = nnunetv2.experiment_planning.plan_and_preprocess_entrypoints:plan_experiment_entry',  # api available'nnUNetv2_preprocess = nnunetv2.experiment_planning.plan_and_preprocess_entrypoints:preprocess_entry',  # api available'nnUNetv2_train = nnunetv2.run.run_training:run_training_entry',  # api available'nnUNetv2_predict_from_modelfolder = nnunetv2.inference.predict_from_raw_data:predict_entry_point_modelfolder',  # api available'nnUNetv2_predict = nnunetv2.inference.predict_from_raw_data:predict_entry_point',  # api available'nnUNetv2_convert_old_nnUNet_dataset = nnunetv2.dataset_conversion.convert_raw_dataset_from_old_nnunet_format:convert_entry_point',  # api available'nnUNetv2_find_best_configuration = nnunetv2.evaluation.find_best_configuration:find_best_configuration_entry_point',  # api available'nnUNetv2_determine_postprocessing = nnunetv2.postprocessing.remove_connected_components:entry_point_determine_postprocessing_folder',  # api available'nnUNetv2_apply_postprocessing = nnunetv2.postprocessing.remove_connected_components:entry_point_apply_postprocessing',  # api available'nnUNetv2_ensemble = nnunetv2.ensembling.ensemble:entry_point_ensemble_folders',  # api available'nnUNetv2_accumulate_crossval_results = nnunetv2.evaluation.find_best_configuration:accumulate_crossval_results_entry_point',  # api available'nnUNetv2_plot_overlay_pngs = nnunetv2.utilities.overlay_plots:entry_point_generate_overlay',  # api available'nnUNetv2_download_pretrained_model_by_url = nnunetv2.model_sharing.entry_points:download_by_url',  # api available'nnUNetv2_install_pretrained_model_from_zip = nnunetv2.model_sharing.entry_points:install_from_zip_entry_point', # api available'nnUNetv2_export_model_to_zip = nnunetv2.model_sharing.entry_points:export_pretrained_model_entry', # api available'nnUNetv2_move_plans_between_datasets = nnunetv2.experiment_planning.plans_for_pretraining.move_plans_between_datasets:entry_point_move_plans_between_datasets',  # api available'nnUNetv2_evaluate_folder = nnunetv2.evaluation.evaluate_predictions:evaluate_folder_entry_point',  # api available'nnUNetv2_evaluate_simple = nnunetv2.evaluation.evaluate_predictions:evaluate_simple_entry_point',  # api available'nnUNetv2_convert_MSD_dataset = nnunetv2.dataset_conversion.convert_MSD_dataset:entry_point'  # api available],
},

1.4 安装隐藏层(可选)

nnU-net能够给出其生成的网络拓扑图

  1. 使用pip 安装
pip install --upgrade git+https://github.com/FabianIsensee/hiddenlayer.git@more_plotted_details #egg=hiddenlayer
  1. 源码安装

网站: https://github.com/FabianIsensee/hiddenlayer.git

cd nnUNet
git clone https://github.com/FabianIsensee/hiddenlayer.git
cd hiddenlayer
pip install -e .

2 配置自定义数据集

2.1 数据集格式

在这里插入图片描述

  • 这里数据集中的文件均为RGB 三通道图片png图片
  • Image为RGB,Label也为RGB,单通道灰度图会报错,访问三个通道只有一个

2.2 创建需要目录

  • 创建nnUNet_raw 保存格式转换后的数据集
  • 创建nnUNet_result 保存结果文件

在这里插入图片描述

2.3 数据格式转换

修改文件nnunetv2/dataset_conversion/Dataset120_RoadSegmentation.py

2.3.1 修改路径与数据集名称

这个根据数据集存放的位置修改
修改主函数中的参数

Note:

  • 数据集名称dataset_name的格式: Dataset数字_名称, 数字大于10,为数据集的ID
  • 转换后的数据集中图片的名字与转换后的对应

在这里插入图片描述
在这里插入图片描述

2.3.2 修改训练集与测试集

在这里插入图片描述

2.3.3 修改掩码所在的文件夹,并修改后缀

在这里插入图片描述

  • 根据自己的图片命名规则修改即可

之后运行 Dataset120_RoadSegmentation.py

3 数据预处理命令与训练命令

3.1 配置环境变量

vim .bashrc

在最后添加

export nnUNet_raw="/sharefiles1/hanliqiang/GitCode/nnUNet/nnUNet_raw"
export nnUNet_preprocessed="/sharefiles1/hanliqiang/GitCode/nnUNet/nnunetv2/preprocessing"
export nnUNet_results="/sharefiles1/hanliqiang/GitCode/nnUNet/nnUnet_results"

使其生效

source .bashrc

3.2 对数据集进行预处理

  • 将2d格式进行转换
nnUNetv2_plan_and_preprocess -d DATASET_ID --verify_dataset_integrit

DATASET_ID就是数据转换步骤中你设置的datasetname中的id

# nnUNetv2_plan_and_preprocess -d 120 --verify_dataset_integrity
nnUNetv2_plan_and_preprocess -d 110 --verify_dataset_integrity

3.3 执行训练

nnUNetv2_train DATASET_NAME_OR_ID UNET_CONFIGURATION FOLD
  • DATASET_NAME_OR_ID这里为数据集的id
  • 二维图像的话UNET_CONFIGURATION就填2d
  • FOLD代表几折交叉验证,nnUNet中为5

我的

nnUNetv2_train 110 2d 5

未完待续…


参考

nnUNetv2训练二维图像数据集 https://blog.csdn.net/Halloween111/article/details/130928829

nnUNet保姆级使用教程!从环境配置到训练与推理(新手必看)
https://blog.csdn.net/m0_68239345/article/details/128886376


http://www.ppmy.cn/news/230799.html

相关文章

数据结构中的顺序表的实现

文章目录 前言一、初识数据结构二、顺序表的实现(类型一)1.顺序表的头文件2.顺序表的实现 三、顺序表的实现(类型二)1 顺序表头文件2 顺序表的实现 四、线性表(顺序表)的缺点总结 前言 本期就进入到我们数据…

float变量与“零值”的比较

目录 1.问题的引出&#xff1a; 2.解决方案 <1>:自定义精度 <2>:系统提供的精度 3.总结 1.问题的引出&#xff1a; 浮点数在存储的时候&#xff0c;会存在精度的损失。 那么在浮点数进行比较的时候&#xff0c;可不可以使用 来进行比较&#xff0c;测试代码…

高性能软件负载OpenResty介绍和安装

目录 1 OpenResty介绍1.1 Nginx 的流程定义1.1.1 流程详解1.1.2 OpenResty处理流程 2 Openresty安装2.1 yum安装2.1.1 添加OpenResty仓库2.1.2 安装OpenResty 2.2 源代码编译安装2.2.1 安装编译环境2.2.2下载最新版源码2.2.3下载缓存插件2.2.4 编译OpenResty2.2.5 安装OpenRest…

宝安西乡产业园变九年制学校,新增宅地、商地。

6月5日&#xff0c;宝安区城市更新和土地整备局发布《西乡街道盐田社区银田地块土地整备利益统筹项目土地整备规划&#xff08;草案&#xff09;》&#xff08;以下简称草案&#xff09;。 草案显示&#xff0c;该项目经过调整后&#xff1a; ● 新增一块二类居住用地&#xf…

访问swagger报错404(1)

本次我的报错原因&#xff1a;idea缓存 报错信息&#xff1a; 解决方案&#xff1a; 1.双击idea右侧maven中的clean清除 2.然后重新运行服务。&#xff08;建议在访问swagger之前最好把浏览器缓存也清理一下。&#xff09; 3.访问swagger

联想M7216NWA墨粉清零:

联想M7216NWA墨粉清零&#xff1a; 在设备就绪状态下&#xff0c;按“功能”键&#xff0c;进入设置菜单&#xff0c;按上下键进行选择&#xff0c;屏幕出现“设备信息”项时按"确认"键&#xff0c;再按上下键选择&#xff0c;当屏幕出现“重置硒鼓”后长按“确认”键…

UBUNTU18.04系统安装打印机

本文以ubuntu安装打印机Lenovo-M7216NWA为例&#xff0c;介绍打印机安装步骤&#xff01; 成功安装的打印机有“位置”参数。如果没有位置参数&#xff0c;则无法打印。 安装步骤如下&#xff1a; 1.打开设置图标 2.选择“设备 > 打印机”打开打印机配置页面。 3. 如上图…

【STM32学习】——定时器输入捕获(IC)PWMI模式频率测量方法主从触发模式IC模式测频/PWMI模式测频率及占空比

文章目录 前言一、输入捕获&#xff08;含PWMI模式&#xff09;二、频率测量三、主从触发模式1.主模式2.从模式3.触发源选择 四、实操案例1.输入捕获模式测频率2.PWMI模式测频率和占空比 总结 声明&#xff1a;学习笔记根据b站江科大自化协stm32入门教程编辑&#xff0c;仅供学…