Spaces:
Running
Running
import os | |
os.system("git clone https://github.com/google-research/frame-interpolation") | |
import sys | |
sys.path.append("frame-interpolation") | |
import numpy as np | |
import tensorflow as tf | |
import mediapy | |
from PIL import Image | |
from eval import interpolator, util | |
import tensorflow as tf | |
import gradio as gr | |
from huggingface_hub import snapshot_download | |
from PIL import PngImagePlugin | |
LARGE_ENOUGH_NUMBER = 100 | |
PngImagePlugin.MAX_TEXT_CHUNK = LARGE_ENOUGH_NUMBER * (1024**2) | |
os.system("wget https://raw.githubusercontent.com/google-research/frame-interpolation/main/photos/one.png") | |
os.system("wget https://raw.githubusercontent.com/google-research/frame-interpolation/main/photos/two.png") | |
model = snapshot_download(repo_id="akhaliq/frame-interpolation-film-style") | |
interpolator = interpolator.Interpolator(model, None) | |
def resize(width,img): | |
basewidth = width | |
img = Image.open(img) | |
wpercent = (basewidth/float(img.size[0])) | |
hsize = int((float(img.size[1])*float(wpercent))) | |
img = img.resize((basewidth,hsize), Image.ANTIALIAS) | |
return img | |
def predict(frame1, frame2, times_to_interpolate): | |
frame1 = resize(512,frame1) | |
frame2 = resize(512,frame2) | |
frame1.save("test1.png") | |
frame2.save("test2.png") | |
input_frames = ["test1.png", "test2.png"] | |
frames = list( | |
util.interpolate_recursively_from_files( | |
input_frames, times_to_interpolate, interpolator)) | |
ffmpeg_path = util.get_ffmpeg_path() | |
mediapy.set_ffmpeg(ffmpeg_path) | |
out_path = "out.mp4" | |
mediapy.write_video(str(out_path), frames, fps=30) | |
return out_path | |
title="frame-interpolation" | |
description="Gradio demo for FILM: Frame Interpolation for Large Scene Motion. To use it, simply upload your images and add the times to interpolate number or click on one of the examples to load them. Read more at the links below." | |
article = "<p style='text-align: center'><a href='https://film-net.github.io/' target='_blank'>FILM: Frame Interpolation for Large Motion</a> | <a href='https://github.com/google-research/frame-interpolation' target='_blank'>Github Repo</a></p>" | |
examples=[['one.png','two.png',2]] | |
gr.Interface(predict,[gr.inputs.Image(type='filepath'),gr.inputs.Image(type='filepath'),gr.inputs.Slider(minimum=2,maximum=5,step=1)],"playable_video",title=title,description=description,article=article,examples=examples).launch(enable_queue=True) |