Skip to content

Commit d964f6f

Browse files
committed
implement gpu temporal tta for rife v4, expose userspace option
1 parent 5ca8c77 commit d964f6f

File tree

6 files changed

+492
-70
lines changed

6 files changed

+492
-70
lines changed

README.md

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,8 @@ Usage: rife-ncnn-vulkan -0 infile -1 infile1 -o outfile [options]...
8282
-m model-path rife model path (default=rife-v2.3)
8383
-g gpu-id gpu device to use (-1=cpu, default=auto) can be 0,1,2 for multi-gpu
8484
-j load:proc:save thread count for load/proc/save (default=1:2:2) can be 1:2,2,2:2 for multi-gpu
85-
-x enable tta mode
85+
-x enable spatial tta mode
86+
-z enable temporal tta mode
8687
-u enable UHD mode
8788
-f pattern-format output image filename pattern format (%08d.jpg/png/webp, default=ext/%08d.png)
8889
```
@@ -132,10 +133,6 @@ cmake ../src
132133
cmake --build . -j 4
133134
```
134135

135-
### TODO
136-
137-
* test-time temporal augmentation aka TTA-t
138-
139136
### Model
140137

141138
| model | upstream version |

src/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -248,6 +248,7 @@ rife_add_shader(rife_v2_flow_tta_avg.comp)
248248
rife_add_shader(rife_v4_flow_tta_avg.comp)
249249
rife_add_shader(rife_flow_tta_temporal_avg.comp)
250250
rife_add_shader(rife_v2_flow_tta_temporal_avg.comp)
251+
rife_add_shader(rife_v4_flow_tta_temporal_avg.comp)
251252
rife_add_shader(rife_out_tta_temporal_avg.comp)
252253
rife_add_shader(rife_v4_timestep.comp)
253254
rife_add_shader(rife_v4_timestep_tta.comp)

src/main.cpp

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,8 @@ static void print_usage()
114114
fprintf(stderr, " -m model-path rife model path (default=rife-v2.3)\n");
115115
fprintf(stderr, " -g gpu-id gpu device to use (-1=cpu, default=auto) can be 0,1,2 for multi-gpu\n");
116116
fprintf(stderr, " -j load:proc:save thread count for load/proc/save (default=1:2:2) can be 1:2,2,2:2 for multi-gpu\n");
117-
fprintf(stdout, " -x enable tta mode\n");
117+
fprintf(stdout, " -x enable spatial tta mode\n");
118+
fprintf(stdout, " -z enable temporal tta mode\n");
118119
fprintf(stdout, " -u enable UHD mode\n");
119120
fprintf(stderr, " -f pattern-format output image filename pattern format (%%08d.jpg/png/webp, default=ext/%%08d.png)\n");
120121
}
@@ -454,13 +455,14 @@ int main(int argc, char** argv)
454455
int jobs_save = 2;
455456
int verbose = 0;
456457
int tta_mode = 0;
458+
int tta_temporal_mode = 0;
457459
int uhd_mode = 0;
458460
path_t pattern_format = PATHSTR("%08d.png");
459461

460462
#if _WIN32
461463
setlocale(LC_ALL, "");
462464
wchar_t opt;
463-
while ((opt = getopt(argc, argv, L"0:1:i:o:n:s:m:g:j:f:vxuh")) != (wchar_t)-1)
465+
while ((opt = getopt(argc, argv, L"0:1:i:o:n:s:m:g:j:f:vxzuh")) != (wchar_t)-1)
464466
{
465467
switch (opt)
466468
{
@@ -501,6 +503,9 @@ int main(int argc, char** argv)
501503
case L'x':
502504
tta_mode = 1;
503505
break;
506+
case L'z':
507+
tta_temporal_mode = 1;
508+
break;
504509
case L'u':
505510
uhd_mode = 1;
506511
break;
@@ -512,7 +517,7 @@ int main(int argc, char** argv)
512517
}
513518
#else // _WIN32
514519
int opt;
515-
while ((opt = getopt(argc, argv, "0:1:i:o:n:s:m:g:j:f:vxuh")) != -1)
520+
while ((opt = getopt(argc, argv, "0:1:i:o:n:s:m:g:j:f:vxzuh")) != -1)
516521
{
517522
switch (opt)
518523
{
@@ -553,6 +558,9 @@ int main(int argc, char** argv)
553558
case 'x':
554559
tta_mode = 1;
555560
break;
561+
case 'z':
562+
tta_temporal_mode = 1;
563+
break;
556564
case 'u':
557565
uhd_mode = 1;
558566
break;
@@ -814,7 +822,7 @@ int main(int argc, char** argv)
814822
{
815823
int num_threads = gpuid[i] == -1 ? jobs_proc[i] : 1;
816824

817-
rife[i] = new RIFE(gpuid[i], tta_mode, uhd_mode, num_threads, rife_v2, rife_v4);
825+
rife[i] = new RIFE(gpuid[i], tta_mode, tta_temporal_mode, uhd_mode, num_threads, rife_v2, rife_v4);
818826

819827
rife[i]->load(modeldir);
820828
}

0 commit comments

Comments
 (0)