Post Denoiser
SnowSultan
Posts: 3,773
in The Commons
Does anyone know what the Post Denoiser Start Iteration value does (in the Filtering panel in the Render Settings panel)? Post Denoiser does a very good job of removing noise, but you have to wait a while for it to bring back some necessary detail. Would just like to know how to set that value without doing a lot of lengthy tests. Thanks!

Comments
That's when it starts gather data for the denoising, I believe - before that it just renders away.
You're right, that what it does. I'm not positive what good it does though because it seems to give the same result regardless of when the denoising kicks in.
It's not for removing forum posts that are essentially just noise? ;)
Ha! I value my post count too much for that.
I've been experimenting with it.
I find I don't like it, as the image looks too perfect; the slight grain from the render still (well) rendering actually gives a more photo-type look. But two renders one at about 250-350 itterations and another 200 with the denoiser then tweak in photoshop gives a good balance between speed, quality (and my need to tweak).
EDIT 2020/04/04
Denoiser helps a LOT to decrease render times and you can get an outstanding result in a fraction of time it would take to render without.
If you want a very pixel precise, crispy result, DO NOT activate the post-denoiser. It's equivalent to a photoshop Denoise filter and you really don't want to do that (if you ever need to) from the render window.
The AI Denoise from NVidia does an outstanding job at getting rid of the white pixels. And the result I get are crispier and way more precise with Iray + Denoise than Iray alone.
This is the way I configure my Iray for renders, and the results are definitely excellent / fast / not blurred at all.
You will see that the Denoise does a truly outstanding job without blurring anything. With those values the Denoise acts as a ":Dust and Sparkles" filter, with higher values (Degrain Radius and Blur mostly), you'll get on top an effect similar to the Photoshop Denoise, which I don't like as it's easy to blur things out if not used properly.
I find the denoiser very handy, and have found you can get a oil paint look to your render early on in the rendering cycle.. But as has been noticed is that it does not activate, if the video card runs out of vram.. And as such I have been learning how to cut the size of my scenes right back so they will fit on the my cards vram..
I've found that it often doesn't kick in on scenes even when they can fit and render on the GPU. The only way I've been able to get the denoiser to consistently kick in is by doing small spot renders.
That being said, the denoiser is handy, for certain things. It will cut out too much detail on textured fabrics, etc.
I find it far better to use a stand-alone denoiser after the render is finished. It doesn't affect VRAM usage during the render (making it less likely it will drop to CPU), it will still work if it drops to CPU, and you have the option to adjust the strength of the effect (rather than just accepting 100% denoise strength), or even mask different denoise strengths in different areas of the image.
You do need to get a certain sense of how much the denoiser is actually capable of in order to know when to cut off the render, but it still gives you much more control.
The iteration the denoiser kicks in at counts a lot.
If it starts at a low iteration multiple things happen:
1. it will apply then filter on all iteration from that number. A denoised iteration takes longer to render as it has to do some post procesing after the image itself so the more itarations you have your denoiser on, the longer the render will take
2. it will make the render look more blurry as it will not give a chance for the image to clear any spots on its own before applying the filter.
I for one don't like to use denoiser. I might use it in the future if I do animations as there, the quality of a single frame doesn't matter as much but for single images I have not managed to render an image that I liked more than without the denoiser on.
I prefer to oversample my images to get rid of the noise.
To answer the original question, if you do want to use it, I would suggest to use it only on the last few hundreds iterations.
If you do 1000 iteration maybe start on 800 or so. I am not an expert on this though as stated before, I tested it but never felt satisfied enough with the results.
I also don't have a long queue of renders waiting for me so I can afford to spend 2-3 hours on a render to get the quality I want.
@alex86fire thanks mate for your insight. I never thought of the Post Denoiser Start Iteration this way. I usually let it kick in at a very low value (below 10) but it's great to know that it does make a difference to let the denoiser start way later. This sounds so logical.
I'll give that a try, starting the denoiser at, let's say Iray Iteration 10, then iteration 750, then iteration 1500. Just to see the difference. Using the denoiser during a render, if it starts to denoise at Iray Iteration 10, even after 20 minutes of render, the result doesn't sound much better than after only 5 minutes of render. So your opinion makes a lot of sense.
Cheers.
What I have done is use the Intel denoiser on an image and then blend the denoised image with the original in post. That way I get whatever benefit I want from the denoiser without adding to render time.
I have ran multiple denoised render tests, starting at the default 8 iterations, and others starting at hundreds, even thousands of iterations. There is no difference in the picture quality on the fully converged result. It can take longer to render when engaging the denoiser, but I didn't find it to be a huge difference. Plus if a render looks done long before full convergence, it saves a ton of time anyway to go ahead and kill it. So it works out.
If you want to turn the denoiser on and off, you can do so during the active render itself with the pop out tab on the render window. The denoiser will kick on (or off) after the iteration count you set, so keep that in mind. But if you keep it at 8, then the denoiser will turn on after 8 iterations. You can turn the denoiser on and off as many times as you want until the render reaches a stop condition, at which point you can no longer use the post processing.
The denoiser uses VRAM to run. If you are pushing your GPU's VRAM limit, then Iray will automatically disable the denoiser internally as a fail safe to prevent the render from dropping to CPU. So its a good that it does this since it prevents dropping to CPU, but I do wish it gave the user some kind of notice so they knew what was going on. For me I have seen the denoiser adding around 500 MB of VRAM versus the same scene with it off. I imagine it depends on the size of the render as to how much it uses.
In the cases it fails to run, you can use the Intel denoiser to clean up the image. Some people may prefer Intel's denoiser anyway. At any rate, using this awesome script makes using Intel's denoiser a painless snap from inside Daz Studio. https://www.daz3d.com/forums/discussion/334881/use-this-a-i-based-open-source-de-noiser-from-the-comfort-of-daz-studio/p1
IMO, the denoiser works better on higher resolution images. Because the denoiser is essentially an educated guess of unrendered pixels, low resolutions can make it harder to determine what the missing pixels are supposed to be. We also need to consider what the denoiser was actually created for, and that is NOT people. The denoiser is decent at architecture and scenery, things that Nvidia can train an algorithm for. But human skin is so wildly varied it can be quite hard to train for it. So how well it works with people can vary wildly from image to image and the types of models you use.
I agree with this. For arhitecture or environments it works fairly decent. For people I feel I get what I call a blurry effect that I really don't like.
As I am not time pressed I still won't use it at the moment but except animations, arhitecture would be the second use I would have for it if push came to shove.
wasnt there a denoiser from mcasual on his script site ?
how good does that work ?
found it
https://sites.google.com/site/mcasualsdazscripts9/mcjdenoise
That's mcasual's script for the Intel denoiser. The one outrider42 refered to above. It's fast, works well, and doesn't increase render time, since it's used on completed renders. I'd use that, unless I'm trying to create a special effect with the Nvidia Iray denoiser.
For a hobbyist like me, a lot of this is over my head, but I will say these settings produce a much better render compared to what I was doing. Interestingly, it seems to render slower, but I"m finding a render with fewer iterations looks better and is sharper so, net, I'm rendering images for about the same amount of time with better results.
There's also a Windows DragNDrop version for both Intel and NVidia here:
https://taosoft.dk/software/freeware/dnden/
I might give this a go....
Wow. Ran an image through and I have to say, I'm really impressed with the result.
The NVidia denoiser used is the same as the one in DS, though I'm not sure if it produces similar results, it may depends on the DS setttings. The Intel denoiser is better according to many, and doesn't require an NVidia card.
While the Intel denoiser is nice, the big caveat is not knowing how it will look on your render before stopping the render. For me, the whole point of the denoiser is about saving time more than anything else. If you are running to full convergence and then denoising, that isn't really saving any time. With the Nvidia denoiser, I can make my own judgement call as to whether I think a render is done or not because what I see in the render window is the result with the denoiser included. If that means rendering just 5 minutes, sweet. Or maybe it takes much longer, but I can always see how my render looks in the window with the denoiser already. That to me, saves time.
I suppose somebody should try out benchmarking with the denoiser on/off to give a proper idea of just how much of an impact the denoiser really is on rendering speed. I still have a benchmark in my sig if anybody wants to test using it. Having real data on it would be quite helpful, and if different GPUs handle it differently. After all, the RTX GPUs have Tensor dedicated to this, and Iray has in fact supported Tensor cores for its denoiser for a while. Many people may not know this, but Iray supported the Tensor cores before it even supported the RT cores (thanks to the Titan V, which had Tensor cores). So it is possible that the Tensor cores speed up the post denoiser process and it negates any slow down that the denoiser might cause in non RTX cards. So I would also like to see people running the benchmark scene with both GTX and RTX cards to see if the Tensor cores are actually making a difference on speed when using the denoiser.
With the Intel denoiser, if you want to actually save time, that means stopping the render early. But that can be a guessing game, because any given render can wildly change how fast iterations are, and what the convergence may be. You cannot just set the stop conditions at say 500 iterations and expect that to work on every scene, and the same for convergence. I have had plenty of renders that looked more "done" at less than 10% than other renders at 90%; and renders that looked more done at 500 iterations than 5000 iterations. So it is kind of hard to automate this unless you have a set of scenes that you already have a good idea how well the denoiser will work on them. Experience does help, after a while you can probably make the judgement calls for when to stop a render for the Intel denoiser. But still, I like being to see my results with the Nvidia one and knowing for sure.
There are certainly times when I prefer the Intel denoiser, don't get me wrong. But it isn't always that straight forward easy. The Intel denoiser can also mangle skin details, too.
One trick I have applied is to render a denoised scene, and if the person in the pic looks off, you can do a spot render on their face with the denoiser off.
If you just make a small box for the spot render, it will render many times faster than the full image. I have had the spot render a small part of scene in just a few minutes, where the full scene took hours. Just remember to flip the option to spot render to a new window, it always defaults to not do that, which is pretty useless. Then use your favorite pic editor to blend the spot render into the denoised image. This way, you can still save a ton of time and get pretty good results. This is a great compromise to get the best of both.
This is what I was trying to say. Since you can see the results as you render, you know exactly when you can stop, which can save time.
I've been using the stand-alone denoisers for some time, and I've got a pretty good sense of how much noise they're capable of handling well. So that's not a big deal, particularly as I know that the stand-alone denoisers can do a much better job than the way the built-in denoiser is set up.
To demonstrate (uploaded off-site as PNGs to preserve the detail):
Here's a crop from an original, moderately noisy image
Here's the image processed with the stand-alone Nvidia denoiser with default settings (so broadly what I'd've got had I used the built-in denoiser)
And using the Intel Denoiser, with customised options
The Nvidia denoiser has been a bit better about preserving detail in the hair*, but when it comes to the face, correctly configuring the Intel denoiser absolutely thrashes the Nvidia denoiser. And that's a difficult face, with freckles of all different sizes, water droplets running down it, etc. (Not to mention also doing a much better job of removing noise from the background).
* That said, if you're doing it with a stand-alone denoiser, it's entirely possible to run the image through both denoisers and mask in the bits that each one handles better.
That increase in quality makes a big difference in how long you have to render the image in the first place to get the same final result.
EDIT: And this time with the links actually pointing to the right images...
If you stop/pause a render in DS, the current result is saved in the r.png in the DS temp folder. You can then denoise that one to see how it looks, and if not satisfied, render some more, and try again. Actually I could add some kind of automation feature for this to the denoiser DragNDrop app I think, to save work and time.
"EDIT: And this time with the links actually pointing to the right images..."
Matt_Castle, I'm not seeing any difference at all between the three, flipping between them.
Using the Drag and Drop app and the two denoisers from the link above, the Intel works pretty well. But the Nvidia throws and error, unable to allocate scratch memory.
I've just tested it, works OK here with a GTX 1070 card, the latest NVidia driver, and the latest NVidia denoiser script (v 2.4). Could be some incompatibility with newer NVidia cards but I can't test that, maybe someone else here can.
ETA: Just saw this note on the NVidia script page, for the 2.4 version: "IMPORTANT - This release now has a minimum Nvidia driver requirement of 436.02"
The machine I was trying it on has a Game Ready driver of 451.67. Maybe they're referring to the studio drivers?