18年下半年10月份左右,老師分配有關NiftyNet平台的相關學習的任務,時隔5個月,決定整理一下以前的筆記,寫成相應的博客!
目錄
1.NiftyNet平台簡介
2.NiftyNet平台架構設計
3.NiftyNet安裝平台
4.利用NiftyNet平台實現一個自帶的Demo
5.NiftyNet文檔介紹

1.NiftyNet平台簡介
(1)NiftyNet是一款開源的卷積神經網絡平台,專門針對醫學圖像處理分析以及醫學影像指導治療,由WEISS (Wellcome EPSRC Centre for Interventional and Surgical Sciences), CMIC ( Centre for Medical Image Computing),HIG(High-dimensional Imaging Group)三家研究機構共同推出。
(2)NiftyNet基於Tensorflow的開源卷積神經網絡平台,這一模塊化設計的開源平台包含了可共享的網絡和預訓練模型,在這些模塊的幫助下我們可以方便快速地搭建針對醫學圖像處理的神經網絡模型
(3)NiftyNet實現了一整套的DeepLearning流程。將數據加載、模型加載,網絡結構定義等進行了很好的分離,抽象封裝成了各自獨立的模塊
(4)NiftyNet基礎架構是使研究人員能夠快速開發和分發用於分割、回歸、圖像生成和表示學習應用程序,或將平台擴展到新的應用程序的深度學習解決方案,即NiftyNet支持:圖像分割、圖像分類、回歸、auto-encoder、(圖像模型表示)、GAN(圖像生成)
(5)目前的NiftyNet只是一個研究平台,並不保證臨床使用的穩定性和准確率,它具有以下一些功能方便醫學圖像處理的研究:
1)用戶接口方便的修改個性化網絡元件參數
2)可共享網絡和訓練模型
3)支持2-D,2.5-D,3-D,4-D的數據輸入
4)支持多GPU的高效訓練
5)內置了當前前沿的神經網絡包括HighRes3DNet, 3D U-net, V-net, DeepMedic等,可以方便的使用
6)對醫學圖像分割的綜合評價度量
(6)NiftyNet平台官網:http://niftynet.io/
2.NiftyNet平台架構設計
更加具體的介紹請參考paper:https://arxiv.org/abs/1709.03485

如上圖所示:NiftyNet應用程序類通過連接四個組件封裝了針對不同醫學圖像分析應用程序的標准分析管道:
(1)Reader: 從文件中加載數據
(2)Sampler: 為之后的處理生成合適的樣本
(3)Network: 處理輸入
(4)output handler: 包括在培訓期間的損失和優化器,以及在推理和評估期間的聚合器
(5)ApplicationDriver: 定義了跨所有應用程序的公共結構,並負責實例化數據分析管道並將計算分布到可用的計算資源。
如下所示:是平台具體的實現流程:

3.NiftyNet安裝平台
由於整個平台和項目都是基於Tensorflow基礎上的,所以我們必須安裝基礎的實驗環境:(操作系統為linux或者window都行)
1 pip install tensorflow-gpu==1.7 //安裝GPU版本 2 pip install tensorflow==1.7 //安裝CPU版本 3 pip install niftynet //安裝NiftyNet庫,所以依賴可以自動完成安裝
一般都是借助Anaconda進行安裝相應所需的包。
4.利用NiftyNet平台實現一個自帶的Demo
在上面粘貼的一篇介紹NiftyNet的paper中:一共介紹了4個Demo,但是由於自己的筆記本性能有限,只能對其中一個名為(highres3dnet_brain_parcellation_model_zoo)分割大腦的模型進行復現。
(1)下載模型和權重值
1 linux: python net_download.py highres3dnet_brain_parcellation_model_zoo 2 windows: net_download highres3dnet_brain_parcellation_model_zoo
(2)對圖像進行分割
1 linux:python net_segment.py inference -c ~/niftynet/extensions/highres3dnet_brain_parcellation/highres3dnet_config_eval.ini 2 windows:net_segment C:/niftynet/extensions/highres3dnet_brain_parcellation/highres3dnet_config_eval.ini
注意,在分割的時候,所有路徑都不要含有中文,否則再調用pandas會報錯(OSERROR)
執行結果:(運行完成會生成一個100__niftynet_out.nii文件)

利用醫學軟件Mango打開.nii文件即可。或者利用nibabel庫通過python打開,代碼如下:
1 import matplotlib 2 matplotlib.use('TkAgg') 3 from matplotlib import pylab as plt 4 import nibabel as nib 5 from nibabel import nifti1 6 from nibabel.viewers import OrthoSlicer3D 7 8 example_filename = 'C:/Users/tgp/niftynet/data/OASIS/OAS1_0145_MR2_mpr_n4_anon_sbj_111.nii' 9 10 img = nib.load(example_filename) 11 print(img) 12 print(img.header['db_name']) # 輸出頭信息 13 14 width, height, queue = img.dataobj.shape 15 16 OrthoSlicer3D(img.dataobj).show() 17 18 num = 1 19 for i in range(0, queue, 10): 20 img_arr = img.dataobj[:, :, i] 21 plt.subplot(5, 4, num) 22 plt.imshow(img_arr, cmap='gray') 23 num += 1
結果如下:

5.NiftyNet文檔介紹
文檔主要包括三個主要部分,分別是指引、資源和接口參考三個部分

(1)Guide:
主要包括平台簡介、安裝指南和配置文件的設置;同時還有一個模型庫可供用戶選擇合適的模型適配具體的問題;如果無法滿足需求的情況下,它還提供了如何建立網絡的教程,可以一步一步創建自己的新網絡。
(2)Resource:
這里包含了一系列資源,除了項目的網絡還包括源碼和源碼鏡像、以及模型庫。同時還提供了Stack Overflow提問區域供用戶交流;
(3)API & reference
網絡幾大模塊的說明,主要有application、contrib、engine、evaluation、io、layer、network和utilities等功能包供用戶使用,每一個都有詳盡的參數描述和使用指南
參考:https://blog.csdn.net/u014636245/article/details/79322401
以上就是有關NiftyNet平台的相關知識,若有錯誤歡迎指正!
