Testing Top Denoisers

Started by Kadri, February 08, 2019, 09:44:50 PM

Previous topic - Next topic

Kadri


https://greyscalegorilla.com/tutorials/denoiser-render-tests-arnold-redshift/

Some nice comparisons there.

I tried NVidia Optix denoiser (it works only on NVidia cards) tonight:
https://developer.nvidia.com/optix

You can download it from here (there are some instructions too):
https://github.com/DeclanRussell/NvidiaAIDenoiser

But the link there for the Windows build was what i used:
https://declanrussell.com/portfolio/nvidia-ai-denoiser/

It is a command line tool but very easy to use. Look at the posts below in the last link.
There is a basic step by step instruction post.
I had a problem that was because of an old driver so check it first and use 418.xx.

In Terragen images i saw very little difference. In my tests at least...
But on some Lightwave images it made quite a difference ( tried it only on stills ).

I tried Neat image denoiser in the past and it was really good.
Looks like it is still good in videos too ( https://www.neatvideo.com/ ).

digitalguru

That's very interesting, I haven't used the Arnold Noice denoiser before, but am about to test it out on a current project. I wonder if it can be used on a Terragen render if it only needs Z, normal and depth - if I remember correctly I think it needs those AOVS in a multichannel exr for it to work.

The Cornell box is probably a worst-case scenario as if you use such a wide area light to illuminate, it is going to cause a lot of low-frequency artifacts that a denoiser might struggle with. Maybe those renders could get a bit closer in terms of sampling and leave the denoise for a final polish.

On a recent project I just finished I got into the habit of giving compositors raw and denoised versions of the same render and they could mix as they saw fit.

I do have Neat Video and will give that a go, the only disadvantage is that you have to give it a smooth patch of noise to work on that is not always present in a 3d render.

Kadri

Quote from: digitalguru on February 09, 2019, 09:27:04 AM
...
I do have Neat Video and will give that a go, the only disadvantage is that you have to give it a smooth patch of noise to work on that is not always present in a 3d render.

Like shooting a video especially for that purpose you could easily make such a render for that purpose too at least.

From the few tests i made and read some of the posts it looks like these denoisers (except Neat Video maybe) need some specific kind of noise to work better.

Not sure but for Terragen that might be noise like in the atmosphere and around light sources.
Ground noise looks different to me. Just guessing of course.


digitalguru

QuoteLike shooting a video especially for that purpose you could easily make such a render for that purpose too at least.

Haven't gone into this too deeply at all and will have to have a play with it, but did have a conversation a while ago about rendering a "patch" with a 3d render for Neat Video to base a profile on, but haven't really played with it. Though "proper" denoising with the appropriate AOVS is probably the way to go.

QuoteFrom the few tests i made and read some of the posts it looks like these denoisers (except Neat Video maybe) need some specific kind of noise to work better.

I think it's always good to get the render as good as you can without denoising (whilst fitting into your render budget). It works really well at getting rid of artifacts in heavy motion blur where texture detail is not that pronounced anyway. Renderman back the days of REYES had a feature where you could reduce the Shading rate (in Terragen I guess the equivalent would be Micropoly detail) when an object was heavily motion blurred.

pokoy

#4
Intel has released a denoiser just a few days ago and it looks as promising as Nvidia's. From what I heard Nvidia provides the tech for free but lets you go through some code review which isn't really hassle free. Intel gives the tech away without any restrictions. I had the opportunity to see some early implementations in a few render engines and both were equally good with Intel's being slightly more accurate on smaller details like grass and trees. But these were brief  tests so probably too early to judge.
TG would definitely benefit from this. Although I'm not sure if some work would be needed in order to generate the data the denoisers need to work on.
I'm pretty sure it could help to cut down rendertimes by 50% and more in many cases.

I don't think you can compare these to other postprocess-only denoisers as they work on different data that only renderers can generate such as a normal pass and other raw data. This helps to keep finer details intact while removing sampling noise, not touching noise that may come from a texture for example, in ideal conditions, that is.

Isn't Arnold's denoiser pretty much Nvidia Optix? Not sure...

Edit - I didn't think about having this in TG yet, this would be a really good addition. Good idea! It could work in RTP too, probably.

Kadri


Quote from: pokoy on February 09, 2019, 04:30:30 PM
Intel has released a denoiser just a few days ago...

I didn't know this and when i read this page and saw words like "Embree" and "Pathtracer" i got excited a little about the Terragen side.
http://www.cgchannel.com/2019/01/intel-releases-open-source-denoiser-open-image-denoise/

Kadri

#6
Quote from: digitalguru on February 09, 2019, 01:07:27 PM
...
I think it's always good to get the render as good as you can without denoising (whilst fitting into your render budget). It works really well at getting rid of artifacts in heavy motion blur where texture detail is not that pronounced anyway. Renderman back the days of REYES had a feature where you could reduce the Shading rate (in Terragen I guess the equivalent would be Micropoly detail) when an object was heavily motion blurred.

I tried with a basic point light with a black background in terragen (all with default Terragen settings that is). It is an exaggerated test of course.
I got high as AA 10 but Nvidia Optix and Neat image (not Neat Video) was not much help.
It is not a basic solution and might work here and there maybe i don't know.
The real burden is more on the original Terragen renderer as you said probably.

digitalguru

Quotesn't Arnold's denoiser pretty much Nvidia Optix? Not sure...

Arnold uses Optix, but it is only for preview renders, it has its own denoiser for production renders.

Oshyan

We're definitely keeping an eye on all this. So far in the limited testing I've been able to do the Intel denoiser (the mainly available free and easy to use one; I don't have high enough Nvidia hardware for Optix) doesn't work well on TG images unfortunately. I would guess because it's based on deep learning techniques like Nvidia's and some other denoisers. That being the case it would need to be trained on a ton of Terragen images. Not sure how feasible that would be in the near future, nor how time consuming to implement or train it. But we're definitely interested in the tech.

- Oshyan

Kadri


Nice to hear Oshyan.

Quote from: Oshyan on February 10, 2019, 10:29:28 PM
... So far in the limited testing I've been able to do the Intel denoiser (the mainly available free and easy to use one...

Can you give a link please? I looked not much around when i saw that it needs a special image file format...
Is it basic to use and are standard image file formats supported?

In my tests with Terrgen it looked like Nvidia Optix works on the part of the render that is still not finished (i used some unfinished images too) with the last AA stage better.
Parts that look like fireflies or finer random noise.

With Neat image demo software it become a little more apparent why the point light source test wasn't good.
A closer crop look didn't look like random noise grain at all.
It looks more like kinda perlin noise where it is grouped here and there mostly.
Just thinking out loud.

Kadri


Better to post the images i think.

Oshyan

It's simple to use, yes. The image format is a bit obscure, but Photoshop supports it (rename PPM to PFM), so I just converted there. Was not able to get anything but 32bit/channel images working, even in "LDR" mode of the denoiser.

Download page is here: https://openimagedenoise.github.io/downloads.html
You want this: "For Windows we provide Open Image Denoise binaries precompiled for 64-bit as a ZIP archive"
Current version (this link may expire or not be the latest by the time anyone reads this, reference the page above!): https://github.com/OpenImageDenoise/oidn/releases/download/v0.8.1/oidn-0.8.1.x64.vc14.windows.zip

Regarding your tests, I would strongly advise not using unfinished images or images with anything peculiar about them. Remember that these denoisers are trying to be "smart" and are trained on particular data sets, so they have potentially strong "expectations" about what will be in each image. If a particular section of the image is radically different from any other section (for example AA is not finished there) that is bound to create unpredictable results that are not representative of useful, final output.

- Oshyan

Kadri


Thanks Oshyan.

I made the unfinished tests after i saw not good results with those denoisers and just out of curiosity to find different kind of noise.
The above image is a finished render by the way.

pokoy

Quote from: Kadri on February 10, 2019, 11:32:56 PM

Better to post the images i think.

I'm not sure you're using Optix in the way it's intended, it should work a lot better on a noisy image like yours. It will create a smudgy painting-like image with only a few samples but refine constantly, almost real-time. Your example looks like it's only blurred the noise while it should produce something like a gradient across those sparsely sampled pixels.

I just tested this in 3dsmax with Corona's Optix implementation, with quite a noisy input image after only a few samples:

Optix OFF

[attachimg=1]


Optix ON

[attachimg=2]

There's no geometry in the image, it's all volumetric.

Quote from: Oshyan on February 10, 2019, 10:29:28 PM
...doesn't work well on TG images unfortunately. I would guess because it's based on deep learning techniques like Nvidia's and some other denoisers. That being the case it would need to be trained on a ton of Terragen images...

I'm pretty sure it would work well with TG, no need to train anything. My guess is you are not testing it with the expected set of image data.

Kadri

Quote from: pokoy on February 11, 2019, 03:09:07 AM
...
I'm not sure you're using Optix in the way it's intended, it should work a lot better on a noisy image like yours. ...

It could be. I expected better too.
Would love to see a test from your side with Terragen.