nnU-Netv2新手教程,训练用数据集BraTs2021
nnUnet方法源自论文
大佬文章 https://www.nature.com/articles/s41592-020-01008-z
《Automated Design of Deep Learning Methods for Biomedical Image Segmentation》,来自德国癌症研究中心。
源码地址:https://github.com/MIC-DKFZ/nnUNet。
nnUNet浓缩了医学图像的语义分割领域的大部分知识,并且具备自动为不同任务设计不同训练方案的框架,不需要人工进行调参。
安装Anaconda
方式一:从官网下载
官网首页:https://www.anaconda.com/
官网下载页:https://www.anaconda.com/products/individual#Downloads
根据你的系统选择相应的installer即可
方式二:清华镜像下载(中国大陆推荐)
在官网下载比较慢,而且容易断开连接,推荐用下面清华镜像方式:
下载地址:https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/
打开后,可以通过时间排序找到最新版本下载,或者选一个你想要的版本。


勾选添加环境变量(不勾选的话,需要手动添加)
第二个勾选则是选择anaconda的python优先级最高,不管电脑是否安装了其他版本的python
手动添加环境变量如下:

硬盘已分区的情况下,不建议将Anaconda安装在C盘,建议安装在D盘等非系统盘
将以下环境变量,相应用户的目录可能会有所不同,但是后面的路径名相同。点击编辑,添加至path中
C:\anaconda3
C:\anaconda3\Scripts
C:\anaconda3\Library\bin
C:\anaconda3\Library\mingw-w64\bin
安装完成后,在CMD下输入conda

显示如图即安装成功
首先打开anaconda版的cmd(Anaconda Prompt),创建一个虚拟环境,创建指令为
conda create -n nnU-Net python=3.9


proceed 选择 y
创建完成后激活环境,指令为:
conda activate nnU-Net

我们可以看到已经切换到之前创建的nnU-Net环境
安装Pytorch,指令为:
在cmd下输入指令:nvidia-smi 红框为自己电脑的cuda版本。查看自己显卡的cuda版本
注意,下载pytorch时,cuda只能向下兼容,例如我的cuda为12.0,那么选择11.8,不能选择12.1及以上,另一台电脑为12.7则选择12.4,12.1和11.8均可,建议选择与自己版本相近的)
ps:如果自己显卡cuda过旧,可点击红框,下载先前的pytorch版本,注意要选择自己对应的操作系统

复制Run this Command,安装pytorch(cmd下) 选择cuda对应的版本(cuda向下兼容)
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu124

创建文件夹,用pycharm打开 Open Folder as PyCharm Project

打开pycharm,给项目添加解释器,将conda下面的nnU-Net环境添加至项目

配置完成后检查cuda和CPU是否可用

返回结果

安装Git插件,在pycharm设置Git路径
下载安装


对pycharm进行git的配置

选择正确的git路径,点击测试,即可显示版本

安装nnunet库(使用Git的方法安装):
首先在设置中将工具终端的shell路径设置为cmd(以便于在pycharm终端进行项目管理)

在pycharm打开终端,开始安装nnU-Netv2

git clone https://github.com/MIC-DKFZ/nnUNet.git
cd nnUNet
pip install -e .

在nnUNet文件夹中创建一个新文件夹nnUNetFrame,在该文件夹中新建三个文件夹:
nnUNet_raw
nnUNet_preprocessed
nnUNet_results
文件夹名称固定(raw存放原始数据集,preprocessed存放预处理后的训练计划,results存放训练结果等
修改data_process.py,用于处理BraTS2021 原始数据集
原始数据集并不满足nnU-Net的数据规范,因此我们需要将数据转换为规范数据。
这里data_process.py的编写,可以参考Deeplearning\nnUNet\nnunetv2\dataset_conversion目录下的文件
这里我们用到的是BraTS2021的数据集,因此可以参考Dataset137

data_process.py代码如下
import multiprocessing
import shutil
from multiprocessing import Pool
import SimpleITK as sitk
import numpy as np
from batchgenerators.utilities.file_and_folder_operations import *
from nnUNet.nnunetv2.dataset_conversion.generate_dataset_json import generate_dataset_json
#定义函数 将BraTS标签转换为nnU-Net格式
def copy_BraTS_segmentation_and_convert_labels_to_nnUNet(in_file: str, out_file: str) -> None:
# use this for segmentation only!!!
# nnUNet wants the labels to be continuous. BraTS is 0, 1, 2, 4 -> we make that into 0, 1, 2, 3
img = sitk.ReadImage(in_file)
img_npy = sitk.GetArrayFromImage(img)
uniques = np.unique(img_npy)
for u in uniques:
if u not in [0, 1</


最低0.47元/天 解锁文章
7255

被折叠的 条评论
为什么被折叠?



