NiftyNet開源平臺的使用 -- 配置檔案
阿新 • • 發佈:2018-11-11
NiftyNet開源平臺的使用
NiftyNet基礎架構是使研究人員能夠快速開發和分發用於分割、迴歸、影象生成和表示學習應用程式,或將平臺擴充套件到新的應用程式的深度學習解決方案。
詳細介紹請見: (
https://www.cnblogs.com/zhhfan/p/9800473.html)
官網 ( https://niftynet.readthedocs.io/en/latest/config_spec.html) NiftyNet工作流可以由NiftyNet應用程式和配置檔案完全指定。
執行工作流的命令是:
使用train指令表明想要使用提供的資料更新已存在的網路模型,使用inference將載入已存在的網路模型根據提供的資料生成響應。-c 後跟配置檔案路徑,-a 跟將要import的應用種類。 application引數
影象分割
影象迴歸
自動編碼
生成對抗網路(GANs)
net_run命令也支援命令列引數,以`--<name> <value>`或`--<name>=<value>`的形式表示。輸入的引數將取代系統預設的和配置檔案中的引數。 配置檔案 每個網路想要執行必須包含一個config.ini配置檔案,用來設定訓練/測試所用的全部引數,詳細如下:
每個配置檔案中必須包含三個sections:
* [SYSTEM]
* [NETWORK]
* [APPLICATION] 如果train行為被需要,則`[TRAINING]`section需要被定義,同樣,如果inference行為被需要,則需要定義`[INFERENCE]`。
[APPLICATION]由自己定製,可以使用的有:
* `[GAN]` -- 生成對抗網路
* `[SEGMENTATION]` -- 分割網路
* `[REGRESSION]` -- 迴歸網路
* `[AUTOENCODER]` -- 自動編碼網路
每個section的引數 [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將嘗試所有可得到的讀取器
讀取器支援的型別有:
nibabel 支援.nii醫學檔案格式
simpleitk 支援.dcm和.mhd格式的醫療影象
opencv 支援.jpg等常見影象,讀取後通道順序為BGR
skimage 支援.jpg等常見影象
pillow 支援.jpg等常見影象,讀取後通道順序為RGB [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://niftynet.readthedocs.io/en/latest/config_spec.html) NiftyNet工作流可以由NiftyNet應用程式和配置檔案完全指定。
執行工作流的命令是:
python net_run.py [train|inference|evaluation] -c <path_to/config.ini> -a <application>
使用train指令表明想要使用提供的資料更新已存在的網路模型,使用inference將載入已存在的網路模型根據提供的資料生成響應。-c 後跟配置檔案路徑,-a 跟將要import的應用種類。 application引數
影象分割
net_segment -c ...
影象迴歸
net_regress -c ...
自動編碼
net_autoencoder -c ...
生成對抗網路(GANs)
net_gan -c ...
net_run命令也支援命令列引數,以`--<name> <value>`或`--<name>=<value>`的形式表示。輸入的引數將取代系統預設的和配置檔案中的引數。 配置檔案 每個網路想要執行必須包含一個config.ini配置檔案,用來設定訓練/測試所用的全部引數,詳細如下:
每個配置檔案中必須包含三個sections:
* [SYSTEM]
* [NETWORK]
* [APPLICATION] 如果train行為被需要,則`[TRAINING]`section需要被定義,同樣,如果inference行為被需要,則需要定義`[INFERENCE]`。
[APPLICATION]由自己定製,可以使用的有:
* `[GAN]` -- 生成對抗網路
* `[SEGMENTATION]` -- 分割網路
* `[REGRESSION]` -- 迴歸網路
* `[AUTOENCODER]` -- 自動編碼網路
每個section的引數 [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將嘗試所有可得到的讀取器
讀取器支援的型別有:
nibabel 支援.nii醫學檔案格式
simpleitk 支援.dcm和.mhd格式的醫療影象
opencv 支援.jpg等常見影象,讀取後通道順序為BGR
skimage 支援.jpg等常見影象
pillow 支援.jpg等常見影象,讀取後通道順序為RGB [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: 對每個連線元件度量