/
config.py
64 lines (53 loc) · 3.09 KB
/
config.py
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
import os
import yaml
class Config(object):
def __init__(self, config_path):
assert os.path.exists(config_path), "ERROR: Config File doesn't exist"
with open(config_path, 'r') as f:
self._yaml = f.read()
self._dict = yaml.load(self._yaml)
def __getattr__(self, name):
if self._dict.get(name) is not None:
return self._dict[name]
if DEFAULT_CONFIG.get(name) is not None:
return DEFAULT_CONFIG[name]
return None
def print(self):
print('Model configurations:')
print('---------------------------------')
print(self._yaml)
print('')
print('---------------------------------')
print('')
DEFAULT_CONFIG = {
'MODE': 1, # 1: train, 2: test, 3: eval
'MODEL': 1, # 1: edge model, 2: inpaint model, 3: edge-inpaint model, 4: joint model
'MASK': 3, # 1: random block, 2: half, 3: external, 4: (external, random block), 5: (external, random block, half)
'EDGE': 1, # 1: canny, 2: external
'NMS': 1, # 0: no non-max-suppression, 1: applies non-max-suppression on the external edges by multiplying by Canny
'SEED': 10, # random seed
'GPU': [5], # list of gpu ids
'DEBUG': 0, # turns on debugging mode
'VERBOSE': 0, # turns on verbose mode in the output console
'LR': 0.0001, # learning rate
'D2G_LR': 0.1, # discriminator/generator learning rate ratio
'BETA1': 0.0, # adam optimizer beta1
'BETA2': 0.9, # adam optimizer beta2
'BATCH_SIZE': 8, # input batch size for training
'INPUT_SIZE': 256, # input image size for training 0 for original size
'SIGMA': 2, # standard deviation of the Gaussian filter used in Canny edge detector (0: random, -1: no edge)
'MAX_ITERS': 2e6, # maximum number of iterations to train the model
'EDGE_THRESHOLD': 0.5, # edge detection threshold
'L1_LOSS_WEIGHT': 1, # l1 loss weight
'FM_LOSS_WEIGHT': 10, # feature-matching loss weight
'STYLE_LOSS_WEIGHT': 1, # style loss weight
'CONTENT_LOSS_WEIGHT': 1, # perceptual loss weight
'INPAINT_ADV_LOSS_WEIGHT': 0.01,# adversarial loss weight
'GAN_LOSS': 'nsgan', # nsgan | lsgan | hinge
'GAN_POOL_SIZE': 0, # fake images pool size
'SAVE_INTERVAL': 1000, # how many iterations to wait before saving model (0: never)
'SAMPLE_INTERVAL': 1000, # how many iterations to wait before sampling (0: never)
'SAMPLE_SIZE': 12, # number of images to sample
'EVAL_INTERVAL': 0, # how many iterations to wait before model evaluation (0: never)
'LOG_INTERVAL': 10, # how many iterations to wait before logging training status (0: never)
}