【项目】nnUnetv2复现

作者提出一种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 文件位于你的主目录(即你的用户目录)下。它是一个隐藏文件&

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

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

相关文章

代码随想录算法训练营第八天|Leetcode 151.翻转字符串里的单词 卡码网:55.右旋转字符串 字符串总结 双指针回顾

151.翻转字符串里的单词 建议:这道题目基本把 刚刚做过的字符串操作 都覆盖了,不过就算知道解题思路,本题代码并不容易写,要多练一练。 题目链接/文章讲解/视频讲解:代码随想录 我们这道题的思路是,先将整…

【计算机网络】计算机网络的性能指标——时延、时延带宽积、往返时延、信道利用率

计算机网络的性能指标 导读 大家好,很高兴又和大家见面啦!!! 在上一篇内容中我们介绍了计算机网络的三个性能指标——速率、带宽和吞吐量。用大白话来说就是:网速、最高网速和实时网速。 相信大家看到这三个词应该就…

Refreshtoken 前端 安全 前端安全方面

网络安全 前端不需要过硬的网络安全方面的知识,但是能够了解大多数的网络安全,并且可以进行简单的防御前两三个是需要的 介绍一下常见的安全问题,解决方式,和小的Demo,希望大家喜欢 网络安全汇总 XSSCSRF点击劫持SQL注入OS注入请求劫持DDOS 在我看来,前端可以了解并且防御前…

vue3框架的响应式依赖追踪机制

当存在一个响应式变量于视图中发生改变时会更新当前组件的所以视图显示,但是没有视图中不写这个响应式变量就就算修改该变量也不会修改视图,这是为什么?我们能否可以理解宽泛的理解为vue组件的更新就是视图的更新,单当视图中不存在…

C#核心(22)string

前言 我们在之前的学习中已经学习过了很多数字类型的数据结构,但一直没有讲解除了char以外的字符串相关的知识点,这也是我们继继承,封装,重载这些知识点之后要补充讲解的核心知识点。 你也发现了,其实在密封函数之后我们就已经开始进入更底层的方面为你讲解知识点了,这…

Spring Boot 本地缓存工具类设计与实现

在 Spring Boot 应用中,缓存是提升性能的重要手段之一。为了更方便地使用缓存,我们可以设计一套通用的本地缓存工具类,封装常见的缓存操作,简化开发流程。本文将详细介绍如何设计并实现一套 Spring Boot 本地缓存工具类&#xff0…

引领变革!北京爱悦诗科技有限公司荣获“GAS消费电子科创奖-产品创新奖”!

在2025年“GAS消费电子科创奖”评选中,北京爱悦诗科技有限公司提交的“aigo爱国者GS06”,在技术创新性、设计创新性、工艺创新性、智能化创新性及原创性五大维度均获得评委的高度认可,荣获“产品创新奖”。 这一奖项不仅是对爱悦诗在消费电子…

考研英语语法全攻略:从基础到长难句剖析​

引言 在考研英语的备考之旅中,语法犹如一座灯塔,为我们在浩瀚的英语知识海洋中指引方向。无论是阅读理解中复杂长难句的解读,还是写作时准确流畅表达的需求,扎实的语法基础都起着至关重要的作用。本文将结合有道考研语法基础入门课的相关内容,为大家全面梳理考研英语语法…

构建自己的AI客服【根据用户输入生成EL表达式】

要实现一个基于对话形式的AI客服系统,该系统能够提示用户输入必要的信息,并根据用户的输入生成相应的EL(Expression Language)表达式编排规则,您可以按照以下步骤进行设计和开发。本文将涵盖系统架构设计、关键技术选型…

【JavaWeb12】数据交换与异步请求:JSON与Ajax的绝妙搭配是否塑造了Web的交互革命?

文章目录 🌍一. 数据交换--JSON❄️1. JSON介绍❄️2. JSON 快速入门❄️3. JSON 对象和字符串对象转换❄️4. JSON 在 java 中使用❄️5. 代码演示 🌍二. 异步请求--Ajax❄️1. 基本介绍❄️2. JavaScript 原生 Ajax 请求❄️3. JQuery 的 Ajax 请求 &a…

解决CentOS 8.5被恶意扫描的问题

CentOS 8 官方仓库已停止维护(EOL),导致一些常用依赖包如fail2ban 无法正常安装。 完整解决方案: 一、问题根源 CentOS 8 官方仓库已停更:2021 年底 CentOS 8 停止维护,默认仓库的包可能无法满足依赖关系。EPEL 仓库兼容性:EPEL 仓库可能未适配 CentOS 8.5 的旧版本依赖…

使用格式工厂提取视频中的音频

选择输出格式:在格式工厂的左侧功能栏中,点击 “音频” 选项,会展开多种音频格式,根据自己的需求选择如 “MP3”“WAV”“WMA” 等作为输出格式。添加视频文件:点击 “添加文件” 按钮,在弹出的文件浏览器中…

前端杂的学习笔记

什么是nginx Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器 Nginx是一款轻量级的Web 服务器/反向代理服务器,处理高并发能力是十分强大的,并且支持热部署,启动简单,可以做到7*24不间断运行 正代和反代 学习nginx&a…

玩转ChatGPT:GPT 深入研究功能

一、写在前面 民间总结: 理科看Claude 3.7 Sonnet 文科看DeepSeek-R1 那么,ChatGPT呢? 看Deep Research(深入研究)功能。 对于科研狗来说,在这个文章爆炸的时代,如何利用AI准确、高效地收…

RabbitMQ 2025/3/5

高性能异步通信组件。 同步调用 以支付为例: 可见容易发生雪崩。 异步调用 以支付为例: 支付服务当甩手掌柜了,不管后面的几个服务的结果。只管库库发,后面那几个服务想取的时候就取,因为消息代理里可以一直装&#x…

Win10 访问 Ubuntu 18 硬盘

目录 方案一:使用Samba共享服务Ubuntu 18 端配置Windows 10 端访问 方案二:使用 SSHFS(需在 Windows 上安装 SSH 客户端)Ubuntu 18 端配置Windows 10 端配置 方案三:使用 FTP 服务Ubuntu 18 端配置Windows 10 端访问 方…

Android15使用FFmpeg解码并播放MP4视频完整示例

效果: 1.编译FFmpeg库: 下载FFmpeg-kit的源码并编译生成安装平台库 2.复制生成的FFmpeg库so文件与包含目录到自己的Android下 如果没有prebuiltLibs目录,创建一个,然后复制 包含目录只复制arm64-v8a下

Hadoop、Hive、Spark的关系

Part1:Hadoop、Hive、Spark关系概览 1、MapReduce on Hadoop 和spark都是数据计算框架,一般认为spark的速度比MR快2-3倍。 2、mapreduce是数据计算的过程,map将一个任务分成多个小任务,reduce的部分将结果汇总之后返回。 3、HIv…

计算机网络篇:基础知识总结与基于长期主义的内容更新

基础知识总结 和 MySQL 类似,我同样花了一周左右的时间根据 csview 对计算机网络部分的八股文进行了整理,主要的内容包括:概述、TCP 与 UDP、IP、HTTP,其中我个人认为最重要的是 TCP 这部分的内容。 在此做一篇目录索引&#xf…

[密码学实战]Java实现国密TLSv1.3单向认证

一、代码运行结果 1.1 运行环境 1.2 运行结果 1.3 项目架构 二、TLS 协议基础与国密背景 2.1 TLS 协议的核心作用 TLS(Transport Layer Security) 是保障网络通信安全的加密协议,位于 TCP/IP 协议栈的应用层和传输层之间,提供: • 数据机密性:通过对称加密算法(如 AE…