View Full Version : Plum, blind deconvolution enhanced by pixel/block matching
feisty2
13th August 2016, 17:33
https://github.com/IFeelBloated/Plum/blob/master/Plum.py
Plum gives an alternative kind of sharpening, the kernel is an actual deconvolution filter instead of USM, which reverses blurring with circle shaped PSFs
Plum produces no ringing (but might enhance the existing ringing), almost no aliasing and does not enhance the noise much (will probably enhance static noise), and it's also not xylographing.
some previous discussion here:
http://forum.doom9.org/showthread.php?t=173756
the non-linear amplifying expression was copied from finesharp(credits to didee)
Plum could also do some "plastic surgeries" for DVD videos and make them look as close to the master tape as possible
it's impossible for Plum to restore the DVD video back to its exact mastertape state, that is, Plum tries to recover the general "mastertape texture" (image should "look" extremely delicate and fragile and fine, not "dumb" and coarse) instead of trying to recover every lost detail.
the underlying philosophy is similar to generative adversarial network: why even bother trying to reconstruct the ground truth (which is impossible anyways) when you could just fool everyone's eyes with the fake stuff as long as there's no reference to the ground truth?
some discussion: https://forum.doom9.org/showthread.php?p=1810234#post1810234
Master tape
http://i.imgur.com/0jcwUlr.png
DVD Release
http://i.imgur.com/LaXsqQj.png
DVD + Plum
ref = Plum.Basic(clip)
clip = Plum.Final([clip, ref], [Plum.Super(clip), Plum.Super(ref)])
http://i.imgur.com/GMTtrIG.png
hydra3333
17th August 2016, 11:51
Thanks !
Any dependencies ?
feisty2
17th August 2016, 12:31
Thanks !
Any dependencies ?
VCFreq and... must have stuff?
sl1pkn07
17th August 2016, 15:45
knlmeanscl
fmtconv
nnedi3
vsfreq (only windows :( )
dfttest
bm3d
feisty2
17th August 2016, 16:57
updated Plum and same to the pics at #1
@sl1pkn07
vcfreq is open source, maybe it will just compile without any weird shit on GCC...who knows
sl1pkn07
17th August 2016, 17:01
is not problem of GCC
vcfreq.cpp:45:21: fatal error: windows.h: No such file or directory
└───╼ locate windows.h
>snip
/usr/include/wine/windows/windows.h
>snip
feisty2
17th August 2016, 17:07
is not problem of GCC
vcfreq.cpp:45:21: fatal error: windows.h: No such file or directory
└───╼ locate windows.h
>snip
/usr/include/wine/windows/windows.h
>snip
very unlikely that vcfreq called some windows api or whatever like that
maybe you could just replace it with <cstdlib> or..
Myrsloik
17th August 2016, 18:55
It uses loadlibrary to load fftw. That's the main reason it won't compile in linux. But I fixed that (http://forum.doom9.org/showthread.php?p=1777315#post1777315).
aculnaig
18th August 2016, 11:42
Hi feisty2,
I tried your script, but it prompt me this error through vspipe
vspipe -y lo.gatto.vpy .
Script evaluation failed:
Python exception: DFTTest: invalid entry in sigma string
Traceback (most recent call last):
File "src/cython/vapoursynth.pyx", line 1491, in vapoursynth.vpy_evaluateScript (src/cython/vapoursynth.c:26905)
File "lo.gatto.vpy", line 18, in <module>
v = Plum.Final([v, deconv, conv], [sup, supdeconv, supconv])
File "/usr/lib/python3.5/site-packages/Plum.py", line 315, in Final
clip = internal.final(src, super, radius, pel, sad, constants, attenuate_window, attenuate, cutoff)
File "/usr/lib/python3.5/site-packages/Plum.py", line 163, in final
dif = DFTTest(dif, sbsize=attenuate_window, sstring=attenuate, **dfttest_args)
File "src/cython/vapoursynth.pyx", line 1383, in vapoursynth.Function.__call__ (src/cython/vapoursynth.c:25212)
vapoursynth.Error: DFTTest: invalid entry in sigma string
sample clip: https://www.dropbox.com/s/w5plhz6ob7tea83/sample.mpeg?dl=0
Mediainfo output
General
Complete name : sample.mpeg
Format : MPEG-PS
File size : 3.04 MiB
Duration : 4 s 840 ms
Overall bit rate mode : Variable
Overall bit rate : 5 267 kb/s
Video
ID : 224 (0xE0)
Format : MPEG Video
Format version : Version 2
Format profile : Main@Main
Format settings, BVOP : Yes
Format settings, Matrix : Default
Format settings, GOP : M=3, N=13
Format settings, picture structure : Frame
Duration : 4 s 840 ms
Bit rate mode : Variable
Bit rate : 5 162 kb/s
Maximum bit rate : 8 500 kb/s
Width : 720 pixels
Height : 576 pixels
Display aspect ratio : 2.40:1
Frame rate : 25.000 FPS
Standard : PAL
Color space : YUV
Chroma subsampling : 4:2:0
Bit depth : 8 bits
Scan type : Interlaced
Scan order : Top Field First
Compression mode : Lossy
Bits/(Pixel*Frame) : 0.498
Time code of first frame : 11:01:25:07
Time code source : Group of pictures header
GOP, Open/Closed : Open
Stream size : 2.98 MiB (98%)
Color primaries : BT.601 PAL
Transfer characteristics : BT.470 System B, BT.470 System G
Matrix coefficients : BT.601
My VS script
import vapoursynth as vs
import Plum
core = vs.get_core()
v = core.d2v.Source('output.mpeg.d2v')
v = v[92173]
v = core.fmtc.bitdepth(v, flt = 1)
v = core.yadifmod.Yadifmod(v, edeint = core.nnedi3.nnedi3(v, 1), order = 1 )
v = core.fmtc.resample(v, w = 1024, h = 576, kernel = 'sinc', taps = 128)
deconv = Plum.Basic(v)
conv = Plum.Basic(v,mode="convolution")
sup = Plum.Super([v, None])
supdeconv = Plum.Super([v, deconv])
supconv = Plum.Super([conv, None])
v = Plum.Final([v, deconv, conv], [sup, supdeconv, supconv])
v = core.fmtc.bitdepth(v, bits = 8, dmode = 8, patsize = 32)
v.set_output()
feisty2
18th August 2016, 13:27
Hi feisty2,
I tried your script, but it prompt me this error through vspipe
vspipe -y lo.gatto.vpy .
Script evaluation failed:
Python exception: DFTTest: invalid entry in sigma string
Traceback (most recent call last):
File "src/cython/vapoursynth.pyx", line 1491, in vapoursynth.vpy_evaluateScript (src/cython/vapoursynth.c:26905)
File "lo.gatto.vpy", line 18, in <module>
v = Plum.Final([v, deconv, conv], [sup, supdeconv, supconv])
File "/usr/lib/python3.5/site-packages/Plum.py", line 315, in Final
clip = internal.final(src, super, radius, pel, sad, constants, attenuate_window, attenuate, cutoff)
File "/usr/lib/python3.5/site-packages/Plum.py", line 163, in final
dif = DFTTest(dif, sbsize=attenuate_window, sstring=attenuate, **dfttest_args)
File "src/cython/vapoursynth.pyx", line 1383, in vapoursynth.Function.__call__ (src/cython/vapoursynth.c:25212)
vapoursynth.Error: DFTTest: invalid entry in sigma string
sample clip: https://www.dropbox.com/s/w5plhz6ob7tea83/sample.mpeg?dl=0
Mediainfo output
General
Complete name : sample.mpeg
Format : MPEG-PS
File size : 3.04 MiB
Duration : 4 s 840 ms
Overall bit rate mode : Variable
Overall bit rate : 5 267 kb/s
Video
ID : 224 (0xE0)
Format : MPEG Video
Format version : Version 2
Format profile : Main@Main
Format settings, BVOP : Yes
Format settings, Matrix : Default
Format settings, GOP : M=3, N=13
Format settings, picture structure : Frame
Duration : 4 s 840 ms
Bit rate mode : Variable
Bit rate : 5 162 kb/s
Maximum bit rate : 8 500 kb/s
Width : 720 pixels
Height : 576 pixels
Display aspect ratio : 2.40:1
Frame rate : 25.000 FPS
Standard : PAL
Color space : YUV
Chroma subsampling : 4:2:0
Bit depth : 8 bits
Scan type : Interlaced
Scan order : Top Field First
Compression mode : Lossy
Bits/(Pixel*Frame) : 0.498
Time code of first frame : 11:01:25:07
Time code source : Group of pictures header
GOP, Open/Closed : Open
Stream size : 2.98 MiB (98%)
Color primaries : BT.601 PAL
Transfer characteristics : BT.470 System B, BT.470 System G
Matrix coefficients : BT.601
My VS script
import vapoursynth as vs
import Plum
core = vs.get_core()
v = core.d2v.Source('output.mpeg.d2v')
v = v[92173]
v = core.fmtc.bitdepth(v, flt = 1)
v = core.yadifmod.Yadifmod(v, edeint = core.nnedi3.nnedi3(v, 1), order = 1 )
v = core.fmtc.resample(v, w = 1024, h = 576, kernel = 'sinc', taps = 128)
deconv = Plum.Basic(v)
conv = Plum.Basic(v,mode="convolution")
sup = Plum.Super([v, None])
supdeconv = Plum.Super([v, deconv])
supconv = Plum.Super([conv, None])
v = Plum.Final([v, deconv, conv], [sup, supdeconv, supconv])
v = core.fmtc.bitdepth(v, bits = 8, dmode = 8, patsize = 32)
v.set_output()
cannot reproduce the error, which version of DFTTest were you using, I assume not the latest one?
and your video is progressive, DO NOT deinterlace it
aculnaig
18th August 2016, 13:53
cannot reproduce the error, which version of DFTTest were you using, I assume not the latest one?
I cloned this repository
https://github.com/HomeOfVapourSynthEvolution/VapourSynth-DFTTest
is this the most recent updated branch, isn't it?
and your video is progressive, DO NOT deinterlace it
I thought it too, but I always let have the experts the final word.
Thanks.
I will edit this message if it turns with no errors.
Thanks again, feisty2.
EDIT1: Nothing, same erorr.
feisty2
18th August 2016, 14:15
I cloned this repository
https://github.com/HomeOfVapourSynthEvolution/VapourSynth-DFTTest
is this the most recent updated branch, isn't it?
I thought it too, but I always let have the experts the final word.
Thanks.
I will edit this message if it turns with no errors.
Thanks again, feisty2.
I did some tests on your sample anyways, and I think Plum is not the kind of sharpener for this type of vids,
the sample generally lacks textures and details and looks plain flat, and deconvolution does not work on stuff like this, Plum is designed for vids that are filled with rich and soft textures/details, and it then makes them sharp and delicate, and there's just no texture at all in that sample, so...
aculnaig
18th August 2016, 14:26
Ok, thanks.
I wanted to do some test with that movie but I always end up doing things that doesn't fit ! Sigh...
The film is this, btw...
https://en.wikipedia.org/wiki/Il_commissario_Lo_Gatto
madshi
21st August 2016, 10:39
I totally hate the USM "boom" look. So this algorithm looks interesting to me. However, I think FineSharp already does a pretty nice job on avoiding the USM look. So the first thing I did was look at the comparison images. But for some reason, the FineSharp image has a *much* stronger sharpening strength applied to it than the Plum image in the first post of this thread. Which makes it hard to judge which looks really better. Would you mind increasing the Plum sharpening strength for the screenshots in the first post to achieve the same subjective sharpening strength as FineSharp? That would make it *much* easier to see if plum really improves on FineSharp in quality.
Also, I prefer testing with high-quality sources instead of ultra-blurry SD sources. Maybe you could add comparison screenshots for this image?
https://s3.postimg.org/raes85wcf/unsharpened.png (https://postimg.org/image/raes85wcf/)
FWIW, when comparing sharpening algos I usually prefer using a rather high sharpening strength, higher than I would use in real life, because that makes it more obvious what the algorithms are really doing.
Thank you!! :)
feisty2
21st August 2016, 10:55
I totally hate the USM "boom" look. So this algorithm looks interesting to me. However, I think FineSharp already does a pretty nice job on avoiding the USM look. So the first thing I did was look at the comparison images. But for some reason, the FineSharp image has a *much* stronger sharpening strength applied to it than the Plum image in the first post of this thread. Which makes it hard to judge which looks really better. Would you mind increasing the Plum sharpening strength for the screenshots in the first post to achieve the same subjective sharpening strength as FineSharp? That would make it *much* easier to see if plum really improves on FineSharp in quality.
Also, I prefer testing with high-quality sources instead of ultra-blurry SD sources. Maybe you could add comparison screenshots for this image?
https://s3.postimg.org/raes85wcf/unsharpened.png (https://postimg.org/image/raes85wcf/)
FWIW, when comparing sharpening algos I usually prefer using a rather high sharpening strength, higher than I would use in real life, because that makes it more obvious what the algorithms are really doing.
Thank you!! :)
same sharpening strength for 3 algorithms, all 1.64
Plum looks much milder because it ONLY sharpens the most delicate parts of the image(makes high frequencies even higher), it does not amplify low/median frequencies at all while finesharp still amplifies median frequencies..
maybe I could lower down the strength of finesharp and make it easier to compare..
madshi
21st August 2016, 11:04
Well, the same sharpening "number" in different algos doesn't necessarily produce the same subjective sharpening strength. I'd like the images to produce the same *perceived* sharpness level, and then compare which I like best. This is how I usually compare sharpening algos, anyway. Usually when I do that, any USM like algo looks terribly bloated/artificial, while algos like FineSharp look much more natural.
I understand I could easily do this comparison myself, but I'm always having a hard time getting AviSynth/VapourSynth scripts with lots of dependencies to work... :o
Maybe you could just sharpen my preferred 1080p image with all dials turned up to "overload" with Plum, then I can compare your final result with the best I can achieve with my own preferred algos? That would be awesome!
feisty2
21st August 2016, 11:12
Well, the same sharpening "number" in different algos doesn't necessarily produce the same subjective sharpening strength. I'd like the images to produce the same *perceived* sharpness level, and then compare which I like best. This is how I usually compare sharpening algos, anyway. Usually when I do that, any USM like algo looks terribly bloated/artificial, while algos like FineSharp look much more natural.
I understand I could easily do this comparison myself, but I'm always having a hard time getting AviSynth/VapourSynth scripts with lots of dependencies to work... :o
Maybe you could just sharpen my preferred 1080p image with all dials turned up to "overload" with Plum, then I can compare your final result with the best I can achieve with my own preferred algos? That would be awesome!
Plum shares the exact same non-linear amplifying expression with finesharp... so same number gives the mathematically same amount of sharpening, anyways, I reduced the strength to 0.86 for finesharp to show the difference
Plum
http://i.imgur.com/C0WSTEb.png
clp = finesharp.sharpen(clp,sstr=0.86)
http://i.imgur.com/lXx3lBY.png
feisty2
21st August 2016, 11:36
and I cannot sharpen your image because Plum works in both spatial and temporal dimensions, gonna need a video sample and it should be no more than 720p
Plum is an advanced and very complex algorithm, I don't think my shitty i7-4790k could handle Plum on 1080p
and below is how Plum looks like with an insanely high strength
deconv = Plum.Basic(clp)
conv = Plum.Basic(clp,mode="convolution")
sup = Plum.Super([clp, None])
supdeconv = Plum.Super([clp, deconv])
supconv = Plum.Super([conv, None])
clp = Plum.Final([clp, deconv, conv], [sup, supdeconv, supconv], strength=3.2, cutoff=16)
http://i.imgur.com/93YTrDO.png
madshi
21st August 2016, 11:39
anyways, I reduced the strength to 0.86 for finesharp to show the difference
Thanks, Plum does look better (less bloated) than FineSharp in this comparison.
Myrsloik
21st August 2016, 12:20
I had a look at your script and saw some odd things...
You invoke several Expr several times here in series with max. You can have up to 25 inputs to Expr and combining several will be much faster.
Making the input clips something like [clip, SelectEvery(src, radius * 2 + 1, 1), SelectEvery(src, radius * 2 + 1, 2)...] and then the expr " x y max z max a max b max..." will be faster. And maybe 3% more annoying to generate the string for but definitely faster.
def extremum_multi(src, radius, mode):
core = vs.get_core()
SelectEvery = core.std.SelectEvery
Expr = core.std.Expr
clip = SelectEvery(src, radius * 2 + 1, 0)
for i in range(1, radius * 2 + 1):
clip = Expr([clip, SelectEvery(src, radius * 2 + 1, i)], "x y " + mode)
return clip
In here you can technically fold the makediff into the first expr and the mergediff into the second. I think.
Fom the shrink function:
DDD = Expr([DD, convDD], ["x y - x 0.5 - * 0 < 0.5 x y - abs x 0.5 - abs < x y - 0.5 + x ? ?"])
dif = MakeDiff(dif, DDD)
convD = Convolution(dif, **conv_args)
dif = Expr([dif, convD], ["y 0.5 - abs x 0.5 - abs > y 0.5 ?"])
clip = MergeDiff(src, dif)
May be possible to combine these 2 as well
clamped = helpers.clamp(averaged, bright_limit, dark_limit, 0.0, 0.0)
amplified = Expr([clamped, src[0]], expression)
feisty2
21st August 2016, 15:16
but that will limit the largest radius to 12... right?
and I won't be able to predict how many clips I should put in Expr input array cuz that's defined by "radius" at runtime, and the expression, also can only be defined at runtime
and that makes the programming extremely hard... I'm no professional programmer and that's just all too challenging to me..
about Expr folding, those 2 blocks of code were ported from earlier avisynth implementation, I think I should probably just leave it that way cuz that's the direct translation of how the algorithm came into being, it's more readable and makes future maintaining easier
Myrsloik
21st August 2016, 15:18
Yes, 12 would be the biggest unless you in turn put that in a similar loop again. But I'm just suggesting things. I've been meaning to look at havsfunc and see what else can be combined as well... I suspect there are several simplifications possible when lutxy was simply converted to expr.
hydra3333
21st August 2016, 16:23
Hello. Hints where to find mvmulti.py would be much appreciated.
T:\HDTV\WDTVlive\MP4-VS\1>"C:\SOFTWARE\Vapoursynth\VSPipe.exe" "T:\HDTV\WDTVlive\MP4-VS\1\test.mpg.2016.08.22.00.47.41.48.vpy" - --y4m | "C:\SOFTWARE\ffmpeg\0-homebuilt-x64\x264-mp4.exe" - --stdin y4m --thread-input --frames 45810 --profile high --level 4.1 --preset slow --interlaced --tff --no-cabac --crf 14 --sar 64:45 --colormatrix bt470bg -o "s:\HDTV\WDTVlive\MP4-VS\1\test-temp.2016.08.22.00.47.41.48.h264"
Script evaluation failed:
Python exception: No module named 'mvmulti'
Traceback (most recent call last):
File "src\cython\vapoursynth.pyx", line 1491, in vapoursynth.vpy_evaluateScript (src\cython\vapoursynth.c:26897)
File "T:\HDTV\WDTVlive\MP4-VS\1\test.mpg.2016.08.22.00.47.41.48.vpy", line 7, in <module>
import Plum # http://forum.doom9.org/showthread.php?t=173775 https://github.com/IFeelBloated/Plum
File "C:\SOFTWARE\Vapoursynth\Plum.py", line 2, in <module>
import mvmulti
ImportError: No module named 'mvmulti'
(This install is python embedded and vapoursynth portable, if that makes any difference)
edit: I thought it may look to be a part of this http://forum.doom9.org/showthread.php?t=172525 single precision MVTools plugin (stable). R5 download bin x64 winnt libmvtools_sf_emt64.7z which suggests it's 64-bit only. I reckon I'm wrong :)
edit2: no, it is a part of it, it appears to be hidden down under the source folder https://github.com/IFeelBloated/vapoursynth-mvtools-sf/blob/master/src/mvmulti.py but is not included as a part of the Release .7z file ? It does appear to be x64 only which I can't use :(
feisty2
21st August 2016, 16:36
https://github.com/IFeelBloated/vapoursynth-mvtools-sf/blob/master/src/mvmulti.py
hydra3333
24th August 2016, 10:29
thank you.
feisty2
27th January 2017, 11:55
I kind of redesigned this thing, now it gives even more delicate sharpening results than the previous version did.
also the test scripts and pictures at #1 are updated, if anyone is still intrigued and would like to test it, feedbacks are still welcome.
I'll do the documentation for this thing in the next few days
Jindadil007
1st February 2017, 06:32
With new script...
video = core.d2v.Source(r'C:\DVD\Sample.d2v')
video = core.fmtc.bitdepth(video,bits=32,fulls=False,fulld=True)
deconv = Plum.Basic(video)
conv = Plum.Basic(video,mode="convolution")
sup = Plum.Super([video, None])
supdeconv = Plum.Super([video, deconv])
supconv = Plum.Super([conv, None])
video = Plum.Final([video, deconv, conv], [sup, supdeconv, supconv], strength=3.2, cutoff=16)
video.set_output()
I get following error :
Core freed but 441 filter instances still exist
Core freed but 441 filter instances still exist
Core freed but 1961764224 bytes still allocated in framebuffers
Core freed but 1961764224 bytes still allocated in framebuffers
feisty2
1st February 2017, 12:52
fine, post an unprocessed sample and I'll look into it if I have time
dipje
3rd February 2017, 15:56
That 'core freed' message as you say it is not an error, but a (debugging) message from Vapoursynth (or even VapoursynthEditor I think) and nothing to be concerned about.
Jindadil007
4th February 2017, 08:16
That 'core freed' message as you say it is not an error, but a (debugging) message from Vapoursynth (or even VapoursynthEditor I think) and nothing to be concerned about.
OK Thanks...yes i tested on Vseditor...
Mystery Keeper
4th February 2017, 10:49
That 'core freed' message as you say it is not an error, but a (debugging) message from Vapoursynth (or even VapoursynthEditor I think) and nothing to be concerned about.Wrong! It is an indication that some plugins in the scripts are not managing the resources properly, leading to memory leaks. Such things should be reported.
Jindadil007
4th February 2017, 13:14
Wrong! It is an indication that some plugins in the scripts are not managing the resources properly, leading to memory leaks. Such things should be reported.
I just used the updated script...Now I get better quality video with this script :
ref = Plum.Basic(video)
video = Plum.Final([video, ref], [Plum.Super(video), Plum.Super(ref)], strength=3.2, cutoff=16)
but memory leaks are still there...
Core freed but 441 filter instances still exist
Core freed but 441 filter instances still exist
Core freed but 1961764224 bytes still allocated in framebuffers
Core freed but 1961764224 bytes still allocated in framebuffers
These should be looked into...
feisty2
4th February 2017, 15:41
and the documentation is DONE!
also I changed quite a few things in Plum.Basic
r1:
initial release
feisty2
4th February 2017, 15:42
I just used the updated script...Now I get better quality video with this script :
ref = Plum.Basic(video)
video = Plum.Final([video, ref], [Plum.Super(video), Plum.Super(ref)], strength=3.2, cutoff=16)
but memory leaks are still there...
Core freed but 441 filter instances still exist
Core freed but 441 filter instances still exist
Core freed but 1961764224 bytes still allocated in framebuffers
Core freed but 1961764224 bytes still allocated in framebuffers
These should be looked into...
that's an (outdated?) nnedi3 bug.
Jindadil007
4th February 2017, 17:04
that's an (outdated?) nnedi3 bug.
Plum and VBm3d also have dependencies on Nnedi3 but this error does not show up while using those except Plum...You need to check !!!
feisty2
4th February 2017, 17:10
Plum and VBm3d also have dependencies on Nnedi3 but this error does not show up while using those except Plum...You need to check !!!
Plum is a python module
that message was there cuz a plugin was having a memory leak.
it's not my business to check anything.
feisty2
14th February 2017, 15:34
r2:
small tweaks, here and there
viccpa
16th February 2017, 12:05
Hi everyone
I can't make Plum to work.
I tried this script:
import vapoursynth as vs
import Plum
core = vs.get_core(accept_lowercase=True)
video = core.ffms2.Source("intermediate.avi")
video = core.fmtc.bitdepth(video,bits=32,fulls=False,fulld=True)
ref = Plum.Basic(video)
video = Plum.Final([video, ref], [Plum.Super(video), Plum.Super(ref)])
video = core.fmtc.bitdepth(video,bits=8,fulls=True,fulld=False)
video.set_output()
Script work flawlessly without Plum. With Plum vseditor stop responding after several seconds and not displaying any kind of error. Vspipe behave similar. I left it about 30 min. After 20 min processor jump from 24 % to 100 % and stay there.
I have Core2Quad q6600, win7-x64, Python 3.6.0_x64, latest Vapoursynth. Plum.py is on site-packages.
Any help is appreciated
viccpa
feisty2
16th February 2017, 13:39
You might wanna upgrade your computer before using Plum..
viccpa
16th February 2017, 14:30
Ok, i will tested out on my work (i7, 6-gen)
Thanks
feisty2
16th February 2017, 15:07
Also, use KNLMeansCL v0.7.7 when you're doing tests..
wonkey_monkey
21st February 2017, 17:27
You might wanna upgrade your computer before using Plum..
Always remember to add --verbose when asking feisty a question.
StainlessS
21st February 2017, 18:52
Always remember to add --verbose when asking feisty a question.
Nah, no good without the --help switch. :)
KingLir
7th March 2017, 10:45
Thanks! This looks like an amazing plugin.
I am getting the following errors with R36, latest versions of the script and all dependencies. Anyone have an idea what I should try to workaround this ?
Script evaluation failed:
Python exception: knlm.KNLMeansCL: fatal error!
(clCreateImage(d.mem_P[memU2]): CL_OUT_OF_HOST_MEMORY)
Traceback (most recent call last):
File "src/cython/vapoursynth.pyx", line 1712, in vapoursynth.vpy_evaluateScript (src/cython/vapoursynth.c:34991)
File "VIVTC_with_TComb_script.vpy", line 35, in <module>
deconv = Plum.Basic(clip)
File "/usr/local/opt/python3/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/Plum.py", line 234, in Basic
clip = internal.basic(core, src, strength, a, h, radius, wn, scale, cutoff)
File "/usr/local/opt/python3/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/Plum.py", line 130, in basic
sharp = inline(sharp)
File "/usr/local/opt/python3/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/Plum.py", line 118, in inline
sharp = core.NLErrors(ref, a, h[0], sharp)
File "/usr/local/opt/python3/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/Plum.py", line 80, in NLErrors
nlm = self.KNLMeansCL(pad, d=0, a=a, s=0, h=h, rclip=rclip)
File "src/cython/vapoursynth.pyx", line 1604, in vapoursynth.Function.__call__ (src/cython/vapoursynth.c:33131)
vapoursynth.Error: knlm.KNLMeansCL: fatal error!
(clCreateImage(d.mem_P[memU2]): CL_OUT_OF_HOST_MEMORY)
Are_
7th March 2017, 10:51
Script evaluation failed:
Python exception: knlm.KNLMeansCL: fatal error!
(clCreateImage(d.mem_P[memU2]): CL_OUT_OF_HOST_MEMORY)
Traceback (most recent call last):
File "src/cython/vapoursynth.pyx", line 1712, in vapoursynth.vpy_evaluateScript (src/cython/vapoursynth.c:34991)
File "VIVTC_with_TComb_script.vpy", line 35, in <module>
deconv = Plum.Basic(clip)
File "/usr/local/opt/python3/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/Plum.py", line 234, in Basic
clip = internal.basic(core, src, strength, a, h, radius, wn, scale, cutoff)
File "/usr/local/opt/python3/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/Plum.py", line 130, in basic
sharp = inline(sharp)
File "/usr/local/opt/python3/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/Plum.py", line 118, in inline
sharp = core.NLErrors(ref, a, h[0], sharp)
File "/usr/local/opt/python3/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/Plum.py", line 80, in NLErrors
nlm = self.KNLMeansCL(pad, d=0, a=a, s=0, h=h, rclip=rclip)
File "src/cython/vapoursynth.pyx", line 1604, in vapoursynth.Function.__call__ (src/cython/vapoursynth.c:33131)
vapoursynth.Error: knlm.KNLMeansCL: fatal error!
(clCreateImage(d.mem_P[memU2]): CL_OUT_OF_HOST_MEMORY)
Your computer specs are too low for this.
KingLir
7th March 2017, 11:06
Your computer specs are too low for this.
But I have a new computer.
OS:
macOS Sierra 10.12.3
CPU:
Processor Name: Intel Core i7
Processor Speed: 4 GHz
Number of Processors: 1
Total Number of Cores: 4
L2 Cache (per Core): 256 KB
L3 Cache: 8 MB
Memory:
24 GB
GPU:
Chipset Model: AMD Radeon R9 M395X
Type: GPU
Bus: PCIe
PCIe Lane Width: x16
VRAM (Total): 4096 MB
Vendor: ATI (0x1002)
Device ID: 0x6920
Revision ID: 0x0000
ROM Revision: 113-C905AA-799
EFI Driver Version: 01.00.799
Metal: Supported
Mystery Keeper
7th March 2017, 11:20
But I have a new computer.
CPU:
Processor Name: Intel Core i7
Processor Speed: 4 GHz
Number of Processors: 1
Total Number of Cores: 4
L2 Cache (per Core): 256 KB
L3 Cache: 8 MB
Memory:
24 GB
GPU:
Chipset Model: AMD Radeon R9 M395X
Type: GPU
Bus: PCIe
PCIe Lane Width: x16
VRAM (Total): 4096 MB
Vendor: ATI (0x1002)
Device ID: 0x6920
Revision ID: 0x0000
ROM Revision: 113-C905AA-799
EFI Driver Version: 01.00.799
Metal: Supported
Is your OS 32bit or are you using 32bit version of VS and plugins?
KingLir
7th March 2017, 11:25
Is your OS 32bit or are you using 32bit version of VS and plugins?
I am on macOS Sierra 10.12.3.
How can I verify the answer to your question ?
feisty2
24th June 2017, 09:46
r3:
new parameter "freq_margin"
poisondeathray
10th July 2017, 15:36
Some initial observations:
1) It's &^&%$*#* slow.
2) It crashes on large image sets (probably GPU memory issue, I tested on a 4GB card, but I wasn't about to switch to "CPU" mode yet for the KNLMeans part, because of possible different results. GPU-z does spike to 100% GPU/memory at times, but even on "smaller" images which complete ) .
3) It does mess up some test patterns. Partially because I didn't play with the settings enough - "you dummy you're supposed to use the 'right' settings"... But because it's so slow I can't try out different settings quickly on multiple sources at one go. Hard to give proper feedback or get a "feeling" for how it reacts. Then when I come back a few days later and if I didn't make notes I have to start over again.
You might ask who the &*^* watches test patterns?... Those low level tests have high predictive value where you're going to get problems manifesting in real life situations . If you can tune an algorithm to "pass" or at least look good on various patterns, without making a mess of others, then you've essentially got a "perfect" filter. (But you'll never get a perfect storm of "ideal" inputs, there's almost always some problems with source.) Or at the very least you can help to identify what areas you might improve on.
If I had time I'd try to give proper , more specific feedback, but this thing is so slow. The warp drive is down, and so are the impulse engines...
vBulletin® v3.8.11, Copyright ©2000-2025, vBulletin Solutions Inc.