全網(wǎng)都在用的nnUNet V2版本改進(jìn)了啥,怎么安裝婿奔?(一)

nnUNet缺狠,這個(gè)醫(yī)學(xué)領(lǐng)域的分割巨無(wú)霸!在論文和比賽中隨處可見(jiàn)他的身影。大家對(duì)于nnUNet v1版本的教程都贊不絕口萍摊,因?yàn)樗?jiǎn)單易懂挤茄、詳細(xì)全面,讓很多朋友都輕松掌握了使用方法冰木。

最近穷劈,我也抽出時(shí)間仔細(xì)研究了nnUNet v2,并全程走過(guò)一遍流程踊沸。我努力將使用教程變得更加通俗易懂歇终,希望能提高大家的學(xué)習(xí)效率。如果你正在進(jìn)行分割任務(wù)逼龟,或者還沒(méi)有嘗試過(guò)nnUNet v2评凝,那么現(xiàn)在是時(shí)候跟著我一起學(xué)習(xí)啦!

我們將一步步解析nnUNet v2的改進(jìn)之處和操作步驟腺律,用簡(jiǎn)潔明快的語(yǔ)言讓你輕松理解奕短。無(wú)論你是醫(yī)學(xué)專(zhuān)業(yè)背景還是計(jì)算機(jī)科學(xué)領(lǐng)域的新手宜肉,都能夠輕松上手,掌握這個(gè)強(qiáng)大的工具翎碑。

內(nèi)容稍長(zhǎng)崖飘,我把它分為三個(gè)章節(jié),拆解難點(diǎn)

  • nnUNet v2的不同之處杈女,安裝以及環(huán)境變量設(shè)置(這次內(nèi)容)
  • nnUNet v2的數(shù)據(jù)準(zhǔn)備(下一篇)
  • nnUNet v2的訓(xùn)練及推理(下下篇)

nnUNet v2版本與V1版有什么不同?

  • 支持層次標(biāo)簽 'hierarchical labels'(在nnUNet中稱(chēng)為 'regions')吊圾。例如达椰,在 BraTS 這個(gè)數(shù)據(jù)集中,給定的 label 是“水腫”项乒、“壞死”和“增強(qiáng)腫瘤”啰劲。但是對(duì)于臨床應(yīng)用而言,他們關(guān)注的不是這三個(gè) label檀何,而是整個(gè)腫瘤蝇裤、腫瘤核心和增強(qiáng)腫瘤。 那么频鉴,這里的整個(gè)腫瘤就是 水腫+壞死+增強(qiáng)腫瘤; 腫瘤核心是 壞死+增強(qiáng)腫瘤栓辜。如果想按臨床的這個(gè)進(jìn)行分割,他的 label 是有重疊的垛孔。如下圖: [圖片上傳失敗...(image-d4afac-1693736127587)]

    適用于某些有重疊任務(wù)的分割藕甩,具體詳見(jiàn) github[1]

  • 支持跨平臺(tái), Cuda, mps (Apple M1/M2) and CPU

  • 支持更多的輸入/輸出數(shù)據(jù)格式周荐。

  • 通過(guò)基于 BaseReaderWriter 實(shí)現(xiàn)新的適配器狭莱,可以擴(kuò)展I/O格式。

  • nnUNet_raw_cropped 文件夾不再存在概作,這樣可以節(jié)省磁盤(pán)空間腋妙,而且沒(méi)有性能損失

  • 在解壓縮時(shí),預(yù)處理數(shù)據(jù)和分割結(jié)果存儲(chǔ)在不同的文件中讯榕。分割結(jié)果以int8的格式存儲(chǔ)骤素,因此每個(gè)像素占用的磁盤(pán)空間(和I/O吞吐量)只有v1版本的四分之一。

  • 原生支持多GPU(DDP)訓(xùn)練愚屁。但是谆甜,多GPU推斷仍然需要使用 CUDA_VISIBLE_DEVICES=X nnUNetv2_predict [...] -num_parts Y -part_id X 來(lái)運(yùn)行。在推斷過(guò)程中集绰,沒(méi)有跨GPU的通信规辱,所以增加DDP會(huì)增加額外的復(fù)雜性是沒(méi)有意義的。

  • 所有nnU-Net的功能現(xiàn)在也可以通過(guò)API進(jìn)行訪問(wèn)栽燕。請(qǐng)查看 setup.py 中對(duì)應(yīng)的入口點(diǎn)罕袋,以了解需要調(diào)用哪些函數(shù)改淑。

  • 數(shù)據(jù)集指紋現(xiàn)在明確地創(chuàng)建并保存在一個(gè)json文件中(參見(jiàn)nnUNet_preprocessed文件夾)。

其實(shí)大改動(dòng)不多浴讯,如果你只是一個(gè)初級(jí)用戶(hù)朵夏,很多改進(jìn)功能根本用不到。

如何安裝

雖然 官方說(shuō) nnunet 的兩個(gè)版本可以同時(shí)使用榆纽,但我還是建議將兩個(gè)版本分開(kāi)仰猖,放在不同的虛擬環(huán)境中。

安裝需求

  • 操作系統(tǒng):nnU-Net 已在 Linux(Ubuntu 18.04奈籽、20.04饥侵、22.04;centOS衣屏、RHEL)躏升、Windows 和 MacOS 上進(jìn)行了測(cè)試!它應(yīng)該開(kāi)箱即用狼忱!
  • 硬件要求:GPU(推薦)膨疏、CPU 和 Apple M1/M2 作為設(shè)備(目前 Apple mps 不實(shí)現(xiàn) 3D 卷積,因此您可能必須在這些設(shè)備上使用 CPU)钻弄。
  • Python 3.9 或更高版本 在第一版本中佃却,nnunet v1 安裝教程[2]介紹了如何在虛擬環(huán)境中安裝 nnUNet, 但是略顯復(fù)雜窘俺。這一次直接用 conda 安裝

安裝步驟

  1. 首先新建一個(gè) conda 環(huán)境双霍,命名為 nnunet2(名字由你決定)

<pre class="custom" data-tool="mdnice編輯器" style="margin-top: 10px; margin-bottom: 10px; border-radius: 5px; box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px; text-align: left;">conda create -n nnunet2 python==3.9 </pre>

  1. 激活該環(huán)境,并安裝 nnunetv2

<pre class="custom" data-tool="mdnice編輯器" style="margin-top: 10px; margin-bottom: 10px; border-radius: 5px; box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px; text-align: left;">conda activate nnunet2 pip install nnunetv2 </pre>

設(shè)置環(huán)境變量/路徑

nnU-Net 依靠環(huán)境變量來(lái)了解原始數(shù)據(jù)批销、預(yù)處理數(shù)據(jù)和訓(xùn)練模型權(quán)重的存儲(chǔ)位置洒闸。要使用 nnU-Net 的完整功能,必須設(shè)置以下三個(gè)環(huán)境變量:

V1均芽,v2 版本中路徑有所不同丘逸。如果你已經(jīng)裝了 V1 版本,那么 V2 版本的路徑最好和 V1不同掀宋,以防打架深纲。

具體地,V2 應(yīng)該包含以下三個(gè)路徑:

  1. nnUNet_raw:這是放置原始數(shù)據(jù)集的地方劲妙。該文件夾將為每個(gè)數(shù)據(jù)集名稱(chēng)創(chuàng)建一個(gè)子文件夾 DatasetXXX_YYY湃鹊,其中 XXX 是 3 位標(biāo)識(shí)符(例如 001、002镣奋、043币呵、999...),YYY 是(唯一) 數(shù)據(jù)集名稱(chēng)侨颈。數(shù)據(jù)集必須采用 nnU-Net 格式

    樹(shù)結(jié)構(gòu)示例:

    <pre class="custom" style="margin-top: 10px; margin-bottom: 10px; border-radius: 5px; box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px; text-align: left;">nnUNet_raw/Dataset001_NAME1 ├── dataset.json ├── imagesTr │ ├── ... ├── imagesTs │ ├── ... └── labelsTr ├── ... nnUNet_raw/Dataset002_NAME2 ├── dataset.json ├── imagesTr │ ├── ... ├── imagesTs │ ├── ... └── labelsTr ├── ... </pre>

  2. nnUNet_preprocessed:這是保存預(yù)處理數(shù)據(jù)的文件夾余赢。數(shù)據(jù)也將從中讀取 訓(xùn)練期間使用此文件夾芯义。重要的是,該文件夾位于訪問(wèn)延遲低且高的驅(qū)動(dòng)器上 吞吐量

  3. nnUNet_results:指定 nnU-Net 保存模型權(quán)重的位置妻柒。如果下載了預(yù)訓(xùn)練模型扛拨,則此 就是保存他們的地方。

V1 版本的路徑設(shè)置見(jiàn)之前的文章:給出了永久設(shè)置環(huán)境變量的方法 nnU-Net v1 如何安裝--傻瓜式安裝教程[3]

注意:如果設(shè)置永久變量的話举塔,V1和V2版本都安裝了的話绑警,其實(shí)有一個(gè)文件夾命名是相同的(nnUNet_preprocessed),那你調(diào)用的時(shí)候就分不清 V1和V2的文件夾了央渣。

這里计盒,再給一種更方便的臨時(shí)路徑設(shè)置辦法

  • step1: 創(chuàng)建一個(gè) setPath.sh 文件,里面包含如下內(nèi)容痹屹,

<pre class="custom" data-tool="mdnice編輯器" style="margin-top: 10px; margin-bottom: 10px; border-radius: 5px; box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px; text-align: left;">#!/bin/bash export nnUNet_raw="/media/nunet2_folder/nnUNet_raw" export nnUNet_preprocessed="/media/nnunet2_folder/nnUNet_preprocessed" export nnUNet_results="/media/nnunet2_folder/nnUNet_results" </pre>

tips:怎么創(chuàng)建一個(gè)setPath.sh文件 要?jiǎng)?chuàng)建一個(gè)名為"setPath.sh"的文件,你可以按照以下步驟進(jìn)行操作:

  1. 打開(kāi)一個(gè)文本編輯器枉氮,例如記事本或者終端上的文本編輯器志衍。

  2. 創(chuàng)建一個(gè)新的空白文件。

  3. 在文件中輸入上述內(nèi)容

  4. 保存并關(guān)閉文件聊替。

當(dāng)然楼肪,前提是,你要手動(dòng)創(chuàng)建這個(gè)三個(gè)文件夾惹悄,再把地址告訴環(huán)境變量

  • step2: 每次運(yùn)行 nnunetv2 之前運(yùn)行一下此文件

<pre class="custom" data-tool="mdnice編輯器" style="margin-top: 10px; margin-bottom: 10px; border-radius: 5px; box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px; text-align: left;">source setPath.sh </pre>

  • step3: 檢驗(yàn)是否起效

<pre class="custom" data-tool="mdnice編輯器" style="margin-top: 10px; margin-bottom: 10px; border-radius: 5px; box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px; text-align: left;">echo $nnUNet_results </pre>

如果返回的是我們?cè)O(shè)置的地址春叫,則起效

V1和V2路徑對(duì)比如下 [圖片上傳失敗...(image-40951-1693736127588)]

好了,煉丹爐已就位泣港。帶上你的數(shù)據(jù)暂殖,下一篇進(jìn)行數(shù)據(jù)預(yù)處理。

[圖片上傳失敗...(image-66e115-1693736127588)]

參考資料

[1]

層次標(biāo)簽: https://github.com/MIC-DKFZ/nnUNet/blob/master/documentation/region_based_training.md [2]

nnunet v1 安裝教程: https://blog.csdn.net/u014264373/article/details/117126627 [3]

nnU-Net v1 如何安裝--傻瓜式安裝教程: https://blog.csdn.net/u014264373/article/details/117126627

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末当纱,一起剝皮案震驚了整個(gè)濱河市呛每,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌坡氯,老刑警劉巖晨横,帶你破解...
    沈念sama閱讀 219,188評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異箫柳,居然都是意外死亡手形,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,464評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)悯恍,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)库糠,“玉大人,你說(shuō)我怎么就攤上這事涮毫÷妫” “怎么了鳞骤?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,562評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)黍判。 經(jīng)常有香客問(wèn)我豫尽,道長(zhǎng),這世上最難降的妖魔是什么顷帖? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,893評(píng)論 1 295
  • 正文 為了忘掉前任美旧,我火速辦了婚禮,結(jié)果婚禮上贬墩,老公的妹妹穿的比我還像新娘榴嗅。我一直安慰自己,他們只是感情好陶舞,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,917評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布嗽测。 她就那樣靜靜地躺著,像睡著了一般肿孵。 火紅的嫁衣襯著肌膚如雪唠粥。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,708評(píng)論 1 305
  • 那天停做,我揣著相機(jī)與錄音晤愧,去河邊找鬼。 笑死蛉腌,一個(gè)胖子當(dāng)著我的面吹牛官份,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播烙丛,決...
    沈念sama閱讀 40,430評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼舅巷,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了河咽?” 一聲冷哼從身側(cè)響起悄谐,我...
    開(kāi)封第一講書(shū)人閱讀 39,342評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎库北,沒(méi)想到半個(gè)月后爬舰,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,801評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡寒瓦,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,976評(píng)論 3 337
  • 正文 我和宋清朗相戀三年情屹,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片杂腰。...
    茶點(diǎn)故事閱讀 40,115評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡垃你,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情惜颇,我是刑警寧澤皆刺,帶...
    沈念sama閱讀 35,804評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站凌摄,受9級(jí)特大地震影響羡蛾,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜锨亏,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,458評(píng)論 3 331
  • 文/蒙蒙 一痴怨、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧器予,春花似錦浪藻、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,008評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至反浓,卻和暖如春萌丈,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背勾习。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,135評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工浓瞪, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留懈玻,地道東北人巧婶。 一個(gè)月前我還...
    沈念sama閱讀 48,365評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像涂乌,于是被迫代替她去往敵國(guó)和親艺栈。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,055評(píng)論 2 355