Как создается файл settings_training.txt? - PullRequest
0 голосов
/ 04 апреля 2019

У меня проблемы с пониманием того, как файл settings_training.txt генерируется из файла конфигурации.В частности, строка под блоком [CUSTOM] с указанием --compulsory_labels = ***

Сгенерированный автоматически код:

[CUSTOM]
-- num_classes: 6
-- output_prob: False
-- label_normalisation: True
-- softmax: True
-- min_sampling_ratio: 0
-- compulsory_labels: (0, 1)
-- rand_samples: 0
-- min_numb_labels: 1
-- proba_connect: True
-- evaluation_units: foreground
-- label: ('OAR',)
-- weight: ()
-- inferred: ()
-- image: ('AVG',)
-- sampler: ()
-- name: net_segment

Почему принудительные метки генерируются автоматически и естьспособ выключить их?Мой набор данных имеет большие объемы, поэтому я использую подход, основанный на патчах, и во многих окнах есть только метка фона.

Я не уверен, как настроить этот файл, поскольку он генерируется автоматически, но я попробовал егодва разных набора данных, один с двумя метками и один с 6 метками, и оба они автоматически сгенерировали файл training_settings.txt с compulsory_labels = (0,1) - так что кажется, что первые две метки всегда обязательны?

Я пытался редактировать файл непосредственно перед повторной тренировкой, но файл каким-то образом перезаписывается

Мой файл конфигурации:

[ZERO]
csv_file=
path_to_search = /raid/zsiddiqui/4DLungNifti
filename_contains = 0
filename_not_contains = 50
spatial_window_size = (64, 64, 64)
interp_order = 3

[FIFTY]
csv_file=
path_to_search = /raid/zsiddiqui/4DLungNifti
filename_contains = 50
filename_not_contains =
spatial_window_size = (64, 64, 64)
interp_order = 3

[AVG]
csv_file=
path_to_search = /raid/zsiddiqui/4DLungNifti
filename_contains = AVG
filename_not_contains =
spatial_window_size = (64, 64, 64)
interp_order = 3

[PET]
csv_file=
path_to_search = /raid/zsiddiqui/4DLungNifti
filename_contains = PET
filename_not_contains =
spatial_window_size = (64, 64, 64)
interp_order = 3

[OAR]
path_to_search = /raid/zsiddiqui/4DLungNifti
filename_contains = OAR
spatial_window_size = (64, 64, 64)
interp_order = 0

[SYSTEM]
cuda_devices = 0,1,2,3
num_threads = 16
num_gpus = 4
model_dir = /home/chingon/niftynet/models/4DLung_OAR_gendice
queue_length = 20

[NETWORK]
name = highres3dnet_large
activation_function = relu
batch_size = 4
decay = 0
reg_type = L2

volume_padding_size = 0
normalisation = True
histogram_ref_file = /home/chingon/niftynet/histogram_4DLungNiftiOAR.txt
norm_type = percentile
cutoff = (0.01, 0.99)
whitening = False
normalise_foreground_only=False
foreground_type = otsu_plus
multimod_foreground_type = or

[TRAINING]
optimiser = adam
sample_per_volume = 64
rotation_angle = (-5.0, 5.0)
scaling_percentage = (-5.0, 5.0)
lr = 0.01
loss_type = niftynet.layer.loss_segmentation.generalised_dice_loss
starting_iter = 0
save_every_n = 100
max_iter = 1000
max_checkpoints = 20
validation_every_n = 5
exclude_fraction_for_validation = 0.05

[INFERENCE]
save_seg_dir = ./inferences
dataset_to_infer = validation

[EVALUATION]

[SEGMENTATION]
image = AVG
label = OAR
output_prob = False
num_classes = 6
label_normalisation = True

Когда я тренируюсь стандартным способом (с помощью сгенерированного выше обучающего файла) - я получаю очень несбалансированные прогнозы с метками, соответствующими 0 и 1, которые прогнозируются для каждого блока и наиболее часто - например, для 1 набора логических выводов:

image shape= (512, 512, 144)

label shape:  (512, 512, 144) 
unique labels/pixel count
 [[       0 37145648]
 [       1   313279]
 [       2    99587]
 [       3   174159]
 [       4     7067]
 [       5     8996]]

inference shape:  (512, 512, 144) 
unique labels/pixel count
 [[       0 37358296]
 [       1   390440]]
...