File size: 4,062 Bytes
05fb4ab
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
import importlib
import os
from collections import OrderedDict


def create_default_local_file():
    """ Contains the path to all necessary datasets or useful folders (like workspace, pretrained models..)"""
    path = os.path.join(os.path.dirname(__file__), 'local.py')

    empty_str = '\'\'' 
    default_settings = OrderedDict({
        'workspace_dir': empty_str,
        'tensorboard_dir': 'self.workspace_dir',
        'pretrained_networks': 'self.workspace_dir',
        'pre_trained_models_dir' : empty_str,
        'hp': empty_str,
        'eth3d': empty_str,
        'training_cad_520': empty_str,
        'validation_cad_520': empty_str,
        'coco': empty_str,
        'dataset_name': empty_str, 
        'nbr_objects': 4,
        'min_area_objects': 1300,
        'compute_object_reprojection_mask': True,
        'n_threads': 16, 
        'initial_pretrained_model': None,
        'data_dir': empty_str, 
        'schedule_sampler': "'uniform'",
        'lr': empty_str, 
        'weight_decay': 0.0,
        'lr_anneal_steps': 0,
        'batch_size': 18, 
        'microbatch': -1,
        'ema_rate': 0.9999,
        'log_interval': 10,
        'save_interval': 5000,
        'resume_checkpoint': empty_str,
        'train_mode': empty_str,
        'use_fp16': False,
        'fp16_scale_growth': 1e-3,
        'image_size': 64,
        'flow_size': (64,64),
        'num_channels': 128,
        'num_res_blocks': 3,
        'num_heads': 4,
        'num_heads_upsample': -1,
        'attention_resolutions': '"16,8"',
        'dropout': 0.0,
        'learn_sigma': False,
        'sigma_small': False,
        'class_cond': False,
        'diffusion_steps': 5, 
        'noise_schedule': "'cosine'",
        'use_kl': False,
        'predict_xstart': True,
        'rescale_timesteps': True,
        'rescale_learned_sigmas': True,
        'use_checkpoint': False,
        'use_scale_shift_norm': True, 
        'clip_denoised': False,
        'num_samples': 10000,
        'val_batch_size': 1,
        'use_ddim': False,
        'model_path': empty_str,
        'model_path_sr': empty_str,
        'timestep_respacing': "''",
        'eval_dataset': empty_str, 
        'n_batch': empty_str,
        'visualize': empty_str
        })

    comment = {'workspace_dir': 'Base directory for saving network checkpoints.',
               'tensorboard_dir': 'Directory for tensorboard files.',
               'dataset_name': 'Training dataset name ("DPED" or "COCO2014")',
               'lr': 'learning rate for training (recommendation: 3e-5 for DPED and 1e-4 for COCO)',
               'train_mode': 'Training mode ("stage_1" or "sr")',
               'model_path': 'Pre-trained model path for evaluation',
               'model_path_sr': 'Pre-trained super-resolution model path for evaluation',
               'eval_dataset': 'Evaluation dataset ("hp" or "eth3d")',
               'n_batch': 'The number of multiple hypotheses',
               'visualize': 'Set True, if you want qualitative results.'}
    

    with open(path, 'w') as f:
        f.write('class EnvironmentSettings:\n')
        f.write('    def __init__(self):\n')

        for attr, attr_val in default_settings.items():
            comment_str = None
            if attr in comment:
                comment_str = comment[attr]
            if comment_str is None:
                f.write('        self.{} = {}\n'.format(attr, attr_val))
            else:
                f.write('        self.{} = {}    # {}\n'.format(attr, attr_val, comment_str))


def env_settings():
    env_module_name = 'admin.local'
    # env_module_name = 'admin.example_coco'
    try:
        env_module = importlib.import_module(env_module_name)
        return env_module.EnvironmentSettings()
    except:
        env_file = os.path.join(os.path.dirname(__file__), 'local.py')

        create_default_local_file()
        raise RuntimeError('YOU HAVE NOT SETUP YOUR local.py!!!\n Go to "{}" and set all the paths you need. '
                           'Then try to run again.'.format(env_file))