# training data FLAGS = ng.Config('inpaint.yml') img_shapes = FLAGS.img_shapes with open(FLAGS.data_flist[FLAGS.dataset][0]) as f: fnames = f.read().splitlines() if FLAGS.guided: fnames = [(fname, fname[:-4] + '_edge.jpg') for fname in fnames] img_shapes = [img_shapes, img_shapes] data = ng.data.DataFromFNames(fnames, img_shapes, random_crop=FLAGS.random_crop, nthreads=FLAGS.num_cpus_per_job) images = data.data_pipeline(FLAGS.batch_size) # main model model = InpaintCAModel() g_vars, d_vars, losses = model.build_graph_with_losses(FLAGS, images) # validation images if FLAGS.val: with open(FLAGS.data_flist[FLAGS.dataset][1]) as f: val_fnames = f.read().splitlines() if FLAGS.guided: val_fnames = [(fname, fname[:-4] + '_edge.jpg') for fname in val_fnames] # progress monitor by visualizing static images for i in range(FLAGS.static_view_size): static_fnames = val_fnames[i:i + 1] static_images = ng.data.DataFromFNames( static_fnames, img_shapes, nthreads=1, random_crop=FLAGS.random_crop).data_pipeline(1)
if count == 1: fnames = f.read().splitlines() elif count == 2: fnames = [(l.split(' ')[0], l.split(' ')[1]) for l in f.read().splitlines()] elif count == 3: fnames = [(l.split(' ')[0], l.split(' ')[1], l.split(' ')[2]) for l in f.read().splitlines()] else: print('invalid data count') exit() data = ng.data.DataFromFNames( fnames, config.IMG_SHAPES, random_crop=config.RANDOM_CROP, gamma=config.GAMMA, exposure=config.EXPOSURE, random_flip = config.RANDOM_FLIP) images = data.data_pipeline(config.BATCH_SIZE) # main model model = InpaintCAModel() g_vars, d_vars, losses = model.build_graph_with_losses( images[0], config=config, exclusionmask=images[exclusionmask_index] if config.EXC_MASKS else None, mask=None if config.GEN_MASKS else images[mask_index]) # validation images if config.VAL: with open(config.DATA_FLIST[config.DATASET][1]) as f: val_fnames = [(l.split(' ')[0], l.split(' ')[1]) for l in f.read().splitlines()] # progress monitor by visualizing static images for i in range(config.STATIC_VIEW_SIZE): static_fnames = val_fnames[i:i+1] static_images = ng.data.DataFromFNames( static_fnames, config.IMG_SHAPES, nthreads=1, random_crop=config.RANDOM_CROP, random_flip=config.RANDOM_FLIP).data_pipeline(1) static_inpainted_images = model.build_static_infer_graph( static_images[0], config, name='static_view/%d' % i, exclusionmask=images[exclusionmask_index] if config.EXC_MASKS else None) # training settings lr = tf.get_variable( 'lr', shape=[], trainable=False,
if config.GPU_ID != -1: ng.set_gpus(config.GPU_ID) else: ng.get_gpus(config.NUM_GPUS) # training data with open(config.DATA_FLIST[config.DATASET][0]) as f: fnames = f.read().splitlines() data = ng.data.DataFromFNames(fnames, config.IMG_SHAPES, random_crop=config.RANDOM_CROP) images = data.data_pipeline(config.BATCH_SIZE) # main model model = InpaintCAModel() g_vars, d_vars, losses = model.build_graph_with_losses(images, config=config) # validation images if config.VAL: with open(config.DATA_FLIST[config.DATASET][1]) as f: val_fnames = f.read().splitlines() # progress monitor by visualizing static images for i in range(config.STATIC_VIEW_SIZE): static_fnames = val_fnames[i:i + 1] static_images = ng.data.DataFromFNames( static_fnames, config.IMG_SHAPES, nthreads=1, random_crop=config.RANDOM_CROP).data_pipeline(1) static_inpainted_images = model.build_static_infer_graph( static_images, config, name='static_view/%d' % i)
if __name__ == "__main__": # training data FLAGS = ng.Config('inpaint.yml') img_shapes = FLAGS.img_shapes # Read flist input and mask image with open(FLAGS.data_flist[FLAGS.dataset][0]) as f: fnames_input = f.read().splitlines() train_fnames = [(fname, fname[:-4]+'mask.png') for fname in fnames_input] data = ng.data.DataFromFNames( train_fnames, img_shapes, random_crop=FLAGS.random_crop, nthreads=FLAGS.num_cpus_per_job) batch_data = data.data_pipeline(FLAGS.batch_size) # main model model = InpaintCAModel() g_vars, d_vars, losses = model.build_graph_with_losses(FLAGS, batch_data) # validation images with open(FLAGS.data_flist[FLAGS.dataset][1]) as f: val_fnames = f.read().splitlines() val_fnames = [(fname, fname[:-4] + 'mask.png') for fname in val_fnames] batch_val = ng.data.DataFromFNames( val_fnames, img_shapes, nthreads=FLAGS.num_cpus_per_job, random_crop = FLAGS.random_crop).data_pipeline(FLAGS.batch_size) batch_val_complete = model.build_infer_graph(FLAGS, batch_val) num_iters_val = len(val_fnames)//FLAGS.batch_size # training settings lr = tf.get_variable( 'lr', shape=[], trainable=False, initializer=tf.constant_initializer(1e-4)) d_optimizer = tf.train.AdamOptimizer(lr, beta1=0.5, beta2=0.999) g_optimizer = d_optimizer