forked from open-mmlab/mmagic
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcontrolnet-1xb1-fill50k.py
80 lines (75 loc) · 2.39 KB
/
controlnet-1xb1-fill50k.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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
_base_ = '../_base_/gen_default_runtime.py'
# config for model
stable_diffusion_v15_url = 'runwayml/stable-diffusion-v1-5'
controlnet_canny_url = 'lllyasviel/sd-controlnet-canny'
model = dict(
type='ControlStableDiffusion',
vae=dict(
type='AutoencoderKL',
from_pretrained=stable_diffusion_v15_url,
subfolder='vae'),
unet=dict(
type='UNet2DConditionModel',
subfolder='unet',
from_pretrained=stable_diffusion_v15_url),
text_encoder=dict(
type='ClipWrapper',
clip_type='huggingface',
pretrained_model_name_or_path=stable_diffusion_v15_url,
subfolder='text_encoder'),
tokenizer=stable_diffusion_v15_url,
controlnet=dict(
type='ControlNetModel',
# from_pretrained=controlnet_canny_rul
from_config=controlnet_canny_url # train from scratch
),
scheduler=dict(
type='DDPMScheduler',
from_pretrained=stable_diffusion_v15_url,
subfolder='scheduler'),
test_scheduler=dict(
type='DDIMScheduler',
from_pretrained=stable_diffusion_v15_url,
subfolder='scheduler'),
data_preprocessor=dict(type='DataPreprocessor'),
init_cfg=dict(type='init_from_unet'))
# config for training
train_cfg = dict(max_iters=10000)
optim_wrapper = dict(controlnet=dict(optimizer=dict(type='AdamW', lr=1e-5)))
# Config for data loader
pipeline = [
dict(type='LoadImageFromFile', key='source', channel_order='rgb'),
dict(type='LoadImageFromFile', key='target', channel_order='rgb'),
dict(
type='PackInputs',
keys=['source', 'target'],
data_keys='prompt',
meta_keys=[
'source_channel_order', 'source_color_type',
'target_channel_order', 'target_color_type'
])
]
dataset = dict(
type='ControlNetDataset',
data_root='./data/fill50k',
ann_file='prompt.json',
pipeline=pipeline)
train_dataloader = dict(
dataset=dataset,
num_workers=16,
sampler=dict(type='InfiniteSampler', shuffle=True),
persistent_workers=True,
batch_size=4)
val_cfg = val_evaluator = val_dataloader = None
test_cfg = test_evaluator = test_dataloader = None
# hooks
custom_hooks = [
dict(
type='VisualizationHook',
interval=300,
fixed_input=True,
# visualize train dataset
vis_kwargs_list=dict(type='Data', name='fake_img'),
n_samples=4,
n_row=2)
]