【项目】nnUnetv2复现

news2025/3/12 4:07:47

作者提出一种nnUNet(no-new-Net)框架,基于原始的UNet(很小的修改),不去采用哪些新的结构,如相残差连接、dense连接、注意力机制等花里胡哨的东西。相反的,把重心放在:预处理(resampling和normalization)、训练(loss,optimizer设置、数据增广)、推理(patch-based策略、test-time-augmentations集成和模型集成等)、后处理(如增强单连通域等)。

1. 环境搭建

操作系统:支持 Linux (ubuntu22.04)

GPU:RTX 4090D(24GB) 

Python版本:3.9 或更高版本

1.1. 安装 PyTorch

注意:在正确安装 PyTorch 之前,请勿直接使用"pip install nnunetv2"进行安装。


按照PyTorchStart Locally | PyTorch官方网站的说明安装 PyTorch。请安装支持你硬件(CUDA、MPS、CPU)的最新版本。

使用Conda安装:

conda install pytorch torchvision torchaudio cpuonly -c pytorch

使用Pip安装:

pip install torch torchvision torchaudio

自行编译安装:

为了获得最快的速度,考虑自行编译 PyTorch(需要一点技术含量……)pytorch/pytorch:Python 中的张量和动态神经网络,具有强大的 GPU 加速

# 克隆 PyTorch 源代码仓库
git clone --recursive https://github.com/pytorch/pytorch
cd pytorch

# 安装编译所需的依赖
# ...

# 编译并安装 PyTorch
python setup.py install

1.2. 安装 nnU-Net(根据你的使用场景)

安装 nnU-Net 会在你的终端中添加几个新命令(用于运行整个 nnU-Net 流水线):

①所有 nnU-Net 命令都带有"nnUNetv2_"前缀,便于识别。

②请注意,这些命令只是执行 Python 脚本。(pyproject.toml文件中的 project.scripts 写明了执行的是哪些脚本/函数。)

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

③所有 nnU-Net 命令都有一个"-h"选项,用于提供如何使用它们的信息。


方法一

pip install nnunetv2

解释:这是一种简单直接的安装方式,通过 pip 命令从 Python 包索引(通常是 PyPI)下载并安装 nnUNetv2 包。这种方式安装的是已经打包好的稳定版本,你可以直接使用其中提供的标准化基准、分割算法,或者利用预训练模型进行推理任务。你无需关心代码的具体实现细节,就像使用一个现成的工具一样。

适用场景:如果你只是想快速使用 nnUNetv2 来完成一些分割任务,比如对一些医学图像进行分割,或者验证某个数据集在 nnUNetv2 上的表现,而不需要对代码进行修改和定制,那么这种安装方式就很合适。


方法二 

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

解释:这种方式首先使用 git clone 命令从 GitHub 仓库克隆 nnUNet 的源代码到本地计算机,然后进入克隆下来的代码目录,最后使用 pip install -e . 命令进行安装。其中,-e 选项表示以 “可编辑模式” 安装,这意味着你对本地代码所做的任何修改都会立即生效,无需重新安装。通过这种方式,你可以在本地拥有一份完整的 nnUNet 代码副本,方便你对代码进行修改、调试和扩展。

适用场景:如果你希望深入学习 nnUNetv2 的算法原理,对代码进行定制化开发,例如修改模型结构、调整训练策略、添加新的功能等,那么这种安装方式就更适合你。


这里使用第二种方式

root@autodl-container-7f114d8374-8fa873f5:~# git clone https://github.com/MIC-DKFZ/nnUNet.git
Cloning into 'nnUNet'...
remote: Enumerating objects: 13663, done.
remote: Counting objects: 100% (890/890), done.
remote: Compressing objects: 100% (347/347), done.
remote: Total 13663 (delta 635), reused 747 (delta 543), pack-reused 12773 (from 3)
Receiving objects: 100% (13663/13663), 7.96 MiB | 9.36 MiB/s, done.
Resolving deltas: 100% (10404/10404), done.

发现这就是一个下载源码的指令……我之前还在官网下载了之后传到autodl……多此一举了。

root@autodl-container-7f114d8374-8fa873f5:~# cd nnUNet
root@autodl-container-7f114d8374-8fa873f5:~/nnUNet# pip install -e .

……一些安装显示

先执行 bash 命令“cd nnUNet”,用于切换到名为 nnUNet 的目录。(在执行 git clone 命令后,你需要进入下载的 nnUNet 代码目录,以便后续对该项目进行操作),再执行pip 命令

pip install -e .

-e 选项表示以 “可编辑模式”(也称为开发模式)安装项目。

. 表示当前目录(即 nnUNet 目录)。

这个命令的作用:

①会安装 nnUNet 项目及其所有依赖项(对于包含 setup.py 或 pyproject.toml 的项目) 

又学到了一个配置项目环境的方法,但是前提是:项目是以 Python 编写;项目遵循 Python 包的标准结构;项目里有 setup.py 或 pyproject.toml

②将项目安装为可编辑模式(Editable Install),适合本地开发调试,安装后对本地代码所做的任何修改都会立即生效,而不需要重新安装整个包。


1.3. 设置环境变量

nnU-Net 依靠环境变量来确定原始数据、预处理数据以及训练好的模型权重存储位置

要充分使用 nnU-Net 的全部功能,必须设置三个环境变量:

①nnUNet_raw:放置原始数据集的位置。

②nnUNet_preprocessed:这是保存预处理数据的文件夹。

③nnUNet_results:保存模型权重的位置。如果下载了预训练模型,也会将其保存在这里。


设置环境变量分为永久设置和临时设置,这里选择永久设置

在 Ubuntu 系统中,.bashrc 文件位于你的主目录(即你的用户目录)下。它是一个隐藏文件,因此你可能需要启用显示隐藏文件的功能才能看到它。

先切换到主目录,再查看主目录下的所有文件(包括隐藏文件)

(base) root@autodl-container-7f114d8374-8fa873

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2311639.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【大学生体质】智能 AI 旅游推荐平台(Vue+SpringBoot3)-完整部署教程

智能 AI 旅游推荐平台开源文档 项目前端地址 ☀️项目介绍 智能 AI 旅游推荐平台(Intelligent AI Travel Recommendation Platform)是一个利用 AI 模型和数据分析为用户提供个性化旅游路线推荐、景点评分、旅游攻略分享等功能的综合性系统。该系统融合…

TCP7680端口是什么服务

WAF上看到有好多tcp7680端口的访问信息 于是上网搜索了一下,确认TCP7680端口是Windows系统更新“传递优化”功能的服务端口,个人理解应该是Windows利用这个TCP7680端口,直接从内网已经具备更新包的主机上共享下载该升级包,无需从微…

恭喜!《哪吒2》明天将荣登世界影坛第六!目前仅差1.81亿元

全球总票房为为20.27亿美元!3月8日将荣登世界影坛第六宝座! 中国票房 内地票房 中国电影票房、灯塔、猫眼三大数据源加权平均得出《哪吒2》中国内地总票房为144.26亿元人民币。 港澳票房 目前港澳地区没有新的数据显示,按3月6日1905电影网…

e2studio开发RA4M2(15)----配置RTC时钟及显示时间

e2studio开发RA4M2.15--配置RTC时钟及显示时间 概述视频教学样品申请硬件准备参考程序源码下载新建工程工程模板保存工程路径芯片配置工程模板选择时钟设置SWD调试口设置UART配置UART属性配置设置e2studio堆栈e2studio的重定向printf设置R_SCI_UART_Open()函数原型回调函数user…

Flink深入浅出之04:时间、水印、TableSQL

深入理解Flink的waterMark的机制、Flink Table和SQL开发 3️⃣ 目标 掌握WaterMark的的原理掌握WaterMark的运用掌握Flink Table和SQL开发 4️⃣ 要点 📖 1. Flink中的Time概念 对于流式数据处理,最大的特点是数据上具有时间的属性特征 Flink根据时…

MongoDB Compass 使用说明

MongoDB Compass 使用说明 安装工具栏按钮详细介绍Connect(连接)1. New Window(新窗口)2. Disconnect(断开连接)3. Import Saved Connections(导入保存的连接)4. Export Saved Connections(导出…

Halcon 算子 一维码检测识别、项目案例

首先我们要明白码的识别思路 把窗口全部关闭读取新的图片图像预处理创建条码模型设置模型参数搜索模型获取条码结果显示条码结果 图像预处理和条码增强 对比度太低: scale_image(或使用外部程序scale_image_range),增强图像的对比度图像模糊…

信号完整性基础:高速信号的扩频时钟SSC测试

扩频时钟 SSC 是 Spread Spectrum Clock 的英文缩写,目前很多数字电路芯片都支持 SSC 功能,如:PCIE、USB3.0、SATA 等等。那么扩频时钟是用来做什么的呢? SSC背景: 扩频时钟是出于解决电磁干扰(EMI&#…

stm32移植LCD2002驱动

介绍 LCD2002支持20X2个字符串显示,引脚功能和读写时序跟LCD1602都很像 LCD类型:字符点阵 点 阵 数:202 外形尺寸:116.0mm37.0mm(长宽) 视域尺寸:83.0mm18.6mm 点 距 离:0.05mm…

OpenCV计算摄影学(18)平滑图像中的纹理区域同时保留边缘信息函数textureFlattening()

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 cv::textureFlattening 是 OpenCV 中用于图像处理的一个函数,旨在平滑图像中的纹理区域,同时保留边缘信息。该技术特别适…

“此电脑”中删除WPS云盘方法(百度网盘通用)

📣此方法适用于卸载WPS云盘后,WPS云盘图标依然在此电脑中显示的问题。 原理:通过注册来进行删除 步骤: WIN键R,打开运行窗口,输入regedit命令,来打开【注册表编辑器】; 从左侧,依…

Agent革命:Manus如何用工作流拆解掀起AI生产力革命

一、现象级产品的诞生背景 2025年3月6日,一款名为Manus的AI产品在技术圈引发地震式传播。其官方测试数据显示:在GAIA基准测试中,基础任务准确率达86.5%(接近人类水平),中高级任务完成率突破57%。这标志着A…

四款GIS工具箱软件解析:满足企业多样化空间数据需求

概述 随着地理信息系统(GIS)在城市规划、环境监测、资源管理等领域的广泛应用,各种GIS工具箱软件不断涌现,为用户提供了强大的数据处理、空间分析和地图制图功能。本文将为大家介绍4款GIS工具箱软件,这些软件各具特色…

After Effects的图钉与关键帧动画

姜 子 博 引言 在数字媒体时代,动态图形和视觉效果在信息传播和表达中扮演着越来越重要的角色。After Effects 作为行业领先的软件,提供了丰富的工具和功能,帮助用户创作出令人惊叹的视觉作品。图钉工具和关键帧动画是 AE 中实现复杂动画效…

SAP DOI EXCEL宏的使用

OAOR里上传EXCEL模版 屏幕初始化PBO创建DOI EXCEL对象,并填充EXCEL内容 *&---------------------------------------------------------------------* *& Module INIT_DOI_DISPLAY_9100 OUTPUT *&--------------------------------------------…

新编大学应用英语综合教程3 U校园全套参考答案

获取全套答案: 链接:https://pan.quark.cn/s/abaa0338724e

高考數學。。。

2024上 具体来说,直线的参数方程可以写为: x1t y−t z1t 二、简答题(本大题共5小题,每小题7分,共35分。) 12.数学学习评价不仅要关注结果评价,也要关注过程评价。简要说明过程评价应关注哪几个方面。…

STM32 子设备通过CAN发送数据到主设备

采集ADC、GPS经纬坐标、温湿度数据、大气压数据通过CAN方式发送给主设备端,帧ID按照如下定义: 我尼玛一个标准帧ID位数据是11位,扩展帧才是111829位,它说最开头的是四位是真类型,并给我如下解释: 它把帧的定…

HCIA-IP路由动态-RIP

一、概念 动态路由是指路由器通过运行动态路由协议(RIP、OSPF等),自动学习和发现网络中的路由信息。路由器之间通过交换路由协议数据包,互相通告自己所知道的网络信息,从而构建和更新路由表。 二、RIP(路由信息协议)…

CentOS7离线部署安装docker和docker-compose

CentOS7离线部署安装docker和docker-compose 安装包准备 docker下载地址、docker-compose下载地址 docker和docker-compose版本对应关系 注:本次安装部署选择的版本是 docker:docker-28.0.1.tgzdocker-compose:docker-compose-linux-x86_6…