Spaces:
Running
on
Zero
Running
on
Zero
Update app.py
Browse files
app.py
CHANGED
@@ -5,8 +5,62 @@ import numpy as np
|
|
5 |
from moviepy.editor import *
|
6 |
from share_btn import community_icon_html, loading_icon_html, share_js
|
7 |
|
8 |
-
|
9 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
10 |
|
11 |
def get_frames(video_in):
|
12 |
frames = []
|
@@ -71,7 +125,7 @@ def infer(prompt,video_in, seed_in, trim_value):
|
|
71 |
|
72 |
for i in frames_list[0:int(n_frame)]:
|
73 |
pix2pix_img = pix2pix(prompt,5.5,1.5,i,15,"",512,512,seed_in,fn_index=0)
|
74 |
-
images =
|
75 |
result_frames.append(images[0])
|
76 |
print("frame " + i + ": done;")
|
77 |
|
@@ -132,10 +186,13 @@ with gr.Blocks(css='style.css') as demo:
|
|
132 |
prompt = gr.Textbox(label="Prompt", placeholder="enter prompt", show_label=False, elem_id="prompt-in")
|
133 |
video_inp = gr.Video(label="Video source", source="upload", type="filepath", include_audio=False, elem_id="input-vid")
|
134 |
with gr.Row():
|
135 |
-
seed_inp = gr.Slider(label="Seed", minimum=0, maximum=
|
136 |
trim_in = gr.Slider(label="Cut video at (s)", minimun=1, maximum=3, step=1, value=1)
|
137 |
with gr.Column():
|
138 |
-
|
|
|
|
|
|
|
139 |
video_out = gr.Video(label="Pix2pix video result", elem_id="video-output")
|
140 |
submit_btn = gr.Button("Generate Pix2Pix video")
|
141 |
|
|
|
5 |
from moviepy.editor import *
|
6 |
from share_btn import community_icon_html, loading_icon_html, share_js
|
7 |
|
8 |
+
from diffusers import DiffusionPipeline, EulerAncestralDiscreteScheduler
|
9 |
+
import torch
|
10 |
+
from PIL import Image
|
11 |
+
import time
|
12 |
+
import psutil
|
13 |
+
import random
|
14 |
+
|
15 |
+
#token = os.environ.get('HF_TOKEN')
|
16 |
+
#pix2pix = gr.Blocks.load(name="spaces/fffiloni/instruct-pix2pix-clone", api_key=token)
|
17 |
+
|
18 |
+
pipe = DiffusionPipeline.from_pretrained("timbrooks/instruct-pix2pix", torch_dtype=torch.float16, safety_checker=None)
|
19 |
+
pipe.scheduler = EulerAncestralDiscreteScheduler.from_config(pipe.scheduler.config)
|
20 |
+
pipe.enable_xformers_memory_efficient_attention()
|
21 |
+
pipe.unet.to(memory_format=torch.channels_last)
|
22 |
+
|
23 |
+
device = "GPU 🔥" if torch.cuda.is_available() else "CPU 🥶"
|
24 |
+
|
25 |
+
if torch.cuda.is_available():
|
26 |
+
pipe = pipe.to("cuda")
|
27 |
+
|
28 |
+
def pix2pix(
|
29 |
+
prompt,
|
30 |
+
text_guidance_scale,
|
31 |
+
image_guidance_scale,
|
32 |
+
image,
|
33 |
+
steps,
|
34 |
+
neg_prompt="",
|
35 |
+
width=512,
|
36 |
+
height=512,
|
37 |
+
seed=0,
|
38 |
+
):
|
39 |
+
print(psutil.virtual_memory()) # print memory usage
|
40 |
+
|
41 |
+
if seed == 0:
|
42 |
+
seed = random.randint(0, 2147483647)
|
43 |
+
|
44 |
+
generator = torch.Generator("cuda").manual_seed(seed)
|
45 |
+
|
46 |
+
try:
|
47 |
+
ratio = min(height / image.height, width / image.width)
|
48 |
+
image = image.resize((int(image.width * ratio), int(image.height * ratio)), Image.LANCZOS)
|
49 |
+
|
50 |
+
result = pipe(
|
51 |
+
prompt,
|
52 |
+
negative_prompt=neg_prompt,
|
53 |
+
image=image,
|
54 |
+
num_inference_steps=int(steps),
|
55 |
+
image_guidance_scale=image_guidance_scale,
|
56 |
+
guidance_scale=text_guidance_scale,
|
57 |
+
generator=generator,
|
58 |
+
)
|
59 |
+
|
60 |
+
# return replace_nsfw_images(result)
|
61 |
+
return result.images, result.nsfw_content_detected, seed
|
62 |
+
except Exception as e:
|
63 |
+
return None, None, error_str(e)
|
64 |
|
65 |
def get_frames(video_in):
|
66 |
frames = []
|
|
|
125 |
|
126 |
for i in frames_list[0:int(n_frame)]:
|
127 |
pix2pix_img = pix2pix(prompt,5.5,1.5,i,15,"",512,512,seed_in,fn_index=0)
|
128 |
+
images = pix2pix_img[0]
|
129 |
result_frames.append(images[0])
|
130 |
print("frame " + i + ": done;")
|
131 |
|
|
|
186 |
prompt = gr.Textbox(label="Prompt", placeholder="enter prompt", show_label=False, elem_id="prompt-in")
|
187 |
video_inp = gr.Video(label="Video source", source="upload", type="filepath", include_audio=False, elem_id="input-vid")
|
188 |
with gr.Row():
|
189 |
+
seed_inp = gr.Slider(label="Seed", minimum=0, maximum=2147483647, step=1, value=123456)
|
190 |
trim_in = gr.Slider(label="Cut video at (s)", minimun=1, maximum=3, step=1, value=1)
|
191 |
with gr.Column():
|
192 |
+
gr.HTML("""
|
193 |
+
<a style="display:inline-block" href="https://huggingface.co/spaces/fffiloni/Pix2Pix-Video?duplicate=true"><img src="https://img.shields.io/badge/-Duplicate%20Space-blue?labelColor=white&style=flat&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAP5JREFUOE+lk7FqAkEURY+ltunEgFXS2sZGIbXfEPdLlnxJyDdYB62sbbUKpLbVNhyYFzbrrA74YJlh9r079973psed0cvUD4A+4HoCjsA85X0Dfn/RBLBgBDxnQPfAEJgBY+A9gALA4tcbamSzS4xq4FOQAJgCDwV2CPKV8tZAJcAjMMkUe1vX+U+SMhfAJEHasQIWmXNN3abzDwHUrgcRGmYcgKe0bxrblHEB4E/pndMazNpSZGcsZdBlYJcEL9Afo75molJyM2FxmPgmgPqlWNLGfwZGG6UiyEvLzHYDmoPkDDiNm9JR9uboiONcBXrpY1qmgs21x1QwyZcpvxt9NS09PlsPAAAAAElFTkSuQmCC&logoWidth=14" alt="Duplicate Space"></a></p>
|
194 |
+
|
195 |
+
""")
|
196 |
video_out = gr.Video(label="Pix2pix video result", elem_id="video-output")
|
197 |
submit_btn = gr.Button("Generate Pix2Pix video")
|
198 |
|