SuyeonJ commited on
Commit
8d015d4
ยท
verified ยท
1 Parent(s): 8a786f2

Upload folder using huggingface_hub

Browse files
This view is limited to 50 files because it contains too many changes. ย  See raw diff
Files changed (50) hide show
  1. .gitignore +12 -0
  2. README.md +5 -6
  3. START_COMMAND.txt +17 -0
  4. UPR_BASIC_INFERENCE_SPEED.txt +30 -0
  5. __pycache__/prepare_extra_training_dataset.cpython-310.pyc +0 -0
  6. __pycache__/prepare_extra_training_dataset.cpython-37.pyc +0 -0
  7. __pycache__/vfi_inference.cpython-310.pyc +0 -0
  8. __pycache__/vfi_inference_triplet.cpython-310.pyc +0 -0
  9. app.py +408 -0
  10. cfgs/upr_backward_unimatch_exp1.yaml +75 -0
  11. cfgs/upr_backward_unimatch_exp2.yaml +76 -0
  12. cfgs/upr_basic.yaml +72 -0
  13. cfgs/upr_custom_4090_exp1.yaml +70 -0
  14. cfgs/upr_custom_4090_exp1_10epoch_test.yaml +70 -0
  15. cfgs/upr_custom_4090_exp1_extract.yaml +70 -0
  16. cfgs/upr_custom_4090_exp2.yaml +70 -0
  17. cfgs/upr_freq003.yaml +88 -0
  18. cfgs/upr_freq004.yaml +88 -0
  19. cfgs/upr_freq005.yaml +87 -0
  20. cfgs/upr_freq006.yaml +83 -0
  21. cfgs/upr_freq007.yaml +83 -0
  22. cfgs/upr_freq008.yaml +83 -0
  23. cfgs/upr_freq_unimatch_exp001.yaml +83 -0
  24. cfgs/upr_freq_unimatch_exp002.yaml +85 -0
  25. cfgs/upr_freq_unimatch_exp002_20240111_extratraining1.yaml +86 -0
  26. cfgs/upr_freq_unimatch_exp002_20240111_extratraining1000_2_1.yaml +86 -0
  27. cfgs/upr_freq_unimatch_exp002_20240111_extratraining1000_2_2.yaml +86 -0
  28. cfgs/upr_freq_unimatch_exp002_20240111_extratraining1000_2_3.yaml +86 -0
  29. cfgs/upr_freq_unimatch_exp002_20240111_extratraining1000_2_4.yaml +86 -0
  30. cfgs/upr_freq_unimatch_exp002_20240111_extratraining1000_3_1.yaml +86 -0
  31. cfgs/upr_freq_unimatch_exp002_20240111_extratraining1000_3_2.yaml +86 -0
  32. cfgs/upr_freq_unimatch_exp002_20240111_extratraining2.yaml +86 -0
  33. cfgs/upr_freq_unimatch_exp002_20240111_extratraining3.yaml +86 -0
  34. cfgs/upr_freq_unimatch_exp002_20240111_extratraining4.yaml +86 -0
  35. cfgs/upr_freq_unimatch_exp002_stopmotion.yaml +86 -0
  36. cfgs/upr_vimeo_exp45.yaml +76 -0
  37. check_images.py +39 -0
  38. datasets/__init__.py +5 -0
  39. datasets/__pycache__/__init__.cpython-310.pyc +0 -0
  40. datasets/__pycache__/__init__.cpython-38.pyc +0 -0
  41. datasets/__pycache__/data_utils.cpython-310.pyc +0 -0
  42. datasets/__pycache__/data_utils.cpython-38.pyc +0 -0
  43. datasets/__pycache__/datasets.cpython-310.pyc +0 -0
  44. datasets/__pycache__/datasets.cpython-38.pyc +0 -0
  45. datasets/__pycache__/snu_film.cpython-310.pyc +0 -0
  46. datasets/__pycache__/snu_film.cpython-38.pyc +0 -0
  47. datasets/__pycache__/ucf101.cpython-310.pyc +0 -0
  48. datasets/__pycache__/ucf101.cpython-38.pyc +0 -0
  49. datasets/__pycache__/vimeo.cpython-310.pyc +0 -0
  50. datasets/__pycache__/vimeo.cpython-38.pyc +0 -0
.gitignore ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ *.ipynb
2
+ *.pkl
3
+ *.pth
4
+ *.pt
5
+ */*.ipynb
6
+ */*.pkl
7
+ */*.pth
8
+ */*.pt
9
+ */*/*.ipynb
10
+ */*/*.pkl
11
+ */*/*.pth
12
+ */*/*.pt
README.md CHANGED
@@ -1,12 +1,11 @@
1
  ---
2
  title: VfiTest
3
- emoji: ๐Ÿข
4
- colorFrom: blue
5
- colorTo: purple
6
  sdk: gradio
7
  sdk_version: 4.19.2
8
  app_file: app.py
9
  pinned: false
10
- ---
11
-
12
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
1
  ---
2
  title: VfiTest
3
+ emoji: ๐Ÿ‘
4
+ colorFrom: yellow
5
+ colorTo: blue
6
  sdk: gradio
7
  sdk_version: 4.19.2
8
  app_file: app.py
9
  pinned: false
10
+ license: unknown
11
+ ---
 
START_COMMAND.txt ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ CUDA_VISIBLE_DEVICES=0,1,2,3 torchrun --nproc_per_node 4 main.py --cfg cfgs/upr_freq_unimatch_exp001.yaml
2
+ CUDA_VISIBLE_DEVICES=0,1,2,3 torchrun --nproc_per_node 4 main.py --cfg cfgs/upr_freq_unimatch_exp002.yaml
3
+ CUDA_VISIBLE_DEVICES=0,1,2,3 torchrun --nproc_per_node 4 main.py --cfg cfgs/upr_freq003.yaml
4
+ CUDA_VISIBLE_DEVICES=0,1,2,3 torchrun --nproc_per_node 4 main.py --cfg cfgs/upr_freq004.yaml
5
+ CUDA_VISIBLE_DEVICES=0,1,2,3 torchrun --nproc_per_node 4 main.py --cfg cfgs/upr_freq005.yaml
6
+ CUDA_VISIBLE_DEVICES=0,1,2,3 torchrun --nproc_per_node 4 main.py --cfg cfgs/upr_freq006.yaml
7
+ CUDA_VISIBLE_DEVICES=0,1,2,3 torchrun --nproc_per_node 4 main.py --cfg cfgs/upr_freq007.yaml
8
+ CUDA_VISIBLE_DEVICES=0,1,2,3 torchrun --nproc_per_node 4 main.py --cfg cfgs/upr_freq008.yaml
9
+
10
+ CUDA_VISIBLE_DEVICES=0,1,2,3 torchrun --nproc_per_node 4 main.py --cfg cfgs/upr_freq_unimatch_exp002_stopmotion.yaml
11
+
12
+ **inference ๊ณ ๋ ค์‚ฌํ•ญ**
13
+ class Model์—์„œ ํŒจ๋”ฉ ์œ„์น˜: normalization -> padding
14
+ utils.padder.py: constant padding mode
15
+ pyr_level (Vimeo: 3, UCF: 3, SNU-FILM: 5)
16
+ trainer.py: train function์—์„œ epoch ๋“ค์–ด๊ฐ€๊ธฐ ์ „์— return
17
+ yaml: [results.txt, ์ด๋ฏธ์ง€๋“ค ์ €์žฅํ•˜๊ณ  ์‹ถ์œผ๋ฉด][~~~every ์ „๋ถ€ 1๋กœ ์„ค์ •] /// [๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด][~~~every ์ „๋ถ€ ๋งˆ์ง€๋ง‰ ์—ํญ ์•ˆ ๋‚˜๋ˆ ๋–จ์–ด์ง€๋Š” ์ˆ˜๋กœ ์„ค์ •]
UPR_BASIC_INFERENCE_SPEED.txt ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Test: [ 0/237] eta: 0:30:27 psnr: 25.80 ssim: 0.79 time: 7.7092 data: 0.3797 max mem: 12902
2
+ Test: [ 10/237] eta: 0:04:25 psnr: 25.25 ssim: 0.73 time: 1.1688 data: 0.0348 max mem: 12902
3
+ Test: [ 20/237] eta: 0:02:57 psnr: 24.94 ssim: 0.71 time: 0.4738 data: 0.0002 max mem: 12902
4
+ Test: [ 30/237] eta: 0:02:23 psnr: 25.29 ssim: 0.72 time: 0.4329 data: 0.0002 max mem: 12902
5
+ Test: [ 40/237] eta: 0:02:03 psnr: 25.64 ssim: 0.77 time: 0.4309 data: 0.0002 max mem: 12902
6
+ Test: [ 50/237] eta: 0:01:50 psnr: 27.04 ssim: 0.80 time: 0.4291 data: 0.0002 max mem: 12902
7
+ Test: [ 60/237] eta: 0:01:39 psnr: 24.79 ssim: 0.76 time: 0.4310 data: 0.0002 max mem: 12902
8
+ Test: [ 70/237] eta: 0:01:31 psnr: 25.93 ssim: 0.78 time: 0.4323 data: 0.0002 max mem: 12902
9
+ Test: [ 80/237] eta: 0:01:23 psnr: 25.98 ssim: 0.76 time: 0.4320 data: 0.0002 max mem: 12902
10
+ Test: [ 90/237] eta: 0:01:17 psnr: 24.59 ssim: 0.77 time: 0.4666 data: 0.0002 max mem: 12902
11
+ Test: [100/237] eta: 0:01:11 psnr: 24.06 ssim: 0.72 time: 0.4651 data: 0.0002 max mem: 12902
12
+ Test: [110/237] eta: 0:01:04 psnr: 24.65 ssim: 0.67 time: 0.4289 data: 0.0002 max mem: 12902
13
+ Test: [120/237] eta: 0:00:58 psnr: 23.71 ssim: 0.73 time: 0.4287 data: 0.0002 max mem: 12902
14
+ Test: [130/237] eta: 0:00:53 psnr: 28.94 ssim: 0.87 time: 0.4288 data: 0.0002 max mem: 12902
15
+ Test: [140/237] eta: 0:00:47 psnr: 26.36 ssim: 0.73 time: 0.4301 data: 0.0002 max mem: 12902
16
+ Test: [150/237] eta: 0:00:42 psnr: 29.65 ssim: 0.85 time: 0.4299 data: 0.0002 max mem: 12902
17
+ Test: [160/237] eta: 0:00:37 psnr: 25.18 ssim: 0.74 time: 0.4287 data: 0.0002 max mem: 12902
18
+ Test: [170/237] eta: 0:00:32 psnr: 25.57 ssim: 0.77 time: 0.4618 data: 0.0002 max mem: 12902
19
+ Test: [180/237] eta: 0:00:27 psnr: 27.12 ssim: 0.80 time: 0.4618 data: 0.0002 max mem: 12902
20
+ Test: [190/237] eta: 0:00:22 psnr: 23.36 ssim: 0.59 time: 0.4290 data: 0.0002 max mem: 12902
21
+ Test: [200/237] eta: 0:00:17 psnr: 25.49 ssim: 0.78 time: 0.4296 data: 0.0002 max mem: 12902
22
+ Test: [210/237] eta: 0:00:12 psnr: 27.89 ssim: 0.82 time: 0.4322 data: 0.0002 max mem: 12902
23
+ Test: [220/237] eta: 0:00:08 psnr: 28.20 ssim: 0.81 time: 0.4336 data: 0.0002 max mem: 12902
24
+ Test: [230/237] eta: 0:00:03 psnr: 26.18 ssim: 0.78 time: 0.4322 data: 0.0002 max mem: 12902
25
+ Test: [236/237] eta: 0:00:00 psnr: 25.18 ssim: 0.77 time: 0.5410 data: 0.0002 max mem: 12902
26
+ Test: Total time: 0:01:53 (0.4800 s / it)
27
+ [12-01 16:11:10] Averaged validate stats:psnr: 25.48485653640427 ssim: 0.7470527462248057
28
+ [12-01 16:11:10] best performance achieved at epoch -1 with performance of 25.48485653640427
29
+
30
+ MEMORY: 6818MB
__pycache__/prepare_extra_training_dataset.cpython-310.pyc ADDED
Binary file (3.08 kB). View file
 
__pycache__/prepare_extra_training_dataset.cpython-37.pyc ADDED
Binary file (3.03 kB). View file
 
__pycache__/vfi_inference.cpython-310.pyc ADDED
Binary file (5.47 kB). View file
 
__pycache__/vfi_inference_triplet.cpython-310.pyc ADDED
Binary file (5.67 kB). View file
 
app.py ADDED
@@ -0,0 +1,408 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ import numpy as np
3
+ import cv2
4
+ import os
5
+ import glob
6
+ import torch
7
+ import shutil
8
+ from PIL import Image
9
+ from tqdm import tqdm
10
+ from torch.nn import functional as F
11
+ from torchvision.transforms import functional as TF
12
+ from matplotlib import pyplot as plt
13
+ from modules.components.upr_net_freq import upr_freq as upr_freq002
14
+ from modules.components.upr_basic import upr as upr_basic
15
+ import datetime
16
+ import zipfile
17
+
18
+ os.system('python -m pip install --upgrade pip')
19
+
20
+ #from scipy.interpolate import make_interp_spline
21
+
22
+ # python3 -m vfi_inference_triplet --cuda_index 0 \
23
+ # --root ../VFI_Inference/thistriplet_notarget --pretrain_path ./pretrained/upr_freq002.pth \
24
+ # --pyr_level 7 --nr_lvl_skipped 0 --splat_mode average --down_scale 1
25
+
26
+ # ์•„์ด๋””, ๋น„๋ฐ€๋ฒˆํ˜ธ ํŠœํ”Œ, ๋ฆฌ์ŠคํŠธ์— ์ถ”๊ฐ€ํ•˜๋ฉด ์—ฌ๋Ÿฌ ์‚ฌ์šฉ์ž๊ฐ€ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
27
+ # ๋‹ค๋ฅธ ํŒŒ์ผ๋กœ ๋งŒ๋“ค์–ด ์‚ฌ์šฉํ•˜๊ธฐ๋ฅผ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.
28
+ KEY = [("test", "test"),
29
+ ]
30
+
31
+ # ๋กœ๊ทธ์ธ ์‹œ ํ˜ธ์ถœ๋˜๋Š” ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค.
32
+ #ํ˜น์‹œ ๋กœ๊ทธ์ธ์— ๋Œ€ํ•œ ์ •๋ณด๋‚˜, ๋‹คip ๋“ฑ์„ ์–ป๊ณ  ์‹ถ์œผ๋ฉด ์ด ๋ถ€๋ถ„ ์ˆ˜์ •๋ฐ”๋ž๋‹ˆ๋‹ค.
33
+ def check_valid_login(user_name, password):
34
+ #client_ip = request.client.host
35
+ #print(client_ip)
36
+ flag = (user_name, password) in KEY
37
+ return flag
38
+
39
+ # ๋น„๋””์˜ค์—์„œ ์ฒ˜์Œ ๋ช‡ ํ”„๋ ˆ์ž„์„ ์ž๋ฅผ์ง€ ๋ณ€์ˆ˜์ž…๋‹ˆ๋‹ค.
40
+ MAX_FRAME = 24
41
+
42
+ #VFI inference ์ฝ”๋“œ๋ฅผ ๊ทธ๋Œ€๋กœ ๊ฐ€์ ธ์™”์Šต๋‹ˆ๋‹ค.
43
+ DEVICE = 0#"cuda"
44
+ torch.cuda.set_device(DEVICE)
45
+ #ROOT = args.root
46
+ #SAVE_ROOT = f'output'
47
+ SCALE = 1
48
+ pyr_level = 7
49
+ nr_lvl_skipped = 0
50
+ splat_mode = "average"
51
+ pretrain_path = "./pretrained/upr_freq002.pth"
52
+
53
+ model = upr_freq002.Model(pyr_level=pyr_level,
54
+ nr_lvl_skipped=nr_lvl_skipped,
55
+ splat_mode=splat_mode)
56
+ sd = torch.load(pretrain_path, map_location='cpu')
57
+ sd = sd['model'] if 'model' in sd.keys() else sd
58
+ print(model.load_state_dict(sd))
59
+ model = model.to(DEVICE)
60
+
61
+ def get_sorted_img(file_path):
62
+ return sorted(glob.glob(os.path.join(file_path, f"*.png")), key = lambda x : float(x.split("_")[-1][:-4]))
63
+
64
+ def multiple_pad(image, multiple):
65
+ _,_,H,W = image.size()
66
+ pad1 = multiple-(H%multiple) if H%multiple!=0 else 0
67
+ pad2 = multiple-(W%multiple) if W%multiple!=0 else 0
68
+ return TF.pad(image, (0,0,pad2,pad1))
69
+
70
+ #์ด๋ฏธ์ง€ 1(path1), 2๋ฅผ VFIํ•˜์—ฌ ๊ฐ€์šด๋ฐ ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•˜๋Š” ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค.
71
+ def multiple_VFIx2(path1, path2, output_name):
72
+ file_list = [path1, path2]
73
+ img_list = [(torch.from_numpy(cv2.imread(file)[:,:,[2,1,0]])/255).permute(2,0,1).unsqueeze(0).to(DEVICE) for file in file_list]
74
+ img_list = [multiple_pad(img, SCALE) for k, img in enumerate(img_list)]
75
+ img_list = [F.interpolate(img, scale_factor=1/SCALE, mode='bicubic') for k, img in enumerate(img_list)]
76
+ img0,img1 = img_list
77
+ _,_,Hori,Wori = img0.size()
78
+
79
+ with torch.no_grad():
80
+ result_dict, extra_dict = model(img0, img1, pyr_level=pyr_level, nr_lvl_skipped=nr_lvl_skipped, time_step=0.5)
81
+ out = F.interpolate(result_dict['imgt_pred'], scale_factor=SCALE, mode='bicubic')[:,:,:Hori,:Wori].clamp(0,1)
82
+ cv2.imwrite(output_name, (out[0].cpu().permute(1,2,0)*255).numpy().astype(np.uint8)[:,:,[2,1,0]])
83
+ torch.cuda.empty_cache()
84
+
85
+ #1, 2๋ฅผ 3๋ฒˆ VFIํ•˜์—ฌ 3์žฅ์„ ๋งŒ๋“œ๋Š” ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค.
86
+ """
87
+ def multiple_VFIx4(path1, path2, name1, name2, name3):
88
+ multiple_VFIx2(path1, path2, name2)
89
+ multiple_VFIx2(path1, name2, name1)
90
+ multiple_VFIx2(name2, path2, name3)
91
+ """
92
+ def multiple_VFIx4(path1, path2):
93
+ frac = [".25", ".5", ".75"]
94
+ name1 , name2, name3 = [f"{path1[:-4]}{f}.png" for f in frac]
95
+ multiple_VFIx2(path1, path2, name2)
96
+ multiple_VFIx2(path1, name2, name1)
97
+ multiple_VFIx2(name2, path2, name3)
98
+
99
+ #0, 0.125 , 0.25, 0.5, 0.75, 0.875, 1๋กœ 5์žฅ ์ƒ์„ฑ
100
+ def multiple_VFIx6(path1, path2):
101
+ frac = [".125", ".25", ".75", ".875"]
102
+ name_inf1 , name1, name2, name_inf2 = [f"{path1[:-4]}{f}.png" for f in frac]
103
+ multiple_VFIx4(path1, path2)
104
+ multiple_VFIx2(path1, name1, name_inf1)
105
+ multiple_VFIx2(name2, path2, name_inf2)
106
+
107
+ #๋น„๋””์˜ค์—์„œ fix๋ฅผ ํ•˜์—ฌ ์ด๋ฏธ์ง€๋ฅผ ๋Œ€์ฒดํ•˜์—ฌ ์ถœ๋ ฅํ•˜๋Š” ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค.
108
+ def fix_img(idx, fixed_list, input_dir = "input", output_dir = "output"):
109
+ idx = int(idx)
110
+ #์˜ฌ๋ฐ”๋ฅด์ง€ ์•Š๊ฑฐ๋‚˜, ์ด๋ฏธ fix ํ–ˆ๋‹ค๋ฉด ๋ณ€ํ™” x
111
+ if idx < 1 or idx > MAX_FRAME - 2 or fixed_list[idx] == 1:
112
+ return {
113
+ fix_result_gallery : gr.Gallery(),
114
+ fix_result_group : gr.Group(),
115
+ fixed_frame : gr.Text()
116
+ }
117
+ now_time = os.path.basename(input_dir)
118
+ output_dir = os.path.join(output_dir, f"fix_{now_time}")
119
+ os.makedirs(output_dir, exist_ok = True)
120
+ output_name = os.path.join(output_dir, f"img_{idx:03d}.png")
121
+
122
+ multiple_VFIx2(os.path.join(input_dir, f"img_{idx - 1:03d}.png"),
123
+ os.path.join(input_dir, f"img_{idx + 1:03d}.png"),
124
+ output_name)
125
+ fixed_list[idx] = 1
126
+
127
+ fixed_frame_string = ""
128
+ result_list = []
129
+ name_list = []
130
+ #์ˆœ์ฐจ์ ์œผ๋กœ ๊ฒฐ๊ณผ ๊ฐค๋Ÿฌ๋ฆฌ ๊ฐฑ์‹ 
131
+ for i in range(MAX_FRAME):
132
+ if fixed_list[i] == 1:
133
+ name_list.append(f"(fixed) frame {i}")
134
+ result_list.append(os.path.join(output_dir, f"img_{i:03d}.png"))
135
+ fixed_frame_string += f"{i}, "
136
+ else:
137
+ name_list.append(f"frame {i}")
138
+ result_list.append(os.path.join(input_dir, f"img_{i:03d}.png"))
139
+ return {
140
+ fix_result_gallery : gr.Gallery(value = [(img, name) for img, name in zip(result_list, name_list)], selected_index = idx),
141
+ fix_result_group : gr.Group(visible=True),
142
+ fixed_frame : gr.Text(visible=True, value = fixed_frame_string[:-2]),
143
+ }
144
+
145
+ #์ฃผ์–ด์ง„ ease_val ๋ฆฌ์ŠคํŠธ์˜ ๊ฐ’ ๋ฐ”ํƒ•์œผ๋กœ ease๋ฅผ ์‹คํ–‰์‹œํ‚ค๋Š” ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค.
146
+ def ease_frames(ease_val, input_dir = "input", output_dir = "output", progress=gr.Progress(track_tqdm=False)):
147
+ #now = os.path.basename(input_dir)
148
+ now = datetime.datetime.now().strftime('%Y%m%d_%H%M%S')
149
+ output_dir = os.path.join(output_dir, f"ease_{now}")
150
+ os.makedirs(output_dir, exist_ok = True)
151
+ out_frame_list = [os.path.join(output_dir, f"img_{i:03d}.png") for i in range(MAX_FRAME)]
152
+ for i, f in enumerate([os.path.join(input_dir, f"img_{i:03d}.png") for i in range(MAX_FRAME)]):
153
+ shutil.copyfile(f, out_frame_list[i])
154
+ img_name = []
155
+ for i in progress.tqdm(range(MAX_FRAME - 1), desc = "VFI frames..."):
156
+ img_name.append(f"frame {i}")
157
+ if ease_val[i] == 1: pass
158
+ #x1๋Š” ์•„๋ฌด๊ฒƒ๋„, x2๋Š” ํ•œ ์žฅ, x4๋Š” 3์žฅ
159
+ # ์•„๋ž˜ ๊ธ€์ž ์ถ”๊ฐ€ ๋ถ€๋ถ„์€ ์ƒˆ๋กœ์šด ์ด๋ฏธ์ง€์˜ ์ œ๋ชฉ ๋ฐ”๊พธ๋Š” ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค.
160
+ elif ease_val[i] == 2:
161
+ multiple_VFIx2(out_frame_list[i], out_frame_list[i + 1]
162
+ , os.path.join(output_dir, f"img_{i:03d}.5.png"))
163
+ img_name.append(f"(new) frame {i + 0.5}")
164
+ elif ease_val[i] == 3:
165
+ multiple_VFIx4(out_frame_list[i], out_frame_list[i + 1])
166
+ img_name.append(f"(new) frame {i + 0.25}")
167
+ img_name.append(f"(new) frame {i + 0.5}")
168
+ img_name.append(f"(new) frame {i + 0.75}")
169
+ img_name.append(f"frame {MAX_FRAME - 1}")
170
+ files = get_sorted_img(output_dir)
171
+
172
+ #๋‹ค์šด๋กœ๋“œ์šฉ zip ํŒŒ์ผ
173
+ zip_name = os.path.join(output_dir,"frame_list.zip")
174
+ with zipfile.ZipFile(zip_name, 'w', compression=zipfile.ZIP_DEFLATED) as new_zip:
175
+ for x in progress.tqdm(files, desc ="compress file..."):
176
+ new_zip.write(x, os.path.basename(x))
177
+
178
+ return {
179
+ ease_result_gallery : [(file, name) for file, name in zip(files, img_name)],
180
+ ease_make_video : gr.Accordion(visible = True),
181
+ last_ease_dir : output_dir,
182
+ ease_zip : gr.File(value = zip_name)
183
+ }
184
+ # ์ด๋ฏธ์ง€ ๋‘ ์žฅ์„ ๋ฐ›์•„ VFI๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค.
185
+ def VFI_two(l, r, flag ,output_dir = "output"):
186
+ now = datetime.datetime.now().strftime('%Y%m%d_%H%M%S')
187
+ output_dir = os.path.join(output_dir, f"fix_img_{now}")
188
+ os.makedirs(output_dir, exist_ok = True)
189
+ l = Image.fromarray(l)
190
+ r = Image.fromarray(r)
191
+ #๋ฉ”๋ชจ๋ฆฌ ์ดˆ๊ณผ๋ฅผ ๋ง‰๊ธฐ ์œ„ํ•ด ์ ๋‹นํ•œ ํฌ๊ธฐ ํ”ฝ์…€ ์ดํ•˜๊ฐ€ ๋˜๋„๋ก ๊ด€๋ฆฌ
192
+ W, H = l.size
193
+ #1920 * 1080 * 1.2 * 1.2 ๊ฐ€ ๋Œ€์ถฉ 3e6๋ผ ๊ทธ๊ฑธ ๊ธฐ์ค€์œผ๋กœ ์žก์•˜์Šต๋‹ˆ๋‹ค.
194
+ mul = ((3e6) / (W * H)) ** (1/2)
195
+ H, W = int(H * mul), int(W * mul)
196
+ #์ด๋ฏธ์ง€๊ฐ€ ์ปค์„œ ์ค„์—ฌ์•ผ ํ•œ๋‹ค๋ฉด ๊ฐ์†Œ, ์•„๋‹˜ ๊ทธ๋ƒฅ ์ž…๋ ฅ
197
+ if mul < 1:
198
+ l = l.resize((W, H))
199
+ r = r.resize((W, H))
200
+ l_name, r_name = f"{output_dir}/img_000.png", f"{output_dir}/img_001.png"
201
+ l.save(l_name)
202
+ r.save(r_name)
203
+
204
+ if flag == "x4":
205
+ multiple_VFIx4(l_name, r_name)
206
+ elif flag == "x2":
207
+ output_name = f"{output_dir}/img_000.5.png"
208
+ multiple_VFIx2(l_name, r_name, output_name)
209
+ else:
210
+ multiple_VFIx6(l_name, r_name)
211
+
212
+ return {
213
+ frame_gen_result_gallery : gr.Gallery(visible=True, value=get_sorted_img(output_dir))
214
+ }
215
+ #๋‹ค๋ฅธ ์ด๋ฏธ์ง€ ์ž…๋ ฅ์„ ์œ„ํ•ด ์ž…๋ ฅ๋œ ์ด๋ฏธ์ง€๋ฅผ ๋‚ ๋ฆฌ๋Š” ํ•ฉ์ˆ˜์ž…๋‹ˆ๋‹ค.
216
+ def clear_fix():
217
+ return{
218
+ img_0 : gr.Image(label="start image", sources =["upload"], value = None),
219
+ img_1 : gr.Image(label="end image", sources =["upload"], value = None),
220
+ frame_gen_result_gallery : gr.Gallery(visible=True, value=None)
221
+ }
222
+
223
+ with gr.Blocks(theme=gr.themes.Default(), title = "Inshorts Animator V. 0.5") as demo:
224
+ def info(request: gr.Request):
225
+ #ip๋ฅผ ์–ป๋Š” ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค.
226
+ #์ถ”ํ›„ ํŠน์ • ip ํ—ˆ์šฉ, ์ฐจ๋‹จ ๋“ฑ์ด ํ•„์š”ํ•˜๋ฉด ์ด์ชฝ ์ฐธ๊ณ ํ•ด ์ฃผ์„ธ์š”
227
+ headers = request.headers
228
+ print(headers["x-forwarded-for"].split(","))
229
+ demo.load(info, None)
230
+ gr.Markdown(f"""# Inshorts Animator V. 0.5 WebUI (Permitted User Only)""")
231
+ with gr.Tab("Mid Frame Generator"):
232
+ with gr.Column():
233
+
234
+ with gr.Row():
235
+ img_0 = gr.Image(label="start image", sources =["upload"])
236
+ img_1 = gr.Image(label="end image", sources =["upload"])
237
+ with gr.Row():
238
+ VFI_flag = gr.Radio(["x2", "x4", "x6(side ease)"], label="VFI ratio", value = "x2", interactive = True)
239
+ image_button = gr.Button("Run model")
240
+ frame_gen_result_gallery = gr.Gallery(visible=True,
241
+ label="result", columns=[5], rows=[1], object_fit="contain", height="auto", preview = True,
242
+ interactive = False)
243
+ image_button.click(VFI_two, inputs=[img_0, img_1, VFI_flag],
244
+ outputs=[frame_gen_result_gallery])
245
+ clear_button = gr.Button("Clear images")
246
+ clear_button.click(clear_fix, inputs=[],
247
+ outputs=[img_0, img_1, frame_gen_result_gallery])
248
+ with gr.Tab("Video"):
249
+ with gr.Group(visible=True) as video_input_group:
250
+ gr.Markdown(f"""#### only can handle {MAX_FRAME} frames""")
251
+ with gr.Column():
252
+ input_dir = gr.State("")
253
+ fps = gr.Number(visible=False)
254
+ video_input = gr.Video(label="Input Video", interactive=True, sources=['upload'])
255
+ gr.Markdown(f"""If video frame size is big, it will be resized""")
256
+ upload_button = gr.Button("upload video")
257
+ with gr.Group(visible=False) as image_edit_group:
258
+ with gr.Row():
259
+ with gr.Column():
260
+ with gr.Tab("Original Frame (for Monitoring)"):
261
+ fixed_list = gr.State([0] * (MAX_FRAME))
262
+ selected = gr.Number(visible=False, label = "selected frame", interactive = False)
263
+ image_gallery = gr.Gallery(
264
+ label="inputs", columns=[MAX_FRAME], rows=[1], object_fit="contain", height="auto", preview = True,
265
+ show_download_button=False)
266
+ clear_video = gr.Button("clear video")
267
+ with gr.Tab("Frame Fixer"):
268
+ with gr.Column():
269
+ #with gr.Row():
270
+ #with gr.Row():
271
+ with gr.Group(visible=True) as fix_result_group:
272
+ fix_result_gallery = gr.Gallery(
273
+ label="result", columns=[MAX_FRAME], rows=[1], object_fit="contain", height="auto", preview = True,
274
+ interactive = False)
275
+ fix_button = gr.Button(visible = True)
276
+ with gr.Row():
277
+ fixed_frame = gr.Text(visible=False, label = "fixed frame", interactive = False)
278
+ fix_button.click(fix_img, inputs=[selected, fixed_list, input_dir],
279
+ outputs=[fix_result_gallery, fix_result_group, fixed_frame])
280
+ def update_fix_button_visible(evt: gr.SelectData):
281
+ flag = 0 < evt.index < MAX_FRAME - 1
282
+ msg = f"fix frame {evt.index}" if flag else f"can only fix 1 ~ {MAX_FRAME - 2}"
283
+ return {
284
+ fix_button:gr.Button(msg, visible=True),
285
+ selected : evt.index,
286
+ fix_result_gallery : gr.Gallery(selected_index = evt.index)
287
+ }
288
+ image_gallery.select(update_fix_button_visible, None, [fix_button, selected, fix_result_gallery])
289
+ with gr.Tab("Motion easer"):
290
+ with gr.Column():
291
+ with gr.Column():
292
+ #with gr.Row():
293
+ with gr.Group(visible=True) as ease_result_group:
294
+ last_ease_dir = gr.State("")
295
+ ease_result_gallery = gr.Gallery(
296
+ label="result", columns=[MAX_FRAME], rows=[4], object_fit="contain", height="auto", preview = True,
297
+ interactive = False)
298
+ ease_button = gr.Button("ease", visible = True)
299
+ plt_data = gr.State([1] * (MAX_FRAME - 1))
300
+ VFI_x = gr.Radio([("x1", 1), ("x2", 2), ("x4", 3)], value = 1, label="Slow ratio", info="adjust Slow ratio", interactive = True)
301
+ with gr.Row():
302
+ edit_one_button = gr.Button("edit one scale", visible = True)
303
+ edit_all_button = gr.Button("edit all scale", visible = True)
304
+ now_frame = gr.Slider(0, MAX_FRAME - 1 - 1, step=1, label="Start frame", info="Choose Start frame to make slow. Interpolation will apply to (frame ~ frame + 1)")
305
+
306
+ def plt_edit(data):
307
+ fig = plt.figure()
308
+ x = np.arange(0, MAX_FRAME - 1) + 0.5
309
+ y = np.array(data)
310
+ plt.plot(x , y, color = 'black', marker = "o", linewidth = "2.5")
311
+ plt.xticks(np.arange(0, MAX_FRAME))
312
+ plt.yticks([1, 2, 3], ["x1", "x2\nslow", "x4\nslow"])
313
+ plt.gca().invert_yaxis()
314
+ plt.grid(True)
315
+ plt.rcParams['xtick.bottom'] = plt.rcParams['xtick.labelbottom'] = False
316
+ plt.rcParams['xtick.top'] = plt.rcParams['xtick.labeltop'] = True
317
+ return fig
318
+ ease_plot = gr.Plot(value = plt_edit(plt_data.value), show_label=False)
319
+ with gr.Accordion("get result", visible = False) as ease_make_video:
320
+ ease_zip = gr.File(label = "Download all image frames in Zip", interactive = False)
321
+ make_video_button = gr.Button("make video")
322
+ result_video = gr.Video(interactive = False)
323
+ def make_video(frame_dir, fps):
324
+ t = os.path.basename(frame_dir)
325
+ output_name = f"{frame_dir}/{t}.mp4"
326
+ if os.path.exists(output_name):
327
+ os.remove(output_name)
328
+ frame_list = get_sorted_img(frame_dir)
329
+ with open(f"{frame_dir}/input.txt", "w") as f:
330
+ for line in frame_list:
331
+ f.write(f"file '{os.path.basename(line)}'\n")
332
+ cmd = f'ffmpeg -r {fps} -f concat -safe 0 -i {frame_dir}/input.txt -c:v libx264 -preset veryslow -crf 10 {output_name}'
333
+ os.system(cmd)
334
+ return output_name
335
+ make_video_button.click(make_video, inputs = [last_ease_dir, fps], outputs = [result_video])
336
+ ease_button.click(ease_frames, inputs=[plt_data, input_dir], outputs=[ease_result_gallery, ease_make_video, last_ease_dir, ease_zip])
337
+
338
+ def edit_one_scale(data, idx, x):
339
+ if idx < MAX_FRAME - 1:
340
+ data[idx] = x if x else 1
341
+ return plt_edit(data)
342
+ edit_one_button.click(edit_one_scale, inputs=[plt_data, now_frame, VFI_x] , outputs=[ease_plot])
343
+ def edit_all_scale(data, x):
344
+ for i in range(len(data)): data[i] = x if x else 1
345
+ return plt_edit(data)
346
+ edit_all_button.click(edit_all_scale, inputs=[plt_data, VFI_x], outputs=[ease_plot])
347
+ def clear_vd(plt_data, fixed_list):
348
+ for i in range(len(plt_data)): plt_data[i] = 1
349
+ for i in range(len(fixed_list)): fixed_list[i] = 0
350
+ return {video_input:gr.Video(label="Input Video", interactive=True, sources=['upload'], value = None),
351
+ ease_result_gallery : gr.Gallery(
352
+ label="result", columns=[MAX_FRAME], rows=[4], object_fit="contain", height="auto", preview = True,
353
+ interactive = False, value = None),
354
+ fix_result_gallery : gr.Gallery(
355
+ label="result", columns=[MAX_FRAME], rows=[1], object_fit="contain", height="auto", preview = True,
356
+ interactive = False, value = None),
357
+ fixed_frame : gr.Text(visible=False, label = "fixed frame", interactive = False, value = None),
358
+ ease_make_video : gr.Accordion(visible = True),
359
+ video_input_group:gr.Group(visible=True),
360
+ image_edit_group:gr.Group(visible=False),
361
+ ease_plot : gr.Plot(value = plt_edit(plt_data))}
362
+ clear_video.click(clear_vd, inputs=[plt_data, fixed_list],outputs=[video_input, ease_result_gallery, fix_result_gallery, fixed_frame, ease_make_video, video_input_group, image_edit_group, ease_plot])
363
+ def update_video_visible(video):
364
+ if not video:
365
+ return {video_input_group:gr.Group(visible=True),
366
+ image_edit_group:gr.Group(visible=False),
367
+ image_gallery:[],
368
+ input_dir : "",
369
+ fps : 0
370
+ }
371
+ now = datetime.datetime.now().strftime('%Y%m%d_%H%M%S')
372
+ input_now = os.path.join("input", now)
373
+ os.makedirs(input_now, exist_ok = True)
374
+ cap = cv2.VideoCapture(video)
375
+ frame_count = 0
376
+ video_fps = cap.get(cv2.CAP_PROP_FPS)
377
+ #print('video fps:', video_fps)
378
+
379
+ H = cap.get(cv2.CAP_PROP_FRAME_HEIGHT)
380
+ W = cap.get(cv2.CAP_PROP_FRAME_WIDTH)
381
+ mul = ((3e6) / (W * H)) ** (1/2)
382
+ H, W = int(H * mul), int(W * mul)
383
+
384
+ frame_name_list = []
385
+ while cap.isOpened():
386
+ ret, frame = cap.read()
387
+ if not ret:
388
+ break
389
+ img_name = os.path.join(input_now, f"img_{frame_count:03d}.png")
390
+ if mul < 1:
391
+ frame = cv2.resize(frame, (W, H), interpolation=cv2.INTER_CUBIC)
392
+ cv2.imwrite(img_name, frame)
393
+ frame_name_list.append((img_name, f"frame {frame_count}"))
394
+ frame_count += 1
395
+ if frame_count >= MAX_FRAME: break
396
+ cap.release()
397
+ return {video_input_group:gr.Group(visible=False),
398
+ image_edit_group:gr.Group(visible=True),
399
+ image_gallery:frame_name_list,
400
+ input_dir : input_now,
401
+ fps : video_fps
402
+ }
403
+ upload_button.click(update_video_visible,
404
+ [video_input],
405
+ [video_input_group, image_edit_group, image_gallery, input_dir, fps])
406
+
407
+ if __name__ == '__main__':
408
+ demo.launch(allowed_paths=["./input", "./output"], auth = check_valid_login, auth_message = "Inshorts Animator V. 0.5 WebUI (Permitted User Only)", share = True)
cfgs/upr_backward_unimatch_exp1.yaml ADDED
@@ -0,0 +1,75 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ exp_name: backwarp_resize
2
+
3
+ mode: train
4
+
5
+ train_dataset:
6
+ name: vimeo
7
+ args:
8
+ root_path: ../datasets/upr_backward
9
+ split: train
10
+ patch_size: 256
11
+ flow: none
12
+ loader:
13
+ batch_size: 32
14
+ num_workers: 8
15
+
16
+ test_dataset:
17
+ name: vimeo
18
+ args:
19
+ root_path: ../datasets/Vimeo90K
20
+ split: val
21
+ loader:
22
+ batch_size: 32
23
+ num_workers: 8
24
+
25
+ demo_dataset:
26
+ name: demo
27
+ args:
28
+ root_path: ../data/animation
29
+ split: animation
30
+
31
+ model:
32
+ name: upr_net_mod
33
+ args:
34
+ pyr_level: 3
35
+ nr_lvl_skipped: 0
36
+ splat_mode: average
37
+
38
+
39
+ optimizer:
40
+ name: adamW
41
+ args: {lr: 0.00015, weight_decay: 1.e-4}
42
+
43
+ lr_scheduler:
44
+ name: one_cycle_lr
45
+ args:
46
+ max_lr: 0.00015
47
+ pct_start: 0.01
48
+ cycle_momentum: False
49
+ anneal_strategy: cos
50
+
51
+ loss:
52
+ - {
53
+ name: multiple_flow,
54
+ args: { weight: 0.005 }
55
+ }
56
+ - {
57
+ name: charbonnier,
58
+ args: { weight: 1 }
59
+ }
60
+ - {
61
+ name: ternary,
62
+ args: { weight: 1 }
63
+ }
64
+
65
+ max_epoch: 838
66
+
67
+ validate_every: 5
68
+ save_every: 10
69
+ vis_every: 40
70
+
71
+ seed: 1234
72
+
73
+ dist_url: env://
74
+ resume: ./save/upr_backward_unimatch_exp1_backwarp_resize/checkpoints/model_200.pth
75
+ # pretrained: ./pretrained/upr_backwarp_corr_resize_model.pth
cfgs/upr_backward_unimatch_exp2.yaml ADDED
@@ -0,0 +1,76 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ exp_name: backwarp_resize
2
+
3
+ mode: train
4
+
5
+ train_dataset:
6
+ name: vimeo
7
+ args:
8
+ root_path: ../datasets/Vimeo90Kx2
9
+ flow_root: ../datasets/unimatch_flow
10
+ split: train
11
+ patch_size: 512
12
+ flow: t0
13
+ loader:
14
+ batch_size: 16
15
+ num_workers: 16
16
+
17
+ test_dataset:
18
+ name: vimeo
19
+ args:
20
+ root_path: ../datasets/Vimeo90K
21
+ split: val
22
+ loader:
23
+ batch_size: 32
24
+ num_workers: 8
25
+
26
+ demo_dataset:
27
+ name: demo
28
+ args:
29
+ root_path: ../data/animation
30
+ split: animation
31
+
32
+ model:
33
+ name: upr_net_mod
34
+ args:
35
+ pyr_level: 3
36
+ nr_lvl_skipped: 0
37
+ splat_mode: average
38
+
39
+
40
+ optimizer:
41
+ name: adamW
42
+ args: {lr: 0.00015, weight_decay: 1.e-4}
43
+
44
+ lr_scheduler:
45
+ name: one_cycle_lr
46
+ args:
47
+ max_lr: 0.00015
48
+ pct_start: 0.01
49
+ cycle_momentum: False
50
+ anneal_strategy: cos
51
+
52
+ loss:
53
+ - {
54
+ name: multiple_flow,
55
+ args: { weight: 0.005 }
56
+ }
57
+ - {
58
+ name: charbonnier,
59
+ args: { weight: 1 }
60
+ }
61
+ - {
62
+ name: ternary,
63
+ args: { weight: 1 }
64
+ }
65
+
66
+ max_epoch: 250
67
+
68
+ validate_every: 5
69
+ save_every: 10
70
+ vis_every: 40
71
+
72
+ seed: 1234
73
+
74
+ dist_url: env://
75
+ resume: ./save/upr_backward_unimatch_exp2_backwarp_resize/checkpoints/model_30.pth
76
+ # pretrained: ./pretrained/upr_backwarp_corr_resize_model.pth
cfgs/upr_basic.yaml ADDED
@@ -0,0 +1,72 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ exp_name: UPR_basic
2
+
3
+ mode: train
4
+
5
+ train_dataset:
6
+ name: vimeo
7
+ args:
8
+ root_path: ../datasets/Vimeo90K
9
+ flow_root: ../datasets/unimatch_flow
10
+ split: train
11
+ patch_size: 256
12
+ flow: none
13
+ use_distance: False
14
+ loader:
15
+ batch_size: 32
16
+ num_workers: 8
17
+
18
+ test_dataset:
19
+ name: vimeo
20
+ args:
21
+ root_path: ../datasets/Vimeo90K
22
+ split: val
23
+ use_distance: False
24
+ loader:
25
+ batch_size: 16
26
+ num_workers: 4
27
+ save_imgs: False
28
+
29
+ demo_dataset:
30
+ name: demo
31
+ args:
32
+ root_path: ../data/animation
33
+ split: animation
34
+
35
+ model:
36
+ name: upr_basic
37
+ args:
38
+ pyr_level: 3
39
+ nr_lvl_skipped: 0
40
+
41
+ optimizer:
42
+ name: adamW
43
+ args: {lr: 1.5e-4, weight_decay: 1.e-4}
44
+
45
+ lr_scheduler:
46
+ name: one_cycle_lr
47
+ args:
48
+ max_lr: 1.5e-4
49
+ pct_start: 0.01
50
+ cycle_momentum: False
51
+ anneal_strategy: cos
52
+
53
+ loss:
54
+ - {
55
+ name: charbonnier,
56
+ args: { weight: 1 }
57
+ }
58
+ - {
59
+ name: ternary,
60
+ args: { weight: 1 }
61
+ }
62
+
63
+
64
+ max_epoch: 540
65
+
66
+ validate_every: 10
67
+ save_every: 10
68
+ vis_every: 20
69
+
70
+ seed: 1234
71
+
72
+ dist_url: env://
cfgs/upr_custom_4090_exp1.yaml ADDED
@@ -0,0 +1,70 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ exp_name: backwarp_resize
2
+
3
+ mode: train
4
+
5
+ train_dataset:
6
+ name: vimeo
7
+ args:
8
+ root_path: /mnt/nas/512_new
9
+ split: train
10
+ patch_size: 512
11
+ flow: none
12
+ loader:
13
+ batch_size: 16
14
+ num_workers: 8
15
+
16
+ test_dataset:
17
+ name: vimeo
18
+ args:
19
+ root_path: /mnt/nas/vimeo_triplet
20
+ split: val
21
+ loader:
22
+ batch_size: 16
23
+ num_workers: 8
24
+
25
+ demo_dataset:
26
+ name: demo
27
+ args:
28
+ root_path: ../data/animation
29
+ split: animation
30
+
31
+ model:
32
+ name: upr_net_mod
33
+ args:
34
+ pyr_level: 5
35
+ nr_lvl_skipped: 0
36
+ splat_mode: average
37
+
38
+
39
+ optimizer:
40
+ name: adamW
41
+ args: {lr: 0.000075, weight_decay: 1.e-4}
42
+
43
+ lr_scheduler:
44
+ name: one_cycle_lr
45
+ args:
46
+ max_lr: 0.000075
47
+ pct_start: 0.01
48
+ cycle_momentum: False
49
+ anneal_strategy: cos
50
+
51
+ loss:
52
+ - {
53
+ name: charbonnier,
54
+ args: { weight: 1 }
55
+ }
56
+ - {
57
+ name: ternary,
58
+ args: { weight: 1 }
59
+ }
60
+
61
+ max_epoch: 533
62
+
63
+ validate_every: 1
64
+ save_every: 10
65
+ vis_every: 20
66
+
67
+ seed: 1234
68
+
69
+ dist_url: env://
70
+ pretrained: ./pretrained/upr_backwarp_corr_resize_model.pth
cfgs/upr_custom_4090_exp1_10epoch_test.yaml ADDED
@@ -0,0 +1,70 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ exp_name: backwarp_resize
2
+
3
+ mode: train
4
+
5
+ train_dataset:
6
+ name: vimeo
7
+ args:
8
+ root_path: /mnt/nas/512_new
9
+ split: train
10
+ patch_size: 512
11
+ flow: none
12
+ loader:
13
+ batch_size: 16
14
+ num_workers: 8
15
+
16
+ test_dataset:
17
+ name: vimeo
18
+ args:
19
+ root_path: /mnt/nas/vimeo_triplet
20
+ split: val
21
+ loader:
22
+ batch_size: 16
23
+ num_workers: 8
24
+
25
+ demo_dataset:
26
+ name: demo
27
+ args:
28
+ root_path: ../data/animation
29
+ split: animation
30
+
31
+ model:
32
+ name: upr_net_mod
33
+ args:
34
+ pyr_level: 5
35
+ nr_lvl_skipped: 0
36
+ splat_mode: average
37
+
38
+
39
+ optimizer:
40
+ name: adamW
41
+ args: {lr: 0.000075, weight_decay: 1.e-4}
42
+
43
+ lr_scheduler:
44
+ name: one_cycle_lr
45
+ args:
46
+ max_lr: 0.000075
47
+ pct_start: 0.01
48
+ cycle_momentum: False
49
+ anneal_strategy: cos
50
+
51
+ loss:
52
+ - {
53
+ name: charbonnier,
54
+ args: { weight: 1 }
55
+ }
56
+ - {
57
+ name: ternary,
58
+ args: { weight: 1 }
59
+ }
60
+
61
+ max_epoch: 533
62
+
63
+ validate_every: 1
64
+ save_every: 10
65
+ vis_every: 20
66
+
67
+ seed: 1234
68
+
69
+ dist_url: env://
70
+ pretrained: ./pretrained/upr_backwarp_corr_resize_model.pth
cfgs/upr_custom_4090_exp1_extract.yaml ADDED
@@ -0,0 +1,70 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ exp_name: backwarp_resize
2
+
3
+ mode: train
4
+
5
+ train_dataset:
6
+ name: vimeo
7
+ args:
8
+ root_path: /mnt/nas/512_new
9
+ split: train
10
+ patch_size: 512
11
+ flow: none
12
+ loader:
13
+ batch_size: 16
14
+ num_workers: 8
15
+
16
+ test_dataset:
17
+ name: vimeo
18
+ args:
19
+ root_path: ../datasets/Vimeo90K
20
+ split: val
21
+ loader:
22
+ batch_size: 4
23
+ num_workers: 8
24
+
25
+ demo_dataset:
26
+ name: demo
27
+ args:
28
+ root_path: ../data/animation
29
+ split: animation
30
+
31
+ model:
32
+ name: upr_net_mod
33
+ args:
34
+ pyr_level: 5
35
+ nr_lvl_skipped: 0
36
+ splat_mode: average
37
+
38
+
39
+ optimizer:
40
+ name: adamW
41
+ args: {lr: 0.000075, weight_decay: 1.e-4}
42
+
43
+ lr_scheduler:
44
+ name: one_cycle_lr
45
+ args:
46
+ max_lr: 0.000075
47
+ pct_start: 0.01
48
+ cycle_momentum: False
49
+ anneal_strategy: cos
50
+
51
+ loss:
52
+ - {
53
+ name: charbonnier,
54
+ args: { weight: 1 }
55
+ }
56
+ - {
57
+ name: ternary,
58
+ args: { weight: 1 }
59
+ }
60
+
61
+ max_epoch: 533
62
+
63
+ validate_every: 1
64
+ save_every: 10
65
+ vis_every: 20
66
+
67
+ seed: 1234
68
+
69
+ dist_url: env://
70
+ pretrained: ./pretrained/upr_backwarp_corr_resize_model.pth
cfgs/upr_custom_4090_exp2.yaml ADDED
@@ -0,0 +1,70 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ exp_name: backwarp_resize
2
+
3
+ mode: train
4
+
5
+ train_dataset:
6
+ name: vimeo
7
+ args:
8
+ root_path: ../datasets/upr_backward
9
+ split: train
10
+ patch_size: 256
11
+ flow: none
12
+ loader:
13
+ batch_size: 32
14
+ num_workers: 8
15
+
16
+ test_dataset:
17
+ name: vimeo
18
+ args:
19
+ root_path: ../datasets/Vimeo90K
20
+ split: val
21
+ loader:
22
+ batch_size: 32
23
+ num_workers: 8
24
+
25
+ demo_dataset:
26
+ name: demo
27
+ args:
28
+ root_path: ../data/animation
29
+ split: animation
30
+
31
+ model:
32
+ name: upr_net_mod
33
+ args:
34
+ pyr_level: 5
35
+ nr_lvl_skipped: 0
36
+ splat_mode: average
37
+
38
+
39
+ optimizer:
40
+ name: adamW
41
+ args: {lr: 0.00015, weight_decay: 1.e-4}
42
+
43
+ lr_scheduler:
44
+ name: one_cycle_lr
45
+ args:
46
+ max_lr: 0.00015
47
+ pct_start: 0.01
48
+ cycle_momentum: False
49
+ anneal_strategy: cos
50
+
51
+ loss:
52
+ - {
53
+ name: charbonnier,
54
+ args: { weight: 1 }
55
+ }
56
+ - {
57
+ name: ternary,
58
+ args: { weight: 1 }
59
+ }
60
+
61
+ max_epoch: 533
62
+
63
+ validate_every: 1
64
+ save_every: 10
65
+ vis_every: 20
66
+
67
+ seed: 1234
68
+
69
+ dist_url: env://
70
+ pretrained: ./pretrained/upr_backwarp_corr_resize_model.pth
cfgs/upr_freq003.yaml ADDED
@@ -0,0 +1,88 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ exp_name: FET-VFI_BiFreqLoss_Distance
2
+
3
+ mode: train
4
+
5
+ train_dataset:
6
+ name: vimeo
7
+ args:
8
+ root_path: ../datasets/Vimeo90K
9
+ flow_root: ../datasets/unimatch_flow
10
+ split: train
11
+ patch_size: 256
12
+ flow: 't0'
13
+ use_distance: True
14
+ distance_root: ../datasets/distance_map
15
+ loader:
16
+ batch_size: 32
17
+ num_workers: 8
18
+
19
+ test_dataset:
20
+ name: vimeo
21
+ args:
22
+ root_path: ../datasets/Vimeo90K
23
+ split: val
24
+ use_distance: True
25
+ loader:
26
+ batch_size: 16
27
+ num_workers: 4
28
+ save_imgs: False
29
+
30
+ demo_dataset:
31
+ name: demo
32
+ args:
33
+ root_path: ../data/animation
34
+ split: animation
35
+
36
+ model:
37
+ name: upr_net_freq
38
+ args:
39
+ pyr_level: 3
40
+ nr_lvl_skipped: 0
41
+ splat_mode: average
42
+ fftshift: False
43
+
44
+
45
+ optimizer:
46
+ name: adamW
47
+ args: {lr: 1.5e-4, weight_decay: 1.e-4}
48
+
49
+ lr_scheduler:
50
+ name: one_cycle_lr
51
+ args:
52
+ max_lr: 1.5e-4
53
+ pct_start: 0.01
54
+ cycle_momentum: False
55
+ anneal_strategy: cos
56
+
57
+ loss:
58
+ - {
59
+ name: frequency,
60
+ args: { weight: 0.01 }
61
+ }
62
+ - {
63
+ name: bi_frequency,
64
+ args: { weight: 0.01 }
65
+ }
66
+ - {
67
+ name: multiple_flow,
68
+ args: { weight: 0.005 }
69
+ }
70
+ - {
71
+ name: charbonnier,
72
+ args: { weight: 1 }
73
+ }
74
+ - {
75
+ name: ternary,
76
+ args: { weight: 1 }
77
+ }
78
+
79
+
80
+ max_epoch: 540
81
+
82
+ validate_every: 10
83
+ save_every: 10
84
+ vis_every: 20
85
+
86
+ seed: 1234
87
+
88
+ dist_url: env://
cfgs/upr_freq004.yaml ADDED
@@ -0,0 +1,88 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ exp_name: FET-VFI_BiFreqLoss_Distance
2
+
3
+ mode: train
4
+
5
+ train_dataset:
6
+ name: vimeo
7
+ args:
8
+ root_path: ../datasets/Vimeo90K
9
+ flow_root: ../datasets/unimatch_flow
10
+ split: train
11
+ patch_size: 256
12
+ flow: 't0'
13
+ use_distance: True
14
+ distance_root: ../datasets/distance_map
15
+ loader:
16
+ batch_size: 32
17
+ num_workers: 8
18
+
19
+ test_dataset:
20
+ name: vimeo
21
+ args:
22
+ root_path: ../datasets/Vimeo90K
23
+ split: val
24
+ use_distance: True
25
+ loader:
26
+ batch_size: 16
27
+ num_workers: 4
28
+ save_imgs: False
29
+
30
+ demo_dataset:
31
+ name: demo
32
+ args:
33
+ root_path: ../data/animation
34
+ split: animation
35
+
36
+ model:
37
+ name: upr_net_freq
38
+ args:
39
+ pyr_level: 3
40
+ nr_lvl_skipped: 0
41
+ splat_mode: average
42
+ fftshift: False
43
+
44
+
45
+ optimizer:
46
+ name: adamW
47
+ args: {lr: 1.5e-4, weight_decay: 1.e-4}
48
+
49
+ lr_scheduler:
50
+ name: one_cycle_lr
51
+ args:
52
+ max_lr: 1.5e-4
53
+ pct_start: 0.01
54
+ cycle_momentum: False
55
+ anneal_strategy: cos
56
+
57
+ loss:
58
+ - {
59
+ name: frequency,
60
+ args: { weight: 0.01 }
61
+ }
62
+ - {
63
+ name: bi_frequency,
64
+ args: { weight: 0.01 }
65
+ }
66
+ - {
67
+ name: multiple_flow,
68
+ args: { weight: 0.005 }
69
+ }
70
+ - {
71
+ name: charbonnier,
72
+ args: { weight: 1 }
73
+ }
74
+ - {
75
+ name: ternary,
76
+ args: { weight: 1 }
77
+ }
78
+
79
+
80
+ max_epoch: 540
81
+
82
+ validate_every: 10
83
+ save_every: 10
84
+ vis_every: 20
85
+
86
+ seed: 1234
87
+
88
+ dist_url: env://
cfgs/upr_freq005.yaml ADDED
@@ -0,0 +1,87 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ exp_name: FET-VFI_EncFreqs_AsymFreqDec
2
+
3
+ mode: train
4
+
5
+ train_dataset:
6
+ name: vimeo
7
+ args:
8
+ root_path: ../datasets/Vimeo90K
9
+ flow_root: ../datasets/unimatch_flow
10
+ split: train
11
+ patch_size: 256
12
+ flow: 't0'
13
+ use_distance: False
14
+ loader:
15
+ batch_size: 32
16
+ num_workers: 8
17
+
18
+ test_dataset:
19
+ name: vimeo
20
+ args:
21
+ root_path: ../datasets/Vimeo90K
22
+ split: val
23
+ use_distance: False
24
+ loader:
25
+ batch_size: 16
26
+ num_workers: 4
27
+ save_imgs: False
28
+
29
+ demo_dataset:
30
+ name: demo
31
+ args:
32
+ root_path: ../data/animation
33
+ split: animation
34
+
35
+ model:
36
+ name: upr_net_freq
37
+ args:
38
+ pyr_level: 3
39
+ nr_lvl_skipped: 0
40
+ splat_mode: average
41
+ fftshift: False
42
+
43
+
44
+ optimizer:
45
+ name: adamW
46
+ args: {lr: 1.5e-4, weight_decay: 1.e-4}
47
+
48
+ lr_scheduler:
49
+ name: one_cycle_lr
50
+ args:
51
+ max_lr: 1.5e-4
52
+ pct_start: 0.01
53
+ cycle_momentum: False
54
+ anneal_strategy: cos
55
+
56
+ loss:
57
+ - {
58
+ name: frequency,
59
+ args: { weight: 0.01 }
60
+ }
61
+ - {
62
+ name: bi_frequency,
63
+ args: { weight: 0.01 }
64
+ }
65
+ - {
66
+ name: multiple_flow,
67
+ args: { weight: 0.005 }
68
+ }
69
+ - {
70
+ name: charbonnier,
71
+ args: { weight: 1 }
72
+ }
73
+ - {
74
+ name: ternary,
75
+ args: { weight: 1 }
76
+ }
77
+
78
+
79
+ max_epoch: 540
80
+
81
+ validate_every: 10
82
+ save_every: 10
83
+ vis_every: 20
84
+
85
+ seed: 1234
86
+
87
+ dist_url: env://
cfgs/upr_freq006.yaml ADDED
@@ -0,0 +1,83 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ exp_name: FET-VFI_Basic_ChangeFreqCNN
2
+
3
+ mode: train
4
+
5
+ train_dataset:
6
+ name: vimeo
7
+ args:
8
+ root_path: ../datasets/Vimeo90K
9
+ flow_root: ../datasets/unimatch_flow
10
+ split: train
11
+ patch_size: 256
12
+ flow: none
13
+ use_distance: False
14
+ loader:
15
+ batch_size: 32
16
+ num_workers: 8
17
+
18
+ test_dataset:
19
+ name: vimeo
20
+ args:
21
+ root_path: ../datasets/Vimeo90K
22
+ split: val
23
+ use_distance: False
24
+ loader:
25
+ batch_size: 16
26
+ num_workers: 4
27
+ save_imgs: False
28
+
29
+ demo_dataset:
30
+ name: demo
31
+ args:
32
+ root_path: ../data/animation
33
+ split: animation
34
+
35
+ model:
36
+ name: upr_net_freq2
37
+ args:
38
+ pyr_level: 3
39
+ nr_lvl_skipped: 0
40
+ splat_mode: average
41
+ fftshift: True
42
+
43
+
44
+ optimizer:
45
+ name: adamW
46
+ args: {lr: 1.5e-4, weight_decay: 1.e-4}
47
+
48
+ lr_scheduler:
49
+ name: one_cycle_lr
50
+ args:
51
+ max_lr: 1.5e-4
52
+ pct_start: 0.01
53
+ cycle_momentum: False
54
+ anneal_strategy: cos
55
+
56
+ loss:
57
+ - {
58
+ name: frequency,
59
+ args: { weight: 0.01 }
60
+ }
61
+ - {
62
+ name: bi_frequency,
63
+ args: { weight: 0.01 }
64
+ }
65
+ - {
66
+ name: charbonnier,
67
+ args: { weight: 1 }
68
+ }
69
+ - {
70
+ name: ternary,
71
+ args: { weight: 1 }
72
+ }
73
+
74
+
75
+ max_epoch: 540
76
+
77
+ validate_every: 10
78
+ save_every: 10
79
+ vis_every: 20
80
+
81
+ seed: 1234
82
+
83
+ dist_url: env://
cfgs/upr_freq007.yaml ADDED
@@ -0,0 +1,83 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ exp_name: FET-VFI_FETAmpPhaResid
2
+
3
+ mode: train
4
+
5
+ train_dataset:
6
+ name: vimeo
7
+ args:
8
+ root_path: ../datasets/Vimeo90K
9
+ flow_root: ../datasets/unimatch_flow
10
+ split: train
11
+ patch_size: 256
12
+ flow: none
13
+ use_distance: False
14
+ loader:
15
+ batch_size: 32
16
+ num_workers: 8
17
+
18
+ test_dataset:
19
+ name: vimeo
20
+ args:
21
+ root_path: ../datasets/Vimeo90K
22
+ split: val
23
+ use_distance: False
24
+ loader:
25
+ batch_size: 16
26
+ num_workers: 4
27
+ save_imgs: False
28
+
29
+ demo_dataset:
30
+ name: demo
31
+ args:
32
+ root_path: ../data/animation
33
+ split: animation
34
+
35
+ model:
36
+ name: upr_net_freq2
37
+ args:
38
+ pyr_level: 3
39
+ nr_lvl_skipped: 0
40
+ splat_mode: average
41
+ fftshift: True
42
+
43
+
44
+ optimizer:
45
+ name: adamW
46
+ args: {lr: 1.5e-4, weight_decay: 1.e-4}
47
+
48
+ lr_scheduler:
49
+ name: one_cycle_lr
50
+ args:
51
+ max_lr: 1.5e-4
52
+ pct_start: 0.01
53
+ cycle_momentum: False
54
+ anneal_strategy: cos
55
+
56
+ loss:
57
+ - {
58
+ name: frequency,
59
+ args: { weight: 0.01 }
60
+ }
61
+ - {
62
+ name: bi_frequency,
63
+ args: { weight: 0.01 }
64
+ }
65
+ - {
66
+ name: charbonnier,
67
+ args: { weight: 1 }
68
+ }
69
+ - {
70
+ name: ternary,
71
+ args: { weight: 1 }
72
+ }
73
+
74
+
75
+ max_epoch: 540
76
+
77
+ validate_every: 10
78
+ save_every: 10
79
+ vis_every: 20
80
+
81
+ seed: 1234
82
+
83
+ dist_url: env://
cfgs/upr_freq008.yaml ADDED
@@ -0,0 +1,83 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ exp_name: FET-VFI_FETAmpPhaResid
2
+
3
+ mode: train
4
+
5
+ train_dataset:
6
+ name: vimeo
7
+ args:
8
+ root_path: ../datasets/Vimeo90K
9
+ flow_root: ../datasets/unimatch_flow
10
+ split: train
11
+ patch_size: 256
12
+ flow: none
13
+ use_distance: False
14
+ loader:
15
+ batch_size: 32
16
+ num_workers: 8
17
+
18
+ test_dataset:
19
+ name: vimeo
20
+ args:
21
+ root_path: ../datasets/Vimeo90K
22
+ split: val
23
+ use_distance: False
24
+ loader:
25
+ batch_size: 16
26
+ num_workers: 4
27
+ save_imgs: False
28
+
29
+ demo_dataset:
30
+ name: demo
31
+ args:
32
+ root_path: ../data/animation
33
+ split: animation
34
+
35
+ model:
36
+ name: upr_net_freq2
37
+ args:
38
+ pyr_level: 3
39
+ nr_lvl_skipped: 0
40
+ splat_mode: average
41
+ fftshift: False
42
+
43
+
44
+ optimizer:
45
+ name: adamW
46
+ args: {lr: 1.5e-4, weight_decay: 1.e-4}
47
+
48
+ lr_scheduler:
49
+ name: one_cycle_lr
50
+ args:
51
+ max_lr: 1.5e-4
52
+ pct_start: 0.01
53
+ cycle_momentum: False
54
+ anneal_strategy: cos
55
+
56
+ loss:
57
+ - {
58
+ name: frequency,
59
+ args: { weight: 0.01 }
60
+ }
61
+ - {
62
+ name: bi_frequency,
63
+ args: { weight: 0.01 }
64
+ }
65
+ - {
66
+ name: charbonnier,
67
+ args: { weight: 1 }
68
+ }
69
+ - {
70
+ name: ternary,
71
+ args: { weight: 1 }
72
+ }
73
+
74
+
75
+ max_epoch: 540
76
+
77
+ validate_every: 10
78
+ save_every: 10
79
+ vis_every: 20
80
+
81
+ seed: 1234
82
+
83
+ dist_url: env://
cfgs/upr_freq_unimatch_exp001.yaml ADDED
@@ -0,0 +1,83 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ exp_name: FreqeuncyEnhancementTransformer
2
+
3
+ mode: train
4
+
5
+ train_dataset:
6
+ name: vimeo
7
+ args:
8
+ root_path: ../datasets/Vimeo90K
9
+ flow_root: ../datasets/unimatch_flow
10
+ split: train
11
+ patch_size: 256
12
+ flow: 't0'
13
+ loader:
14
+ batch_size: 32
15
+ num_workers: 8
16
+
17
+ test_dataset:
18
+ name: vimeo
19
+ args:
20
+ root_path: ../datasets/Vimeo90K
21
+ split: val
22
+ loader:
23
+ batch_size: 16
24
+ num_workers: 4
25
+ save_imgs: False
26
+
27
+ demo_dataset:
28
+ name: demo
29
+ args:
30
+ root_path: ../data/animation
31
+ split: animation
32
+
33
+ model:
34
+ name: upr_net_freq
35
+ args:
36
+ pyr_level: 3
37
+ nr_lvl_skipped: 0
38
+ splat_mode: average
39
+ fftshift: False
40
+
41
+
42
+ optimizer:
43
+ name: adamW
44
+ args: {lr: 1.5e-4, weight_decay: 1.e-4}
45
+
46
+ lr_scheduler:
47
+ name: one_cycle_lr
48
+ args:
49
+ max_lr: 1.5e-4
50
+ pct_start: 0.01
51
+ cycle_momentum: False
52
+ anneal_strategy: cos
53
+
54
+ loss:
55
+ - {
56
+ name: frequency,
57
+ args: { weight: 0.01 }
58
+ }
59
+ - {
60
+ name: multiple_flow,
61
+ args: { weight: 0.005 }
62
+ }
63
+ - {
64
+ name: charbonnier,
65
+ args: { weight: 1 }
66
+ }
67
+ - {
68
+ name: ternary,
69
+ args: { weight: 1 }
70
+ }
71
+
72
+
73
+ max_epoch: 540
74
+
75
+ validate_every: 10
76
+ save_every: 10
77
+ vis_every: 20
78
+
79
+ seed: 1234
80
+
81
+ dist_url: env://
82
+
83
+ resume: ./save/upr_freq_unimatch_exp001_FreqeuncyEnhancementTransformer/checkpoints/model_420.pth
cfgs/upr_freq_unimatch_exp002.yaml ADDED
@@ -0,0 +1,85 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ exp_name: FET-VFI_BiFrequencyLoss
2
+
3
+ mode: train
4
+
5
+ train_dataset:
6
+ name: vimeo
7
+ args:
8
+ root_path: ../datasets/Vimeo90K
9
+ flow_root: ../datasets/unimatch_flow
10
+ split: train
11
+ patch_size: 256
12
+ flow: 't0'
13
+ loader:
14
+ batch_size: 32
15
+ num_workers: 8
16
+
17
+ test_dataset:
18
+ name: vimeo
19
+ args:
20
+ root_path: ../datasets/Vimeo90K
21
+ split: val
22
+ loader:
23
+ batch_size: 16
24
+ num_workers: 4
25
+ save_imgs: False
26
+
27
+ demo_dataset:
28
+ name: demo
29
+ args:
30
+ root_path: ../data/animation
31
+ split: animation
32
+
33
+ model:
34
+ name: upr_net_freq
35
+ args:
36
+ pyr_level: 3
37
+ nr_lvl_skipped: 0
38
+ splat_mode: average
39
+ fftshift: False
40
+
41
+
42
+ optimizer:
43
+ name: adamW
44
+ args: {lr: 1.5e-4, weight_decay: 1.e-4}
45
+
46
+ lr_scheduler:
47
+ name: one_cycle_lr
48
+ args:
49
+ max_lr: 1.5e-4
50
+ pct_start: 0.01
51
+ cycle_momentum: False
52
+ anneal_strategy: cos
53
+
54
+ loss:
55
+ - {
56
+ name: frequency,
57
+ args: { weight: 0.01 }
58
+ }
59
+ - {
60
+ name: bi_frequency,
61
+ args: { weight: 0.01 }
62
+ }
63
+ - {
64
+ name: multiple_flow,
65
+ args: { weight: 0.005 }
66
+ }
67
+ - {
68
+ name: charbonnier,
69
+ args: { weight: 1 }
70
+ }
71
+ - {
72
+ name: ternary,
73
+ args: { weight: 1 }
74
+ }
75
+
76
+
77
+ max_epoch: 540
78
+
79
+ validate_every: 10
80
+ save_every: 10
81
+ vis_every: 20
82
+
83
+ seed: 1234
84
+
85
+ dist_url: env://
cfgs/upr_freq_unimatch_exp002_20240111_extratraining1.yaml ADDED
@@ -0,0 +1,86 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ exp_name: FET-VFI_BiFrequencyLoss
2
+
3
+ mode: train
4
+
5
+ train_dataset:
6
+ name: vimeo
7
+ args:
8
+ root_path: ../datasets/frames1_triplet
9
+ flow_root: ../datasets/frames1_unimatch_flow
10
+ tri_trainlist: tri_trainlist.txt
11
+ split: train
12
+ patch_size: 256
13
+ flow: 't0'
14
+ loader:
15
+ batch_size: 16
16
+ num_workers: 4
17
+
18
+ # test_dataset:
19
+ # name: vimeo
20
+ # args:
21
+ # root_path: ../datasets/Vimeo90K
22
+ # split: val
23
+ # loader:
24
+ # batch_size: 16
25
+ # num_workers: 4
26
+ # save_imgs: False
27
+
28
+ # demo_dataset:
29
+ # name: demo
30
+ # args:
31
+ # root_path: ../data/animation
32
+ # split: animation
33
+
34
+ model:
35
+ name: upr_net_freq
36
+ args:
37
+ pyr_level: 3
38
+ nr_lvl_skipped: 0
39
+ splat_mode: average
40
+ fftshift: False
41
+
42
+
43
+ optimizer:
44
+ name: adamW
45
+ args: {lr: 4.e-6, weight_decay: 1.e-4}
46
+
47
+ lr_scheduler:
48
+ name: one_cycle_lr
49
+ args:
50
+ max_lr: 4.e-6
51
+ pct_start: 0.01
52
+ cycle_momentum: False
53
+ anneal_strategy: cos
54
+
55
+ loss:
56
+ - {
57
+ name: frequency,
58
+ args: { weight: 0.01 }
59
+ }
60
+ - {
61
+ name: bi_frequency,
62
+ args: { weight: 0.01 }
63
+ }
64
+ - {
65
+ name: multiple_flow,
66
+ args: { weight: 0.005 }
67
+ }
68
+ - {
69
+ name: charbonnier,
70
+ args: { weight: 1 }
71
+ }
72
+ - {
73
+ name: ternary,
74
+ args: { weight: 1 }
75
+ }
76
+
77
+ pretrained: ./pretrained/upr_freq002.pth
78
+ max_epoch: 300
79
+
80
+ validate_every: 10
81
+ save_every: 10
82
+ vis_every: 20
83
+
84
+ seed: 1234
85
+
86
+ dist_url: env://
cfgs/upr_freq_unimatch_exp002_20240111_extratraining1000_2_1.yaml ADDED
@@ -0,0 +1,86 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ exp_name: FET-VFI_BiFrequencyLoss
2
+
3
+ mode: train
4
+
5
+ train_dataset:
6
+ name: vimeo
7
+ args:
8
+ root_path: ../datasets/frames2_triplet
9
+ flow_root: ../datasets/frames2_unimatch_flow
10
+ tri_trainlist: tri_trainlist.txt
11
+ split: train
12
+ patch_size: 256
13
+ flow: 't0'
14
+ loader:
15
+ batch_size: 16
16
+ num_workers: 4
17
+
18
+ # test_dataset:
19
+ # name: vimeo
20
+ # args:
21
+ # root_path: ../datasets/Vimeo90K
22
+ # split: val
23
+ # loader:
24
+ # batch_size: 16
25
+ # num_workers: 4
26
+ # save_imgs: False
27
+
28
+ # demo_dataset:
29
+ # name: demo
30
+ # args:
31
+ # root_path: ../data/animation
32
+ # split: animation
33
+
34
+ model:
35
+ name: upr_net_freq
36
+ args:
37
+ pyr_level: 3
38
+ nr_lvl_skipped: 0
39
+ splat_mode: average
40
+ fftshift: False
41
+
42
+
43
+ optimizer:
44
+ name: adamW
45
+ args: {lr: 7.5e-6, weight_decay: 1.e-4}
46
+
47
+ lr_scheduler:
48
+ name: one_cycle_lr
49
+ args:
50
+ max_lr: 7.5e-6
51
+ pct_start: 0.01
52
+ cycle_momentum: False
53
+ anneal_strategy: cos
54
+
55
+ loss:
56
+ - {
57
+ name: frequency,
58
+ args: { weight: 0.01 }
59
+ }
60
+ - {
61
+ name: bi_frequency,
62
+ args: { weight: 0.01 }
63
+ }
64
+ - {
65
+ name: multiple_flow,
66
+ args: { weight: 0.005 }
67
+ }
68
+ - {
69
+ name: charbonnier,
70
+ args: { weight: 1 }
71
+ }
72
+ - {
73
+ name: ternary,
74
+ args: { weight: 1 }
75
+ }
76
+
77
+ pretrained: ./pretrained/upr_freq002.pth
78
+ max_epoch: 1000
79
+
80
+ validate_every: 10
81
+ save_every: 10
82
+ vis_every: 20
83
+
84
+ seed: 1234
85
+
86
+ dist_url: env://
cfgs/upr_freq_unimatch_exp002_20240111_extratraining1000_2_2.yaml ADDED
@@ -0,0 +1,86 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ exp_name: FET-VFI_BiFrequencyLoss
2
+
3
+ mode: train
4
+
5
+ train_dataset:
6
+ name: vimeo
7
+ args:
8
+ root_path: ../datasets/frames2_triplet
9
+ flow_root: ../datasets/frames2_unimatch_flow
10
+ tri_trainlist: tri_trainlist.txt
11
+ split: train
12
+ patch_size: 256
13
+ flow: 't0'
14
+ loader:
15
+ batch_size: 16
16
+ num_workers: 4
17
+
18
+ # test_dataset:
19
+ # name: vimeo
20
+ # args:
21
+ # root_path: ../datasets/Vimeo90K
22
+ # split: val
23
+ # loader:
24
+ # batch_size: 16
25
+ # num_workers: 4
26
+ # save_imgs: False
27
+
28
+ # demo_dataset:
29
+ # name: demo
30
+ # args:
31
+ # root_path: ../data/animation
32
+ # split: animation
33
+
34
+ model:
35
+ name: upr_net_freq
36
+ args:
37
+ pyr_level: 3
38
+ nr_lvl_skipped: 0
39
+ splat_mode: average
40
+ fftshift: False
41
+
42
+
43
+ optimizer:
44
+ name: adamW
45
+ args: {lr: 4.e-6, weight_decay: 1.e-4}
46
+
47
+ lr_scheduler:
48
+ name: one_cycle_lr
49
+ args:
50
+ max_lr: 4.e-6
51
+ pct_start: 0.01
52
+ cycle_momentum: False
53
+ anneal_strategy: cos
54
+
55
+ loss:
56
+ - {
57
+ name: frequency,
58
+ args: { weight: 0.01 }
59
+ }
60
+ - {
61
+ name: bi_frequency,
62
+ args: { weight: 0.01 }
63
+ }
64
+ - {
65
+ name: multiple_flow,
66
+ args: { weight: 0.005 }
67
+ }
68
+ - {
69
+ name: charbonnier,
70
+ args: { weight: 1 }
71
+ }
72
+ - {
73
+ name: ternary,
74
+ args: { weight: 1 }
75
+ }
76
+
77
+ pretrained: ./pretrained/upr_freq002.pth
78
+ max_epoch: 1000
79
+
80
+ validate_every: 10
81
+ save_every: 10
82
+ vis_every: 20
83
+
84
+ seed: 1234
85
+
86
+ dist_url: env://
cfgs/upr_freq_unimatch_exp002_20240111_extratraining1000_2_3.yaml ADDED
@@ -0,0 +1,86 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ exp_name: FET-VFI_BiFrequencyLoss
2
+
3
+ mode: train
4
+
5
+ train_dataset:
6
+ name: vimeo
7
+ args:
8
+ root_path: ../datasets/frames2_triplet
9
+ flow_root: ../datasets/frames2_unimatch_flow
10
+ tri_trainlist: tri_trainlist.txt
11
+ split: train
12
+ patch_size: 256
13
+ flow: 't0'
14
+ loader:
15
+ batch_size: 16
16
+ num_workers: 4
17
+
18
+ # test_dataset:
19
+ # name: vimeo
20
+ # args:
21
+ # root_path: ../datasets/Vimeo90K
22
+ # split: val
23
+ # loader:
24
+ # batch_size: 16
25
+ # num_workers: 4
26
+ # save_imgs: False
27
+
28
+ # demo_dataset:
29
+ # name: demo
30
+ # args:
31
+ # root_path: ../data/animation
32
+ # split: animation
33
+
34
+ model:
35
+ name: upr_net_freq
36
+ args:
37
+ pyr_level: 3
38
+ nr_lvl_skipped: 0
39
+ splat_mode: average
40
+ fftshift: False
41
+
42
+
43
+ optimizer:
44
+ name: adamW
45
+ args: {lr: 1.e-6, weight_decay: 1.e-4}
46
+
47
+ lr_scheduler:
48
+ name: one_cycle_lr
49
+ args:
50
+ max_lr: 1.e-6
51
+ pct_start: 0.01
52
+ cycle_momentum: False
53
+ anneal_strategy: cos
54
+
55
+ loss:
56
+ - {
57
+ name: frequency,
58
+ args: { weight: 0.01 }
59
+ }
60
+ - {
61
+ name: bi_frequency,
62
+ args: { weight: 0.01 }
63
+ }
64
+ - {
65
+ name: multiple_flow,
66
+ args: { weight: 0.005 }
67
+ }
68
+ - {
69
+ name: charbonnier,
70
+ args: { weight: 1 }
71
+ }
72
+ - {
73
+ name: ternary,
74
+ args: { weight: 1 }
75
+ }
76
+
77
+ pretrained: ./pretrained/upr_freq002.pth
78
+ max_epoch: 10000
79
+
80
+ validate_every: 1000
81
+ save_every: 1000
82
+ vis_every: 2000
83
+
84
+ seed: 1234
85
+
86
+ dist_url: env://
cfgs/upr_freq_unimatch_exp002_20240111_extratraining1000_2_4.yaml ADDED
@@ -0,0 +1,86 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ exp_name: FET-VFI_BiFrequencyLoss
2
+
3
+ mode: train
4
+
5
+ train_dataset:
6
+ name: vimeo
7
+ args:
8
+ root_path: ../datasets/frames2_triplet
9
+ flow_root: ../datasets/frames2_unimatch_flow
10
+ tri_trainlist: tri_trainlist.txt
11
+ split: train
12
+ patch_size: 256
13
+ flow: 't0'
14
+ loader:
15
+ batch_size: 16
16
+ num_workers: 4
17
+
18
+ # test_dataset:
19
+ # name: vimeo
20
+ # args:
21
+ # root_path: ../datasets/Vimeo90K
22
+ # split: val
23
+ # loader:
24
+ # batch_size: 16
25
+ # num_workers: 4
26
+ # save_imgs: False
27
+
28
+ # demo_dataset:
29
+ # name: demo
30
+ # args:
31
+ # root_path: ../data/animation
32
+ # split: animation
33
+
34
+ model:
35
+ name: upr_net_freq
36
+ args:
37
+ pyr_level: 3
38
+ nr_lvl_skipped: 0
39
+ splat_mode: average
40
+ fftshift: False
41
+
42
+
43
+ optimizer:
44
+ name: adamW
45
+ args: {lr: 4.e-6, weight_decay: 1.e-4}
46
+
47
+ lr_scheduler:
48
+ name: one_cycle_lr
49
+ args:
50
+ max_lr: 4.e-6
51
+ pct_start: 0.01
52
+ cycle_momentum: False
53
+ anneal_strategy: cos
54
+
55
+ loss:
56
+ - {
57
+ name: frequency,
58
+ args: { weight: 0.01 }
59
+ }
60
+ - {
61
+ name: bi_frequency,
62
+ args: { weight: 0.01 }
63
+ }
64
+ - {
65
+ name: multiple_flow,
66
+ args: { weight: 0.005 }
67
+ }
68
+ - {
69
+ name: charbonnier,
70
+ args: { weight: 1 }
71
+ }
72
+ - {
73
+ name: ternary,
74
+ args: { weight: 1 }
75
+ }
76
+
77
+ pretrained: ./pretrained/upr_freq002.pth
78
+ max_epoch: 10000
79
+
80
+ validate_every: 1000
81
+ save_every: 1000
82
+ vis_every: 2000
83
+
84
+ seed: 1234
85
+
86
+ dist_url: env://
cfgs/upr_freq_unimatch_exp002_20240111_extratraining1000_3_1.yaml ADDED
@@ -0,0 +1,86 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ exp_name: FET-VFI_BiFrequencyLoss
2
+
3
+ mode: train
4
+
5
+ train_dataset:
6
+ name: vimeo
7
+ args:
8
+ root_path: ../datasets/frames3_triplet
9
+ flow_root: ../datasets/frames3_unimatch_flow
10
+ tri_trainlist: tri_trainlist.txt
11
+ split: train
12
+ patch_size: 256
13
+ flow: 't0'
14
+ loader:
15
+ batch_size: 16
16
+ num_workers: 4
17
+
18
+ # test_dataset:
19
+ # name: vimeo
20
+ # args:
21
+ # root_path: ../datasets/Vimeo90K
22
+ # split: val
23
+ # loader:
24
+ # batch_size: 16
25
+ # num_workers: 4
26
+ # save_imgs: False
27
+
28
+ # demo_dataset:
29
+ # name: demo
30
+ # args:
31
+ # root_path: ../data/animation
32
+ # split: animation
33
+
34
+ model:
35
+ name: upr_net_freq
36
+ args:
37
+ pyr_level: 3
38
+ nr_lvl_skipped: 0
39
+ splat_mode: average
40
+ fftshift: False
41
+
42
+
43
+ optimizer:
44
+ name: adamW
45
+ args: {lr: 7.5e-6, weight_decay: 1.e-4}
46
+
47
+ lr_scheduler:
48
+ name: one_cycle_lr
49
+ args:
50
+ max_lr: 7.5e-6
51
+ pct_start: 0.01
52
+ cycle_momentum: False
53
+ anneal_strategy: cos
54
+
55
+ loss:
56
+ - {
57
+ name: frequency,
58
+ args: { weight: 0.01 }
59
+ }
60
+ - {
61
+ name: bi_frequency,
62
+ args: { weight: 0.01 }
63
+ }
64
+ - {
65
+ name: multiple_flow,
66
+ args: { weight: 0.005 }
67
+ }
68
+ - {
69
+ name: charbonnier,
70
+ args: { weight: 1 }
71
+ }
72
+ - {
73
+ name: ternary,
74
+ args: { weight: 1 }
75
+ }
76
+
77
+ pretrained: ./pretrained/upr_freq002.pth
78
+ max_epoch: 1000
79
+
80
+ validate_every: 10
81
+ save_every: 10
82
+ vis_every: 20
83
+
84
+ seed: 1234
85
+
86
+ dist_url: env://
cfgs/upr_freq_unimatch_exp002_20240111_extratraining1000_3_2.yaml ADDED
@@ -0,0 +1,86 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ exp_name: FET-VFI_BiFrequencyLoss
2
+
3
+ mode: train
4
+
5
+ train_dataset:
6
+ name: vimeo
7
+ args:
8
+ root_path: ../datasets/frames3_triplet
9
+ flow_root: ../datasets/frames3_unimatch_flow
10
+ tri_trainlist: tri_trainlist.txt
11
+ split: train
12
+ patch_size: 256
13
+ flow: 't0'
14
+ loader:
15
+ batch_size: 16
16
+ num_workers: 4
17
+
18
+ # test_dataset:
19
+ # name: vimeo
20
+ # args:
21
+ # root_path: ../datasets/Vimeo90K
22
+ # split: val
23
+ # loader:
24
+ # batch_size: 16
25
+ # num_workers: 4
26
+ # save_imgs: False
27
+
28
+ # demo_dataset:
29
+ # name: demo
30
+ # args:
31
+ # root_path: ../data/animation
32
+ # split: animation
33
+
34
+ model:
35
+ name: upr_net_freq
36
+ args:
37
+ pyr_level: 3
38
+ nr_lvl_skipped: 0
39
+ splat_mode: average
40
+ fftshift: False
41
+
42
+
43
+ optimizer:
44
+ name: adamW
45
+ args: {lr: 4.e-6, weight_decay: 1.e-4}
46
+
47
+ lr_scheduler:
48
+ name: one_cycle_lr
49
+ args:
50
+ max_lr: 4.e-6
51
+ pct_start: 0.01
52
+ cycle_momentum: False
53
+ anneal_strategy: cos
54
+
55
+ loss:
56
+ - {
57
+ name: frequency,
58
+ args: { weight: 0.01 }
59
+ }
60
+ - {
61
+ name: bi_frequency,
62
+ args: { weight: 0.01 }
63
+ }
64
+ - {
65
+ name: multiple_flow,
66
+ args: { weight: 0.005 }
67
+ }
68
+ - {
69
+ name: charbonnier,
70
+ args: { weight: 1 }
71
+ }
72
+ - {
73
+ name: ternary,
74
+ args: { weight: 1 }
75
+ }
76
+
77
+ pretrained: ./pretrained/upr_freq002.pth
78
+ max_epoch: 1000
79
+
80
+ validate_every: 10
81
+ save_every: 10
82
+ vis_every: 20
83
+
84
+ seed: 1234
85
+
86
+ dist_url: env://
cfgs/upr_freq_unimatch_exp002_20240111_extratraining2.yaml ADDED
@@ -0,0 +1,86 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ exp_name: FET-VFI_BiFrequencyLoss
2
+
3
+ mode: train
4
+
5
+ train_dataset:
6
+ name: vimeo
7
+ args:
8
+ root_path: ../datasets/frames2_triplet
9
+ flow_root: ../datasets/frames2_unimatch_flow
10
+ tri_trainlist: tri_trainlist.txt
11
+ split: train
12
+ patch_size: 256
13
+ flow: 't0'
14
+ loader:
15
+ batch_size: 16
16
+ num_workers: 4
17
+
18
+ # test_dataset:
19
+ # name: vimeo
20
+ # args:
21
+ # root_path: ../datasets/Vimeo90K
22
+ # split: val
23
+ # loader:
24
+ # batch_size: 16
25
+ # num_workers: 4
26
+ # save_imgs: False
27
+
28
+ # demo_dataset:
29
+ # name: demo
30
+ # args:
31
+ # root_path: ../data/animation
32
+ # split: animation
33
+
34
+ model:
35
+ name: upr_net_freq
36
+ args:
37
+ pyr_level: 3
38
+ nr_lvl_skipped: 0
39
+ splat_mode: average
40
+ fftshift: False
41
+
42
+
43
+ optimizer:
44
+ name: adamW
45
+ args: {lr: 4.e-6, weight_decay: 1.e-4}
46
+
47
+ lr_scheduler:
48
+ name: one_cycle_lr
49
+ args:
50
+ max_lr: 4.e-6
51
+ pct_start: 0.01
52
+ cycle_momentum: False
53
+ anneal_strategy: cos
54
+
55
+ loss:
56
+ - {
57
+ name: frequency,
58
+ args: { weight: 0.01 }
59
+ }
60
+ - {
61
+ name: bi_frequency,
62
+ args: { weight: 0.01 }
63
+ }
64
+ - {
65
+ name: multiple_flow,
66
+ args: { weight: 0.005 }
67
+ }
68
+ - {
69
+ name: charbonnier,
70
+ args: { weight: 1 }
71
+ }
72
+ - {
73
+ name: ternary,
74
+ args: { weight: 1 }
75
+ }
76
+
77
+ pretrained: ./pretrained/upr_freq002.pth
78
+ max_epoch: 300
79
+
80
+ validate_every: 10
81
+ save_every: 10
82
+ vis_every: 20
83
+
84
+ seed: 1234
85
+
86
+ dist_url: env://
cfgs/upr_freq_unimatch_exp002_20240111_extratraining3.yaml ADDED
@@ -0,0 +1,86 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ exp_name: FET-VFI_BiFrequencyLoss
2
+
3
+ mode: train
4
+
5
+ train_dataset:
6
+ name: vimeo
7
+ args:
8
+ root_path: ../datasets/frames3_triplet
9
+ flow_root: ../datasets/frames3_unimatch_flow
10
+ tri_trainlist: tri_trainlist.txt
11
+ split: train
12
+ patch_size: 256
13
+ flow: 't0'
14
+ loader:
15
+ batch_size: 16
16
+ num_workers: 4
17
+
18
+ # test_dataset:
19
+ # name: vimeo
20
+ # args:
21
+ # root_path: ../datasets/Vimeo90K
22
+ # split: val
23
+ # loader:
24
+ # batch_size: 16
25
+ # num_workers: 4
26
+ # save_imgs: False
27
+
28
+ # demo_dataset:
29
+ # name: demo
30
+ # args:
31
+ # root_path: ../data/animation
32
+ # split: animation
33
+
34
+ model:
35
+ name: upr_net_freq
36
+ args:
37
+ pyr_level: 3
38
+ nr_lvl_skipped: 0
39
+ splat_mode: average
40
+ fftshift: False
41
+
42
+
43
+ optimizer:
44
+ name: adamW
45
+ args: {lr: 4.e-6, weight_decay: 1.e-4}
46
+
47
+ lr_scheduler:
48
+ name: one_cycle_lr
49
+ args:
50
+ max_lr: 4.e-6
51
+ pct_start: 0.01
52
+ cycle_momentum: False
53
+ anneal_strategy: cos
54
+
55
+ loss:
56
+ - {
57
+ name: frequency,
58
+ args: { weight: 0.01 }
59
+ }
60
+ - {
61
+ name: bi_frequency,
62
+ args: { weight: 0.01 }
63
+ }
64
+ - {
65
+ name: multiple_flow,
66
+ args: { weight: 0.005 }
67
+ }
68
+ - {
69
+ name: charbonnier,
70
+ args: { weight: 1 }
71
+ }
72
+ - {
73
+ name: ternary,
74
+ args: { weight: 1 }
75
+ }
76
+
77
+ pretrained: ./pretrained/upr_freq002.pth
78
+ max_epoch: 300
79
+
80
+ validate_every: 10
81
+ save_every: 10
82
+ vis_every: 20
83
+
84
+ seed: 1234
85
+
86
+ dist_url: env://
cfgs/upr_freq_unimatch_exp002_20240111_extratraining4.yaml ADDED
@@ -0,0 +1,86 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ exp_name: FET-VFI_BiFrequencyLoss
2
+
3
+ mode: train
4
+
5
+ train_dataset:
6
+ name: vimeo
7
+ args:
8
+ root_path: ../datasets/frames4_triplet
9
+ flow_root: ../datasets/frames4_unimatch_flow
10
+ tri_trainlist: tri_trainlist.txt
11
+ split: train
12
+ patch_size: 256
13
+ flow: 't0'
14
+ loader:
15
+ batch_size: 4
16
+ num_workers: 4
17
+
18
+ # test_dataset:
19
+ # name: vimeo
20
+ # args:
21
+ # root_path: ../datasets/Vimeo90K
22
+ # split: val
23
+ # loader:
24
+ # batch_size: 16
25
+ # num_workers: 4
26
+ # save_imgs: False
27
+
28
+ # demo_dataset:
29
+ # name: demo
30
+ # args:
31
+ # root_path: ../data/animation
32
+ # split: animation
33
+
34
+ model:
35
+ name: upr_net_freq
36
+ args:
37
+ pyr_level: 3
38
+ nr_lvl_skipped: 0
39
+ splat_mode: average
40
+ fftshift: False
41
+
42
+
43
+ optimizer:
44
+ name: adamW
45
+ args: {lr: 1.e-6, weight_decay: 1.e-4}
46
+
47
+ lr_scheduler:
48
+ name: one_cycle_lr
49
+ args:
50
+ max_lr: 1.e-6
51
+ pct_start: 0.01
52
+ cycle_momentum: False
53
+ anneal_strategy: cos
54
+
55
+ loss:
56
+ - {
57
+ name: frequency,
58
+ args: { weight: 0.01 }
59
+ }
60
+ - {
61
+ name: bi_frequency,
62
+ args: { weight: 0.01 }
63
+ }
64
+ - {
65
+ name: multiple_flow,
66
+ args: { weight: 0.005 }
67
+ }
68
+ - {
69
+ name: charbonnier,
70
+ args: { weight: 1 }
71
+ }
72
+ - {
73
+ name: ternary,
74
+ args: { weight: 1 }
75
+ }
76
+
77
+ pretrained: ./pretrained/upr_freq002.pth
78
+ max_epoch: 300
79
+
80
+ validate_every: 10
81
+ save_every: 10
82
+ vis_every: 20
83
+
84
+ seed: 1234
85
+
86
+ dist_url: env://
cfgs/upr_freq_unimatch_exp002_stopmotion.yaml ADDED
@@ -0,0 +1,86 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ exp_name: FET-VFI_BiFrequencyLoss
2
+
3
+ mode: train
4
+
5
+ train_dataset:
6
+ name: vimeo
7
+ args:
8
+ root_path: ../datasets/256_new
9
+ flow_root: ../datasets/256_new_unimatch_flow
10
+ tri_trainlist: tri_trainlist_011.txt
11
+ split: train
12
+ patch_size: 256
13
+ flow: 't0'
14
+ loader:
15
+ batch_size: 32
16
+ num_workers: 8
17
+
18
+ test_dataset:
19
+ name: vimeo
20
+ args:
21
+ root_path: ../datasets/Vimeo90K
22
+ split: val
23
+ loader:
24
+ batch_size: 16
25
+ num_workers: 4
26
+ save_imgs: False
27
+
28
+ demo_dataset:
29
+ name: demo
30
+ args:
31
+ root_path: ../data/animation
32
+ split: animation
33
+
34
+ model:
35
+ name: upr_net_freq
36
+ args:
37
+ pyr_level: 3
38
+ nr_lvl_skipped: 0
39
+ splat_mode: average
40
+ fftshift: False
41
+
42
+
43
+ optimizer:
44
+ name: adamW
45
+ args: {lr: 4.e-6, weight_decay: 1.e-4}
46
+
47
+ lr_scheduler:
48
+ name: one_cycle_lr
49
+ args:
50
+ max_lr: 4.e-6
51
+ pct_start: 0.01
52
+ cycle_momentum: False
53
+ anneal_strategy: cos
54
+
55
+ loss:
56
+ - {
57
+ name: frequency,
58
+ args: { weight: 0.01 }
59
+ }
60
+ - {
61
+ name: bi_frequency,
62
+ args: { weight: 0.01 }
63
+ }
64
+ - {
65
+ name: multiple_flow,
66
+ args: { weight: 0.005 }
67
+ }
68
+ - {
69
+ name: charbonnier,
70
+ args: { weight: 1 }
71
+ }
72
+ - {
73
+ name: ternary,
74
+ args: { weight: 1 }
75
+ }
76
+
77
+ pretrained: ./pretrained/upr_freq002.pth
78
+ max_epoch: 300
79
+
80
+ validate_every: 10
81
+ save_every: 10
82
+ vis_every: 20
83
+
84
+ seed: 1234
85
+
86
+ dist_url: env://
cfgs/upr_vimeo_exp45.yaml ADDED
@@ -0,0 +1,76 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ exp_name: upsample_guided_filter_v2
2
+
3
+ mode: train
4
+
5
+ train_dataset:
6
+ name: vimeo
7
+ args:
8
+ root_path: ../data/vimeo_triplet
9
+ split: train
10
+ patch_size: 256
11
+ flow: 't0'
12
+ seg: False
13
+ loader:
14
+ batch_size: 32
15
+ num_workers: 8
16
+
17
+ test_dataset:
18
+ name: vimeo
19
+ args:
20
+ root_path: ../data/vimeo_triplet
21
+ split: val
22
+ loader:
23
+ batch_size: 16
24
+ num_workers: 8
25
+ save_imgs: False
26
+
27
+ demo_dataset:
28
+ name: demo
29
+ args:
30
+ root_path: ../data/animation
31
+ split: animation
32
+
33
+ model:
34
+ name: upr_net_mod2
35
+ args:
36
+ pyr_level: 3
37
+ nr_lvl_skipped: 0
38
+ splat_mode: average
39
+
40
+
41
+ optimizer:
42
+ name: adamW
43
+ args: {lr: 1.5e-4, weight_decay: 1.e-4}
44
+
45
+ lr_scheduler:
46
+ name: one_cycle_lr
47
+ args:
48
+ max_lr: 1.5e-4
49
+ pct_start: 0.01
50
+ cycle_momentum: False
51
+ anneal_strategy: cos
52
+
53
+ loss:
54
+ - {
55
+ name: multiple_flow,
56
+ args: { weight: 0.005 }
57
+ }
58
+ - {
59
+ name: charbonnier,
60
+ args: { weight: 1 }
61
+ }
62
+ - {
63
+ name: ternary,
64
+ args: { weight: 1 }
65
+ }
66
+
67
+
68
+ max_epoch: 540
69
+
70
+ validate_every: 10
71
+ save_every: 10
72
+ vis_every: 20
73
+
74
+ seed: 1234
75
+
76
+ dist_url: env://
check_images.py ADDED
@@ -0,0 +1,39 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ import cv2
3
+
4
+ def process_directory(directory, output_file):
5
+ for root, dirs, files in os.walk(directory):
6
+ if not dirs:
7
+ # ๋” ์ด์ƒ ํ•˜์œ„ ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ
8
+ print("Directory:", root)
9
+
10
+ # ์ด๋ฏธ์ง€ ํŒŒ์ผ ๊ฒฝ๋กœ ๊ฒ€์‚ฌ
11
+ image_found = False
12
+ for filename in files:
13
+ if filename in ["im1.png","im1.jpg"]:
14
+ image_found = True
15
+ image_path = os.path.join(root, filename)
16
+
17
+ # ์ด๋ฏธ์ง€ ์ฝ๊ธฐ
18
+ image = cv2.imread(image_path)[:, :, ::-1]
19
+ if image is not None:
20
+ print("Image:", image_path)
21
+
22
+ # ์ด๋ฏธ์ง€๋ฅผ ์ฐพ์ง€ ๋ชปํ•œ ๊ฒฝ์šฐ ๊ฒฝ๋กœ๋ฅผ ํŒŒ์ผ์— ์“ฐ๊ธฐ
23
+ if not image_found:
24
+ with open(output_file, "a") as f:
25
+ f.write(root + "\n")
26
+
27
+ if __name__ == "__main__":
28
+ # ๋””๋ ‰ํ† ๋ฆฌ ๊ฒฝ๋กœ ์ง€์ •
29
+ start_directory = "../../ins4/Triplet_250p_new/sequences"
30
+
31
+ # ๊ฒฐ๊ณผ๋ฅผ ์ €์žฅํ•  ํ…์ŠคํŠธ ํŒŒ์ผ ๊ฒฝ๋กœ ์ง€์ •
32
+ output_file = "missing_images.txt"
33
+
34
+ # ํ…์ŠคํŠธ ํŒŒ์ผ ์ดˆ๊ธฐํ™”
35
+ open(output_file, "w").close()
36
+
37
+ # ์‹œ์ž‘ ๋””๋ ‰ํ† ๋ฆฌ์—์„œ ์ˆœํšŒ ์‹œ์ž‘
38
+ process_directory(start_directory, output_file)
39
+
datasets/__init__.py ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ from .datasets import *
2
+ from .vimeo import *
3
+ from .snu_film import *
4
+ from .xiph import *
5
+ from .ucf101 import *
datasets/__pycache__/__init__.cpython-310.pyc ADDED
Binary file (241 Bytes). View file
 
datasets/__pycache__/__init__.cpython-38.pyc ADDED
Binary file (238 Bytes). View file
 
datasets/__pycache__/data_utils.cpython-310.pyc ADDED
Binary file (4.06 kB). View file
 
datasets/__pycache__/data_utils.cpython-38.pyc ADDED
Binary file (4.09 kB). View file
 
datasets/__pycache__/datasets.cpython-310.pyc ADDED
Binary file (691 Bytes). View file
 
datasets/__pycache__/datasets.cpython-38.pyc ADDED
Binary file (677 Bytes). View file
 
datasets/__pycache__/snu_film.cpython-310.pyc ADDED
Binary file (3.26 kB). View file
 
datasets/__pycache__/snu_film.cpython-38.pyc ADDED
Binary file (3.18 kB). View file
 
datasets/__pycache__/ucf101.cpython-310.pyc ADDED
Binary file (1.84 kB). View file
 
datasets/__pycache__/ucf101.cpython-38.pyc ADDED
Binary file (1.85 kB). View file
 
datasets/__pycache__/vimeo.cpython-310.pyc ADDED
Binary file (5 kB). View file
 
datasets/__pycache__/vimeo.cpython-38.pyc ADDED
Binary file (5.02 kB). View file