日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

NiftyNet开源平台使用

發布時間:2024/4/17 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 NiftyNet开源平台使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

NiftyNet是一款開源的卷積神經網絡平臺,專門針對醫學圖像處理分析,上一篇博客已經詳細介紹了這個平臺,接下來讓我簡單介紹一下目前我了解到的使用方法。更詳細的使用方法、以及配置過程請查看NiftyNet官方文檔:https://niftynet.readthedocs.io/en/latest/config_spec.html

目錄:

1.NiftyNet層結構介紹

2.運行NiftyNet demo所需的指令格式

3.配置文件部分參數介紹

(1)[Input data source]

(2)[System]

(3)[NETWORK]

(4)[Volume-normalisation]

(5)[TRAINING]

(6)[Validation during training]

(7)[Data augmentation during traning]

(8)[INFERENCE]

(9)[EVALUATION]


?1.NiftyNet層結構介紹

NiftyNet有很強的易用性,數據層,應用層,網絡層等是完全獨立的,

(1)數據層(NiftyNet/niftynet/io),負責醫學圖像的讀取,目前讀取器有以下幾種:

  • nibabel 支持 .nii醫學文件格式
  • simpleith 支持 .dcm和 .mhd格式的醫療圖像
  • opencv 支持 .jpg等常見圖像讀取,讀取后通道順序為BGR
  • skimage 支持 .jpg等常見圖像讀取
  • pillow 支持 .jpg等常見圖像讀取,通道順序為RGB

(2)應用層(NiftyNet/niftynet/application),目前支持的應用有以下幾種:

  • 分割?(segmentation_application.py)
  • 分類?(classification_application.py)
  • Autoencoder
  • Gan生成網絡
  • 回歸

(3)網絡層(NiftyNet/niftynet/network),這個里面包含了已經實現的一些網絡,resnet,dense_vnet,等,我們可以創建自己的網絡結構后放在這個文件夾

?

?2.運行NiftyNet demo所需的指令格式

(1) 運行以下格式的命令可以使NiftyNet工作:

# command to run from git-cloned NiftyNet source code folde
python net_run.py [train|inference|evaluation] -c <path_to/config.ini> -a <application> # command to run using pip-installed NiftyNet net_run [train|inference|evaluation] -c <path_to/config.ini> -a <application>

train:train指令表明想要使用提供的數據更新已存在的網絡模型

inference:inference將加載已存在的網絡模型根據提供的數據生成響應

-c:后跟配置文件路徑(有關配置文件的內容見第3個知識點)

-a:跟將要import的應用種類

(2)NiftyNet的應用層已經自帶了5種應用,那么如何運行這些應用呢?

圖像分割

# command net_run -a niftynet.application.segmentation_application.SegmentationApplication -c ... # alias(別名): net_segment -c ...

圖像回歸

# command net_run -a niftynet.application.regression_application.RegressionApplication -c ... # alias(別名): net_regress -c ...

自動編碼器

# command net_run -a niftynet.application.autoencoder_application.AutoencoderApplication -c ... # alias(別名): net_autoencoder -c ...

生成對抗網絡

# command net_run -a niftynet.application.gan_application.GANApplication -c ... # alias(別名): net_gan -c ...

?

3.配置文件部分參數介紹

(1)每個網絡想要運行必須包含一個config.ini配置文件,用來設置訓練/測試所用的全部參數,詳細如下:??

每個配置文件中必須包含三個sections:??

* [SYSTEM]??

* [NETWORK]??

* [APPLICATION] (自己定義.如[SEGMENTATION],[GAN],等)

如果train行為被需要,則`[TRAINING]`和`[Input data source]`需要被定義,其中`[Input data source]`這個section可以自定義命名

如果inference行為被需要,則需要定義`[INFERENCE]`和`[Input data source]`,其中`[Input data source]`這個section可以自定義命名

以NiftyNet自帶的分割腦部Demo為例子,其運行指令和配置文件如下圖所示:

運行指令:

net_segment -c C:/niftynet/extensions/highres3dnet_brain_parcellation/highres3dnet_config_eval.ini

配置文件如下:

[Modality0] path_to_search = data/OASIS/ filename_contains = nii spatial_window_size = (96, 96, 96) interp_order = 0 pixdim = (1.0, 1.0, 1.0) axcodes = (R, A, S)[SYSTEM] cuda_devices = "" model_dir = models/highres3dnet_brain_parcellation[NETWORK] name = highres3dnet batch_size = 1 activation_function = relu volume_padding_size = 10

[Volume-normalisation] whitening = True normalisation = True normalise_foreground_only=True foreground_type = mean_plus histogram_ref_file = databrain_std_hist_models_otsu.txt cutoff = (0.001, 0.999)[INFERENCE] border = 2 inference_iter = 33000 save_seg_dir = ./parcellation_output output_interp_order = 0 spatial_window_size = (128, 128, 128)[SEGMENTATION] image = Modality0 output_prob = False num_classes = 160

(2)接下來讓我們看看每個部分的參數的含義

?[Input data source]

* csv_file:? 輸入圖像路徑?

* path_to_search: 搜索圖像的單個或多個文件,如果有多個用逗號分開?

*?filename_contains:? 匹配文件名的關鍵詞??

*?filename_not_contains:? 排除文件名的關鍵詞??

*?filename_removefromid:? 從文件命中抽取主題id的正則表達式,被匹配的模式將從文件名中移除并生成主題id。?

*?interp_order:? 插值法,當設定采樣方法為resize時,需要該參數對圖片進行上采樣或下采樣,0表示最近插值,1表示雙線性插值,3表示三次樣條插值,默認為3??

*?pixdim:? 如果被指定,輸入volum在被喂給網絡之前將被重采樣成voxel尺寸??

*?axcodes:? 如果被指定,輸入volum在被喂給網絡之前將被調整為坐標碼(axes code)??

*?spatial_window_size:? 輸入到網絡中的圖片尺寸,需指明三個維度,第一個和第二個分別表示圖片的長和寬,第三個如果為1表示使用2d卷積,否則使用3d卷積??

*?loader:? 圖片讀取器,默認值None將嘗試所有可得到的讀取器

[System]

*?cuda_devices:? 設置tensorflow的CUDA_VISIBLE_DEVICES變量??

*?num_threads:? 設置訓練的預處理線程數??

*?num_gpus:? 設置訓練的GPU的數量??

*?model_dir:? 訓練模型的保存和加載路徑??

*?dataset_split_file:? 文件分配科目到子集??

*?event_handler:? 事件處理器?

[NETWORK]

*?name:? niftynet/network中的網絡類或用戶自定義的模塊??

*?activation_function:? 網絡的激活函數集合??

*?batch_size:? 設置每次迭代圖像窗口的數量??

*?smaller_final_batch_mode:? 當batch_size的窗口采樣器總數是不可見的時支持最后的batch使用不同的模式??

  可選類型有:??

  drop:? 終止剩余的batch??

  pad: 用-1填補最后更小的batch??

  dynamic: 直接輸出剩余的batch?

*?reg_type:? 可訓練的正規化參數的類型??

*?decay:? 正規化的強度,用于預防過擬合??

*?volume_padding_size:? 圖片的填補值??

*?window_sampling:? 進入網絡的圖片的采樣方法??

  uniform:? 輸出的圖片保持原本大小??

  weighted:? 對成比例的voxel的采樣到累積直方圖的似然??

  balanced:? 每個標簽都被采樣的可能性同樣??

  resize:? 將進入網絡的圖片首先resize到spatial_window_size?

*?queue_length:? NiftyNet會設置兩個隊列,一個負責從數據集中讀取數據并擾亂,另一個從前一個隊列中讀取batch_size張圖片輸入網絡,這個參數是指第一個隊列的長度,最小值為batch_size \* 2.5??

*?keep_prob: 如果失活被網絡支持的話,每個元素存活的可能性

[Volume-normalisation]

?

*?normalisation:? 指示直方圖標準化是否應該被應用于數據??

*?whitening:? 只是被加載的圖片是否應該被增白,如果是,輸入I,返回(I - mean(I)) / std(I)??

*?histogram_ref_file:? 標準化參數的文件??

*?norm_file:? 基于直方圖的標準化的直方圖landmark類型??

*?cutoff:? 下級和上級的基于直方圖的標準化的截斷??

*?normalise_foreground_only:? 指示一個mask是否需要被基于前景或多樣前景進行計算,如設置True,所有的標準化步驟都將被應用于生成前景區??

*?foreground_type:? 生成一個前景mask,并且它只用于前景??

*?mutimod_foreground_type:? 結合前景mask和多模態的策略??

  可選類型:??

  or:? 可得到的masks的合集??

  and:? 可得到的mask的交集??

  all:? mask從每個模態獨立計算?

[TRAINING]

*?optimiser:? 計算圖梯度優化器的類型,支持adagrade,adam,gradientdescent,momentum,rmsprop,nesterov??

*?sample_per_volume:每張圖的采樣次數??

*?lr:? 學習率??

*?loss_type:? loss函數的類型,支持segmentation,regression,autoencoder,gan??

*?starting_iter:? 設置重新訓練模型的迭代次數??

*?save_every_n:? 保存當前模型的頻率,0為不保存??

*?tensorboard_every_n:? 計算圖中的元素和寫到tensorboard上的頻率??

*?max_iter:? 最大訓練迭代次數?

[Validation during training]

*?validation_every_n:? 每n次迭代運行一次驗證迭代??

*?validation_max_iter:? 驗證迭代運行的次數??

*?exclude_fraction_for_validation:? 用于驗證的數據集的比例??

*?exclude_fraction_for_inference:? 用于推斷的數據集的比例

[Data augmentation during traning]?

*?rotation_angle:? 指示輸入的圖片旋轉一個隨機的旋轉??

*?scaling_percentage:? 指示一個隨機的縮放比例(-50,50)??

*?random_flipping_axes:? 可以翻轉增強數據的軸

[INFERENCE]

*?spatial_window_size:? 指示輸入窗口的大小(int array)??

*?border:? 一個用于修剪輸出窗口大小的邊界值(int tuple),如設置(3,3,3),將把一個(64\*64\*64)的窗口修剪為(58\*58\*58)??

*?inference_iter:? 指定已訓練的模型用于推測(integer)??

*?save_seg_dir:? 預測目錄的名字??

*?output_postfix:? 向每一個輸出文件的名稱后添加后綴??

*?output_interp_order:? 網絡輸出的推斷順序??

*?dataset_to_infer:? 字符串指定計算推理的數據集(‘training’, ‘validation’, ‘inference’)?

[EVALUATION]??

*?save_csv_dir:? 存儲輸出的csv文件的路徑??

*?evaluations:? 要計算的評價指標列表以逗號分隔的字符串表示,每個應用程序可能的評估指標列表可用于回歸評估、分段評估和分類評估??

*?evaluation_units:? 描述在分割的情況下應該如何進行評估,foreground:? 只對一個標簽 ,label:對每一個標簽度量,cc:? 對每個連接組件度量?

?

參考:https://blog.csdn.net/PKnotnull/article/details/80378824#inference

?


以上就是本次有關Niftynet的相關知識學習,歡迎交流!

?

轉載于:https://www.cnblogs.com/XDU-Lakers/p/10634774.html

總結

以上是生活随笔為你收集整理的NiftyNet开源平台使用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。