Spaces:
Running
Running
method: "svgdreamer" | |
image_size: 600 # canvas size | |
path_svg: ~ # if you want to load a svg file and train from it | |
num_stages: 1 # training stages, you can train x strokes, then freeze them and train another x strokes etc | |
skip_sive: True # optimize from scratch without SIVE init | |
color_init: 'rand' # if skip_live=True, then use color_init to init target_img | |
style: "iconography" # "iconography", "pixelart", "low-poly", "painting", "sketch", "ink" | |
# lr and optim | |
lr_stage_one: # SIVE stage | |
point: 1 # control points | |
width: 0.1 # stroke width | |
color: 0.01 # fill color and stroke color | |
bg: 0.01 # bg in render_warp | |
optim: | |
name: 'adam' | |
betas: [ 0.9, 0.9 ] | |
eps: 1e-6 | |
lr_schedule: True # use lr_scheduler | |
schedule: | |
name: 'linear' | |
keep_ratio: 0.2 | |
decay_ratio: 0.4 | |
lr_stage_two: # VPSD stage | |
point: 1 | |
width: 0.1 | |
color: 0.01 | |
bg: 0.01 | |
lr_schedule: True # use lr_scheduler | |
optim: | |
name: 'adam' | |
betas: [ 0.9, 0.9 ] | |
eps: 1e-6 | |
schedule: | |
name: 'cosine' | |
warmup_steps: 10 | |
warmup_start_lr: 0.02 | |
warmup_end_lr: 0.8 | |
cosine_end_lr: 0.4 | |
# primitives | |
num_paths: 256 # number of strokes | |
trainable_bg: False # set the background to be trainable | |
width: 3 # stroke width | |
num_segments: 4 | |
segment_init: 'circle' # 'random' | |
radius: 20 | |
coord_init: 'random' # 'random', 'naive', place the first control point | |
grid: 50 # divide the canvas into n grids | |
path_reinit: # reinitializing paths | |
use: True | |
freq: 100 # every 50 iterations | |
stop_step: 1000 # for VPSD fine-tuning | |
opacity_threshold: 0.05 | |
area_threshold: 64 | |
# diffusion | |
model_id: "sd21b" # sd14, sd15, sd21, sd21b, sdxl | |
ldm_speed_up: False | |
enable_xformers: True | |
gradient_checkpoint: False | |
cpu_offload: True | |
num_inference_steps: 50 | |
guidance_scale: 7.5 # sdxl default 5.0 | |
K: 4 | |
lora_path: ~ | |
# VPSD loss | |
guidance: | |
use: True | |
type: 'vpsd' | |
n_particle: 1 # 4, 8, 16 | |
vsd_n_particle: 1 # the batch size of particles | |
particle_aug: False # do data enhancement for the input particles | |
num_iter: 2000 # total iterations | |
guidance_scale: 7.5 # CFG value | |
grad_scale: 1.0 # increase or decrease the gradient | |
grad_clip_val: ~ # eg: 10, clip the gradient of VPSD | |
t_range: [ 0.02, 0.98 ] | |
# 'randint': random time steps, this may have a more authentic style. | |
# 'max_0.5_900': annealing from 0.98 to 0.5 after 900 steps, this may have a more colorful results. | |
t_schedule: 'max_0.5_1000' # or 'randint' | |
# phi model config | |
phi_single: False # if False new an unet model to estimate noise | |
phi_model: 'lora' # 'lora', 'unet_simple' | |
use_attn_scale: ${x.guidance.phi_single} # use lora_attn_scale or not | |
lora_attn_scale: 1.0 # the scale of the attn based lora layer | |
phi_guidance_scale: 1.0 | |
phi_t: False # different t for phi fine-tuning | |
phi_update_step: 1 # enable multi-update phi model or not | |
phi_lr: 0.0001 # learning rate of phi model | |
phi_scheduler: 'ddim' # 'dpm-solver' | |
phi_n_particle: 1 # the batch size of phi_model | |
# ReFL config | |
phi_ReFL: False # enable reward feed back learning | |
n_phi_sample: 1 # number of samples used in ReFL | |
phi_sample_step: 200 # the phi log step | |
phi_infer_step: 50 # the phi num_inference_steps | |
# phi model optim | |
phi_optim: | |
name: 'adamw' | |
betas: [ 0.9, 0.999 ] | |
eps: 1e-8 | |
weight_decay: ~ # 1e-5 | |
# phi model lr learning schedule | |
phi_schedule: | |
use: False | |
name: 'cosine' | |
warmup_steps: 50 | |
warmup_start_lr: 0.00001 | |
warmup_end_lr: 0.0001 | |
total_step: 800 | |
cosine_end_lr: 0.0001 | |
# reward model | |
reward_path: './checkpoint/ImageReward' | |
# xing loss for closed-form paths | |
xing_loss: | |
use: False | |
weight: 0.01 | |