DGDenoise
Re: About DGDenoise
I fixed the crop issue by padding out and running the kernel at mod 8, even if the real size is not. No big deal.
I'll look into the other issues before uploading this fix.
I'll look into the other issues before uploading this fix.
Re: About DGDenoise
Selur, I'm not able to reproduce your shortname issue. Here is my script:
loadplugin("d:\don\Programming\C++\dgdecnv\DGDecodeNV\x64\Release\dgdecodenv.dll")
loadplugin("D:\Don\Programming\C++\Avisyn~1\DGDenoise\x64\Release\dgdenoise.dll")
dgsource("D:\Don\Programming\C++\Avisyn~1\DGDenoise\Test\denoise test source 1.dgi",deinterlace=1)
ConvertToRGB32(interlaced=false)
DGDenoise(kernel=1)
There's actually no reason why it shouldn't work, so I think you must have had something else going on. Can you check it again please?
loadplugin("d:\don\Programming\C++\dgdecnv\DGDecodeNV\x64\Release\dgdecodenv.dll")
loadplugin("D:\Don\Programming\C++\Avisyn~1\DGDenoise\x64\Release\dgdenoise.dll")
dgsource("D:\Don\Programming\C++\Avisyn~1\DGDenoise\Test\denoise test source 1.dgi",deinterlace=1)
ConvertToRGB32(interlaced=false)
DGDenoise(kernel=1)
There's actually no reason why it shouldn't work, so I think you must have had something else going on. Can you check it again please?
Re: About DGDenoise
Tried different files to make sure it's not just related to the source.
using:
---------------------------
VirtualDub Error
---------------------------
Avisynth open failure:
DGDenoise: could not start the denoise server C:\Program Files (x86)\VirtualDub\DenoiseServer.exe, error 2!
(C:\Users\Selur\Desktop\test1.avs, line 7)
---------------------------
OK
---------------------------
changing the script to:
script get's opened without a problem.
Not sure it this is related, but I don't have any globally installed Avisynth on my system.
(got an avisynth.dll next to each player which I want to open avisynth scripts)
Cu Selur
using:
Code: Select all
LoadCPlugin("G:\Hybrid\AVISYN~1\ffms2.dll")
LoadPlugin("G:\Hybrid\AVISYN~1\DGDENO~1.DLL")
# loading source: F:\TestClips&Co\test.avi
FFVideoSource("F:\TESTCL~1\test.avi",cachefile="H:\Temp\avi_0197468a3716844ade54f3f30f60eeda_4827_1_0.ffindex",fpsnum=25)
# denoising using DGDenoise
ConvertToRGB32(interlaced=false)
DGDenoise()
return last
VirtualDub Error
---------------------------
Avisynth open failure:
DGDenoise: could not start the denoise server C:\Program Files (x86)\VirtualDub\DenoiseServer.exe, error 2!
(C:\Users\Selur\Desktop\test1.avs, line 7)
---------------------------
OK
---------------------------
changing the script to:
Code: Select all
LoadCPlugin("G:\Hybrid\avisynthPlugins\ffms2.dll")
LoadPlugin("G:\Hybrid\avisynthPlugins\DGDenoise.dll")
# loading source: F:\TestClips&Co\test.avi
FFVideoSource("F:\TestClips&Co\test.avi",cachefile="H:\Temp\avi_0197468a3716844ade54f3f30f60eeda_4827_1_0.ffindex",fpsnum=25)
# denoising using DGDenoise
ConvertToRGB32(interlaced=false)
DGDenoise()
return last
Not sure it this is related, but I don't have any globally installed Avisynth on my system.
(got an avisynth.dll next to each player which I want to open avisynth scripts)
Cu Selur
Re: About DGDenoise
OK, duplicated. I did not have a short name for the filename, just the path. Investigating...
Re: About DGDenoise
I've fixed the short name problem by trying long first and if it fails trying short. I'll upload a new version and then look at the other issues.
Re: About DGDenoise
Nice! Thanks for looking into it.
Re: About DGDenoise
OK, new version uploaded. Fixes:
* Shortnames
* Cropping artifacts
* Default strength for NLM lowered.
The remaining issues are all a result of the current server design. I am looking into moving everything into the filter DLL. Remember when I first started DGDecNV with a server? The old CUVID server!
The nVidia bilateral filter looks nice. I'll probably add it as a kernel.
* Shortnames
* Cropping artifacts
* Default strength for NLM lowered.
The remaining issues are all a result of the current server design. I am looking into moving everything into the filter DLL. Remember when I first started DGDecNV with a server? The old CUVID server!
The nVidia bilateral filter looks nice. I'll probably add it as a kernel.
Re: About DGDenoise
I can confirm that short file names work fine now and that the artifacts are gone
Looking forward to it.I am looking into moving everything into the filter DLL.
Re: About DGDenoise
There's a regression with the cropping stuff. I am going to remove the upload until it is fixed. I may have to enforce mod8 and require you to crop after DGDenoise. No big deal.
Re: About DGDenoise
I re-uploaded it with the regression fixed.
I am going to focus on integrating things into the filter and ditching the server. Still, I'll be happy to receive feedback on the denoising implementation.
I am going to focus on integrating things into the filter and ditching the server. Still, I'll be happy to receive feedback on the denoising implementation.
Re: About DGDenoise
Totally groggy from work today, but will do some testing the next few days.
Re: About DGDenoise
Take a break, my friend, you've already done a lot for me.
Re: About DGDenoise
btw. did some encodes using DGDenoise on different sources with different strength levels, haven't looked at the results yet, but uploaded the files to my GoogleDrive in the 'denoising' folder if you or someone else wants to look at them.
(will probably encode a few other sources too in the next few days)
Cu Selur
(will probably encode a few other sources too in the next few days)
Cu Selur
Re: About DGDenoise
Sweet, thank you, I will have a look.
I made good progress today on ditching the server and integrating everything into the Avisynth filter. I eliminated the use of freeglut/glew (that is, all vestiges of OpenGL), and did everything with a raw CUDA texture. Right now it is still an executable using the CUDA runtime API, but I can move the code right into the filter DLL. That wasn't possible before due to the OpenGL dependency. I haven't decided whether to stick with the CUDA runtime API or switch to the CUDA driver API. It would be simpler to keep the runtime API, but I never tried making a filter using the runtime API. There shouldn't be a problem but we'll see. The only downside is I have to ship cuda*_60.dll, but no big deal.
I made good progress today on ditching the server and integrating everything into the Avisynth filter. I eliminated the use of freeglut/glew (that is, all vestiges of OpenGL), and did everything with a raw CUDA texture. Right now it is still an executable using the CUDA runtime API, but I can move the code right into the filter DLL. That wasn't possible before due to the OpenGL dependency. I haven't decided whether to stick with the CUDA runtime API or switch to the CUDA driver API. It would be simpler to keep the runtime API, but I never tried making a filter using the runtime API. There shouldn't be a problem but we'll see. The only downside is I have to ship cuda*_60.dll, but no big deal.
Re: About DGDenoise
Re first two sources
Strength 01
Looks good
Strength 04-05
A little too soft, some loss of detail
Bear in mind my eyes aren't what they used to be and I'm not a whiz at this like you two are
Good work D G, as always
Strength 01
Looks good
Strength 04-05
A little too soft, some loss of detail
Bear in mind my eyes aren't what they used to be and I'm not a whiz at this like you two are
Good work D G, as always
Re: About DGDenoise
Hi gonca, great to hear from you! And thank you for your testing.
I made the defaults based on the AddGrain(100) call I was using to simulate noise. That's strong grain. I think we can tweak the defaults later based on more real-world stuff. That's why I asked for samples. For now just set the parameters as you need and let me know what you like.
I got the integrated filter working. I just have to make a 32-bit build and then I will release it. We'll say adios to the server and OpenGL. Buh-bye!
The tradeoff for CUDA runtime versus driver API is that I avoid having to ship a .cubin but have to ship a cudart*.dll. So that's a wash and the easier coding for the runtime API rules.
This infrastructure I have developed opens up a lot of possibilities for GPU filters. If you have any great ideas for GPU-accelerated filters beyond denoising, please speak up. What filters run so slow you want to pull your hair out? You get -10 points if you say QTGMC(); that's a script. Maybe some of the filters it invokes can be accelerated, however.
The whole integrated filter is only ~500 lines of code total (including the Avisynth code and KNN and NLM kernel codes). It's ridiculous how powerful CUDA is. Here's what I have to say to nVidia...
I made the defaults based on the AddGrain(100) call I was using to simulate noise. That's strong grain. I think we can tweak the defaults later based on more real-world stuff. That's why I asked for samples. For now just set the parameters as you need and let me know what you like.
I got the integrated filter working. I just have to make a 32-bit build and then I will release it. We'll say adios to the server and OpenGL. Buh-bye!
The tradeoff for CUDA runtime versus driver API is that I avoid having to ship a .cubin but have to ship a cudart*.dll. So that's a wash and the easier coding for the runtime API rules.
This infrastructure I have developed opens up a lot of possibilities for GPU filters. If you have any great ideas for GPU-accelerated filters beyond denoising, please speak up. What filters run so slow you want to pull your hair out? You get -10 points if you say QTGMC(); that's a script. Maybe some of the filters it invokes can be accelerated, however.
The whole integrated filter is only ~500 lines of code total (including the Avisynth code and KNN and NLM kernel codes). It's ridiculous how powerful CUDA is. Here's what I have to say to nVidia...
Re: About DGDenoise
In terms of filters I would say that you should look first at what filters you use.
They don't have to be "slow" to be improved, and you do have a knack for improving things by making them run on video cards, as your other software.
As far as defaults, I leave that to your judgement, with help from Selur, I am sure the final will be good, and the end user can always tweak a little, if so desired
QTMC is slow, but like you stated, it is a script and not a plugin
If you are willing to help I can set up some avisynth scripts and test the old Clint spaghetti westerns and the Godfather trilogy, all very noisy movies,
They don't have to be "slow" to be improved, and you do have a knack for improving things by making them run on video cards, as your other software.
As far as defaults, I leave that to your judgement, with help from Selur, I am sure the final will be good, and the end user can always tweak a little, if so desired
QTMC is slow, but like you stated, it is a script and not a plugin
If you are willing to help I can set up some avisynth scripts and test the old Clint spaghetti westerns and the Godfather trilogy, all very noisy movies,
Re: About DGDenoise
@gonca
Thank you for your thoughts and I will help you. Just ask!
@all
I have uploaded the integrated filter version, so re-download DGDenoise.rar and read the instructions carefully. The kernel and sobel parameters are different. Kernel is now 1 or 2 for KNN or NLM. Sobel is now in the range 0 to 1000.
Get rid of the old DenoiseServer.exe, freeglut.dll, glew*.dll, and cudart*_60.dll. You have to put cudart*_75.dll in your DLL search path. I hope you know what that means.
Thank you for your thoughts and I will help you. Just ask!
@all
I have uploaded the integrated filter version, so re-download DGDenoise.rar and read the instructions carefully. The kernel and sobel parameters are different. Kernel is now 1 or 2 for KNN or NLM. Sobel is now in the range 0 to 1000.
Get rid of the old DenoiseServer.exe, freeglut.dll, glew*.dll, and cudart*_60.dll. You have to put cudart*_75.dll in your DLL search path. I hope you know what that means.
Re: About DGDenoise
Don't be shy to play with the sobel parameter. If you reduce it below default you retain more detail, as you can verify with the map option. Try sobel=100 together with a moderate strength (0.5). It works well on a noisy Stones BD. We would like to retain detail on faces but not on backgrounds, but things like that require artificial intelligence beyond the available APIs.
Re: About DGDenoise
Please notice I had to manually download msvcr120d.dll to make it work.
Windows 10 x64 build 14905
I'd like to use DGDenoise as a pre filter to SMDegrain but I get a wrong space color error from it.
How can I convert it back to a format SMDegrain reads?
Windows 10 x64 build 14905
I'd like to use DGDenoise as a pre filter to SMDegrain but I get a wrong space color error from it.
How can I convert it back to a format SMDegrain reads?
Re: About DGDenoise
Add ConvertToYUY2() or ConvertToYV12() after DGDenoise().
Re: About DGDenoise
Multiple instance and VirtualDub re-open do not work yet. I have to implement floating cuda contexts as in DGDecodeNV. It will require me to convert from cuda runtime to cuda driver API. Waiting for another burst of energy...
Re: About DGDenoise
I completed the CUDA driver API version. Multiple instantiation and VirtualDub re-open now work fine, which means the filter will work correctly in MeGUI, etc. I'll do some regression testing and then upload it, probably tomorrow morning, as a candidate release.
Re: About DGDenoise
Do you plan to create a new DGDecodeNV with DGFilter as option in same dll?admin wrote:I completed the CUDA driver API version. Multiple instantiation and VirtualDub re-open now work fine, which means the filter will work correctly in MeGUI, etc. I'll do some regression testing and then upload it, probably tomorrow morning, as a candidate release.
Re: About DGDenoise
I'm considering it, but wonder about the point if there is already a stand-alone filter.Guest 2 wrote:Do you plan to create a new DGDecodeNV with DGFilter as option in same dll?
@all
I just uploaded the driver API version. It also adds a parameter to specify the desired GPU when you have more than one. The kernel is shipped as PTX code, so this theoretically is future proof for new nVidia architectures.
http://rationalqm.us/misc/DGDenoise.rar
This is my first release candidate. Your testing will be appreciated.