DDMR / COMET /MultiTrain_config.py
jpdefrutos's picture
Scripts for training on the COMET CT Dataset
476daa5
raw
history blame
3.06 kB
import os, sys
currentdir = os.path.dirname(os.path.realpath(__file__))
parentdir = os.path.dirname(currentdir)
sys.path.append(parentdir) # PYTHON > 3.3 does not allow relative referencing
import argparse
from configparser import ConfigParser
from shutil import copy2
import os
from datetime import datetime
TRAIN_DATASET = '/mnt/EncryptedData1/Users/javier/ext_datasets/COMET_dataset/OSLO_COMET_CT/Formatted_128x128x128/train'
err = list()
if __name__ == '__main__':
parser = argparse.ArgumentParser()
parser.add_argument('--ini', help='Configuration file')
args = parser.parse_args()
configFile = ConfigParser()
configFile.read(args.ini)
print('Loaded configuration file: ' + args.ini)
print({section: dict(configFile[section]) for section in configFile.sections()})
print('\n\n')
trainConfig = configFile['TRAIN']
lossesConfig = configFile['LOSSES']
datasetConfig = configFile['DATASETS']
othersConfig = configFile['OTHERS']
print('TRAIN MODEL IN' + trainConfig['model'])
simil = lossesConfig['similarity'].split(',')
segm = lossesConfig['segmentation'].split(',')
if trainConfig['name'].lower() == 'uw':
from COMET.COMET_train_UW import launch_train
output_folder = os.path.join(othersConfig['outputFolder'], '{}_Lsim_{}__Lseg_{}'.format(trainConfig['name'], '_'.join(simil), '_'.join(segm)))
else:
from COMET.COMET_train import launch_train
simil = simil[0]
segm = segm[0]
output_folder = os.path.join(othersConfig['outputFolder'], '{}_Lsim_{}__Lseg_{}'.format(trainConfig['name'], simil, segm))
output_folder = output_folder + '_' + datetime.now().strftime("%H%M%S-%d%m%Y")
try:
froozen_layers = eval(trainConfig['freeze'])
except NameError as err:
froozen_layers = [trainConfig['freeze'].upper()]
if froozen_layers is not None:
assert all(s in ['INPUT', 'OUTPUT', 'ENCODER', 'DECODER', 'TOP', 'BOTTOM'] for s in froozen_layers),\
'Invalid option for "freeze". Expected one or several of: INPUT, OUTPUT, ENCODER, DECODER, TOP, BOTTOM'
froozen_layers = list(set(froozen_layers)) # Unique elements
# copy the configuration file to the destionation folder
os.makedirs(output_folder, exist_ok=True)
copy2(args.ini, os.path.join(output_folder, os.path.split(args.ini)[-1]))
launch_train(dataset_folder=datasetConfig['train'],
validation_folder=datasetConfig['validation'],
output_folder=output_folder,
gpu_num=eval(trainConfig['gpu']),
lr=eval(trainConfig['learningRate']),
rw=eval(trainConfig['regularizationWeight']),
simil=simil,
segm=segm,
max_epochs=eval(trainConfig['epochs']),
model_file=trainConfig['model'],
freeze_layers=froozen_layers,
acc_gradients=eval(trainConfig['accumulativeGradients']),
batch_size=eval(trainConfig['batchSize']))