Spaces:
Runtime error
Runtime error
File size: 3,547 Bytes
06eb312 69d74b9 06eb312 2bfdeb5 fd3a4fc d34f9a3 2bfdeb5 bea517c 06eb312 7ebfe01 33160bf d49f5a6 06eb312 d34f9a3 c8e1295 5477f9e 06eb312 f617832 06eb312 c8e1295 4ee0f04 06eb312 d49f5a6 349b18f 69d74b9 06eb312 69d74b9 06eb312 bbdc3e1 d1856d2 b631da0 d1856d2 06eb312 d1856d2 06eb312 8d70672 |
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 |
import os
import torch
import subprocess
import spaces
import gradio as gr
from PIL import Image
import numpy as np
from moviepy.editor import VideoFileClip
os.environ['CUDA_HOME'] = "/usr/local/lib/python3.10/site-packages/nvidia/cuda_runtime/include"
os.environ['PATH'] = '/usr/local/lib/python3.10/site-packages/nvidia/cuda_nvrtc/lib:' + os.environ.get('PATH', '')
os.environ['LD_LIBRARY_PATH'] = '/usr/local/lib/python3.10/site-packages/nvidia/cuda_nvrtc/lib:' + os.environ.get('LD_LIBRARY_PATH', '')
os.environ['PATH'] = '/usr/local/lib/python3.10/site-packages/nvidia/cuda_runtime/include:' + os.environ.get('PATH', '')
os.environ['LD_LIBRARY_PATH'] = '/usr/local/lib/python3.10/site-packages/nvidia/cuda_runtime/include:' + os.environ.get('LD_LIBRARY_PATH', '')
print(os.environ['PATH'])
print(os.environ['LD_LIBRARY_PATH'])
subprocess.run(["git", "clone", "https://github.com/sniklaus/3d-ken-burns.git"])
subprocess.run(["mv", "./network-disparity.pytorch", "./3d-ken-burns/models/disparity-estimation.pytorch"])
subprocess.run(["mv", "./network-refinement.pytorch", "./3d-ken-burns/models/disparity-refinement.pytorch"])
subprocess.run(["mv", "./network-inpainting.pytorch", "./3d-ken-burns/models/pointcloud-inpainting.pytorch"])
subprocess.run(["cp", "./3d-ken-burns/autozoom.py", "./3d-ken-burns/autozoom-original.py"])
def update_parameters(fltShift=100, fltZoom=1.25, steps1=0.0, steps2=1.0, frames=240, fps=30):
with open ('./3d-ken-burns/autozoom-original.py','r') as azo:
script = azo.read()
script = script.replace("'fltShift': 100.0",f"'fltShift': {fltShift}")
script = script.replace("'fltZoom': 1.25",f"'fltZoom': {fltZoom}")
script = script.replace("'fltSteps': numpy.linspace(0.0, 1.0, 75).tolist(),",f"'fltSteps': numpy.linspace({steps1}, {steps2}, {frames}).tolist(),")
script = script.replace(", fps=25)",f", fps={fps})")
with open ('./3d-ken-burns/autozoom.py','w') as az:
az.write(script)
az.truncate()
az.seek(0)
@spaces.GPU
def generate_video(image):
subprocess.run(["nvidia-smi"])
subprocess.run(["ls","-al","/tmp"])
image = Image.fromarray(image)
image.save("/tmp/img.png")
os.chdir("./3d-ken-burns")
subprocess.run(["python", "autozoom.py", "--in", "/tmp/img.png", "--out", "/tmp/autozoom.mp4"])
os.chdir("..")
subprocess.run(["ls","-al","/tmp"])
return "/tmp/autozoom.mp4"
def get_video(image,fltShift=100, fltZoom=1.25, steps1=0.0, steps2=1.0, frames=240, fps=30):
update_parameters(fltShift, fltZoom, steps1, steps2, frames, fps)
video_path = generate_video(image)
clip = VideoFileClip("/tmp/autozoom.mp4")
duration = clip.duration / 2
clip = clip.subclip(0, duration)
clip.write_videofile("/tmp/final.mp4")
return "/tmp/final.mp4"
with gr.Blocks() as demo:
gr.Markdown("""# 3D Zoom Video Generator!""")
image = gr.Image()
fltShift = gr.Slider(0, 1000, value=100, step=1, label="Flat Shift")
fltZoom = gr.Slider(0.0, 5.0, value=1.25, step=0.1,label="Flat Zoom")
steps1 = gr.Slider(0.0, 5.0, value=0.0, step=0.1, label="Steps1")
steps2 = gr.Slider(0.0, 5.0, value=1.0, step=0.1, label="Steps2")
frames = gr.Slider(50, 10000, value=240, step=1, label="Frames")
fps = gr.Slider(10, 60, value=30, step=1, label="Frames per Second")
submit_image = gr.Button(value="Generate Video")
video = gr.Video()
submit_image.click(fn=get_video,inputs=[image,fltShift,fltZoom,steps1,steps2,frames,fps],outputs=video)
demo.launch(show_error=True) |