Spaces:
Runtime error
Runtime error
output_path: /miniscratch/_groups/ccai/trash | |
# README on load_path | |
# 1/ any path which leads to a dir will be loaded as `path / checkpoints / latest_ckpt.pth` | |
# 2/ if you want to specify a specific checkpoint, it MUST be a `.pth` file | |
# 3/ resuming a P OR an M model, you may only specify 1 of `load_path.p` OR `load_path.m`. | |
# You may also leave BOTH at none, in which case `output_path / checkpoints / latest_ckpt.pth` | |
# will be used | |
# 4/ resuming a P+M model, you may specify (`p` AND `m`) OR `pm` OR leave all at none, | |
# in which case `output_path / checkpoints / latest_ckpt.pth` will be used to load from | |
# a single checkpoint | |
load_paths: | |
p: none # Painter weights: none will use `output_path / checkpoints / latest_ckpt.pth` | |
m: none # Masker weights: none will use `output_path / checkpoints / latest_ckpt.pth` | |
pm: none # Painter and Masker weights: none will use `output_path / checkpoints / latest_ckpt.pth` | |
# ------------------- | |
# ----- Tasks ----- | |
# ------------------- | |
tasks: [d, s, m, p] # [p] [m, s, d] | |
# ---------------- | |
# ----- Data ----- | |
# ---------------- | |
data: | |
max_samples: -1 # -1 for all, otherwise set to an int to crop the training data size | |
files: # if one is not none it will override the dirs location | |
base: /miniscratch/_groups/ccai/data/jsons | |
train: | |
r: train_r_full.json | |
s: train_s_fixedholes.json | |
rf: train_rf.json | |
kitti: train_kitti.json | |
val: | |
r: val_r_full.json | |
s: val_s_fixedholes.json | |
rf: val_rf_labelbox.json | |
kitti: val_kitti.json | |
check_samples: False | |
loaders: | |
batch_size: 6 | |
num_workers: 6 | |
normalization: default # can be "default" or "HRNet" for now. # default: mean=[0.5, 0.5, 0.5], std=[0.5, 0.5, 0.5]; HRNet: mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225] | |
transforms: | |
- name: hflip | |
ignore: val | |
p: 0.5 | |
- name: resize | |
ignore: false | |
new_size: 640 | |
keep_aspect_ratio: true # smallest dimension will be `new_size` and the other will be computed to keep aspect ratio | |
- name: crop | |
ignore: false | |
center: val # disable randomness, crop around the image's center | |
height: 600 | |
width: 600 | |
- name: brightness | |
ignore: val | |
- name: saturation | |
ignore: val | |
- name: contrast | |
ignore: val | |
- name: resize | |
ignore: false | |
new_size: | |
default: 640 | |
d: 160 | |
s: 160 | |
# --------------------- | |
# ----- Generator ----- | |
# --------------------- | |
gen: | |
opt: | |
optimizer: ExtraAdam # one in [Adam, ExtraAdam] default: Adam | |
beta1: 0.9 | |
lr: | |
default: 0.00005 # 0.00001 for dlv2, 0.00005 for dlv3 | |
lr_policy: step | |
# lr_policy can be constant, step or multi_step; if step, specify lr_step_size and lr_gamma | |
# if multi_step specify lr_step_size lr_gamma and lr_milestones: | |
# if lr_milestones is a list: | |
# the learning rate will be multiplied by gamma each time the epoch reaches an | |
# item in the list (no need for lr_step_size). | |
# if lr_milestones is an int: | |
# a list of milestones is created from `range(lr_milestones, train.epochs, lr_step_size)` | |
lr_step_size: 5 # for linear decay : period of learning rate decay (epochs) | |
lr_milestones: 15 | |
lr_gamma: 0.5 # Multiplicative factor of learning rate decay | |
default: | |
&default-gen # default parameters for the generator (encoder and decoders) | |
activ: lrelu # activation function [relu/lrelu/prelu/selu/tanh] | |
init_gain: 0.02 | |
init_type: xavier | |
n_res: 1 # number of residual blocks before upsampling | |
n_downsample: &n_downsample 3 # number of downsampling layers in encoder | dim 32 + down 3 => z = 256 x 32 x 32 | |
n_upsample: *n_downsample # upsampling in spade decoder ; should match encoder.n_downsample | |
pad_type: reflect # padding type [zero/reflect] | |
norm: spectral # ResBlock normalization ; one of {"batch", "instance", "layer", "adain", "spectral", "none"} | |
proj_dim: 32 # Dim of projection from latent space | |
encoder: # specific params for the encoder | |
<<: *default-gen | |
dim: 32 | |
architecture: deeplabv3 # [deeplabv2/v3 resnet -> res_dim=2048) | dlv3 mobilenet -> res_dim=320 | |
input_dim: 3 # input number of channels | |
n_res: 0 # number of residual blocks in content encoder/decoder | |
norm: spectral # ConvBlock normalization ; one of {"batch", "instance", "layer", "adain", "spectral", "none"} | |
#! Don't change!!! | |
deeplabv2: | |
nblocks: [3, 4, 23, 3] | |
use_pretrained: True | |
pretrained_model: "/miniscratch/_groups/ccai/data/pretrained_models/deeplabv2/DeepLab_resnet_pretrained_imagenet.pth" | |
deeplabv3: | |
backbone: resnet # resnet or mobilenet | |
output_stride: 8 # 8 or 16 | |
use_pretrained: true | |
pretrained_model: | |
mobilenet: "/miniscratch/_groups/ccai/data/pretrained_models/deeplabv3/deeplabv3_plus_mobilenetv2_segmentron.pth" | |
resnet: "/miniscratch/_groups/ccai/data/pretrained_models/deeplabv3/model_CoinCheungDeepLab-v3-plus.pth" | |
d: # specific params for the depth estimation decoder | |
<<: *default-gen | |
output_dim: 1 | |
norm: batch | |
loss: sigm # dada or sigm | /!\ ignored if classify.enable | |
upsample_featuremaps: True # upsamples from 80x80 to 160x160 intermediate feature maps | |
architecture: dada # dada or base | must be base for classif | |
classify: # classify log-depth instead of regression | |
enable: False | |
linspace: | |
min: 0.35 | |
max: 6.95 | |
buckets: 256 | |
s: # specific params for the semantic segmentation decoder | |
<<: *default-gen | |
num_classes: 11 | |
output_dim: 11 | |
use_advent: True | |
use_minent: True | |
architecture: deeplabv3 | |
upsample_featuremaps: False # upsamples from 80x80 to 160x160 intermediate feature maps | |
use_dada: True | |
p: # specific params for the SPADE painter | |
<<: *default-gen | |
latent_dim: 640 | |
loss: gan # gan or hinge | |
no_z: true # <=> use_vae=False in the SPADE repo | |
output_dim: 3 # output dimension | |
pad_type: reflect # padding type [zero/reflect] | |
paste_original_content: True # only select the water painted to backprop through the network, not the whole generated image: fake_flooded = masked_x + m * fake_flooded | |
pl4m_epoch: 49 # epoch from which we introduce a new loss to the masker: the painter's discriminator's loss | |
spade_kernel_size: 3 # kernel size within SPADE norm layers | |
spade_n_up: 7 # number of upsampling layers in the translation decoder is equal to number of downsamplings in the encoder. output's h and w are z's h and w x 2^spade_num_upsampling_layers | z:32 and spade_n_up:4 => output 512 | |
spade_param_free_norm: instance # what param-free normalization to apply in SPADE normalization | |
spade_use_spectral_norm: true | |
use_final_shortcut: False # if true, the last spade block does not get the masked input as conditioning but the prediction of the previous layer (passed through a conv to match dims) in order to lighten the masking restrictions and have smoother edges | |
diff_aug: | |
use: False | |
do_color_jittering: false | |
do_cutout: false | |
cutout_ratio: 0.5 | |
do_translation: false | |
translation_ratio: 0.125 | |
m: # specific params for the mask-generation decoder | |
<<: *default-gen | |
use_spade: False | |
output_dim: 1 | |
use_minent: True # directly minimize the entropy of the image | |
use_minent_var: True # add variance of entropy map in the measure of entropy for a certain picture | |
use_advent: True # minimize the entropy of the image by adversarial training | |
use_ground_intersection: True | |
use_proj: True | |
proj_dim: 64 | |
use_pl4m: False | |
n_res: 3 | |
use_low_level_feats: True | |
use_dada: False | |
spade: | |
latent_dim: 128 | |
detach: false # detach s_pred and d_pred conditioning tensors | |
cond_nc: 15 # 12 without x, 15 with x | |
spade_use_spectral_norm: True | |
spade_param_free_norm: batch | |
num_layers: 3 | |
activations: | |
all_lrelu: True | |
# ------------------------- | |
# ----- Discriminator ----- | |
# ------------------------- | |
dis: | |
soft_shift: 0.2 # label smoothing: real in U(1-soft_shift, 1), fake in U(0, soft_shift) # ! one-sided label smoothing | |
flip_prob: 0.05 # label flipping | |
opt: | |
optimizer: ExtraAdam # one in [Adam, ExtraAdam] default: Adam | |
beta1: 0.5 | |
lr: | |
default: 0.00002 # 0.0001 for dlv2, 0.00002 for dlv3 | |
lr_policy: step | |
# lr_policy can be constant, step or multi_step; if step, specify lr_step_size and lr_gamma | |
# if multi_step specify lr_step_size lr_gamma and lr_milestones: | |
# if lr_milestones is a list: | |
# the learning rate will be multiplied by gamma each time the epoch reaches an | |
# item in the list (no need for lr_step_size). | |
# if lr_milestones is an int: | |
# a list of milestones is created from `range(lr_milestones, train.epochs, lr_step_size)` | |
lr_step_size: 15 # for linear decay : period of learning rate decay (epochs) | |
lr_milestones: 5 | |
lr_gamma: 0.5 # Multiplicative factor of learning rate decay | |
default: | |
&default-dis # default setting for discriminators (there are 4 of them for rn rf sn sf) | |
input_nc: 3 | |
ndf: 64 | |
n_layers: 4 | |
norm: instance | |
init_type: xavier | |
init_gain: 0.02 | |
use_sigmoid: false | |
num_D: 1 #Number of discriminators to use (>1 means multi-scale) | |
get_intermediate_features: false | |
p: | |
<<: *default-dis | |
num_D: 3 | |
get_intermediate_features: true | |
use_local_discriminator: false | |
# ttur: false # two time-scale update rule (see SPADE repo) | |
m: | |
<<: *default-dis | |
multi_level: false | |
architecture: base # can be [base | OmniDiscriminator] | |
gan_type: WGAN_norm # can be [GAN | WGAN | WGAN_gp | WGAN_norm] | |
wgan_clamp_lower: -0.01 # used in WGAN, WGAN clap the params in dis to [wgan_clamp_lower, wgan_clamp_upper] for every update | |
wgan_clamp_upper: 0.01 # used in WGAN | |
s: | |
<<: *default-dis | |
gan_type: WGAN_norm # can be [GAN | WGAN | WGAN_gp | WGAN_norm] | |
wgan_clamp_lower: -0.01 # used in WGAN, WGAN clap the params in dis to [wgan_clamp_lower, wgan_clamp_upper] for every update | |
wgan_clamp_upper: 0.01 # used in WGAN | |
# ------------------------------- | |
# ----- Domain Classifier ----- | |
# ------------------------------- | |
classifier: | |
opt: | |
optimizer: ExtraAdam # one in [Adam, ExtraAdam] default: Adam | |
beta1: 0.5 | |
lr: | |
default: 0.0005 | |
lr_policy: step # constant or step ; if step, specify step_size and gamma | |
lr_step_size: 30 # for linear decay | |
lr_gamma: 0.5 | |
loss: l2 #Loss can be l1, l2, cross_entropy. default cross_entropy | |
layers: [100, 100, 20, 20, 4] # number of units per hidden layer ; las number is output_dim | |
dropout: 0.4 # probability of being set to 0 | |
init_type: kaiming | |
init_gain: 0.2 | |
proj_dim: 128 #Dim of projection from latent space | |
# ------------------------ | |
# ----- Train Params ----- | |
# ------------------------ | |
train: | |
kitti: | |
pretrain: False | |
epochs: 10 | |
batch_size: 6 | |
amp: False | |
pseudo: | |
tasks: [] # list of tasks for which to use pseudo labels (empty list to disable) | |
epochs: 10 # disable pseudo training after n epochs (set to -1 to never disable) | |
epochs: 300 | |
fid: | |
n_images: 57 # val_rf.json has 57 images | |
batch_size: 50 # inception inference batch size, not painter's | |
dims: 2048 # what Inception bock to compute the stats from (see BLOCK_INDEX_BY_DIM in fid.py) | |
latent_domain_adaptation: False # whether or not to do domain adaptation on the latent vectors # Needs to be turned off if use_advent is True | |
lambdas: # scaling factors in the total loss | |
G: | |
d: | |
main: 1 | |
gml: 0.5 | |
s: | |
crossent: 1 | |
crossent_pseudo: 0.001 | |
minent: 0.001 | |
advent: 0.001 | |
m: | |
bce: 1 # Main prediction loss, i.e. GAN or BCE | |
tv: 1 # Total variational loss (for smoothing) | |
gi: 0.05 | |
pl4m: 1 # painter loss for the masker (end-to-end) | |
p: | |
context: 0 | |
dm: 1 # depth matching | |
featmatch: 10 | |
gan: 1 # gan loss | |
reconstruction: 0 | |
tv: 0 | |
vgg: 10 | |
classifier: 1 | |
C: 1 | |
advent: | |
ent_main: 0.5 # the coefficient of the MinEnt loss that directly minimize the entropy of the image | |
ent_aux: 0.0 # the corresponding coefficient of the MinEnt loss of second output | |
ent_var: 0.1 # the proportion of variance of entropy map in the entropy measure for a certain picture | |
adv_main: 1.0 # the coefficient of the AdvEnt loss that minimize the entropy of the image by adversarial training | |
adv_aux: 0.0 # the corresponding coefficient of the AdvEnt loss of second output | |
dis_main: 1.0 # the discriminator take care of the first output in the adversarial training | |
dis_aux: 0.0 # the discriminator take care of the second output in the adversarial training | |
WGAN_gp: 10 # used in WGAN_gp, it's the hyperparameters for the gradient penalty | |
log_level: 2 # 0: no log, 1: only aggregated losses, >1 detailed losses | |
save_n_epochs: 25 # Save `latest_ckpt.pth` every epoch, `epoch_{epoch}_ckpt.pth` model every n epochs if epoch >= min_save_epoch | |
min_save_epoch: 28 # Save extra intermediate checkpoints when epoch > min_save_epoch | |
resume: false # Load latest_ckpt.pth checkpoint from `output_path` #TODO Make this path of checkpoint to load | |
auto_resume: true # automatically looks for similar output paths and exact same jobID to resume training automatically even if resume is false. | |
# ----------------------------- | |
# ----- Validation Params ----- | |
# ----------------------------- | |
val: | |
store_images: false # write to disk on top of comet logging | |
val_painter: /miniscratch/_groups/ccai/checkpoints/painter/victor/good_large_lr/checkpoints/latest_ckpt.pth | |
# ----------------------------- | |
# ----- Comet Params ---------- | |
# ----------------------------- | |
comet: | |
display_size: 20 | |
rows_per_log: 5 # number of samples (rows) in a logged grid image. Number of total logged images: display_size // rows_per_log | |
im_per_row: # how many columns (3 = x, target, pred) | |
p: 4 | |
m: 6 | |
s: 4 | |
d: 4 | |