3 ms·
1) Butteraugli Butteraugli is largerly a 'learned' metric, just very small with its ~200 parameters. I implemented possible components and tuned them and their
by JyrkiAlakuijala 4y ago
1) Butteraugli
Butteraugli is largerly a 'learned' metric, just very small with its ~200 parameters. I implemented possible components and tuned them and their interactions using methods similar to machine learning.
Describing it to humans should be possible, but going all the way is going to be the same as describing DNNs.
SSIMULACRA 2 is taking the same approach and getting far better results than a previous effort SSIMULACRA.
2) butteraugli distance invoked in the higher effort levels
JXL heuristics are optimized to give good butteraugli scores. These heuristics are mostly used at speeds 6 and 7.
Speed 8 and 9 no longer trust solely on the heuristics, but they try to optimize a constant butteraugli score. It is important to note that they don't do RD-optimization, so they are quite bad at lower quality -- they will drive the quality bad no matter what. There is a hard limit for not reducing the quality too much in relation to the heuristics at speeds 6 and 7, but it is not RD optimization. Small savings can lead to large degradations. This is ok with near visually lossless (quality 90+), but not good for low quality (< 50).
Butteraugli has slightly evolved through the times, the latest version is available in libjxl and used by cjxl at effort 8 and 9.
3) -d 1 “an image with at most Butteraugli distance 1” ?
It used to work that way, but there was some inflation of this concept, and often the maximum score is twice the asked value. Ideally the maximum should be the given value, but it is very expensive to guarantee. In guetzli we have such guarantees, but it runs 1000x slower.
4) p-norm
usual metrics (SSIM, PSNR, VMAF) aggregate error over the image to a single number using the 2nd norm
we use a higher norm, and actually a combination of norms. If you ask for a 3rd norm, it is an equal combination of 3rd, 6th and 12th norm. Using higher norms puts more emphasis on large errors somewhere than 2nd norm.
The better the quality in image compression, best human rater correlations can be found in higher norms. 3rd norm is a good allrounder, I'd usually use 6th norm myself. A lower norm can be better for automated optimization since the cost function will have less wrinkles.
5) colorspace
we don't have a good write up other than possibly the JPEG XL spec. there is a javascript implementation of xyb here: https://gist.github.com/mattdesl/c0ad8d54b3491c7fd39e222e698b2a30 https://gist.github.com/mattdesl/c0ad8d54b3491c7fd39e222e698...
Please consider joining the JPEG XL discord. I'm available for guiding you to learn more if you like.
- pizza 4y agoAwesome, thank you!