I was benchmarking some glsl shaders vs onnx models versions of the same upscalers in vapoursynth, and I noticed the inference based upscaling was way faster despite being the same model with equal weights and parameters, ArtCNN C4F32. I wonder if there's any interest in giving svp users options to add to the VS filterchain before the output is sent to the player.

RAGEdemon wrote:

This is probably a stupid question however, with AI software, I have noticed that on a 4090, RT is faster than CUDA but not by much.

A 4090 has 128 RT cores and >16000 coda cores.

Is it true that with SVP, when RT cores are being used, CUDA cores are not really being used, and vice versa?

In that case, half the power of the GPU is wasted.

Would it be possible to implement both TensorRT AND CUDA simultaneously to double the performance?

RT cores aren't actually the part doing the AI stuff, it's the Tensor Cores. Also look at the power consumption of your gpu while using RIFE, and you'll see there isn't as much headroom as you're imagining. I do think MIGraphX support should be looked into. Give Radeon users more options.

Silly me, you're right. It was just setting the framerate values incorrectly.

Even though I've set up other profiles to load, some for "is network stream: yes", others for "is network stream:no". Neither is an auto-load option for yt-dlp streams now. It was working previously. I'm not sure when it stopped functioning actually. Profiles load just fine when selected manually, and the profile selection is working for local files still. svp, mpv (svp included build), and yt-dlp are all up to date.
https://i.imgur.com/JAGZSsL.jpg

dawkinscm wrote:
flowreen91 wrote:
oriento wrote:

4.17 - 2024.05.24 | Google Drive | 百度网盘 : Add gram loss from FILM, need to fully assess the impact.

Gram loss is a type of loss function used in style transfer tasks to capture and preserve the texture and style of an image.
In the context of neural networks and machine learning, FILM stands for Frame Interpolation for Large Motion. It refers to a specific model or algorithm designed to perform frame interpolation, which is the process of generating intermediate frames between existing ones to create smooth transitions, typically in video sequences.
So i think it improves this type of scenarios where the character is hidden temporarily behind an object:
https://github.com/hzwer/Practical-RIFE/pull/23

I have scenes to test this and if v4.17 was an improvement it wasn't very noticeable. But they are still concentrating on Anime so maybe it works better for that.

It might help with overlaid text like in OPs and EDs.

Chainik wrote:

> Huge improvement over ncnn for Radeon and Arc.

any benchmarks?

Funny, I can't actually find any ncnn vs dml benchmarks for rife. I'm inferring from the relative performance compared to cuda and trt.
https://github.com/n00mkrad/flowframes/ … chmarks.md
Benchmark 2 https://github.com/AmusementClub/vs-mlr … /v14.test4

I might just do some benchmarks myself in VSEditor.

It's been almost a year since DML via ort support was added to vsmlrt. It would be great if SVP added support for it as an engine option. Huge improvement over ncnn for Radeon and Arc.

Reading through the thread it looks like the current consensus for worthwhile models from increasing quality/decreasing performance are 4.4v2, 4.6v2, 4.9v2/4.12_litev2/4.13_litev2, and placebo tier would be something like 4.13_ensemblev2 I guess? 4.12/13 are apparently better for animation, but otherwise slower than 4.9.

9

(0 replies, posted in Using SVP)

New optical flow estimation that can be utilized with RIFE. Someone mentioned using it with trt through vsmlrt piping, so I thought it might be worth looking into.
https://github.com/AmusementClub/vs-mlrt/issues/13

Current version
https://github.com/98mxr/GMFSS_union

Pytorch model
https://github.com/haofeixu/gmflow

Original paper
https://arxiv.org/abs/2111.13680

Chainik wrote:

> Trt inference model has to be built or cached for every new resolution

Not true, unless you enable the "perf. boost" profile option.

Problem is if you disable it then the generalized models which are too large for my vram size are generated instead.

Chainik wrote:

> Python exception: [WinError 740] The requested operation requires elevation
> Issue resolved by running mpc-hc in admin oddly.

I can only think your user doesn't have write permissions for the temp dir for some reason

> Trt inference model has to be built or cached for every new resolution

Not true, unless you enable the "perf. boost" profile option.

Oh ok. The tooltip says 5%, but is this separate from the parameters mentioned in vsmlrt?

22:33:32.546 [i]: AVSF: found new player instance
22:33:32.572 [i]: AVSF: filters in use: LAV Splitter Source -> LAV Video Decoder -> * -> madVR
22:33:32.573 [i]: AVSF: new video in mpc-hc64.exe (64-bit) [MPC-HC 2.0.0.0] on screen 0
22:33:32.614 [i]: Media: video 1920x1440 [PAR 1.000] at 23.976 fps
22:33:32.614 [i]: Media: codec type is AV1, YUV/4:2:0/10 bits
22:33:32.615 [i]: Playback: starting up...
22:33:32.619 [i]: Playback [73c0e3c8]: Frame server (64-bit) C:\Users\Sahil\AppData\Local\Programs\VapourSynth\core\vapoursynth.dll
22:33:32.620 [i]: Playback [73c0e3c8]: resulting video frame 1920x1440
22:33:32.621 [i]: Playback [73c0e3c8]: 4 acceptible profiles, best is 'RIFE AI engine' [5000]
22:33:32.623 [i]: Playback [73c0e3c8]: enabled while video is playing
22:33:32.626 [i]: Playback [73c0e3c8]: playing at 59.94 [23.976 *5/2] /10 bit
22:33:32.939 [E]: Playback [73c0e3c8]: VS - Python exception: [WinError 740] The requested operation requires elevation
22:33:32.939 [E]: Playback [73c0e3c8]: VS - Traceback (most recent call last):
22:33:32.939 [E]: Playback [73c0e3c8]: VS - File \src\cython\vapoursynth.pyx\, line 2866, in vapoursynth._vpy_evaluate
22:33:32.939 [E]: Playback [73c0e3c8]: VS - File \src\cython\vapoursynth.pyx\, line 2867, in vapoursynth._vpy_evaluate
22:33:32.939 [E]: Playback [73c0e3c8]: VS - File \C:\Users\Sahil\AppData\Roaming\SVP4\scripts\73c0e3c8.py\, line 77, in <module>
22:33:32.940 [E]: Playback [73c0e3c8]: VS - smooth = interpolate(clip)
22:33:32.940 [E]: Playback [73c0e3c8]: VS - File \C:\Users\Sahil\AppData\Roaming\SVP4\scripts\73c0e3c8.py\, line 56, in interpolate
22:33:32.940 [E]: Playback [73c0e3c8]: VS - smooth = RIFE(input_m,multi=rife_num,model=rife_mnum,backend=trt_backend)
22:33:32.940 [E]: Playback [73c0e3c8]: VS - File \C:\Program Files (x86)\SVP 4\rife\vsmlrt.py\, line 936, in RIFE
22:33:32.940 [E]: Playback [73c0e3c8]: VS - output0 = RIFEMerge(
22:33:32.940 [E]: Playback [73c0e3c8]: VS - File \C:\Program Files (x86)\SVP 4\rife\vsmlrt.py\, line 821, in RIFEMerge
22:33:32.940 [E]: Playback [73c0e3c8]: VS - return inference_with_fallback(
22:33:32.940 [E]: Playback [73c0e3c8]: VS - File \C:\Program Files (x86)\SVP 4\rife\vsmlrt.py\, line 1420, in inference_with_fallback
22:33:32.940 [E]: Playback [73c0e3c8]: VS - raise e
22:33:32.940 [E]: Playback [73c0e3c8]: VS - File \C:\Program Files (x86)\SVP 4\rife\vsmlrt.py\, line 1399, in inference_with_fallback
22:33:32.940 [E]: Playback [73c0e3c8]: VS - return _inference(
22:33:32.940 [E]: Playback [73c0e3c8]: VS - File \C:\Program Files (x86)\SVP 4\rife\vsmlrt.py\, line 1339, in _inference
22:33:32.940 [E]: Playback [73c0e3c8]: VS - engine_path = trtexec(
22:33:32.940 [E]: Playback [73c0e3c8]: VS - File \C:\Program Files (x86)\SVP 4\rife\vsmlrt.py\, line 1172, in trtexec
22:33:32.940 [E]: Playback [73c0e3c8]: VS - completed_process = subprocess.run(args, env=env, check=False, stdout=sys.stderr)
22:33:32.940 [E]: Playback [73c0e3c8]: VS - File \C:\Users\Sahil\AppData\Local\Programs\Python\Python38\Lib\subprocess.py\, line 493, in run
22:33:32.940 [E]: Playback [73c0e3c8]: VS - with Popen(*popenargs, **kwargs) as process:
22:33:32.940 [E]: Playback [73c0e3c8]: VS - File \C:\Users\Sahil\AppData\Local\Programs\Python\Python38\Lib\subprocess.py\, line 858, in __init__
22:33:32.940 [E]: Playback [73c0e3c8]: VS - self._execute_child(args, executable, preexec_fn, close_fds,
22:33:32.940 [E]: Playback [73c0e3c8]: VS - File \C:\Users\Sahil\AppData\Local\Programs\Python\Python38\Lib\subprocess.py\, line 1311, in _execute_child
22:33:32.940 [E]: Playback [73c0e3c8]: VS - hp, ht, pid, tid = _winapi.CreateProcess(executable, args,
22:33:32.940 [E]: Playback [73c0e3c8]: VS - OSError: [WinError 740] The requested operation requires elevation

Issue resolved by running mpc-hc in admin oddly.

Another issue. Trt inference model has to be built or cached for every new resolution. This caused me a lot of confusion for real time playback as it would hang and there's no indication how long that will take to finish building. Once that's done realtime playback works. It might help new users if the TensorRT version came with a benchmark tool that contained some reference footage at different resolutions and gave a notification when all the refence models for common resolutions were saved. Also going over the vsmlrt documentation, it's extremely important to set fp16, num_parameters, and previously workspace before the inference model is made. How is svp handling fp16 vs fp32 and does the gpu thread setting refer to the num_stream parameter in vsmlrt?

Heard about this a couple weeks ago. In my experience neural network trained algorithms tend to be slow and very marginal improvements in quality, but maybe someone here would know better.

https://grisk.itch.io/dain-app
https://github.com/baowenbo/DAIN#dain-d … erpolation
https://github.com/baowenbo/MEMC-Net

14

(16 replies, posted in Using SVP)

According to this, HDR is treated like a regular color format.
https://forum.doom9.org/showthread.php?t=175205
http://avisynth.nl/index.php/Avisynthplus_color_formats
https://github.com/FFMS/ffms2/blob/mast … visynth.md

As I'm too stubborn to move on from DirectShow based players and all their legacy support, I'm looking for an alternative to ffdshow raw video filter that supports 10-bit video output. My understanding was that this was the final missing link to getting 10-bit SVP support in MPC-HC. When I have some free time, I'll play around with it myself, but maybe someone else is also curious.

https://forum.doom9.org/showthread.php?t=127037
https://github.com/FFMS/ffms2
http://avisynth.nl/index.php/High_bit-d … o_AviSynth
http://www.vapoursynth.com/doc/pluginlist.html
https://forum.doom9.org/showthread.php?t=174469

Worth looking into.

Sad

Good to know, maybe this fork has worked it out?
http://ffdshow-tryout.sourceforge.net/changelog.php

I don't think that's right. Ffdshow raw video filter shows options for 10-bit output, and according to older posts it was avisynth that limited svp to 8-bit in the past but both vapoursynth and avisynth+ support high bitdepth.

http://www.svp-team.com/forum/viewtopic.php?id=632

I'll play around with an interframe2 script sometime to see if it works in theory.

I was just wondering what are the current draw-backs of continuing to use these older video players now? I've been looking into a new monitor in the future so I could enjoy 10-bit content, but I didn't want to switch to mpv just yet. I understand that Avisynth was limited to 8-bit but since the switch to Avisynth+ shouldn't that have been resolved?
http://avisynth.nl/index.php/Avisynthplus_color_formats

21

(45 replies, posted in Using SVP)

dejavecue wrote:

I don't think you will see much difference. I am running a Ryzen 7 1700 @3.8 Ghz with 16GiB of RAM @ 2933 Mhz and with SVP4 pro (mpv) version, CPU usage never goes above 10% even. SVP seems to be mostly GPU intensive.

You're running a fairly high end CPU so that's understandable. In my experience ram frequency is the biggest bottleneck once you have a more than 4 threads.  I bet if you go to 2133 MHz on your ram you'll start dropping frames.

Taudris wrote:

I've been utterly unable to get my Ryzen 1700 and RX 480 to play 4k files with interpolation. 1080p works fine with interpolation enabled and maxed out. 4k plays fine without interpolation with almost no CPU usage. 4k also plays fine if I leave SVP enabled and turn off interpolation in the SVP app, again with almost no CPU usage.

I haven't done anything 4K but that doesn't seem right at all. SVP scales pretty linearly so 4K should only take 4x the processing power. What's your target framerate and what's your cpu usage on EVR with 1080p videos.

22

(45 replies, posted in Using SVP)

Seems like everyone's suspicions that Ryzen's core count and love for high frequency memory would mean it performs well here. What I'm really wondering is if Threadripper with its 4 memory channels will do even better. Would love to see a comparison between a 1700 and 1900X.

23

(8 replies, posted in Using SVP)

Can't imagine why you don't like watercooling but just make sure your cooler is rated for the CPUs TDP. If you're getting a new PC, getting a new Ryzen CPU makes sense for a few reasons. Still 1700 is probably overkill, and you'd have no trouble with an R5 like the 1600.

https://imouto.my/tutorials/madvr/
https://wiki.mikejung.biz/MadVR#madVR_Overview
http://www.svp-team.com/forum/viewtopic.php?id=2317
https://forum.doom9.org/showthread.php?t=171787

It's a little outdated but all still relevant. I switched to NGU Anti-Aliasing from NNEDI3 because it has better render times and is tuned for animation. I would also recommend getting rid of profile switching based on filenames/formats because it makes no sense, just go by resolution. Which MadVR settings you end up using depends entirely on the power of your GPU. Since it will need to render each extra frame from SVP, the GPU gets pushed considerably more. Still the biggest limiting factor in my experience has been ram speed. Any ram OC dramatically improves SVP performance provided your CPU meets the minimum requirments.

25

(11 replies, posted in Using SVP)

Your choice of upgrades makes no sense to me. To use a G4560 you had to replace the motherboard and ram. You could get a Haswell quadcore for way less off ebay and keep all the other components. While the GT 1030 is a card oriented to HTPCs, your GTX 960 should perform significantly better.