У меня проблемы с пониманием того, как файл 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]]