doanh25032004's picture
Upload folder using huggingface_hub
872b0a0 verified
Raw
History Blame Contribute Delete
8.91 kB
import os
import copy
import tensorflow as tf
from tensorflow.python.client import device_lib
from e2eflow.core.train import Trainer
from e2eflow.experiment import Experiment
from e2eflow.util import convert_input_strings
from e2eflow.kitti.input import KITTIInput
from e2eflow.kitti.data import KITTIData
from e2eflow.chairs.data import ChairsData
from e2eflow.chairs.input import ChairsInput
from e2eflow.sintel.data import SintelData
from e2eflow.sintel.input import SintelInput
from e2eflow.synthia.data import SynthiaData
from e2eflow.cityscapes.data import CityscapesData
tf.app.flags.DEFINE_string('ex', 'default',
'Name of the experiment.'
'If the experiment folder already exists in the log dir, '
'training will be continued from the latest checkpoint.')
tf.app.flags.DEFINE_boolean('debug', False,
'Enable image summaries and disable checkpoint writing for debugging.')
tf.app.flags.DEFINE_boolean('ow', False,
'Overwrites a previous experiment with the same name (if present)'
'instead of attempting to continue from its latest checkpoint.')
FLAGS = tf.app.flags.FLAGS
def main(argv=None):
experiment = Experiment(
name=FLAGS.ex,
overwrite=FLAGS.ow)
dirs = experiment.config['dirs']
run_config = experiment.config['run']
gpu_list_param = run_config['gpu_list']
if isinstance(gpu_list_param, int):
gpu_list = [gpu_list_param]
os.environ['CUDA_VISIBLE_DEVICES'] = str(gpu_list_param)
else:
gpu_list = list(range(len(gpu_list_param.split(','))))
os.environ['CUDA_VISIBLE_DEVICES'] = gpu_list_param
gpu_batch_size = int(run_config['batch_size'] / max(len(gpu_list), 1))
devices = ['/gpu:' + str(gpu_num) for gpu_num in gpu_list]
train_dataset = run_config.get('dataset', 'kitti')
kdata = KITTIData(data_dir=dirs['data'],
fast_dir=dirs.get('fast'),
stat_log_dir=None,
development=run_config['development'])
einput = KITTIInput(data=kdata,
batch_size=1,
normalize=False,
dims=(384, 1280))
if train_dataset == 'chairs':
cconfig = copy.deepcopy(experiment.config['train'])
cconfig.update(experiment.config['train_chairs'])
convert_input_strings(cconfig, dirs)
citers = cconfig.get('num_iters', 0)
cdata = ChairsData(data_dir=dirs['data'],
fast_dir=dirs.get('fast'),
stat_log_dir=None,
development=run_config['development'])
cinput = ChairsInput(data=cdata,
batch_size=gpu_batch_size,
normalize=False,
dims=(cconfig['height'], cconfig['width']))
tr = Trainer(
lambda shift: cinput.input_raw(swap_images=False,
shift=shift * run_config['batch_size']),
lambda: einput.input_train_2012(),
params=cconfig,
normalization=cinput.get_normalization(),
train_summaries_dir=experiment.train_dir,
eval_summaries_dir=experiment.eval_dir,
experiment=FLAGS.ex,
ckpt_dir=experiment.save_dir,
debug=FLAGS.debug,
interactive_plot=run_config.get('interactive_plot'),
devices=devices)
tr.run(0, citers)
elif train_dataset == 'kitti':
kconfig = copy.deepcopy(experiment.config['train'])
kconfig.update(experiment.config['train_kitti'])
convert_input_strings(kconfig, dirs)
kiters = kconfig.get('num_iters', 0)
kinput = KITTIInput(data=kdata,
batch_size=gpu_batch_size,
normalize=False,
skipped_frames=True,
dims=(kconfig['height'], kconfig['width']))
tr = Trainer(
lambda shift: kinput.input_raw(swap_images=False,
center_crop=True,
shift=shift * run_config['batch_size']),
lambda: einput.input_train_2012(),
params=kconfig,
normalization=kinput.get_normalization(),
train_summaries_dir=experiment.train_dir,
eval_summaries_dir=experiment.eval_dir,
experiment=FLAGS.ex,
ckpt_dir=experiment.save_dir,
debug=FLAGS.debug,
interactive_plot=run_config.get('interactive_plot'),
devices=devices)
tr.run(0, kiters)
elif train_dataset == 'cityscapes':
kconfig = copy.deepcopy(experiment.config['train'])
kconfig.update(experiment.config['train_cityscapes'])
convert_input_strings(kconfig, dirs)
kiters = kconfig.get('num_iters', 0)
cdata = CityscapesData(data_dir=dirs['data'],
fast_dir=dirs.get('fast'),
stat_log_dir=None,
development=run_config['development'])
kinput = KITTIInput(data=cdata,
batch_size=gpu_batch_size,
normalize=False,
skipped_frames=False,
dims=(kconfig['height'], kconfig['width']))
tr = Trainer(
lambda shift: kinput.input_raw(swap_images=False,
center_crop=True,
skip=[0, 1],
shift=shift * run_config['batch_size']),
lambda: einput.input_train_2012(),
params=kconfig,
normalization=kinput.get_normalization(),
train_summaries_dir=experiment.train_dir,
eval_summaries_dir=experiment.eval_dir,
experiment=FLAGS.ex,
ckpt_dir=experiment.save_dir,
debug=FLAGS.debug,
interactive_plot=run_config.get('interactive_plot'),
devices=devices)
tr.run(0, kiters)
elif train_dataset == 'synthia':
sconfig = copy.deepcopy(experiment.config['train'])
sconfig.update(experiment.config['train_synthia'])
convert_input_strings(sconfig, dirs)
siters = sconfig.get('num_iters', 0)
sdata = SynthiaData(data_dir=dirs['data'],
fast_dir=dirs.get('fast'),
stat_log_dir=None,
development=run_config['development'])
sinput = KITTIInput(data=sdata,
batch_size=gpu_batch_size,
normalize=False,
dims=(sconfig['height'], sconfig['width']))
tr = Trainer(
lambda shift: sinput.input_raw(swap_images=False,
shift=shift * run_config['batch_size']),
lambda: einput.input_train_2012(),
params=sconfig,
normalization=sinput.get_normalization(),
train_summaries_dir=experiment.train_dir,
eval_summaries_dir=experiment.eval_dir,
experiment=FLAGS.ex,
ckpt_dir=experiment.save_dir,
debug=FLAGS.debug,
interactive_plot=run_config.get('interactive_plot'),
devices=devices)
tr.run(0, siters)
elif train_dataset == 'kitti_ft':
ftconfig = copy.deepcopy(experiment.config['train'])
ftconfig.update(experiment.config['train_kitti_ft'])
convert_input_strings(ftconfig, dirs)
ftiters = ftconfig.get('num_iters', 0)
ftinput = KITTIInput(data=kdata,
batch_size=gpu_batch_size,
normalize=False,
dims=(ftconfig['height'], ftconfig['width']))
tr = Trainer(
lambda shift: ftinput.input_train_gt(40),
lambda: einput.input_train_2015(40),
supervised=True,
params=ftconfig,
normalization=ftinput.get_normalization(),
train_summaries_dir=experiment.train_dir,
eval_summaries_dir=experiment.eval_dir,
experiment=FLAGS.ex,
ckpt_dir=experiment.save_dir,
debug=FLAGS.debug,
interactive_plot=run_config.get('interactive_plot'),
devices=devices)
tr.run(0, ftiters)
else:
raise ValueError(
"Invalid dataset. Dataset must be one of "
"{synthia, kitti, kitti_ft, cityscapes, chairs}")
if not FLAGS.debug:
experiment.conclude()
if __name__ == '__main__':
tf.app.run()