DGDenoise

These CUDA filters are packaged into DGDecodeNV, which is part of DGDecNV.
DAE avatar
Guest

Re: About DGDenoise

Post by Guest »

Volta?
Heck, I was talking about the triple slot Titan X
5760 cuda cores vs 2560 for a 1080
User avatar
admin
Posts: 4551
Joined: Thu Sep 09, 2010 3:08 pm

Re: About DGDenoise

Post by admin »

LOLZ :lol:
DAE avatar
Guest

Re: About DGDenoise

Post by Guest »

that should be Titan Z, my boo boo
User avatar
admin
Posts: 4551
Joined: Thu Sep 09, 2010 3:08 pm

Re: About DGDenoise

Post by admin »

I thought it was Titan X (compute 6.1) or GTX Titan Z (compute 3.5).
DAE avatar
Sharc
Posts: 233
Joined: Thu Sep 23, 2010 1:53 pm

Re: About DGDenoise

Post by Sharc »

The speed of DGDenoise makes it possible to use the NLM algo even on my relatively slow system. That's quite something!
Some observations based on VHS tape sources::
For strength >0.05 the denoiser tends to smoothen low contrast areas, e.g. slightly darker grey areas on a brighter gray background get gradually washed out (a kind of detail loss, the picture tends to looks flat). This is however not specific to DGDenoise, it's similar with KNLMeansCL. (I am using interleave(original,filtered) rather than stackhorizontal for comparison.) As I mentioned before, I found the combination of DGDenoise with x264 --nr most efficient and effective.
Temporal smoothing: On some sources I have to apply temporal smoothing. I do this currently by adding temporalsoften(4,4,8,10,mode=2). Just curious whether the proposed temporal denoising in DGDenoise would do similar in one step?
User avatar
admin
Posts: 4551
Joined: Thu Sep 09, 2010 3:08 pm

Re: About DGDenoise

Post by admin »

Hi Sharc. Thank you for your feedback. Of course, as you say, all denoisers are going to struggle to reliably distinguish noise from real detail. That's something that only humans are currently very good at. But the NLM algorithm does a fair job of it.

I haven't decided the exact temporal denoising to be implemented [thank you for pointing out TemporalSoften()], but it will surely be done with additional parameters and not by adding a new filter. Regarding algorithms developers always try to do better than the existing ways in quality or performance, but one can't always succeed in that. We'll see.
DAE avatar
Guest

Re: About DGDenoise

Post by Guest »

Re: Speed of DGDenoise
One source --- two encodes
DGDenoise(strength=0) 56.88 fps
DGDenoise(strength=0.15) 67.30 fps
User avatar
admin
Posts: 4551
Joined: Thu Sep 09, 2010 3:08 pm

Re: About DGDenoise

Post by admin »

Don't invoke DGDenoise(strength=0). It is not a no-op like DGSource(strength=0.0) is. Maybe it should be, or maybe we should punish people that add filters that do nothing. :scratch:
DAE avatar
Guest

Re: About DGDenoise

Post by Guest »

Sorry for the confusion
Didn't invoke DGDenoise(strength=0.0)
Was just trying to illustrate speed with no DGDenoise in the mix
maybe we should punish people that add filters that do nothing. :scratch:
Oh Jeez, Am I in for a beating?
User avatar
admin
Posts: 4551
Joined: Thu Sep 09, 2010 3:08 pm

Re: About DGDenoise

Post by admin »

gonca wrote:Was just trying to illustrate speed with no DGDenoise in the mix
Just leave it out next time. ;) Put that little # thing at the front of the script line, to comment it out.

Anyway, it looks like your encode process is the bottleneck, because you were reporting 288 fps for DGDenoise() alone.

As always, I appreciate your feedback, especially with data. High numbers...but only for DG tools. OK? Only for DG. Carry on. 8-)
User avatar
admin
Posts: 4551
Joined: Thu Sep 09, 2010 3:08 pm

Re: About DGDenoise

Post by admin »

I can't believe no-one went :wow: :wow: :wow: over my CUDASynth idea. Just ahead of the times, what can I do?
DAE avatar
Guest

Re: About DGDenoise

Post by Guest »

CUDASynth
That would be awesome!
User avatar
admin
Posts: 4551
Joined: Thu Sep 09, 2010 3:08 pm

Re: About DGDenoise

Post by admin »

How much memory on your GPU, gonca? I'm going to need a power tester for CUDASynth.
DAE avatar
Guest

Re: About DGDenoise

Post by Guest »

8 GB of GDDR5
User avatar
admin
Posts: 4551
Joined: Thu Sep 09, 2010 3:08 pm

Re: About DGDenoise

Post by admin »

Sweet, how many CUDA cores?

I tried to play with core clock but it was too unstable and didn't give much improvement.
DAE avatar
Guest

Re: About DGDenoise

Post by Guest »

1920 cuda cores

Cuda is scalable through SLI is it not?
User avatar
admin
Posts: 4551
Joined: Thu Sep 09, 2010 3:08 pm

Re: About DGDenoise

Post by admin »

Perhaps, but we don't need SLI to use multiple GPUs. We would expect CUDASynth to handle it transparently.
DAE avatar
Guest 2
Posts: 903
Joined: Mon Sep 20, 2010 2:18 pm

Re: About DGDenoise

Post by Guest 2 »

admin wrote:I haven't decided the exact temporal denoising to be implemented [thank you for pointing out TemporalSoften()], but it will surely be done with additional parameters and not by adding a new filter.
As first iteration, get a look to KNLMeansCL source and just kick in the temporal part. I am curious to see speed.

And, please, give us more parameters to play with frame span, noise window, etc :bow:
User avatar
admin
Posts: 4551
Joined: Thu Sep 09, 2010 3:08 pm

Re: About DGDenoise

Post by admin »

Greetings Guest 2.

Good advice, thanks. I'll have a look. I don't know if it uses a full 3D NLM or if it just hacks in some kind of temporal filter. I'm close to deciding not to bother anyway, unless someone shows me a clip that really needs the temporal component.

Exposing the search size and patch size by making them parameters is not so easy when the loops are unrolled at compile time (loop unrolling gives a massive speed-up). I could provide a set of selectable kernels with different fixed parameters (call them presets). What fixed parameter sets would be useful for you?

I've been looking for ways to make NLM separable, as that could give a substantial speed-up. One paper I saw does it by recasting NLM as a convolution, but I'm still grokking the details.

BTW, I added licensing checks to DGDecodeNV.dll in order to protect included standalone filters that don't depend on a DGI file. I want to reward only legit and loyal DG users (and not people at other forums that abuse me with full support of the administrators; at my core I am a decent, generous guy, but I hit back hard when attacked). Anyway, gonca kept asking me to add licensing. :D
DAE avatar
Guest

Re: About DGDenoise

Post by Guest »

Anyway, gonca kept asking me to add licensing. :D
Just thought you should be rewarded for your hard work, or at least some of your server costs covered.
Besides that, good beer and triple malt scotch aint cheap!! :(
Your loyalty and devotion to legitimate DG tools users is appreciated. :D
User avatar
admin
Posts: 4551
Joined: Thu Sep 09, 2010 3:08 pm

Re: About DGDenoise

Post by admin »

Thanks! Getting ready to optimize the inner loop...

Image
DAE avatar
Guest

Re: About DGDenoise

Post by Guest »

Moonshine? :wow:
User avatar
admin
Posts: 4551
Joined: Thu Sep 09, 2010 3:08 pm

Re: About DGDenoise

Post by admin »

Heck no, only the best for DG.
User avatar
admin
Posts: 4551
Joined: Thu Sep 09, 2010 3:08 pm

Re: About DGDenoise

Post by admin »

I slipstreamed 2053 to add a searchw parameter for the denoising. You can set it to 5, 7, or 9. The default is 5, corresponding to a=2 for KNLMeansCL.
DAE avatar
Guest 2
Posts: 903
Joined: Mon Sep 20, 2010 2:18 pm

Re: About DGDenoise

Post by Guest 2 »

admin wrote:What fixed parameter sets would be useful for you?
Fixed is of little use, as every movie has different noise (and film grain too).

Anyway, time is on your side. Thanks for all your efforts. :bow:
Post Reply