【項目】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.pswp.cn/news/897414.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/897414.shtml
英文地址,請注明出處:http://en.pswp.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…