File size: 2,411 Bytes
eadf256
8aee673
 
 
eadf256
 
 
 
 
 
 
 
 
497c126
aef8a67
 
0bb1032
 
eadf256
 
 
 
c1e74d5
 
 
 
 
 
 
aef8a67
 
 
 
 
 
9287636
aef8a67
 
 
9f8e809
eadf256
b1a7044
c1e74d5
 
eadf256
c1e74d5
 
 
fb07f35
 
eadf256
 
 
 
 
 
 
 
 
 
da5d467
 
d24fd05
6d220a8
100b4f3
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
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 image_tools.sizes import resize_and_crop



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 resize_img(img1,img2):
 img_target_size = Image.open(img1)
 img_to_resize = resize_and_crop(
     img2, 
     (img_target_size.size[0],img_target_size.size[1]), #set width and height to match img1
     crop_origin="middle"
     )
 img_to_resize.save('resized_img2.png')
    
def predict(frame1, frame2, times_to_interpolate):
   
    frame1 = resize(512,frame1)
    frame2 = resize(512,frame2)

    frame1.save("test1.png")
    frame2.save("test2.png")

    #resize_img("test1.png","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=[['cat3.jpeg','cat4.jpeg',2]]
gr.Interface(predict,[gr.inputs.Image(type='filepath'),gr.inputs.Image(type='filepath'),gr.inputs.Slider(minimum=2,maximum=8,step=1)],"playable_video",title=title,description=description,article=article,examples=examples).launch(enable_queue=True)