import tensorflow as tf
#############################################
# Common parameters
#############################################
FLAGS = tf.app.flags.FLAGS
tf.app.flags.DEFINE_string(
'dataset_dir',
'datasets',
'The directory of sketch data of the dataset.')
tf.app.flags.DEFINE_string(
'log_root',
'outputs/log',
'Directory to store tensorboard.')
tf.app.flags.DEFINE_string(
'log_img_root',
'outputs/log_img',
'Directory to store intermediate output images.')
tf.app.flags.DEFINE_string(
'snapshot_root',
'outputs/snapshot',
'Directory to store model checkpoints.')
tf.app.flags.DEFINE_string(
'neural_renderer_path',
'outputs/snapshot/pretrain_neural_renderer/renderer_300000.tfmodel',
'Path to the neural renderer model.')
tf.app.flags.DEFINE_string(
'perceptual_model_root',
'outputs/snapshot/pretrain_perceptual_model',
'Directory to store perceptual model.')
tf.app.flags.DEFINE_string(
'data',
'',
'The dataset type.')
def get_default_hparams_clean():
"""Return default HParams for sketch-rnn."""
hparams = tf.contrib.training.HParams(
program_name='new_train_clean_line_drawings',
data_set='clean_line_drawings', # Our dataset.
input_channel=1,
num_steps=75040, # Total number of steps of training.
save_every=75000,
eval_every=5000,
max_seq_len=48,
batch_size=20,
gpus=[0, 1],
loop_per_gpu=1,
sn_loss_type='increasing', # ['decreasing', 'fixed', 'increasing']
stroke_num_loss_weight=0.02,
stroke_num_loss_weight_end=0.0,
increase_start_steps=25000,
decrease_stop_steps=40000,
perc_loss_layers=['ReLU1_2', 'ReLU2_2', 'ReLU3_3', 'ReLU5_1'],
perc_loss_fuse_type='add', # ['max', 'add', 'raw_add', 'weighted_sum']
init_cursor_on_undrawn_pixel=False,
early_pen_loss_type='move', # ['head', 'tail', 'move']
early_pen_loss_weight=0.1,
early_pen_length=7,
min_width=0.01,
min_window_size=32,
max_scaling=2.0,
encode_cursor_type='value',
image_size_small=128,
image_size_large=278,
cropping_type='v3', # ['v2', 'v3']
pasting_type='v3', # ['v2', 'v3']
pasting_diff=True,
concat_win_size=True,
encoder_type='conv13_c3',
# ['conv10', 'conv10_deep', 'conv13', 'conv10_c3', 'conv10_deep_c3', 'conv13_c3']
# ['conv13_c3_attn']
# ['combine33', 'combine43', 'combine53', 'combineFC']
vary_thickness=False,
outside_loss_weight=10.0,
win_size_outside_loss_weight=10.0,
resize_method='AREA', # ['BILINEAR', 'NEAREST_NEIGHBOR', 'BICUBIC', 'AREA']
concat_cursor=True,
use_softargmax=True,
soft_beta=10, # value for the soft argmax
raster_loss_weight=1.0,
dec_rnn_size=256, # Size of decoder.
dec_model='hyper', # Decoder: lstm, layer_norm or hyper.
# z_size=128, # Size of latent vector z. Recommend 32, 64 or 128.
bin_gt=True,
stop_accu_grad=True,
random_cursor=True,
cursor_type='next',
raster_size=128,
pix_drop_kp=1.0, # Dropout keep rate
add_coordconv=True,
position_format='abs',
raster_loss_base_type='perceptual', # [l1, mse, perceptual]
grad_clip=1.0, # Gradient clipping. Recommend leaving at 1.0.
learning_rate=0.0001, # Learning rate.
decay_rate=0.9999, # Learning rate decay per minibatch.
decay_power=0.9,
min_learning_rate=0.000001, # Minimum learning rate.
use_recurrent_dropout=True, # Dropout with memory loss. Recommended
recurrent_dropout_prob=0.90, # Probability of recurrent dropout keep.
use_input_dropout=False, # Input dropout. Recommend leaving False.
input_dropout_prob=0.90, # Probability of input dropout keep.
use_output_dropout=False, # Output dropout. Recommend leaving False.
output_dropout_prob=0.90, # Probability of output dropout keep.
model_mode='train' # ['train', 'eval', 'sample']
)
return hparams
def get_default_hparams_rough():
"""Return default HParams for sketch-rnn."""
hparams = tf.contrib.training.HParams(
program_name='new_train_rough_sketches',
data_set='rough_sketches', # ['rough_sketches', 'faces']
input_channel=3,
num_steps=90040, # Total number of steps of training.
save_every=90000,
eval_every=5000,
max_seq_len=48,
batch_size=20,
gpus=[0, 1],
loop_per_gpu=1,
sn_loss_type='increasing', # ['decreasing', 'fixed', 'increasing']
stroke_num_loss_weight=0.1,
stroke_num_loss_weight_end=0.0,
increase_start_steps=25000,
decrease_stop_steps=40000,
photo_prob_type='one', # ['increasing', 'zero', 'one']
photo_prob_start_step=35000,
perc_loss_layers=['ReLU2_2', 'ReLU3_3', 'ReLU5_1'],
perc_loss_fuse_type='add', # ['max', 'add', 'raw_add', 'weighted_sum']
early_pen_loss_type='move', # ['head', 'tail', 'move']
early_pen_loss_weight=0.2,
early_pen_length=7,
min_width=0.01,
min_window_size=32,
max_scaling=2.0,
encode_cursor_type='value',
image_size_small=128,
image_size_large=278,
cropping_type='v3', # ['v2', 'v3']
pasting_type='v3', # ['v2', 'v3']
pasting_diff=True,
concat_win_size=True,
encoder_type='conv13_c3',
# ['conv10', 'conv10_deep', 'conv13', 'conv10_c3', 'conv10_deep_c3', 'conv13_c3']
# ['conv13_c3_attn']
# ['combine33', 'combine43', 'combine53', 'combineFC']
outside_loss_weight=10.0,
win_size_outside_loss_weight=10.0,
resize_method='AREA', # ['BILINEAR', 'NEAREST_NEIGHBOR', 'BICUBIC', 'AREA']
concat_cursor=True,
use_softargmax=True,
soft_beta=10, # value for the soft argmax
raster_loss_weight=1.0,
dec_rnn_size=256, # Size of decoder.
dec_model='hyper', # Decoder: lstm, layer_norm or hyper.
# z_size=128, # Size of latent vector z. Recommend 32, 64 or 128.
bin_gt=True,
stop_accu_grad=True,
random_cursor=True,
cursor_type='next',
raster_size=128,
pix_drop_kp=1.0, # Dropout keep rate
add_coordconv=True,
position_format='abs',
raster_loss_base_type='perceptual', # [l1, mse, perceptual]
grad_clip=1.0, # Gradient clipping. Recommend leaving at 1.0.
learning_rate=0.0001, # Learning rate.
decay_rate=0.9999, # Learning rate decay per minibatch.
decay_power=0.9,
min_learning_rate=0.000001, # Minimum learning rate.
use_recurrent_dropout=True, # Dropout with memory loss. Recommended
recurrent_dropout_prob=0.90, # Probability of recurrent dropout keep.
use_input_dropout=False, # Input dropout. Recommend leaving False.
input_dropout_prob=0.90, # Probability of input dropout keep.
use_output_dropout=False, # Output dropout. Recommend leaving False.
output_dropout_prob=0.90, # Probability of output dropout keep.
model_mode='train' # ['train', 'eval', 'sample']
)
return hparams
def get_default_hparams_normal():
"""Return default HParams for sketch-rnn."""
hparams = tf.contrib.training.HParams(
program_name='new_train_faces',
data_set='faces', # ['rough_sketches', 'faces']
input_channel=3,
num_steps=90040, # Total number of steps of training.
save_every=90000,
eval_every=5000,
max_seq_len=48,
batch_size=20,
gpus=[0, 1],
loop_per_gpu=1,
sn_loss_type='fixed', # ['decreasing', 'fixed', 'increasing']
stroke_num_loss_weight=0.0,
stroke_num_loss_weight_end=0.0,
increase_start_steps=0,
decrease_stop_steps=40000,
photo_prob_type='interpolate', # ['increasing', 'zero', 'one', 'interpolate']
photo_prob_start_step=30000,
photo_prob_end_step=60000,
perc_loss_layers=['ReLU2_2', 'ReLU3_3', 'ReLU4_2', 'ReLU5_1'],
perc_loss_fuse_type='add', # ['max', 'add', 'raw_add', 'weighted_sum']
early_pen_loss_type='move', # ['head', 'tail', 'move']
early_pen_loss_weight=0.2,
early_pen_length=7,
min_width=0.01,
min_window_size=32,
max_scaling=2.0,
encode_cursor_type='value',
image_size_small=128,
image_size_large=256,
cropping_type='v3', # ['v2', 'v3']
pasting_type='v3', # ['v2', 'v3']
pasting_diff=True,
concat_win_size=True,
encoder_type='conv13_c3',
# ['conv10', 'conv10_deep', 'conv13', 'conv10_c3', 'conv10_deep_c3', 'conv13_c3']
# ['conv13_c3_attn']
# ['combine33', 'combine43', 'combine53', 'combineFC']
outside_loss_weight=10.0,
win_size_outside_loss_weight=10.0,
resize_method='AREA', # ['BILINEAR', 'NEAREST_NEIGHBOR', 'BICUBIC', 'AREA']
concat_cursor=True,
use_softargmax=True,
soft_beta=10, # value for the soft argmax
raster_loss_weight=1.0,
dec_rnn_size=256, # Size of decoder.
dec_model='hyper', # Decoder: lstm, layer_norm or hyper.
# z_size=128, # Size of latent vector z. Recommend 32, 64 or 128.
bin_gt=True,
stop_accu_grad=True,
random_cursor=True,
cursor_type='next',
raster_size=128,
pix_drop_kp=1.0, # Dropout keep rate
add_coordconv=True,
position_format='abs',
raster_loss_base_type='perceptual', # [l1, mse, perceptual]
grad_clip=1.0, # Gradient clipping. Recommend leaving at 1.0.
learning_rate=0.0001, # Learning rate.
decay_rate=0.9999, # Learning rate decay per minibatch.
decay_power=0.9,
min_learning_rate=0.000001, # Minimum learning rate.
use_recurrent_dropout=True, # Dropout with memory loss. Recommended
recurrent_dropout_prob=0.90, # Probability of recurrent dropout keep.
use_input_dropout=False, # Input dropout. Recommend leaving False.
input_dropout_prob=0.90, # Probability of input dropout keep.
use_output_dropout=False, # Output dropout. Recommend leaving False.
output_dropout_prob=0.90, # Probability of output dropout keep.
model_mode='train' # ['train', 'eval', 'sample']
)
return hparams