1. 程式人生 > >NiftyNet開源平臺的使用 -- 配置檔案

NiftyNet開源平臺的使用 -- 配置檔案

NiftyNet開源平臺的使用    NiftyNet基礎架構是使研究人員能夠快速開發和分發用於分割、迴歸、影象生成和表示學習應用程式,或將平臺擴充套件到新的應用程式的深度學習解決方案。 詳細介紹請見: ( https://www.cnblogs.com/zhhfan/p/9800473.html)
官網  ( 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:  對每個連線元件度量