圖像分割通過將數(shù)字圖像的表示形式轉(zhuǎn)換為更有意義、更易于分析的內(nèi)容,將數(shù)字圖像分割成多個部分。在醫(yī)學(xué)成像領(lǐng)域,圖像分割可以幫助識別器官和異常,測量它們,分類它們,甚至發(fā)現(xiàn)診斷信息。它通過使用從 x 射線、磁共振成像( MRI )、計(jì)算機(jī)斷層掃描( CT )、正電子發(fā)射斷層掃描( PET )和其他格式收集的數(shù)據(jù)來實(shí)現(xiàn)這一點(diǎn)。
為了實(shí)現(xiàn)能夠?yàn)橛美峁┧杈群托阅艿淖钚履P停仨氃O(shè)置正確的環(huán)境,使用理想的超參數(shù)進(jìn)行訓(xùn)練,并對其進(jìn)行優(yōu)化以達(dá)到所需的精度。所有這些都可能很耗時。數(shù)據(jù)科學(xué)家和開發(fā)人員需要一套合適的工具來快速克服繁瑣的任務(wù)。這就是我們建立 NGC 目錄的原因。
NGC 目錄 是 GPU 優(yōu)化 AI 和 HPC 應(yīng)用程序和工具的集線器。 NGC 提供了對性能優(yōu)化容器的方便訪問,通過預(yù)訓(xùn)練模型縮短了模型開發(fā)時間,并提供了特定于行業(yè)的 SDK 來幫助構(gòu)建完整的 AI 解決方案和加快 AI 工作流。這些不同的資產(chǎn)可以用于各種用例,從計(jì)算機(jī)視覺和語音識別到語言理解。潛在的解決方案涵蓋汽車、醫(yī)療保健、制造和零售等行業(yè)。
圖 1 NGC 目錄, GPU 優(yōu)化人工智能軟件的集線器
基于 U-Net 的三維醫(yī)學(xué)圖像分割
在這篇文章中,我們將展示如何使用 醫(yī)學(xué)三維圖像分割筆記本 在 MRI 圖像中預(yù)測腦腫瘤。這個職位是適合任何人誰是新的人工智能和有一個特別的興趣在圖像分割,因?yàn)樗m用于醫(yī)學(xué)成像。 3D-U-Net 實(shí)現(xiàn)了三維體的無縫分割,具有較高的精度和性能。它可以用來解決許多不同的分割問題。
圖 2 U-Net 模型概述
圖 2 顯示了 3du-Net 由收縮(左)和擴(kuò)張(右)路徑組成。它重復(fù)應(yīng)用未添加的卷積,然后使用最大池進(jìn)行下采樣。
在深度學(xué)習(xí)中,卷積神經(jīng)網(wǎng)絡(luò)( CNN )是深度神經(jīng)網(wǎng)絡(luò)的一個子集,主要用于圖像識別和圖像處理。 CNN 使用深度學(xué)習(xí)來執(zhí)行生成性和描述性任務(wù),通常使用機(jī)器視覺以及推薦系統(tǒng)和自然語言處理。
CNNs 中的 Padding 指的是 CNN 內(nèi)核處理圖像時添加到圖像中的像素?cái)?shù)。未添加的 CNNs 意味著沒有像素添加到圖像中。
合用是 CNN 的一種下采樣方法。最大池是一種常見的池方法,它總結(jié)了功能最活躍的存在。擴(kuò)展路徑中的每一步都包括特征映射的上采樣和與壓縮路徑中相應(yīng)裁剪的特征映射的連接。
Requirements
此資源包含一個 Dockerfile ,它擴(kuò)展了 TensorFlow NGC 容器并封裝了一些依賴項(xiàng)。可以使用以下命令下載資源:
wget --content-disposition https://api.ngc.nvidia.com/v2/resources/nvidia/unet3d_medical_for_tensorflow/versions/20.06.0/zip -O unet3d_medical_for_tensorflow_20.06.0.zip除了這些依賴項(xiàng)之外,還需要以下組件:
NVIDIA 碼頭工人
NGC 最新 TensorFlow 集裝箱
NVIDIA 安培結(jié)構(gòu), NVIDIA 圖靈,或 NVIDIA 伏特 GPU
要使用具有張量核心的混合或 TF32 精度或使用 FP32 來訓(xùn)練模型,請使用腦腫瘤分割數(shù)據(jù)集上 3D U-Net 模型的默認(rèn)參數(shù)執(zhí)行以下步驟。
下載資源
通過單擊 資源頁 右上角的三個點(diǎn)手動下載資源。
圖 3 NGC 目錄上 3D U-Net 資源的資源登錄頁
也可以使用以下 wget 命令:
wget --content-disposition https://api.ngc.nvidia.com/v2/resources/nvidia/unet3d_medical_for_tensorflow/versions/20.06.0/zip -O unet3d_medical_for_tensorflow_20.06.0.zip
構(gòu)建 U-Net TensorFlow NGC 容器
此命令使用 Dockerfile 創(chuàng)建一個名為 unet3d_tf 的 Docker 映像,自動下載所有必需的組件。
docker build -t unet3d_tf 。
下載數(shù)據(jù)集
數(shù)據(jù)可在 腦腫瘤分割數(shù)據(jù)集 網(wǎng)站注冊獲得。應(yīng)下載數(shù)據(jù)并將其放置在容器中安裝 /data 的位置。
運(yùn)行容器
要在 NGC 容器中啟動交互式會話以運(yùn)行預(yù)處理、訓(xùn)練和推斷,必須運(yùn)行以下命令。這將啟動容器并將 。/data 目錄作為卷裝載到容器中的 /data 目錄,將 。/results 目錄裝載到容器中的 /results 目錄。
使用容器的優(yōu)點(diǎn)是它將所有必需的庫和依賴項(xiàng)打包到一個單獨(dú)的、隔離的環(huán)境中。這樣您就不必?fù)?dān)心復(fù)雜的安裝過程。
mkdir data mkdir results docker run --runtime=nvidia -it --shm-size=1g --ulimit memlock=-1 --ulimit stack=67108864 --rm --ipc=host -v ${PWD}/data:/data -v ${PWD}/results:/results -p 8888:8888 unet3d_tf:latest /bin/bash
啟動容器內(nèi)的筆記本
使用此命令在容器內(nèi)啟動 Jupyter 筆記本:
jupyter notebook --ip 0.0.0.0 --port 8888 --allow-root
使用以下命令將數(shù)據(jù)集移動到容器內(nèi)的/ data 目錄。下載筆記本:
wget --content-disposition https://api.ngc.nvidia.com/v2/resources/nvidia/med_3dunet/versions/1/zip -O med_3dunet_1.zip
然后,將下載的筆記本上傳到 JupyterLab 中,運(yùn)行筆記本的單元格對數(shù)據(jù)集進(jìn)行預(yù)處理,并對模型進(jìn)行訓(xùn)練、基準(zhǔn)測試和測試。
Jupyter 筆記本
通過運(yùn)行這個 Jupyter 筆記本的細(xì)胞,你可以首先檢查下載的數(shù)據(jù)集并看到腦腫瘤圖像。然后,查看數(shù)據(jù)預(yù)處理命令,準(zhǔn)備數(shù)據(jù)進(jìn)行訓(xùn)練。下一步是訓(xùn)練模型,并使用訓(xùn)練過程中的檢查點(diǎn)作為預(yù)測步驟。最后,直觀地檢查預(yù)測函數(shù)的輸出。
檢查圖像
要檢查數(shù)據(jù)集,可以使用 nibabel ,這是一個提供對一些常見的醫(yī)學(xué)和神經(jīng)成像文件格式的讀/寫訪問的包。
通過運(yùn)行接下來的三個單元格,您可以使用 pip install 安裝 nibabel ,從數(shù)據(jù)集中選擇一個映像,并使用 matplotlib 從數(shù)據(jù)集中打印所選的第三個映像。您可以通過更改代碼中的圖像地址來檢查其他數(shù)據(jù)集圖像。
import nibabel as nib import matplotlib.pyplot as plt img_arr = nib.load('/data/MICCAI_BraTS_2019_Data_Training/HGG/BraTS19_2013_10_1/BraTS19_2013_10_1_flair.nii.gz').get_data() def show_plane(ax, plane, cmap="gray", title=None): ax.imshow(plane, cmap=cmap) ax.axis("off") if title: ax.set_title(title) (n_plane, n_row, n_col) = img_arr.shape _, (a, b, c) = plt.subplots(ncols=3, figsize=(15, 5)) show_plane(a, img_arr[n_plane // 2], title=f'Plane = {n_plane // 2}') show_plane(b, img_arr[:, n_row // 2, :], title=f'Row = {n_row // 2}') show_plane(c, img_arr[:, :, n_col // 2], title=f'Column = {n_col // 2}')
結(jié)果如圖 4 所示。

數(shù)據(jù)預(yù)處理
dataset/preprocess_data.py 腳本將原始數(shù)據(jù)轉(zhuǎn)換為用于培訓(xùn)和評估的 TFRecord 格式。該數(shù)據(jù)集來自 2019 年布拉特挑戰(zhàn)賽 ,包含超過 3 TB 的多機(jī)構(gòu)、常規(guī)、臨床獲得、術(shù)前、多模式、膠質(zhì)母細(xì)胞瘤( GBM / HGG )和低級別膠質(zhì)瘤( LGG )的 MRI 掃描,并經(jīng)病理證實(shí)診斷。如果可用,還包括患者的總體生存率( OS )數(shù)據(jù)。這些數(shù)據(jù)是在訓(xùn)練、驗(yàn)證和測試數(shù)據(jù)集中構(gòu)建的。
圖像的格式是 nii.gz. NIfTI 是神經(jīng)成像的一種文件格式。可以通過運(yùn)行以下命令對下載的數(shù)據(jù)集進(jìn)行預(yù)處理:
python dataset/preprocess_data.py -i /data/MICCAI_BraTS_2019_Data_Training -o /data/preprocessed -v
處理后的圖像的最終格式是 tfrecord 。為了幫助您高效地讀取數(shù)據(jù),請序列化數(shù)據(jù)并將其存儲在一組文件中(每個文件大約 100 到 200 MB ),每個文件都可以線性讀取。如果數(shù)據(jù)是通過網(wǎng)絡(luò)傳輸?shù)模@一點(diǎn)尤其正確。它還可以用于緩存任何數(shù)據(jù)預(yù)處理。 TFRecord 格式是一種用于存儲二進(jìn)制記錄序列的簡單格式,它大大加快了數(shù)據(jù)加載過程。
使用默認(rèn)參數(shù)進(jìn)行培訓(xùn)
啟動 Docker 容器后,可以使用默認(rèn)的超參數(shù)(例如,{ 1 到 8 } GPU s { TF-AMP / FP32 / TF32 })開始單個折疊(折疊 0 )的訓(xùn)練:
Bash examples/unet3d_train_single{_TF-AMP}.sh
例如,要以 32 位精度( FP32 或 TF32 )在一個 GPU 上以批大小 2 運(yùn)行,請運(yùn)行以下命令:
bash examples/unet3d_train_single.sh 1 /data/preprocessed /results 2
要訓(xùn)練具有混合精度( TF-AMP )的單折疊,每個 GPU 有八個 GPU 個,每 GPU 批大小為 2 ,請運(yùn)行以下命令:
bash examples/unet3d_train_single_TF-AMP.sh 8 /data/preprocessed /results 2
培訓(xùn)績效基準(zhǔn)
可以通過運(yùn)行基準(zhǔn)腳本來評估培訓(xùn)績效:
bash examples/unet3d_{train,infer}_benchmark{_TF-AMP}.sh
此腳本使模型運(yùn)行并報(bào)告性能。例如,要在四個 GPU 上使用批量為 2 的 TF-AMP 對培訓(xùn)進(jìn)行基準(zhǔn)測試,請運(yùn)行以下命令:
bash examples/unet3d_train_benchmark_TF-AMP.sh 4 /data/preprocessed /results 2
Predict
您可以使用測試數(shù)據(jù)集和 predict as exec 模式來測試模型。結(jié)果保存在 model_dir 目錄中, data_dir 是數(shù)據(jù)集的路徑:
python main.py --model_dir /results --exec_mode predict --data_dir /data/preprocessed_test
繪制預(yù)測結(jié)果
在下面的代碼示例中,您將從 results 文件夾打印所選結(jié)果之一:
import numpy as np from mpl_toolkits import mplot3d import matplotlib.pyplot as plt data= np.load('/results/vol_0.npy') def show_plane(ax, plane, cmap="gray", title=None): ax.imshow(plane, cmap=cmap) ax.axis("off") if title: ax.set_title(title) (n_plane, n_row, n_col) = data.shape _, (a, b, c) = plt.subplots(ncols=3, figsize=(15, 5)) show_plane(a, data[n_plane // 2], title=f'Plane = {n_plane // 2}') show_plane(b, data[:, n_row // 2, :], title=f'Row = {n_row // 2}') show_plane(c, data[:, :, n_col // 2], title=f'Column = {n_col // 2}')

高級選項(xiàng)
對于那些希望探索此筆記本內(nèi)置高級功能的用戶,可以使用 -h 或 --help 查看 main 。 py 可用選項(xiàng)的完整列表。通過運(yùn)行下一個單元格,您可以看到如何更改此腳本的執(zhí)行模式和其他參數(shù)。使用此腳本,可以使用自定義的超參數(shù)執(zhí)行模型訓(xùn)練、預(yù)測、評估和推斷。
python main.py --help
main.py 參數(shù)可以更改以執(zhí)行不同的任務(wù),包括訓(xùn)練、評估和預(yù)測。
也可以使用默認(rèn)超參數(shù)訓(xùn)練模型。通過運(yùn)行 python main.py --help 命令,可以看到可以更改的參數(shù)列表,包括訓(xùn)練超參數(shù)。例如,在訓(xùn)練模式下,可以使用以下命令將學(xué)習(xí)速率從默認(rèn)的 0 。 0002 更改為 0 。 001 ,并將訓(xùn)練步驟從 16000 更改為 1000 :
python main.py --model_dir /results --exec_mode train --data_dir /data/preprocessed_test --learning_rate 0.001 --max_steps 1000
您可以運(yùn)行main.py
中提供的其他執(zhí)行模式。例如,在本文中,我們通過運(yùn)行以下命令使用了python.py
的預(yù)測執(zhí)行模式:
python main.py --model_dir /results --exec_mode predict --data_dir /data/preprocessed_test
總結(jié)和下一步
在這篇文章中,我們展示了如何使用一個簡單的 NGC 目錄中的 Jupyter 筆記本 開始使用醫(yī)學(xué)成像模型。當(dāng)您從這個 Jupyter 筆記本轉(zhuǎn)換到構(gòu)建您自己的醫(yī)學(xué)成像工作流時,考慮使用 NVIDIA Clara 列。 Clara 列車 包括人工智能輔助注釋 API 和注釋服務(wù)器,可以無縫地集成到任何醫(yī)療查看器中,使其具有 AI 能力。培訓(xùn)框架包括分散式學(xué)習(xí)技術(shù),例如針對 AI 工作流的聯(lián)合學(xué)習(xí)和轉(zhuǎn)移學(xué)習(xí)。
關(guān)于作者
Shokoufeh Monejzi Kouchak 是 NVIDIA 的技術(shù)營銷工程師,專注于深度學(xué)習(xí)模型。肖庫菲從亞利桑那州國家大學(xué)獲得了計(jì)算機(jī)工程學(xué)博士學(xué)位,她把重點(diǎn)放在駕駛行為分析和駕駛員注意力檢測上,并用深度學(xué)習(xí)模型。
審核編輯:郭婷
-
神經(jīng)網(wǎng)絡(luò)
+關(guān)注
關(guān)注
42文章
4814瀏覽量
103568 -
數(shù)據(jù)集
+關(guān)注
關(guān)注
4文章
1224瀏覽量
25444 -
深度學(xué)習(xí)
+關(guān)注
關(guān)注
73文章
5561瀏覽量
122789
發(fā)布評論請先 登錄
三維測量在醫(yī)療領(lǐng)域的應(yīng)用
三維掃描在醫(yī)療領(lǐng)域的應(yīng)用
三維掃描與建模的區(qū)別 三維掃描在工業(yè)中的應(yīng)用
國巨產(chǎn)品在筆記本電腦上的應(yīng)用
CASAIM與邁普醫(yī)學(xué)達(dá)成合作,三維掃描技術(shù)助力醫(yī)療輔具實(shí)現(xiàn)高精度三維建模和偏差比對
三維可視化技術(shù)的應(yīng)用現(xiàn)狀和發(fā)展前景
三維可視化技術(shù)主要領(lǐng)域及其具體運(yùn)用
筆記本電腦上電感的應(yīng)用

計(jì)算機(jī)視覺中的圖像融合

評論