Spaces:
Runtime error
Runtime error
Update app.py
Browse files
app.py
CHANGED
|
@@ -352,6 +352,7 @@ def validate_and_convert_image(image, target_size=(512 , 512)):
|
|
| 352 |
|
| 353 |
class Drag:
|
| 354 |
|
|
|
|
| 355 |
def __init__(self, device, args, height, width, model_length, dtype=torch.float16, use_sift=False):
|
| 356 |
self.device = device
|
| 357 |
self.dtype = dtype
|
|
@@ -362,21 +363,21 @@ class Drag:
|
|
| 362 |
low_cpu_mem_usage=True,
|
| 363 |
custom_resume=True,
|
| 364 |
)
|
| 365 |
-
unet = unet.to(dtype)
|
| 366 |
|
| 367 |
controlnet = ControlNetSVDModel.from_pretrained(
|
| 368 |
os.path.join(args.model, "controlnet"),
|
| 369 |
)
|
| 370 |
-
controlnet = controlnet.to(dtype)
|
| 371 |
|
| 372 |
-
|
| 373 |
-
|
| 374 |
-
|
| 375 |
-
|
| 376 |
-
|
| 377 |
-
|
| 378 |
-
|
| 379 |
-
|
| 380 |
|
| 381 |
pipe = StableVideoDiffusionInterpControlPipeline.from_pretrained(
|
| 382 |
"checkpoints/stable-video-diffusion-img2vid-xt",
|
|
@@ -385,6 +386,7 @@ class Drag:
|
|
| 385 |
low_cpu_mem_usage=False,
|
| 386 |
torch_dtype=torch.float16, variant="fp16", local_files_only=True,
|
| 387 |
)
|
|
|
|
| 388 |
|
| 389 |
self.pipeline = pipe
|
| 390 |
# self.pipeline.enable_model_cpu_offload()
|
|
@@ -396,10 +398,7 @@ class Drag:
|
|
| 396 |
self.use_sift = use_sift
|
| 397 |
|
| 398 |
@spaces.GPU
|
| 399 |
-
def run(self, first_frame_path, last_frame_path, tracking_points, controlnet_cond_scale, motion_bucket_id):
|
| 400 |
-
|
| 401 |
-
self.pipeline.to(self.device)
|
| 402 |
-
|
| 403 |
original_width, original_height = 512, 320 # TODO
|
| 404 |
|
| 405 |
# load_image
|
|
@@ -530,7 +529,7 @@ class Drag:
|
|
| 530 |
def reset_states(first_frame_path, last_frame_path, tracking_points):
|
| 531 |
first_frame_path = gr.State()
|
| 532 |
last_frame_path = gr.State()
|
| 533 |
-
tracking_points = gr.State()
|
| 534 |
|
| 535 |
return first_frame_path, last_frame_path, tracking_points
|
| 536 |
|
|
@@ -549,7 +548,7 @@ def preprocess_image(image):
|
|
| 549 |
|
| 550 |
image_pil.save(first_frame_path)
|
| 551 |
|
| 552 |
-
return first_frame_path, first_frame_path, gr.State()
|
| 553 |
|
| 554 |
|
| 555 |
def preprocess_image_end(image_end):
|
|
@@ -566,7 +565,7 @@ def preprocess_image_end(image_end):
|
|
| 566 |
|
| 567 |
image_end_pil.save(last_frame_path)
|
| 568 |
|
| 569 |
-
return last_frame_path, last_frame_path, gr.State()
|
| 570 |
|
| 571 |
|
| 572 |
def add_drag(tracking_points):
|
|
@@ -680,7 +679,6 @@ if __name__ == "__main__":
|
|
| 680 |
args = get_args()
|
| 681 |
ensure_dirname(args.output_dir)
|
| 682 |
|
| 683 |
-
|
| 684 |
color_list = []
|
| 685 |
for i in range(20):
|
| 686 |
color = np.concatenate([np.random.random(4)*255], axis=0)
|
|
@@ -710,7 +708,7 @@ if __name__ == "__main__":
|
|
| 710 |
Framer = Drag("cuda", args, 320, 512, 14)
|
| 711 |
first_frame_path = gr.State()
|
| 712 |
last_frame_path = gr.State()
|
| 713 |
-
tracking_points = gr.State()
|
| 714 |
|
| 715 |
with gr.Row():
|
| 716 |
with gr.Column(scale=1):
|
|
|
|
| 352 |
|
| 353 |
class Drag:
|
| 354 |
|
| 355 |
+
@spaces.GPU
|
| 356 |
def __init__(self, device, args, height, width, model_length, dtype=torch.float16, use_sift=False):
|
| 357 |
self.device = device
|
| 358 |
self.dtype = dtype
|
|
|
|
| 363 |
low_cpu_mem_usage=True,
|
| 364 |
custom_resume=True,
|
| 365 |
)
|
| 366 |
+
unet = unet.to(device, dtype)
|
| 367 |
|
| 368 |
controlnet = ControlNetSVDModel.from_pretrained(
|
| 369 |
os.path.join(args.model, "controlnet"),
|
| 370 |
)
|
| 371 |
+
controlnet = controlnet.to(device, dtype)
|
| 372 |
|
| 373 |
+
if is_xformers_available():
|
| 374 |
+
import xformers
|
| 375 |
+
xformers_version = version.parse(xformers.__version__)
|
| 376 |
+
unet.enable_xformers_memory_efficient_attention()
|
| 377 |
+
# controlnet.enable_xformers_memory_efficient_attention()
|
| 378 |
+
else:
|
| 379 |
+
raise ValueError(
|
| 380 |
+
"xformers is not available. Make sure it is installed correctly")
|
| 381 |
|
| 382 |
pipe = StableVideoDiffusionInterpControlPipeline.from_pretrained(
|
| 383 |
"checkpoints/stable-video-diffusion-img2vid-xt",
|
|
|
|
| 386 |
low_cpu_mem_usage=False,
|
| 387 |
torch_dtype=torch.float16, variant="fp16", local_files_only=True,
|
| 388 |
)
|
| 389 |
+
pipe.to(device)
|
| 390 |
|
| 391 |
self.pipeline = pipe
|
| 392 |
# self.pipeline.enable_model_cpu_offload()
|
|
|
|
| 398 |
self.use_sift = use_sift
|
| 399 |
|
| 400 |
@spaces.GPU
|
| 401 |
+
def run(self, first_frame_path, last_frame_path, tracking_points, controlnet_cond_scale, motion_bucket_id):
|
|
|
|
|
|
|
|
|
|
| 402 |
original_width, original_height = 512, 320 # TODO
|
| 403 |
|
| 404 |
# load_image
|
|
|
|
| 529 |
def reset_states(first_frame_path, last_frame_path, tracking_points):
|
| 530 |
first_frame_path = gr.State()
|
| 531 |
last_frame_path = gr.State()
|
| 532 |
+
tracking_points = gr.State([])
|
| 533 |
|
| 534 |
return first_frame_path, last_frame_path, tracking_points
|
| 535 |
|
|
|
|
| 548 |
|
| 549 |
image_pil.save(first_frame_path)
|
| 550 |
|
| 551 |
+
return first_frame_path, first_frame_path, gr.State([])
|
| 552 |
|
| 553 |
|
| 554 |
def preprocess_image_end(image_end):
|
|
|
|
| 565 |
|
| 566 |
image_end_pil.save(last_frame_path)
|
| 567 |
|
| 568 |
+
return last_frame_path, last_frame_path, gr.State([])
|
| 569 |
|
| 570 |
|
| 571 |
def add_drag(tracking_points):
|
|
|
|
| 679 |
args = get_args()
|
| 680 |
ensure_dirname(args.output_dir)
|
| 681 |
|
|
|
|
| 682 |
color_list = []
|
| 683 |
for i in range(20):
|
| 684 |
color = np.concatenate([np.random.random(4)*255], axis=0)
|
|
|
|
| 708 |
Framer = Drag("cuda", args, 320, 512, 14)
|
| 709 |
first_frame_path = gr.State()
|
| 710 |
last_frame_path = gr.State()
|
| 711 |
+
tracking_points = gr.State([])
|
| 712 |
|
| 713 |
with gr.Row():
|
| 714 |
with gr.Column(scale=1):
|