【nnUNetv2实践】一、nnUNetv2安装

news/2024/11/29 8:46:53/

nnUNet是一个自适应的深度学习框架,专为医学图像分割任务设计。以下是关于nnUNet的详细解释和特点:

  1. 自适应框架:nnUNet能够根据具体的医学图像分割任务自动调整模型结构、训练参数等,从而避免了繁琐的手工调参过程。
  2. 自动化流程:nnUNet包含了从数据预处理到模型训练、验证及测试的全流程自动化工具,大大简化了使用深度学习进行医学图像分割的复杂度。
  3. 自适应网络结构调整:根据输入数据集的特点,nnUNet能够自动选择和配置合适的网络深度、宽度等超参数,确保模型在复杂性和性能之间取得平衡。
  4. Patch-Based Training and Inference:nnUNet使用基于patch级别的训练方法,通过滑窗的方式遍历整个图像进行训练。在推理阶段,也采用类似的方法来生成整个图像的分割结果。这种方法对于处理大尺寸图像或有限显存的情况非常有效。
  5. 集成学习与交叉验证:nnUNet还采用了交叉验证策略以最大程度利用有限的数据集,并结合集成学习技术来提高模型预测的稳定性和准确性。

此外,nnUNet还提供了丰富的文档和示例,帮助用户更好地了解和使用该框架。要使用nnUNet,用户需要安装Python和相应的深度学习框架,然后按照官方文档提供的步骤进行操作即可。

总的来说,nnUNet是一个功能强大、易于使用的深度学习框架,特别适用于医学图像分割任务。它的自适应特性、自动化流程和先进的训练策略使得用户能够更高效地构建和训练模型,同时获得更好的性能表现。

本文介绍nnunetv2的安装方法。

一、创建虚拟环境

首先创建虚拟环境:

conda create -n nnunet python=3.9

进入虚拟环境:

conda activate nnunet

安装pytorch-gpu,先查看cuda版本,输入命令nvidia-smi,如下图,我的版本是12.4:

可以在官网安装合适的版本,不太建议安装最新版本的torch,我这里安装2.0.0(对应的cuda版本11.8,请确保pytorch的cuda版本低于本机的cuda版本,不然可能出问题):

conda install pytorch==2.0.0 torchvision==0.15.0 torchaudio==2.0.0 pytorch-cuda=11.8 -c pytorch -c nvidia

二、安装nnunetv2

本教程采用源码安装的方式,相信使用nnunet的大部分朋友都是为了做实验,从源码安装方便改配置文件,做实验。

首先下载代码,并进行安装(如果已经下载过nnunet,请确保nnunet文件夹内没有自己创建的文件夹):

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

安装nnunet绘制模型结构的模块(如果不需要可以忽略,绘制的结构也不好看):

pip install --upgrade git+https://github.com/FabianIsensee/hiddenlayer.git

三、设置环境变量

首先创建三个文件夹:nnUNet_raw/nnUNet_preprocessed/nnUNet_results,然后设置环境变量。windows用户和linux的环境变量设置方式不同。

本教程直接在nnUNet目录下创建了nnUNet_raw/nnUNet_preprocessed/nnUNet_results三个文件夹,如下图:

1、windows设置环境变量

使用如下命令(路径替换为自己的):

set nnUNet_raw=D:/DeepLearning/nnUNet/nnUNet_raw
set nnUNet_preprocessed=D:/DeepLearning/nnUNet/nnUNet_preprocessed
set nnUNet_results=D:/DeepLearning/nnUNet/nnUNet_results

2、linux设置环境变量

使用如下命令(路径替换为自己的):

export nnUNet_raw="/media/fabian/nnUNet_raw"
export nnUNet_preprocessed="/media/fabian/nnUNet_preprocessed"
export nnUNet_results="/media/fabian/nnUNet_results"

四、训练测试

为了测试安装成功,使用一个【nnunet训练测试小数据集】进行训练测试(该数据集从马萨诸塞道路遥感分割数据集中抽样组成)。

下载该数据集,放入nnUNet_raw目录下并解压(文件夹名字为Dataset120_RoadSegmentation),如下图(务必保证目录结构一致):

以下教程所在目录都是nnUNet目录。

1、数据集格式转换

无需该步骤,该数据集已经被处理过。

2、预处理

如下命令:

nnUNetv2_plan_and_preprocess -d 120 --verify_dataset_integrity

处理完成后,nnUNet_preprocess文件夹下出现处理好的数据:

3、训练

训练,nnunet默认使用五折交叉验证训练,这里只训练一折:

nnUNetv2_train 120 2d 0 

训练起来了,如下图(hiddenlayer我没有安装,没有影响):

可以用nvidia-smi查看显存占用:

nnunet安装成功。


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

相关文章

详细分析Python装饰器(附Demo)

目录 前言1. 基本知识2. 无参装饰器3. 有参装饰器4. 多个装饰器 前言 装饰器类似Java的切点切面增强 推荐阅读: 详细分析Spring中的Around注解(附Demo)java框架 零基础从入门到精通的学习路线 附开源项目面经等(超全&#xff0…

网络安全实训Day5

写在前面 昨天忘更新了......讲的内容不多,就一个NAT。 之前记的NAT的内容:blog.csdn.net/Yisitelz/article/details/131840119 网络安全实训-网络工程 NAT 公网地址与私网地址 公网地址 可以在互联网上被寻址,由运营商统一分配全球唯一的I…

git checkout不同分支时,为啥会把当前分支的修改内容也带到新分支里面?

git checkout不同分支时,为啥会把当前分支的修改内容也带到新分支里面? 当你在Git中从一个分支切换到另一个分支时,如果没有先将当前分支未提交的改动暂存或提交,这些改动会被带到新分支。这是因为Git的工作目录是共享的&#xf…

http发送post请求,发送参数为实体

public static String post(JSONObject json, String url) { String result “”; HttpPost post new HttpPost(url); try { CloseableHttpClient httpClient HttpClients.createDefault(); post.setHeader(“Content-Type”, “application/json;charsetutf-8”); post.add…

【Python循环3/5】条件循环语句

目录 导入 条件循环 边界条件 while循环 死循环 while循环与for循环的区别 总结 知识图谱 导入 我们已经学习了如何利用for语句实现代码重复执行的循环结构。通过遍历列表,输出其中的每一个元素。 for循环就像是排队办事,一个个进入,轮…

轻松打造完美原型:9款在线工具推荐

早年,UI设计师选择的工具有限,功能相对单一,大多数在线原型设计工具都是国外的,语言和网络都增加了设计工作的负担。如今,国内外有许多在线原型设计工具,不仅可以在浏览器上使用,而且还具有团队…

专业无网设备如何远程运维?向日葵远程控制能源场景案例解析

清洁能源领域,拥有庞大的上下游产业链,涉及的相关工业设备门类多、技术覆盖全、行业应用广。在这一领域内,相关专业设备的供应商的核心竞争力除了本身产品的技术能力之外,服务也是重要的一环。 某企业作为致力于节能环保方向的气…

(学习日记)2024.03.18:UCOSIII第二十节:移植到STM32

写在前面: 由于时间的不足与学习的碎片化,写博客变得有些奢侈。 但是对于记录学习(忘了以后能快速复习)的渴望一天天变得强烈。 既然如此 不如以天为单位,以时间为顺序,仅仅将博客当做一个知识学习的目录&a…