SingleZombie commited on
Commit
9fd841c
1 Parent(s): ff715ca

update app

Browse files
Files changed (1) hide show
  1. webUI.py → app.py +43 -11
webUI.py → app.py RENAMED
@@ -35,6 +35,34 @@ from annotator.hed import HEDdetector
35
  from annotator.canny import CannyDetector
36
  from annotator.midas import MidasDetector
37
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
38
 
39
  def get_models(config):
40
  # optical flow
@@ -45,7 +73,7 @@ def get_models(config):
45
  attention_type='swin',
46
  ffn_dim_expansion=4,
47
  num_transformer_layers=6,
48
- ).to('cuda')
49
 
50
  checkpoint = torch.load(
51
  config['gmflow_path'], map_location=lambda storage, loc: storage)
@@ -56,14 +84,14 @@ def get_models(config):
56
  # saliency detection
57
  sod_model = build_model('resnet')
58
  sod_model.load_state_dict(torch.load(config['sod_path']))
59
- sod_model.to("cuda").eval()
60
 
61
  # controlnet
62
  if config['controlnet_type'] not in ['hed', 'depth', 'canny']:
63
  config['controlnet_type'] = 'hed'
64
  controlnet = ControlNetModel.from_pretrained("lllyasviel/sd-controlnet-"+config['controlnet_type'],
65
  torch_dtype=torch.float16)
66
- controlnet.to("cuda")
67
  if config['controlnet_type'] == 'depth':
68
  detector = MidasDetector()
69
  elif config['controlnet_type'] == 'canny':
@@ -77,7 +105,7 @@ def get_models(config):
77
  pipe = StableDiffusionPipeline.from_pretrained(
78
  config['sd_path'], vae=vae, torch_dtype=torch.float16)
79
  pipe.scheduler = DDPMScheduler.from_config(pipe.scheduler.config)
80
- pipe.to("cuda")
81
  pipe.scheduler.set_timesteps(
82
  config['num_inference_steps'], device=pipe._execution_device)
83
 
@@ -168,14 +196,15 @@ class GlobalState:
168
  self.control_type = control_type
169
  self.controlnet = ControlNetModel.from_pretrained("lllyasviel/sd-controlnet-"+control_type,
170
  torch_dtype=torch.float16)
171
- self.controlnet.to("cuda")
172
  if control_type == 'depth':
173
  self.detector = MidasDetector()
174
  elif control_type == 'canny':
175
  self.detector = CannyDetector()
176
  else:
177
  self.detector = HEDdetector()
178
- torch.cuda.empty_cache()
 
179
  for param in self.controlnet.parameters():
180
  param.requires_grad = False
181
 
@@ -189,10 +218,11 @@ class GlobalState:
189
  sd_model, vae=vae, torch_dtype=torch.float16)
190
  self.pipe.scheduler = DDPMScheduler.from_config(
191
  self.pipe.scheduler.config)
192
- self.pipe.to("cuda")
193
  self.frescoProc = apply_FRESCO_attn(self.pipe)
194
  self.frescoProc.controller.disable_controller()
195
- torch.cuda.empty_cache()
 
196
  for param in self.pipe.unet.parameters():
197
  param.requires_grad = False
198
 
@@ -291,7 +321,7 @@ def process1(input_path, prompt, sd_model, seed, image_resolution, control_stren
291
 
292
  edges = torch.cat([numpy2tensor(apply_control(img,
293
  global_state.detector, control_type)[:, :, None]) for img in imgs], dim=0)
294
- edges = edges.repeat(1, 3, 1, 1).cuda() * 0.5 + 0.5
295
  edges = torch.cat([edges.to(global_state.pipe.unet.dtype)] * 2)
296
 
297
  if bg_smooth:
@@ -326,7 +356,8 @@ def process1(input_path, prompt, sd_model, seed, image_resolution, control_stren
326
  saliency=saliency, optimize_temporal=optimize_temporal)
327
 
328
  gc.collect()
329
- torch.cuda.empty_cache()
 
330
 
331
  # run!
332
  latents = inference(global_state.pipe, global_state.controlnet, global_state.frescoProc,
@@ -354,7 +385,8 @@ def process1(input_path, prompt, sd_model, seed, image_resolution, control_stren
354
  propagation_mode = batch_ind > 0
355
  if batch_ind == len(sublists):
356
  gc.collect()
357
- torch.cuda.empty_cache()
 
358
  break
359
 
360
  writer = imageio.get_writer(os.path.join(save_path, 'key.mp4'), fps=fps)
 
35
  from annotator.canny import CannyDetector
36
  from annotator.midas import MidasDetector
37
 
38
+ import huggingface_hub
39
+
40
+ huggingface_hub.hf_hub_download('SingleZombie/FRESCO',
41
+ 'boxer-punching-towards-camera.mp4',
42
+ local_dir='data')
43
+ huggingface_hub.hf_hub_download('SingleZombie/FRESCO',
44
+ 'car-turn.mp4',
45
+ local_dir='data')
46
+ huggingface_hub.hf_hub_download('SingleZombie/FRESCO',
47
+ 'dog.mp4',
48
+ local_dir='data')
49
+ huggingface_hub.hf_hub_download('SingleZombie/FRESCO',
50
+ 'music.mp4',
51
+ local_dir='data')
52
+
53
+ huggingface_hub.hf_hub_download('PKUWilliamYang/Rerender',
54
+ 'gmflow_sintel-0c07dcb3.pth',
55
+ local_dir='model')
56
+
57
+ huggingface_hub.hf_hub_download('PKUWilliamYang/Rerender',
58
+ 'epoch_resnet.pth',
59
+ local_dir='model')
60
+
61
+ huggingface_hub.hf_hub_download('PKUWilliamYang/Rerender',
62
+ 'ebsynth',
63
+ local_dir='src/ebsynth/deps/ebsynth/bin')
64
+
65
+ device = 'cuda' if torch.cuda.is_available() else 'cpu'
66
 
67
  def get_models(config):
68
  # optical flow
 
73
  attention_type='swin',
74
  ffn_dim_expansion=4,
75
  num_transformer_layers=6,
76
+ ).to(device)
77
 
78
  checkpoint = torch.load(
79
  config['gmflow_path'], map_location=lambda storage, loc: storage)
 
84
  # saliency detection
85
  sod_model = build_model('resnet')
86
  sod_model.load_state_dict(torch.load(config['sod_path']))
87
+ sod_model.to(device).eval()
88
 
89
  # controlnet
90
  if config['controlnet_type'] not in ['hed', 'depth', 'canny']:
91
  config['controlnet_type'] = 'hed'
92
  controlnet = ControlNetModel.from_pretrained("lllyasviel/sd-controlnet-"+config['controlnet_type'],
93
  torch_dtype=torch.float16)
94
+ controlnet.to(device)
95
  if config['controlnet_type'] == 'depth':
96
  detector = MidasDetector()
97
  elif config['controlnet_type'] == 'canny':
 
105
  pipe = StableDiffusionPipeline.from_pretrained(
106
  config['sd_path'], vae=vae, torch_dtype=torch.float16)
107
  pipe.scheduler = DDPMScheduler.from_config(pipe.scheduler.config)
108
+ pipe.to(device)
109
  pipe.scheduler.set_timesteps(
110
  config['num_inference_steps'], device=pipe._execution_device)
111
 
 
196
  self.control_type = control_type
197
  self.controlnet = ControlNetModel.from_pretrained("lllyasviel/sd-controlnet-"+control_type,
198
  torch_dtype=torch.float16)
199
+ self.controlnet.to(device)
200
  if control_type == 'depth':
201
  self.detector = MidasDetector()
202
  elif control_type == 'canny':
203
  self.detector = CannyDetector()
204
  else:
205
  self.detector = HEDdetector()
206
+ if device == 'cuda':
207
+ torch.cuda.empty_cache()
208
  for param in self.controlnet.parameters():
209
  param.requires_grad = False
210
 
 
218
  sd_model, vae=vae, torch_dtype=torch.float16)
219
  self.pipe.scheduler = DDPMScheduler.from_config(
220
  self.pipe.scheduler.config)
221
+ self.pipe.to(device)
222
  self.frescoProc = apply_FRESCO_attn(self.pipe)
223
  self.frescoProc.controller.disable_controller()
224
+ if device == 'cuda':
225
+ torch.cuda.empty_cache()
226
  for param in self.pipe.unet.parameters():
227
  param.requires_grad = False
228
 
 
321
 
322
  edges = torch.cat([numpy2tensor(apply_control(img,
323
  global_state.detector, control_type)[:, :, None]) for img in imgs], dim=0)
324
+ edges = edges.repeat(1, 3, 1, 1).to(device) * 0.5 + 0.5
325
  edges = torch.cat([edges.to(global_state.pipe.unet.dtype)] * 2)
326
 
327
  if bg_smooth:
 
356
  saliency=saliency, optimize_temporal=optimize_temporal)
357
 
358
  gc.collect()
359
+ if device == 'cuda':
360
+ torch.cuda.empty_cache()
361
 
362
  # run!
363
  latents = inference(global_state.pipe, global_state.controlnet, global_state.frescoProc,
 
385
  propagation_mode = batch_ind > 0
386
  if batch_ind == len(sublists):
387
  gc.collect()
388
+ if device == 'cuda':
389
+ torch.cuda.empty_cache()
390
  break
391
 
392
  writer = imageio.get_writer(os.path.join(save_path, 'key.mp4'), fps=fps)