kony1337 johngoad commited on
Commit
50436fb
·
0 Parent(s):

Duplicate from johngoad/frame-interpolation

Browse files

Co-authored-by: JohnGoad <[email protected]>

Files changed (9) hide show
  1. .gitattributes +31 -0
  2. README.md +13 -0
  3. app.py +97 -0
  4. cat1.jpeg +0 -0
  5. cat2.jpeg +0 -0
  6. cat3.jpeg +0 -0
  7. cat4.jpeg +0 -0
  8. packages.txt +1 -0
  9. requirements.txt +12 -0
.gitattributes ADDED
@@ -0,0 +1,31 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ *.7z filter=lfs diff=lfs merge=lfs -text
2
+ *.arrow filter=lfs diff=lfs merge=lfs -text
3
+ *.bin filter=lfs diff=lfs merge=lfs -text
4
+ *.bz2 filter=lfs diff=lfs merge=lfs -text
5
+ *.ftz filter=lfs diff=lfs merge=lfs -text
6
+ *.gz filter=lfs diff=lfs merge=lfs -text
7
+ *.h5 filter=lfs diff=lfs merge=lfs -text
8
+ *.joblib filter=lfs diff=lfs merge=lfs -text
9
+ *.lfs.* filter=lfs diff=lfs merge=lfs -text
10
+ *.model filter=lfs diff=lfs merge=lfs -text
11
+ *.msgpack filter=lfs diff=lfs merge=lfs -text
12
+ *.npy filter=lfs diff=lfs merge=lfs -text
13
+ *.npz filter=lfs diff=lfs merge=lfs -text
14
+ *.onnx filter=lfs diff=lfs merge=lfs -text
15
+ *.ot filter=lfs diff=lfs merge=lfs -text
16
+ *.parquet filter=lfs diff=lfs merge=lfs -text
17
+ *.pickle filter=lfs diff=lfs merge=lfs -text
18
+ *.pkl filter=lfs diff=lfs merge=lfs -text
19
+ *.pb filter=lfs diff=lfs merge=lfs -text
20
+ *.pt filter=lfs diff=lfs merge=lfs -text
21
+ *.pth filter=lfs diff=lfs merge=lfs -text
22
+ *.rar filter=lfs diff=lfs merge=lfs -text
23
+ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
24
+ *.tar.* filter=lfs diff=lfs merge=lfs -text
25
+ *.tflite filter=lfs diff=lfs merge=lfs -text
26
+ *.tgz filter=lfs diff=lfs merge=lfs -text
27
+ *.wasm filter=lfs diff=lfs merge=lfs -text
28
+ *.xz filter=lfs diff=lfs merge=lfs -text
29
+ *.zip filter=lfs diff=lfs merge=lfs -text
30
+ *.zst filter=lfs diff=lfs merge=lfs -text
31
+ *tfevents* filter=lfs diff=lfs merge=lfs -text
README.md ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ title: Frame Interpolation
3
+ emoji: 🐢
4
+ colorFrom: blue
5
+ colorTo: gray
6
+ sdk: gradio
7
+ sdk_version: 3.1.4
8
+ app_file: app.py
9
+ pinned: false
10
+ duplicated_from: johngoad/frame-interpolation
11
+ ---
12
+
13
+ Check out the configuration reference at https://huggingface.co/docs/hub/spaces#reference
app.py ADDED
@@ -0,0 +1,97 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+
3
+ os.system("git clone https://github.com/google-research/frame-interpolation")
4
+ import sys
5
+
6
+ sys.path.append("frame-interpolation")
7
+ import numpy as np
8
+ import tensorflow as tf
9
+ import mediapy
10
+ from PIL import Image
11
+ from eval import interpolator, util
12
+ import gradio as gr
13
+
14
+ from huggingface_hub import snapshot_download
15
+
16
+ from image_tools.sizes import resize_and_crop
17
+
18
+
19
+ def load_model(model_name):
20
+ model = interpolator.Interpolator(snapshot_download(repo_id=model_name), None)
21
+
22
+ return model
23
+
24
+
25
+ model_names = [
26
+ "akhaliq/frame-interpolation-film-style",
27
+ "NimaBoscarino/frame-interpolation_film_l1",
28
+ "NimaBoscarino/frame_interpolation_film_vgg",
29
+ ]
30
+
31
+ models = {model_name: load_model(model_name) for model_name in model_names}
32
+
33
+ ffmpeg_path = util.get_ffmpeg_path()
34
+ mediapy.set_ffmpeg(ffmpeg_path)
35
+
36
+
37
+ def resize(width, img):
38
+ basewidth = width
39
+ img = Image.open(img)
40
+ wpercent = (basewidth / float(img.size[0]))
41
+ hsize = int((float(img.size[1]) * float(wpercent)))
42
+ img = img.resize((basewidth, hsize), Image.ANTIALIAS)
43
+ return img
44
+
45
+
46
+ def resize_img(img1, img2):
47
+ img_target_size = Image.open(img1)
48
+ img_to_resize = resize_and_crop(
49
+ img2,
50
+ (img_target_size.size[0], img_target_size.size[1]), # set width and height to match img1
51
+ crop_origin="middle"
52
+ )
53
+ img_to_resize.save('resized_img2.png')
54
+
55
+
56
+ def predict(frame1, frame2, times_to_interpolate, model_name):
57
+ model = models[model_name]
58
+
59
+ frame1 = resize(256, frame1)
60
+ frame2 = resize(256, frame2)
61
+
62
+ frame1.save("test1.png")
63
+ frame2.save("test2.png")
64
+
65
+ resize_img("test1.png", "test2.png")
66
+ input_frames = ["test1.png", "resized_img2.png"]
67
+
68
+ frames = list(
69
+ util.interpolate_recursively_from_files(
70
+ input_frames, times_to_interpolate, model))
71
+
72
+ mediapy.write_video("out.mp4", frames, fps=30)
73
+ return "out.mp4"
74
+
75
+
76
+ title = "frame-interpolation"
77
+ 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."
78
+ 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>"
79
+ examples = [
80
+ ['cat3.jpeg', 'cat4.jpeg', 2, model_names[0]],
81
+ ['cat1.jpeg', 'cat2.jpeg', 2, model_names[1]],
82
+ ]
83
+
84
+ gr.Interface(
85
+ predict,
86
+ [
87
+ gr.inputs.Image(type='filepath'),
88
+ gr.inputs.Image(type='filepath'),
89
+ gr.inputs.Slider(minimum=2, maximum=4, step=1),
90
+ gr.inputs.Dropdown(choices=model_names, default=model_names[0])
91
+ ],
92
+ "playable_video",
93
+ title=title,
94
+ description=description,
95
+ article=article,
96
+ examples=examples
97
+ ).launch(enable_queue=True)
cat1.jpeg ADDED
cat2.jpeg ADDED
cat3.jpeg ADDED
cat4.jpeg ADDED
packages.txt ADDED
@@ -0,0 +1 @@
 
 
1
+ ffmpeg
requirements.txt ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ tensorflow==2.6.2 # The latest should include tensorflow-gpu
2
+ tensorflow-datasets==4.4.0
3
+ tensorflow-addons==0.15.0
4
+ absl-py==0.12.0
5
+ gin-config==0.5.0
6
+ parameterized==0.8.1
7
+ mediapy==1.0.3
8
+ scikit-image==0.19.1
9
+ apache-beam==2.34.0
10
+ google-cloud-bigquery-storage==1.1.0 # Suppresses a harmless error from beam
11
+ natsort==8.1.0
12
+ image-tools