Add information and fix video format
#22
by
Fabrice-TIERCELIN
- opened
app.py
CHANGED
|
@@ -2,6 +2,8 @@ import gradio as gr
|
|
| 2 |
import torch
|
| 3 |
import os
|
| 4 |
import random
|
|
|
|
|
|
|
| 5 |
import spaces
|
| 6 |
from glob import glob
|
| 7 |
from pathlib import Path
|
|
@@ -36,6 +38,7 @@ def animate(
|
|
| 36 |
version: str = "auto",
|
| 37 |
output_folder: str = "outputs",
|
| 38 |
):
|
|
|
|
| 39 |
if image.mode == "RGBA":
|
| 40 |
image = image.convert("RGB")
|
| 41 |
|
|
@@ -57,8 +60,20 @@ def animate(
|
|
| 57 |
video_path = os.path.join(output_folder, f"{base_count:06d}." + video_format)
|
| 58 |
|
| 59 |
export_to_video(frames, video_path, fps=fps_id)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 60 |
|
| 61 |
-
return video_path, gr.update(value=video_path, visible=True), gr.update(label="Generated frames in *." + frame_format + " format", format = frame_format, value = frames, visible=True), seed
|
| 62 |
|
| 63 |
@spaces.GPU(duration=120)
|
| 64 |
def animate_on_gpu(
|
|
@@ -136,10 +151,11 @@ with gr.Blocks() as demo:
|
|
| 136 |
with gr.Column():
|
| 137 |
video = gr.Video(label="Generated video", autoplay=True)
|
| 138 |
download_button = gr.DownloadButton(label="💾 Download video", visible=False)
|
|
|
|
| 139 |
gallery = gr.Gallery(label="Generated frames", visible=False)
|
| 140 |
|
| 141 |
image.upload(fn=resize_image, inputs=image, outputs=image, queue=False)
|
| 142 |
-
generate_btn.click(fn=animate, inputs=[image, seed, randomize_seed, motion_bucket_id, fps_id, noise_aug_strength, decoding_t, video_format, frame_format, version], outputs=[video, download_button, gallery, seed], api_name="video")
|
| 143 |
|
| 144 |
gr.Examples(
|
| 145 |
examples=[
|
|
@@ -148,7 +164,7 @@ with gr.Blocks() as demo:
|
|
| 148 |
["Examples/Town.jpeg", 42, True, 127, 25, 0.1, 3, "mp4", "png", "auto"]
|
| 149 |
],
|
| 150 |
inputs=[image, seed, randomize_seed, motion_bucket_id, fps_id, noise_aug_strength, decoding_t, video_format, frame_format, version],
|
| 151 |
-
outputs=[video, download_button, gallery, seed],
|
| 152 |
fn=animate,
|
| 153 |
run_on_click=True,
|
| 154 |
cache_examples=False,
|
|
|
|
| 2 |
import torch
|
| 3 |
import os
|
| 4 |
import random
|
| 5 |
+
import time
|
| 6 |
+
import math
|
| 7 |
import spaces
|
| 8 |
from glob import glob
|
| 9 |
from pathlib import Path
|
|
|
|
| 38 |
version: str = "auto",
|
| 39 |
output_folder: str = "outputs",
|
| 40 |
):
|
| 41 |
+
start = time.time()
|
| 42 |
if image.mode == "RGBA":
|
| 43 |
image = image.convert("RGB")
|
| 44 |
|
|
|
|
| 60 |
video_path = os.path.join(output_folder, f"{base_count:06d}." + video_format)
|
| 61 |
|
| 62 |
export_to_video(frames, video_path, fps=fps_id)
|
| 63 |
+
end = time.time()
|
| 64 |
+
secondes = int(end - start)
|
| 65 |
+
minutes = math.floor(secondes / 60)
|
| 66 |
+
secondes = secondes - (minutes * 60)
|
| 67 |
+
hours = math.floor(minutes / 60)
|
| 68 |
+
minutes = minutes - (hours * 60)
|
| 69 |
+
information = ("Start the process again if you want a different result. " if randomize_seed else "") + \
|
| 70 |
+
"Wait 2 min before a new run to avoid quota penalty or use another computer. " + \
|
| 71 |
+
"The video has been generated in " + \
|
| 72 |
+
((str(hours) + " h, ") if hours != 0 else "") + \
|
| 73 |
+
((str(minutes) + " min, ") if hours != 0 or minutes != 0 else "") + \
|
| 74 |
+
str(secondes) + " sec."
|
| 75 |
|
| 76 |
+
return gr.update(value=video_path, format=video_format), gr.update(value=video_path, visible=True), gr.update(label="Generated frames in *." + frame_format + " format", format = frame_format, value = frames, visible=True), seed, gr.update(value = information, visible = True)
|
| 77 |
|
| 78 |
@spaces.GPU(duration=120)
|
| 79 |
def animate_on_gpu(
|
|
|
|
| 151 |
with gr.Column():
|
| 152 |
video = gr.Video(label="Generated video", autoplay=True)
|
| 153 |
download_button = gr.DownloadButton(label="💾 Download video", visible=False)
|
| 154 |
+
information_msg = gr.HTML(visible = False)
|
| 155 |
gallery = gr.Gallery(label="Generated frames", visible=False)
|
| 156 |
|
| 157 |
image.upload(fn=resize_image, inputs=image, outputs=image, queue=False)
|
| 158 |
+
generate_btn.click(fn=animate, inputs=[image, seed, randomize_seed, motion_bucket_id, fps_id, noise_aug_strength, decoding_t, video_format, frame_format, version], outputs=[video, download_button, gallery, seed, information_msg], api_name="video")
|
| 159 |
|
| 160 |
gr.Examples(
|
| 161 |
examples=[
|
|
|
|
| 164 |
["Examples/Town.jpeg", 42, True, 127, 25, 0.1, 3, "mp4", "png", "auto"]
|
| 165 |
],
|
| 166 |
inputs=[image, seed, randomize_seed, motion_bucket_id, fps_id, noise_aug_strength, decoding_t, video_format, frame_format, version],
|
| 167 |
+
outputs=[video, download_button, gallery, seed, information_msg],
|
| 168 |
fn=animate,
|
| 169 |
run_on_click=True,
|
| 170 |
cache_examples=False,
|