JPEG XL

Info

rules 57
github 35276
reddit 647

JPEG XL

tools 4225
website 1655
adoption 20712
image-compression-forum 0

General chat

welcome 3810
introduce-yourself 291
color 1414
photography 3435
other-codecs 23765
on-topic 24923
off-topic 22701

Voice Channels

General 2147

Archived

bot-spam 4380

benchmarks

Demiurge
2022-12-18 12:22:37
Yes clearly you need to have a large block size.
2022-12-18 05:29:50
But still it's kinda unexpected. It gets significant savings compared to JXL
diskorduser
2022-12-18 05:37:56
Compress multiple jxl with 7zip
yurume
Demiurge But still it's kinda unexpected. It gets significant savings compared to JXL
2022-12-18 06:53:59
jpeg coding is comparably much simpler than jxl, and it is easier to group images so that similarly coded images are near each other
2022-12-18 06:54:26
I'm less sure if solid compression with jxl will give a better result, I bet not
Demiurge
2022-12-18 07:29:00
Hmm... Come to think of it the 7z contained variants of similar images.
_wb_
2022-12-18 08:12:29
Theoretically we could do multi-frame jxl to store similar images more effectively.
Demiurge
2022-12-18 08:28:41
Too bad there isn't multi page like TIFF...
_wb_
2022-12-18 08:40:46
We can just define the max frame duration to mean 'pagebreak after this frame'.
Jyrki Alakuijala
jjido Trolling?
2022-12-22 09:20:08
Let's have patience with Dominik
DZgas Π–
2022-12-24 08:31:01
well **benchmarks:** avif speed 5 - 200+ min jpeg xl e 5 - 21 min avif speed 10 - 14 min jpeg xl e 3 - 6 min webp - 4 min jpeg xl e 1 - 4 min jpegXr - 3 min jpeg - 2 min
2022-12-24 08:32:09
to compress my 2000 images of all various and sizes
fab
2022-12-26 02:42:57
2022-12-26 02:43:11
JPEG XL QUALITY d 0.823 s8
2022-12-26 02:43:14
Good
2022-12-26 02:43:48
Better than AV2
2022-12-26 02:44:19
At least AV2 at cpu 3 is good and not too slow
2022-12-26 02:44:36
It received an inportant speed update this night
2022-12-26 02:45:07
https://gitlab.com/AOMediaCodec/avm/-/merge_requests/568/diffs?commit_id=cb9a9b283a56452e218866ad4a5b04f10cc7f794
2022-12-26 02:45:39
I've been setting min qp 41 max 88
diskorduser
fab JPEG XL QUALITY d 0.823 s8
2022-12-26 03:22:05
Is it not good at d 0.824?
fab
2022-12-26 03:37:11
I used comparable settings
daniilmaks
fab
2022-12-26 09:55:59
non-integer preview with nearest neighbor <:NotLikeThis:805132742819053610>
veluca
2022-12-30 12:05:08
``` Before, NEON: 42.940 MP/s 11.895 bits/pixel After, NEON: 48.943 MP/s 11.895 bits/pixel ``` now I feel silly for having ever trusted the autovectorizer xD
afed
2022-12-30 12:51:51
is `-mavx2` removed for lodepng only for compatibility or because it had no effect on performance?
veluca
2022-12-30 02:29:01
it shouldn't have a significant effect - and for sure it didn't for the main fast-lossless lib πŸ˜›
afed
afed ```Single-threaded: fjxl 0 gcc 12.2.0 69.384 MP/s 9.987 bits/pixel fjxl 0 clang 15.0.5 141.867 MP/s 9.987 bits/pixel fjxl 1 gcc 12.2.0 70.452 MP/s 9.381 bits/pixel fjxl 1 clang 15.0.5 146.944 MP/s 9.381 bits/pixel fjxl 2 gcc 12.2.0 69.940 MP/s 9.381 bits/pixel fjxl 2 clang 15.0.5 147.396 MP/s 9.381 bits/pixel cjxl 1 clang 15.0.5 3840 x 2160, geomean: 161.78 MP/s [96.17, 169.82], 200 reps, 0 threads.```
2022-12-30 02:33:09
```Single-threaded: fjxl 0 gcc 12.2.0 124.659 MP/s 9.987 bits/pixel fjxl 0 clang 15.0.5 166.137 MP/s 9.987 bits/pixel fjxl 1 gcc 12.2.0 125.233 MP/s 9.381 bits/pixel fjxl 1 clang 15.0.5 165.411 MP/s 9.381 bits/pixel fjxl 2 gcc 12.2.0 124.155 MP/s 9.381 bits/pixel fjxl 2 clang 15.0.5 165.838 MP/s 9.381 bits/pixel```
afed though using fast_lossless in cjxl is easier anyway 8 threads ```fjxl 0 gcc 12.2.0 258.911 MP/s 9.987 bits/pixel fjxl 0 clang 15.0.5 520.788 MP/s 9.987 bits/pixel fjxl 1 gcc 12.2.0 258.484 MP/s 9.381 bits/pixel fjxl 1 clang 15.0.5 516.224 MP/s 9.381 bits/pixel fjxl 2 gcc 12.2.0 250.453 MP/s 9.381 bits/pixel fjxl 2 clang 15.0.5 507.487 MP/s 9.381 bits/pixel cjxl 1 clang 15.0.5 3840 x 2160, geomean: inf MP/s [380.74, 687.32], 200 reps, 8 threads.```
2022-12-30 02:38:21
```8-threads: fjxl 0 gcc 12.2.0 428.648 MP/s 9.987 bits/pixel fjxl 0 clang 15.0.5 549.657 MP/s 9.987 bits/pixel fjxl 1 gcc 12.2.0 429.265 MP/s 9.381 bits/pixel fjxl 1 clang 15.0.5 540.739 MP/s 9.381 bits/pixel fjxl 2 gcc 12.2.0 411.817 MP/s 9.381 bits/pixel fjxl 2 clang 15.0.5 540.254 MP/s 9.381 bits/pixel```
veluca
2022-12-30 03:02:29
nice speedup with gcc πŸ˜„ what's the CPU?
afed
2022-12-30 03:20:40
haswell gen or something like that
afed ```Single-threaded: fjxl 0 gcc 12.2.0 124.659 MP/s 9.987 bits/pixel fjxl 0 clang 15.0.5 166.137 MP/s 9.987 bits/pixel fjxl 1 gcc 12.2.0 125.233 MP/s 9.381 bits/pixel fjxl 1 clang 15.0.5 165.411 MP/s 9.381 bits/pixel fjxl 2 gcc 12.2.0 124.155 MP/s 9.381 bits/pixel fjxl 2 clang 15.0.5 165.838 MP/s 9.381 bits/pixel```
2022-12-30 06:00:21
```Single-threaded: fjxl 0 gcc 12.2.0 157.706 MP/s 9.987 bits/pixel fjxl 0 clang 15.0.5 169.076 MP/s 9.987 bits/pixel fjxl 1 gcc 12.2.0 165.931 MP/s 9.381 bits/pixel fjxl 1 clang 15.0.5 170.519 MP/s 9.381 bits/pixel fjxl 2 gcc 12.2.0 163.878 MP/s 9.381 bits/pixel fjxl 2 clang 15.0.5 170.593 MP/s 9.381 bits/pixel```
afed ```8-threads: fjxl 0 gcc 12.2.0 428.648 MP/s 9.987 bits/pixel fjxl 0 clang 15.0.5 549.657 MP/s 9.987 bits/pixel fjxl 1 gcc 12.2.0 429.265 MP/s 9.381 bits/pixel fjxl 1 clang 15.0.5 540.739 MP/s 9.381 bits/pixel fjxl 2 gcc 12.2.0 411.817 MP/s 9.381 bits/pixel fjxl 2 clang 15.0.5 540.254 MP/s 9.381 bits/pixel```
2022-12-30 06:00:49
```8-threads: fjxl 0 gcc 12.2.0 544.475 MP/s 9.987 bits/pixel fjxl 0 clang 15.0.5 554.431 MP/s 9.987 bits/pixel fjxl 1 gcc 12.2.0 537.857 MP/s 9.381 bits/pixel fjxl 1 clang 15.0.5 554.869 MP/s 9.381 bits/pixel fjxl 2 gcc 12.2.0 523.112 MP/s 9.381 bits/pixel fjxl 2 clang 15.0.5 545.603 MP/s 9.381 bits/pixel```
veluca
2022-12-30 06:44:53
yup, as I thought, gcc's autovec was even worse than clang's πŸ˜›
afed
2022-12-31 03:03:17
some strange slowdown on 8-threads with effort 2, which is not repeatable on other images, gcc is the non per-channel version (and I noticed on low-color images even with gcc it can be faster) ```Single-threaded: fjxl 0 gcc 12.2.0 276.277 MP/s 3.620 bits/pixel fjxl 0 clang 15.0.5 269.002 MP/s 3.621 bits/pixel - fjxl 1 gcc 12.2.0 265.076 MP/s 3.683 bits/pixel fjxl 1 clang 15.0.5 281.107 MP/s 3.569 bits/pixel - fjxl 2 gcc 12.2.0 217.439 MP/s 3.572 bits/pixel fjxl 2 clang 15.0.5 217.790 MP/s 3.569 bits/pixel ----------------------- 8-threads: fjxl 0 gcc 12.2.0 839.034 MP/s 3.620 bits/pixel fjxl 0 clang 15.0.5 766.142 MP/s 3.621 bits/pixel - fjxl 1 gcc 12.2.0 841.951 MP/s 3.683 bits/pixel fjxl 1 clang 15.0.5 803.115 MP/s 3.569 bits/pixel - fjxl 2 gcc 12.2.0 462.759 MP/s 3.572 bits/pixel fjxl 2 clang 15.0.5 459.385 MP/s 3.569 bits/pixel```
2022-12-31 03:04:10
_wb_
2022-12-31 04:16:19
Could be the palette detection
veluca
2022-12-31 09:24:24
Yeah could be
jjido
2022-12-31 03:42:32
Nice gcc improvement
afed
afed ```Single-threaded: fjxl 0 gcc 12.2.0 157.706 MP/s 9.987 bits/pixel fjxl 0 clang 15.0.5 169.076 MP/s 9.987 bits/pixel fjxl 1 gcc 12.2.0 165.931 MP/s 9.381 bits/pixel fjxl 1 clang 15.0.5 170.519 MP/s 9.381 bits/pixel fjxl 2 gcc 12.2.0 163.878 MP/s 9.381 bits/pixel fjxl 2 clang 15.0.5 170.593 MP/s 9.381 bits/pixel```
2023-01-01 12:34:14
```Single-threaded: fjxl 0 gcc 12.2.0 151.658 MP/s 9.831 bits/pixel fjxl 0 clang 15.0.5 154.896 MP/s 9.831 bits/pixel - fjxl 1 gcc 12.2.0 153.658 MP/s 9.358 bits/pixel fjxl 1 clang 15.0.5 156.887 MP/s 9.358 bits/pixel - fjxl 2 gcc 12.2.0 148.912 MP/s 9.358 bits/pixel fjxl 2 clang 15.0.5 155.039 MP/s 9.358 bits/pixel```
afed ```8-threads: fjxl 0 gcc 12.2.0 544.475 MP/s 9.987 bits/pixel fjxl 0 clang 15.0.5 554.431 MP/s 9.987 bits/pixel fjxl 1 gcc 12.2.0 537.857 MP/s 9.381 bits/pixel fjxl 1 clang 15.0.5 554.869 MP/s 9.381 bits/pixel fjxl 2 gcc 12.2.0 523.112 MP/s 9.381 bits/pixel fjxl 2 clang 15.0.5 545.603 MP/s 9.381 bits/pixel```
2023-01-01 12:34:38
```8-threads: fjxl 0 gcc 12.2.0 454.044 MP/s 9.831 bits/pixel fjxl 0 clang 15.0.5 451.709 MP/s 9.831 bits/pixel - fjxl 1 gcc 12.2.0 450.117 MP/s 9.358 bits/pixel fjxl 1 clang 15.0.5 466.001 MP/s 9.358 bits/pixel - fjxl 2 gcc 12.2.0 439.819 MP/s 9.358 bits/pixel fjxl 2 clang 15.0.5 457.029 MP/s 9.358 bits/pixel```
veluca
afed ```Single-threaded: fjxl 0 gcc 12.2.0 151.658 MP/s 9.831 bits/pixel fjxl 0 clang 15.0.5 154.896 MP/s 9.831 bits/pixel - fjxl 1 gcc 12.2.0 153.658 MP/s 9.358 bits/pixel fjxl 1 clang 15.0.5 156.887 MP/s 9.358 bits/pixel - fjxl 2 gcc 12.2.0 148.912 MP/s 9.358 bits/pixel fjxl 2 clang 15.0.5 155.039 MP/s 9.358 bits/pixel```
2023-01-01 12:36:36
thanks but I just updated the PR xD
2023-01-01 12:36:50
should recover a little bit of speed
afed
2023-01-01 12:37:03
<:Poggers:805392625934663710> but it seems that the memory consumption also has become noticeably higher
veluca
2023-01-01 12:37:25
uhhhh, how so? by how much?
2023-01-01 12:37:30
that ought not to happen...
afed
2023-01-01 12:37:53
though I haven't really made a comparison, just a feeling
2023-01-01 12:40:55
maybe something has changed in my system since then
2023-01-01 12:43:12
on some big images, I think it's mostly palette images, before it was like 50-60% free memory when encoding, and now it's something like 5-10%
afed ```8-threads: fjxl 0 gcc 12.2.0 454.044 MP/s 9.831 bits/pixel fjxl 0 clang 15.0.5 451.709 MP/s 9.831 bits/pixel - fjxl 1 gcc 12.2.0 450.117 MP/s 9.358 bits/pixel fjxl 1 clang 15.0.5 466.001 MP/s 9.358 bits/pixel - fjxl 2 gcc 12.2.0 439.819 MP/s 9.358 bits/pixel fjxl 2 clang 15.0.5 457.029 MP/s 9.358 bits/pixel```
2023-01-01 12:58:02
updated
_wb_
2023-01-01 01:14:20
Memory use should be mostly just the size of the input buffer plus the size of the compressed output file plus something proportional to the number of threads used.
veluca
afed though I haven't really made a comparison, just a feeling
2023-01-01 01:26:28
btw since you're doing these benchmarks, it could be really useful if you also generated some flame graphs - I know what's faster on *my* system(s), but not on yours πŸ™‚
_wb_
2023-01-01 01:39:56
It would also be nice to have updated pareto front plots, with webp/libpng/lodepng/qoi/whatever
2023-01-01 01:41:19
Speed on one axis, density on another, for some kind of corpus
2023-01-01 01:41:47
(perhaps more clarifying is to do one photo corpus and one nonphoto corpus)
2023-01-01 01:42:33
(since both speed and compression tend to behave very differently for photo vs nonphoto)
afed
2023-01-01 01:45:14
generating flame graphs would be more difficult because I use windows and I do these tests on a remote server system, so this is just very basic and not very accurate comparisons yeah, having updated plots would be nice also maybe someone will try these benchmarks on their system and with clang (because they don't compile under windows) <https://github.com/nigeltao/qoir>
veluca
afed generating flame graphs would be more difficult because I use windows and I do these tests on a remote server system, so this is just very basic and not very accurate comparisons yeah, having updated plots would be nice also maybe someone will try these benchmarks on their system and with clang (because they don't compile under windows) <https://github.com/nigeltao/qoir>
2023-01-01 01:47:27
ah I see no idea how to do flame graphs on windows
2023-01-01 01:47:28
oh well
afed
2023-01-01 01:48:30
also it is an old xeon cpu, so I don't think it is very useful
sklwmp
afed generating flame graphs would be more difficult because I use windows and I do these tests on a remote server system, so this is just very basic and not very accurate comparisons yeah, having updated plots would be nice also maybe someone will try these benchmarks on their system and with clang (because they don't compile under windows) <https://github.com/nigeltao/qoir>
2023-01-02 02:45:05
I'm still trying to figure out how to update these benchmarks, it seems like the new fast_lossless changes have broken some things...
veluca
2023-01-02 02:50:37
uh that's not great
afed
2023-01-02 02:59:12
quite possible, perhaps because this benchmark is more deeply integrated
sklwmp
2023-01-02 03:14:21
It seems the easiest way to make them run is to replace the fast_lossless "adapter" with one that just calls the regular encoder with effort 1
2023-01-02 03:17:08
Or, maybe it's easier because I don't have too much experience with C++ code, so I don't know how to adapt the current fast-lossless adapter code to the new fast lossless encode APIs...
veluca
2023-01-02 10:21:39
can you point me to the code? I'll send you a PR πŸ™‚
DZgas Π–
2023-01-02 01:03:46
holy speed
2023-01-02 01:07:28
cjxl -e 1 q 100 same speed than optipng -o0 but size 25% less
afed
_wb_ It would also be nice to have updated pareto front plots, with webp/libpng/lodepng/qoi/whatever
2023-01-02 03:20:42
also +qoir and zpng, because when I compared, zpng encoding is not as fast as fjxl, with 4-5% worse compression and qoir is not faster than fjxl with 15% worse compression but what they are really good at is decoding speed
Cool Doggo
DZgas Π– cjxl -e 1 q 100 same speed than optipng -o0 but size 25% less
2023-01-02 04:20:45
isn't optipng absurdly slow?
DZgas Π–
Cool Doggo isn't optipng absurdly slow?
2023-01-02 04:21:33
? its option -o0 is faster png
Cool Doggo
2023-01-02 05:14:14
oh i didnt see the -o0 when i first read it
_wb_
2023-01-02 05:23:43
Isn't optipng -o0 basically just libpng with some heuristic choice of parameters?
Traneptora
Cool Doggo isn't optipng absurdly slow?
2023-01-02 05:36:56
if you use optipng with exhaustive parameter search it is, but 99% of the time you can just use `optipng -zc9 -zm8 -zs1 -f5` and get the best results or very close to
2023-01-02 05:37:22
it still does palette reduction and de-alpha-ing and all that stuff
BlueSwordM
Cool Doggo isn't optipng absurdly slow?
2023-01-02 05:42:02
Yes, which is why people use ECT instead.
Traneptora
2023-01-02 05:42:45
ECT is windows only
2023-01-02 05:42:48
and closed-source
2023-01-02 05:42:49
iirc
2023-01-02 05:42:57
unless I'm thinking of a different tool
BlueSwordM
Traneptora ECT is windows only
2023-01-02 05:43:25
No, ECT is open source and available on all platforms: https://github.com/fhanau/Efficient-Compression-Tool
Traneptora
2023-01-02 05:43:58
then which one am I thinking of lol
Cool Doggo
2023-01-02 05:44:03
pingo?
Traneptora
2023-01-02 05:44:08
maybe?
2023-01-02 05:44:15
but with optipng I just force specific zlib settings
2023-01-02 05:44:38
~~actually what I do is I use -zc1 -zm0 -zs1 -f5 and then recompress it with zopfli
2023-01-02 05:44:50
I wrote a script to recompress idat chunks with zopfli and pass others through
afed
2023-01-02 05:50:31
yeah, pingo is windows only and closed source (even though most likely based on ect) https://css-ig.net/benchmark/png-lossless
Traneptora
2023-01-02 05:54:55
I know it violates some licenses, we found it earlier
DZgas Π–
2023-01-02 10:32:37
πŸ₯± png πŸ₯±
Fox Wizard
2023-01-02 10:53:39
PNG <:5_chad:862625638238257183>
yurume
afed yeah, pingo is windows only and closed source (even though most likely based on ect) https://css-ig.net/benchmark/png-lossless
2023-01-02 11:21:42
"even though most likely based on ect" -> is it even likely? to my knowledge an image that went through ECT can be further compressed by pingo and vice versa (but only by an inch), and the parameter space of ECT seems tight enough---this holds true even after trying all parameters with ECT successively.
afed
2023-01-02 11:53:44
yes, judging from some old discussions pingo was based on ect, but with various changes and improvements since then, on older versions or for other formats the results and speed were very similar (with minor changes) though ect is also a collection of multiple codecs and optimizers (also with plenty of additional improvements), but it is open-source and does not claim to be some unique optimizer written from scratch but now it's unknown how many changes and how much own code has pingo, no doubt it has some even further improvements, but anyway, given the closed source there is no mention of authorship anywhere (at least it still uses mozjpeg, libwebp, zopfli and others)
2023-01-03 12:04:56
or wavif <https://css-ig.net/wavif>, I doubt it is an av1/avif encoder written from scratch (most likely libavif+libaom with some changes)
Traneptora
afed or wavif <https://css-ig.net/wavif>, I doubt it is an av1/avif encoder written from scratch (most likely libavif+libaom with some changes)
2023-01-03 12:19:34
it's got libaom in it according to `strings`
yurume
2023-01-03 12:20:19
yeah, I don't doubt pingo has big license issues, just that I'm not sure if it is based on ECT's changes to those libraries specifically.
Cool Doggo
Traneptora it's got libaom in it according to `strings`
2023-01-03 12:28:00
also according to the website
Traneptora
2023-01-03 12:28:16
ah, they added that disclaimer
2023-01-03 12:28:22
it wasn't there when we checked before
afed
2023-01-03 12:30:02
hmm, yeah
2023-01-03 12:34:28
about ect, it has some unique optimizations, also for mozjpeg, which pingo also added, it may not be a complete copy, but at least pingo took many tricks from ect as well
DZgas Π–
afed or wavif <https://css-ig.net/wavif>, I doubt it is an av1/avif encoder written from scratch (most likely libavif+libaom with some changes)
2023-01-03 01:48:18
I didn't understand what it even after reading. but the saddest thing is that it doesn't work. more precisely, it determines that a file with the same name is already in the folder, but if you just start compressing the image - does not save the output file lol
DZgas Π– I didn't understand what it even after reading. but the saddest thing is that it doesn't work. more precisely, it determines that a file with the same name is already in the folder, but if you just start compressing the image - does not save the output file lol
2023-01-03 01:49:03
afed
2023-01-03 01:55:59
and with other pngs or images with different names? or `wavif *.png` with png in the same folder?
DZgas Π–
afed and with other pngs or images with different names? or `wavif *.png` with png in the same folder?
2023-01-03 02:37:42
Wha I just want to compress one picture
afed
2023-01-03 02:43:25
I mean maybe it's a locked file or file name or something, for me wavif works fine
DZgas Π–
2023-01-03 11:19:35
meh
Traneptora
2023-01-04 02:01:48
I just compressed a PNG image with cjxl -e 1, and got 281k
2023-01-04 02:01:56
rebuilt from master, tried again, 219k
2023-01-04 02:01:58
it was also much faster
2023-01-04 02:02:23
451 MP/s compared to 19.58 MP/s
2023-01-04 02:02:34
although that's likely because fjxl just replaced -e 1 and I wasn't using fjxl before
2023-01-04 02:02:59
the original PNG is 123k but that's because it's zopflipnged, so a fair comparison there is cjxl -e 9, which was 108k
2023-01-04 02:03:07
although I bet a fair amount could be saved by using RLE
2023-01-04 02:04:37
the image in question is a screenshot of a website so there's a lot of redundancy
afed
2023-01-04 02:35:59
yeah, now fjxl and -e 1 should have the same speed and results, but it looks like I found some differences
veluca
Traneptora 451 MP/s compared to 19.58 MP/s
2023-01-04 01:06:52
eeeeh not bad πŸ˜„
afed
2023-01-04 03:42:37
<:monkaMega:809252622900789269> https://github.com/libjxl/libjxl/pull/2028
2023-01-04 03:43:55
something like bruteforcing everything?
veluca
2023-01-04 03:47:03
pretty much
w
2023-01-04 03:47:47
does it also try jpeg recompression vs pixels
afed
2023-01-04 03:54:22
`kGlacier = 0` so it's the opposite to --effort, for that reason -e 0 is not very convenient to add?
veluca
afed `kGlacier = 0` so it's the opposite to --effort, for that reason -e 0 is not very convenient to add?
2023-01-04 04:04:42
there is no real reason why -e 0 wouldn't be convenient to add
afed
2023-01-04 04:16:50
it's more common as in other encoders (cwebp, avifenc, aom, svt, ...), also it is reversed and shifted compared to the SpeedTier [0-9] `"Encode effort has to be in [1..10]");` ``` SpeedTier kGlacier = 0, kTortoise = 1, kKitten = 2, kSquirrel = 3, kWombat = 4, kHare = 5, kCheetah = 6, kFalcon = 7, kThunder = 8, kLightning = 9```
joppuyo
2023-01-04 04:31:36
”effort” used to be called ”speed” in cjxl before 0.5 I think
2023-01-04 04:32:15
It was a bit counter intuitive since larger speed value actually meant slower encoding
_wb_
2023-01-04 04:33:00
We had --speed 3 equal to falcon and --speed 9 equal to tortoise, so larger value meant slower / more effort
2023-01-04 04:33:19
So we renamed to --effort since that made more sense
2023-01-04 04:34:33
Libaom has cpu-used where larger values mean faster / less effort / less "cpu used", which also doesn't make sense but in the other way
2023-01-04 04:35:35
We assumed eventually we may want to have an effort setting that goes from 0 to 11
2023-01-04 04:36:59
Adding -e 11 might be a bit tricky, is SpeedTier a signed or unsigned type?
afed
2023-01-04 04:37:04
reversed is ok, but the shift creates even more confusion, also I mean that 0 is quite common for encoders, not only for libs ` -z <int> ............... activates lossless preset with given level in [0:fast, ..., 9:slowest]` `--cpu-used=<arg> Speed setting (0..6 in good mode, 6..9 in realtime mode)` ` -s,--speed S : Encoder speed (0-10, slowest-fastest, 'default' or 'd' for codec internal defaults. default speed: 6)`
2023-01-04 04:38:48
and `SpeedTier [0-9]` vs `effort [1..10]`
_wb_
2023-01-04 05:03:03
I suppose we could at some point split current e1 into e0 and e1
afed
afed <:monkaMega:809252622900789269> https://github.com/libjxl/libjxl/pull/2028
2023-01-04 07:05:26
```Doesn't really matter because this code never actually gets executed as of now :)``` -e 10 doesn't work yet? it would be good to know what parameters were used for best compression (jxlinfo I suppose only for some basic info) theoretically it would even be able to estimate the parameters and various combinations value in terms of speed and efficiency with machine learning, like is being done for some video encoders <:KekDog:805390049033191445> though it's complicated, especially if the encoder hasn't reached some optimization limits
DZgas Π–
afed <:monkaMega:809252622900789269> https://github.com/libjxl/libjxl/pull/2028
2023-01-04 07:22:58
<:monkaMega:809252622900789269> holy
_wb_
2023-01-04 07:24:54
-e 10 does work, but that code doesn't get executed because e10 just does e9 with various settings, so in that part of the code, the max actual effort is 9
veluca
2023-01-04 07:44:47
it's sloooow
2023-01-04 07:44:57
like, 12 minutes for 256x256 kind of slow
veluca like, 12 minutes for 256x256 kind of slow
2023-01-04 07:56:59
for those that don't want to do the math, it's ~100 pixels/second
DZgas Π–
veluca for those that don't want to do the math, it's ~100 pixels/second
2023-01-04 07:59:48
In terms of efficiency, will this be the most powerful lossless image compression ever?
veluca
2023-01-04 08:00:46
hard to say, probably things like LEA/EMMA can still do better
BlueSwordM
afed <:monkaMega:809252622900789269> https://github.com/libjxl/libjxl/pull/2028
2023-01-04 08:01:54
Now this is true guetzli mode <:KekDog:805390049033191445>
DZgas Π–
2023-01-04 08:02:21
NOW optipng -o7 -zm1-9 in jpeg xl <:KekDog:805390049033191445>
_wb_
2023-01-04 08:04:31
Effort 10 is still not quite exhaustive, but I don't think really exhaustive jxl is feasible to do within, say, the expected lifetime of the earth
DZgas Π–
2023-01-04 08:05:40
need release -e10 for cuda for mining now
Traneptora
2023-01-04 09:54:32
it doesn't look like that PR actually creates -e10
2023-01-04 09:54:40
it just makes it exist and defaults it to e9
2023-01-04 09:54:51
oh I missed enc_frame.cc nvm
JendaLinda
2023-01-07 08:48:54
Considering how AI is misused to do silly stuff these days, could AI perform the perfect lossless encoding? I wouldn't trust AI to do lossy, but nothing should go wrong with lossless.
veluca
JendaLinda Considering how AI is misused to do silly stuff these days, could AI perform the perfect lossless encoding? I wouldn't trust AI to do lossy, but nothing should go wrong with lossless.
2023-01-07 09:39:03
you'd think... I have been trying πŸ˜›
JendaLinda
2023-01-07 11:19:20
I know, right? JXL is very expressive, AI could take the full advantage of JXL's features.
_wb_
2023-01-07 11:23:23
Maybe some kind of hybrid approach where AI produces candidate nodes for an MA tree and a classical algorithm uses that to construct a tree, i.e. heavily pruning the search space using AI...
2023-01-07 11:24:56
Using AI directly to produce a good tree could work too, but it feels like a somewhat weirdly shaped search space, perhaps not sufficiently smooth for AI to work well
JendaLinda
2023-01-07 11:28:14
I thought it would be more like searching for the optimal tuning of the encoder. Also it could use patches more extensively.
Demiurge
2023-01-07 01:24:09
Can't wait to read all the marketing speak about the new AI powered JXL encoder
JendaLinda
2023-01-07 02:47:45
The question is, if it would be practical for general use.
pshufb
2023-01-07 03:12:07
early versions of libaom had a small neural network in part of the rate control algorithm iirc
2023-01-07 03:17:41
if jpeg-xl saw adoption, we would probably (eventually) see some way of using an FPGA for encode that would just brute-force some massively parallel MA tree searches
JendaLinda
2023-01-07 03:28:10
Also I was speaking strictly about lossless compression, where the failure would be only suboptimal compression. Having a lossy encoder with unpredictable results is imo bad idea.
BlueSwordM
pshufb early versions of libaom had a small neural network in part of the rate control algorithm iirc
2023-01-07 03:49:51
It still does for calculating mini GOP size. The problem is that it works for lossy, not lossless.
Demiurge
2023-01-07 05:48:35
libopus uses a neural network apparently to switch between SILK and CELT
2023-01-07 05:49:57
Stockfish uses a neural network in the evaluation function to help judge the favorability of a chess position
2023-01-07 05:51:28
I'm sure neural networks can be useful for at least a small subset of the tasks involved in lossy coding.
2023-01-07 05:51:58
After all lossy compression uses a lot of the same techniques as lossless
2023-01-07 05:52:06
Such an entropy coding
pshufb
2023-01-08 04:35:47
the stockfish approach isn’t particularly helpful, as we already have very good algorithms for classically determining various metrics for determining loss. if we’re going to allude to chess, the standard approach for this sort of thing (have some end goal, many possible choices at each step, want to execute a search that tells you what a good next step is) in industry is very similar to alphazero/lc0/etc: MCTS + some neural network that provides policy priors to your MCTS algorithm
2023-01-08 04:39:34
gets used in everything from vehicle path planning (which I found neat) to Go. it does really well even when the search space is very strange. the problem is that training is far from trivial (the katago tricks aren’t likely to help that much either), parallelizing MCTS is extremely annoying, and the compute cost is probably insane even at inference time
afed
2023-01-12 12:29:21
very visible blocking in red (enc-dec-jpegli-bd16 compared to mozjpeg) <https://unsplash.com/photos/eLHsbiCipc8> resized from the original size to 1920x2688 jpegli jpeg q80 + png (with jpegli-bd16-dec)
2023-01-12 12:29:34
mozjpeg
2023-01-12 12:31:14
q91 (better)
2023-01-12 12:31:29
mozjpeg
2023-01-12 12:39:35
q80 jpegli - mozjpeg
Traneptora
2023-01-12 02:58:21
in particular here
2023-01-12 02:58:28
2023-01-12 02:58:32
you also get blockiness here
2023-01-12 02:58:42
corresponding mozjpeg
afed
2023-01-12 05:00:16
and something is broken for this random manga cover ```Encoding kPixels Bytes BPP Max norm SSIMULACRA2 pnorm ------------------------------------------------------------------------------------------------------------- jpeg:enc-jpegli:q80:dec-jpegli:bd16 2219 490732 1.7688817 89.95503998 12.64377208 16.13637347 jpeg:enc-jpegli:q81:dec-jpegli:bd16 2219 502626 1.8117545 90.36291504 8.12862842 16.65479380 jpeg:enc-jpegli:q82:dec-jpegli:bd16 2219 520392 1.8757935 90.37894440 9.47885354 16.42418035 jpeg:enc-jpegli:q83:dec-jpegli:bd16 2219 540914 1.9497666 91.79074860 6.58171330 17.35863986 jpeg:enc-jpegli:q84:dec-jpegli:bd16 2219 555072 2.0008002 90.26593781 3.75515449 17.10367704 jpeg:enc-jpegli:q85:dec-jpegli:bd16 2219 571453 2.0598468 97.88761139 2.36206109 18.28821461 jpeg:enc-jpegli:q86:dec-jpegli:bd16 2219 600188 2.1634243 87.28949738 -2.93264907 17.95547487 jpeg:enc-jpegli:q87:dec-jpegli:bd16 2219 628512 2.2655204 102.27484131 -10.71859464 20.35412859 jpeg:enc-jpegli:q88:dec-jpegli:bd16 2219 656425 2.3661350 102.30054474 -2.64473454 20.03825618 jpeg:enc-jpegli:q89:dec-jpegli:bd16 2219 685623 2.4713815 102.17871857 -9.81744339 20.38091220 jpeg:enc-jpegli:q90:dec-jpegli:bd16 2219 713075 2.5703343 98.04635620 -12.78606165 20.04473534 jpeg:enc-jpegli:q91:dec-jpegli:bd16 2219 734233 2.6466000 98.00187683 -6.78548521 18.76490758 jpeg:enc-jpegli:q92:dec-jpegli:bd16 2219 782309 2.8198937 107.66781616 4.49950387 19.49597085```
2023-01-12 05:02:50
seems to be a decoder for non-xyb jpegli
2023-01-12 05:07:36
```Encoding kPixels Bytes BPP Max norm SSIMULACRA2 pnorm ----------------------------------------------------------------------------------------------------------------- jpeg:q83 2219 610022 2.1988718 2.79324722 86.21449334 0.83514355 jpeg:q83:dec-jpegli 2219 610022 2.1988718 77.86694336 29.41114753 13.35322977 jpeg:q83:dec-jpegli:bd16 2219 610022 2.1988718 77.86669922 29.42202507 13.35255489 jpeg:enc-jpegli:q88 2219 656425 2.3661350 1.60545588 84.36873286 0.57766172 jpeg:enc-jpegli:q88:dec-jpegli 2219 656425 2.3661350 102.29298401 -2.65251884 20.03833136 jpeg:enc-jpegli:q88:dec-jpegli:bd16 2219 656425 2.3661350 102.30054474 -2.64473454 20.03825618 jpeg:enc-jpegli:xyb:q93 2219 678863 2.4470145 1.44632685 84.90054819 0.50148861 jpeg:enc-jpegli:xyb:q93:dec-jpegli 2219 678863 2.4470145 1.50155556 84.68694477 0.50180967 jpeg:enc-jpegli:xyb:q93:dec-jpegli:bd16 2219 678863 2.4470145 1.44506371 85.08306567 0.48657300 jxl:q96:3 2219 507761 1.8302640 1.56963921 88.14221072 0.59136184 jxl:q96:4 2219 511876 1.8450969 1.57371497 88.68837783 0.58998264 jxl:q96:5 2219 464771 1.6753032 1.45894945 87.44297991 0.54723276 jxl:q96:6 2219 468528 1.6888456 1.26435709 87.60899208 0.53606737```
2023-01-12 05:09:08
Demiurge
afed q80 jpegli - mozjpeg
2023-01-12 05:15:54
that's really bad. also this is a really good codec testing image because of all of the different shades of red.
2023-01-12 05:18:58
Any image that has lots of fine details in red shaded areas with a lot of detailed bright and dark areas makes a great codec stress test
DZgas Π–
2023-01-13 10:17:55
jpeg xl compresses 1-bit images better than 1-bit BMP + paq8px πŸ‘
Kampidh
2023-01-15 08:50:40
some more fjxl benchmarks using my own artworks. not a fair comparison since all the PNGs were encoded with libpng compression level 8, but pretty amazing that fjxl aced it most of the time~
afed
2023-01-15 04:26:05
how about trying fast_lossless instead of cjxl -e 1 on these images? -e 1 does not identify palette images as fast_lossless for png
afed ```Encoding kPixels Bytes BPP Max norm SSIMULACRA2 pnorm ----------------------------------------------------------------------------------------------------------------- jpeg:q83 2219 610022 2.1988718 2.79324722 86.21449334 0.83514355 jpeg:q83:dec-jpegli 2219 610022 2.1988718 77.86694336 29.41114753 13.35322977 jpeg:q83:dec-jpegli:bd16 2219 610022 2.1988718 77.86669922 29.42202507 13.35255489 jpeg:enc-jpegli:q88 2219 656425 2.3661350 1.60545588 84.36873286 0.57766172 jpeg:enc-jpegli:q88:dec-jpegli 2219 656425 2.3661350 102.29298401 -2.65251884 20.03833136 jpeg:enc-jpegli:q88:dec-jpegli:bd16 2219 656425 2.3661350 102.30054474 -2.64473454 20.03825618 jpeg:enc-jpegli:xyb:q93 2219 678863 2.4470145 1.44632685 84.90054819 0.50148861 jpeg:enc-jpegli:xyb:q93:dec-jpegli 2219 678863 2.4470145 1.50155556 84.68694477 0.50180967 jpeg:enc-jpegli:xyb:q93:dec-jpegli:bd16 2219 678863 2.4470145 1.44506371 85.08306567 0.48657300 jxl:q96:3 2219 507761 1.8302640 1.56963921 88.14221072 0.59136184 jxl:q96:4 2219 511876 1.8450969 1.57371497 88.68837783 0.58998264 jxl:q96:5 2219 464771 1.6753032 1.45894945 87.44297991 0.54723276 jxl:q96:6 2219 468528 1.6888456 1.26435709 87.60899208 0.53606737```
2023-01-17 12:37:24
<https://github.com/libjxl/libjxl/pull/2076> still buggy dec-jpegli, but `disable adaptive quantization` has better metrics scores, although visually I see more artifacts ```Encoding kPixels Bytes Max norm SSIMULACRA2 pnorm BPP*pnorm ------------------------------------------------------------------------------------------------ jpeg:enc-jpegli:q88 2219 656425 1.60545588 84.36873286 0.57766172 1.366825617010 jpeg:enc-jpegli:q88:noaq 2219 630827 1.55808163 89.06986108 0.55069406 1.252203945743```
Demiurge
Demiurge But still it's kinda unexpected. It gets significant savings compared to JXL
2023-01-21 12:37:35
A follow up to this. When compressing multiple JPEGs (variants of the same image with edits, saved with the same encoder and encode settings) LZMA2 with a large block size compresses the images more effectively when they are in JPEG format compared to losslessly transforming them to JXL first before archiving with LZMA2 (3 files, 2 threads). So there must be less entropy or more correlation in the files in JPEG format compared to after they are losslessly transformed than JXL. The archive size is larger.
2023-01-21 12:38:35
It's surprising that such a generic archiving tool is so effective at reducing the size of JPEG
_wb_
2023-01-21 02:11:19
Well JPEG encodes blocks independently, so if there are repeated blocks then if the huffman and quant tables are the same and you're lucky with byte alignment, the compressed bitstream will be identical in some regions, which will be good for general-purpose compressors.
2023-01-21 02:13:07
Likely if you do more restarts in jpeg (which makes the files larger), the total compressed archive size will be even smaller.
2023-01-21 02:13:32
(since byte alignment will be better)
Demiurge
2023-01-21 08:32:43
If it's so independent then why does an error cause the rest of the image to look funky until the end?
_wb_
2023-01-21 12:36:10
Because alignment will get messed up, and it's still sharing a single huffman stream
2023-01-23 03:42:43
I took a look at the dataset described in https://ds.jpeg.org/documents/jpegaic/wg1n100334-097-ICQ-JPEG_AIC_CTC_for_subjective_quality_assessment.pdf, where they estimated JNDs for images compressed with JPEG, J2K, JXL, HEIC and VVC. Looking at the average curves linking metric scores to JNDs, I see the following biases in metrics: PSNR (either PSNR-Y or ImageMagick’s default PSNR): overestimates HEIC, VVC, J2K. Underestimates JXL and JPEG. Butteraugli: overestimates HEIC and JXL. Underestimates JPEG. (more or less neutral to VVC and J2K) SSIMULACRA2: overestimates HEIC. Underestimates JPEG. (more or less neutral to the rest: VVC, J2K, JXL) PSNR-HVS: overestimates HEIC. Underestimates JXL and JPEG. (more or less neutral to VVC and J2K) MS-SSIM: overestimates HEIC. Underestimates JPEG. (more or less neutral to the rest) VMAF: overestimates J2K at all qualities, HEIC at higher qualities and JPEG at lower qualities. Underestimates JXL at all qualities, and VVC, HEIC at lower qualities and JPEG at higher qualities. DSSIM: overestimates HEIC and VVC. Underestimates JPEG, JXL at lower qualities and J2K at higher qualities.
2023-01-23 03:43:05
Interestingly, basically all metrics are giving HEIC higher scores than they should, and many metrics are underestimating JPEG and JXL.
2023-01-23 03:47:28
2023-01-23 03:48:23
2023-01-23 03:49:14
the above is without image 4, for which I think the JND results are messed up
2023-01-23 03:50:14
``` metric | Kendall | Spearman | Pearson PSNR | 0.41334 | 0.56043 | 0.57799 Butteraugli max-norm | -0.5760 | -0.7387 | -0.7025 Butteraugli 3-norm | -0.6338 | -0.8076 | -0.7950 SSIMULACRA 2 | 0.74869 | 0.90119 | 0.88999 PSNR-HVS | 0.66028 | 0.83201 | 0.82635 SSIM | 0.37014 | 0.50133 | 0.36463 MS-SSIM | 0.67328 | 0.84114 | 0.80623 VMAF | 0.67723 | 0.84157 | 0.81652 DSSIM | -0.7025 | -0.8660 | -0.8218 ```
2023-01-23 03:50:51
looks like a good validation for ssimulacra2
afed
2023-01-24 01:56:03
sadly the jpegli-decoder is still broken, looks like some incorrectly decoded 8x8 blocks (even for some xyb encodings) <https://unsplash.com/photos/zHcI7_TA5Yg>
2023-01-24 01:56:32
```Encoding kPixels Bytes BPP Max norm SSIMULACRA2 pnorm -------------------------------------------------------------------------------------------------------- jpeg:enc-jpegli:q77:dec-jpegli:bd16 4270 506467 0.9487932 136.28828430 -19.66365224 28.69669831 jpeg:enc-jpegli:q78:dec-jpegli:bd16 4270 517770 0.9699678 136.17242432 -19.65461055 28.69878841 jpeg:enc-jpegli:q79:dec-jpegli:bd16 4270 539942 1.0115038 136.35876465 -19.51233277 28.69276517 jpeg:enc-jpegli:q80:dec-jpegli:bd16 4270 558322 1.0459361 136.31909180 -18.50234908 29.04873686 jpeg:enc-jpegli:q81:dec-jpegli:bd16 4270 584871 1.0956718 135.07215881 -13.64525888 27.86054494 jpeg:enc-jpegli:q82:dec-jpegli:bd16 4270 605818 1.1349130 135.13157654 -13.09396603 27.83956163 jpeg:enc-jpegli:q83:dec-jpegli:bd16 4270 626056 1.1728260 135.04438782 -14.04418433 27.88352163 jpeg:enc-jpegli:q84:dec-jpegli:bd16 4270 658955 1.2344576 135.62678528 -17.32125784 28.63664983 jpeg:enc-jpegli:q85:dec-jpegli:bd16 4270 676199 1.2667617 135.75309753 -17.21376382 28.63755474 jpeg:enc-jpegli:q86:dec-jpegli:bd16 4270 727943 1.3636967 135.72795105 -22.43448568 28.95907792 jpeg:enc-jpegli:q87:dec-jpegli:bd16 4270 750174 1.4053433 131.95985413 4.48420770 24.67779789 jpeg:enc-jpegli:q88:dec-jpegli:bd16 4270 797480 1.4939643 156.63969421 -5.87667081 27.41512382 jpeg:enc-jpegli:q89:dec-jpegli:bd16 4270 833215 1.5609087 156.64601135 -8.21494064 27.60544189 jpeg:enc-jpegli:q90:dec-jpegli:bd16 4270 858588 1.6084413 134.41885376 -0.62536848 25.45361695 jpeg:enc-jpegli:q91:dec-jpegli:bd16 4270 915529 1.7151121 158.59341431 -11.43010326 29.72990926 jpeg:enc-jpegli:q92:dec-jpegli:bd16 4270 990559 1.8556701 158.30972290 -14.02209638 29.97293925 jpeg:enc-jpegli:q93:dec-jpegli:bd16 4270 1028262 1.9263012 159.12585449 -4.53117767 28.32048932```
2023-01-24 01:56:53
```Encoding kPixels Bytes BPP Max norm SSIMULACRA2 pnorm ------------------------------------------------------------------------------------------------------ jpeg:enc-jpegli:q77:xyb:dec-jpegli 4270 440755 0.8256912 2.57653522 73.83731587 1.08323953 jpeg:enc-jpegli:q78:xyb:dec-jpegli 4270 448209 0.8396552 2.46053791 74.12077303 1.07571795 jpeg:enc-jpegli:q79:xyb:dec-jpegli 4270 469636 0.8797956 2.31674862 75.04041524 1.02801235 jpeg:enc-jpegli:q80:xyb:dec-jpegli 4270 481438 0.9019050 2.27511597 75.40451765 1.00002946 jpeg:enc-jpegli:q81:xyb:dec-jpegli 4270 511347 0.9579352 2.22766042 76.61113140 0.94573886 jpeg:enc-jpegli:q82:xyb:dec-jpegli 4270 520716 0.9754867 2.11857700 77.09132426 0.94801233 jpeg:enc-jpegli:q83:xyb:dec-jpegli 4270 546882 1.0245049 2.13817835 78.24623401 0.90216890 jpeg:enc-jpegli:q84:xyb:dec-jpegli 4270 573754 1.0748457 2.13797522 78.86015560 0.87542524 jpeg:enc-jpegli:q85:xyb:dec-jpegli 4270 593800 1.1123990 1.99826527 79.57994231 0.82144321 jpeg:enc-jpegli:q86:xyb:dec-jpegli 4270 626401 1.1734723 1.80742538 80.06207563 0.78408051 jpeg:enc-jpegli:q87:xyb:dec-jpegli 4270 665462 1.2466475 1.79822123 81.04907356 0.73527516 jpeg:enc-jpegli:q88:xyb:dec-jpegli 4270 686695 1.2864245 1.62478518 81.31783304 0.70662563 jpeg:enc-jpegli:q89:xyb:dec-jpegli 4270 734165 1.3753527 1.70427763 82.28476303 0.81580474 jpeg:enc-jpegli:q90:xyb:dec-jpegli 4270 778534 1.4584717 1.46675730 82.80288597 0.62502899 jpeg:enc-jpegli:q91:xyb:dec-jpegli 4270 830618 1.5560436 1.73360562 83.61609663 0.86297484 jpeg:enc-jpegli:q92:xyb:dec-jpegli 4270 891308 1.6697376 1.56471860 84.36080824 0.71326347 jpeg:enc-jpegli:q93:xyb:dec-jpegli 4270 959696 1.7978527 1.55117285 84.59052930 0.70106243```
2023-01-24 01:57:40
<https://unsplash.com/photos/7Aj3WuHOgtM>
2023-01-24 01:57:56
xyb
2023-01-24 01:58:34
```Encoding kPixels Bytes BPP Max norm SSIMULACRA2 pnorm ---------------------------------------------------------------------------------------------------- jpeg:enc-jpegli:q77:dec-jpegli 5532 486612 0.7036439 133.04379272 -14.49615687 22.28802677 jpeg:enc-jpegli:q78:dec-jpegli 5532 501600 0.7253167 133.05514526 -12.27793198 22.24198255 jpeg:enc-jpegli:q79:dec-jpegli 5532 514678 0.7442275 135.58435059 -19.15237382 23.69608168 jpeg:enc-jpegli:q80:dec-jpegli 5532 529287 0.7653522 135.58409119 -16.72918914 22.48391403 jpeg:enc-jpegli:q81:dec-jpegli 5532 549683 0.7948450 127.24156189 -2.72853989 20.07771740 jpeg:enc-jpegli:q82:dec-jpegli 5532 568713 0.8223625 127.27835083 -4.17448154 20.07561954 jpeg:enc-jpegli:q83:dec-jpegli 5532 591524 0.8553473 125.41096497 -5.51799462 19.81012298 jpeg:enc-jpegli:q84:dec-jpegli 5532 611947 0.8848791 125.40847015 -7.13729803 20.03092070 jpeg:enc-jpegli:q85:dec-jpegli 5532 643516 0.9305281 137.93171692 -11.79842853 22.90897979 jpeg:enc-jpegli:q86:dec-jpegli 5532 669916 0.9687026 137.95727539 -15.22964194 22.74869022 jpeg:enc-jpegli:q87:dec-jpegli 5532 714181 1.0327101 68.47742462 -9.79819919 13.67024590 jpeg:enc-jpegli:q88:dec-jpegli 5532 745805 1.0784386 68.33783722 -19.76422160 13.83092302 jpeg:enc-jpegli:q89:dec-jpegli 5532 799633 1.1562742 73.66311646 -18.14493015 12.63958809 jpeg:enc-jpegli:q90:dec-jpegli 5532 812859 1.1753991 66.94897461 -19.09748908 12.06024470 jpeg:enc-jpegli:q91:dec-jpegli 5532 881885 1.2752111 107.37985992 -18.71724947 16.67591801 jpeg:enc-jpegli:q92:dec-jpegli 5532 956604 1.3832552 107.28179169 -16.90508134 16.83103876 jpeg:enc-jpegli:q93:dec-jpegli 5532 1031530 1.4915987 78.80941772 -22.08231051 14.14055037```
2023-01-24 01:58:43
```Encoding kPixels Bytes BPP Max norm SSIMULACRA2 pnorm ------------------------------------------------------------------------------------------------------ jpeg:enc-jpegli:q77:xyb:dec-jpegli 5532 435254 0.6293800 9.88808060 67.96276485 1.91975512 jpeg:enc-jpegli:q78:xyb:dec-jpegli 5532 445074 0.6435797 9.54435825 68.38660486 1.86519500 jpeg:enc-jpegli:q79:xyb:dec-jpegli 5532 460681 0.6661476 9.59946251 68.92551213 1.86795871 jpeg:enc-jpegli:q80:xyb:dec-jpegli 5532 472928 0.6838568 2.48481417 70.67981377 1.04270666 jpeg:enc-jpegli:q81:xyb:dec-jpegli 5532 492416 0.7120366 6.40297413 70.70687798 1.35580168 jpeg:enc-jpegli:q82:xyb:dec-jpegli 5532 512724 0.7414020 6.45031261 71.31698220 1.34709810 jpeg:enc-jpegli:q83:xyb:dec-jpegli 5532 530277 0.7667838 10.81851101 70.26461499 1.90298127 jpeg:enc-jpegli:q84:xyb:dec-jpegli 5532 549742 0.7949303 11.13633347 69.58965599 2.12506658 jpeg:enc-jpegli:q85:xyb:dec-jpegli 5532 570472 0.8249060 11.09750748 70.08839280 2.11339572 jpeg:enc-jpegli:q86:xyb:dec-jpegli 5532 601213 0.8693577 6.73269033 73.36321044 1.32186981 jpeg:enc-jpegli:q87:xyb:dec-jpegli 5532 626568 0.9060212 1.93637526 75.24245529 0.86236665 jpeg:enc-jpegli:q88:xyb:dec-jpegli 5532 661893 0.9571013 12.80215454 72.66036916 2.16158320 jpeg:enc-jpegli:q89:xyb:dec-jpegli 5532 700917 1.0135303 12.79846287 73.14141777 2.15291847 jpeg:enc-jpegli:q90:xyb:dec-jpegli 5532 735382 1.0633669 12.82965851 73.57953140 2.14843630 jpeg:enc-jpegli:q91:xyb:dec-jpegli 5532 779395 1.1270099 1.62044144 77.40647337 0.76951391 jpeg:enc-jpegli:q92:xyb:dec-jpegli 5532 852897 1.2332943 1.54923189 78.33942532 0.72773519 jpeg:enc-jpegli:q93:xyb:dec-jpegli 5532 913782 1.3213344 1.47751951 79.08779795 0.68925159```
afed xyb
2023-01-24 01:59:25
Traneptora
afed
2023-01-24 03:43:02
open a bug report, that's the usual suggestion they give
afed
2023-01-24 05:04:23
yeah, I did that already πŸ₯³ <https://github.com/libjxl/libjxl/pull/2097>
afed ```Encoding kPixels Bytes BPP Max norm SSIMULACRA2 pnorm -------------------------------------------------------------------------------------------------------- jpeg:enc-jpegli:q77:dec-jpegli:bd16 4270 506467 0.9487932 136.28828430 -19.66365224 28.69669831 jpeg:enc-jpegli:q78:dec-jpegli:bd16 4270 517770 0.9699678 136.17242432 -19.65461055 28.69878841 jpeg:enc-jpegli:q79:dec-jpegli:bd16 4270 539942 1.0115038 136.35876465 -19.51233277 28.69276517 jpeg:enc-jpegli:q80:dec-jpegli:bd16 4270 558322 1.0459361 136.31909180 -18.50234908 29.04873686 jpeg:enc-jpegli:q81:dec-jpegli:bd16 4270 584871 1.0956718 135.07215881 -13.64525888 27.86054494 jpeg:enc-jpegli:q82:dec-jpegli:bd16 4270 605818 1.1349130 135.13157654 -13.09396603 27.83956163 jpeg:enc-jpegli:q83:dec-jpegli:bd16 4270 626056 1.1728260 135.04438782 -14.04418433 27.88352163 jpeg:enc-jpegli:q84:dec-jpegli:bd16 4270 658955 1.2344576 135.62678528 -17.32125784 28.63664983 jpeg:enc-jpegli:q85:dec-jpegli:bd16 4270 676199 1.2667617 135.75309753 -17.21376382 28.63755474 jpeg:enc-jpegli:q86:dec-jpegli:bd16 4270 727943 1.3636967 135.72795105 -22.43448568 28.95907792 jpeg:enc-jpegli:q87:dec-jpegli:bd16 4270 750174 1.4053433 131.95985413 4.48420770 24.67779789 jpeg:enc-jpegli:q88:dec-jpegli:bd16 4270 797480 1.4939643 156.63969421 -5.87667081 27.41512382 jpeg:enc-jpegli:q89:dec-jpegli:bd16 4270 833215 1.5609087 156.64601135 -8.21494064 27.60544189 jpeg:enc-jpegli:q90:dec-jpegli:bd16 4270 858588 1.6084413 134.41885376 -0.62536848 25.45361695 jpeg:enc-jpegli:q91:dec-jpegli:bd16 4270 915529 1.7151121 158.59341431 -11.43010326 29.72990926 jpeg:enc-jpegli:q92:dec-jpegli:bd16 4270 990559 1.8556701 158.30972290 -14.02209638 29.97293925 jpeg:enc-jpegli:q93:dec-jpegli:bd16 4270 1028262 1.9263012 159.12585449 -4.53117767 28.32048932```
2023-01-24 05:04:39
```Encoding kPixels Bytes BPP Max norm SSIMULACRA2 pnorm ------------------------------------------------------------------------------------------------------ jpeg:enc-jpegli:q77:dec-jpegli:bd16 4270 506467 0.9487932 2.72684336 77.56081328 0.95369086 jpeg:enc-jpegli:q78:dec-jpegli:bd16 4270 517770 0.9699678 2.65700030 77.55883662 0.93917341 jpeg:enc-jpegli:q79:dec-jpegli:bd16 4270 539942 1.0115038 2.77928925 78.53916234 0.89930998 jpeg:enc-jpegli:q80:dec-jpegli:bd16 4270 558322 1.0459361 2.85500360 78.85773219 0.88113728 jpeg:enc-jpegli:q81:dec-jpegli:bd16 4270 584871 1.0956718 2.57502866 79.90858541 0.82815398 jpeg:enc-jpegli:q82:dec-jpegli:bd16 4270 605818 1.1349130 2.63401079 80.42285602 0.80861482 jpeg:enc-jpegli:q83:dec-jpegli:bd16 4270 626056 1.1728260 2.48551631 80.83351512 0.78469510 jpeg:enc-jpegli:q84:dec-jpegli:bd16 4270 658955 1.2344576 2.26984620 81.85873616 0.72832107 jpeg:enc-jpegli:q85:dec-jpegli:bd16 4270 676199 1.2667617 2.23942900 82.35300166 0.71008788 jpeg:enc-jpegli:q86:dec-jpegli:bd16 4270 727943 1.3636967 1.93581724 83.15091152 0.65912585 jpeg:enc-jpegli:q87:dec-jpegli:bd16 4270 750174 1.4053433 1.77398717 83.57974444 0.63642079 jpeg:enc-jpegli:q88:dec-jpegli:bd16 4270 797480 1.4939643 1.72937787 83.69506242 0.59862877 jpeg:enc-jpegli:q89:dec-jpegli:bd16 4270 833215 1.5609087 1.58554494 84.24703823 0.56027005 jpeg:enc-jpegli:q90:dec-jpegli:bd16 4270 858588 1.6084413 1.63803422 84.49327837 0.55449904 jpeg:enc-jpegli:q91:dec-jpegli:bd16 4270 915529 1.7151121 1.59495139 85.86511935 0.50916213 jpeg:enc-jpegli:q92:dec-jpegli:bd16 4270 990559 1.8556701 1.33545852 86.14141714 0.46475208 jpeg:enc-jpegli:q93:dec-jpegli:bd16 4270 1028262 1.9263012 1.30757749 86.92874562 0.44365930```
afed ```Encoding kPixels Bytes BPP Max norm SSIMULACRA2 pnorm ------------------------------------------------------------------------------------------------------ jpeg:enc-jpegli:q77:xyb:dec-jpegli 5532 435254 0.6293800 9.88808060 67.96276485 1.91975512 jpeg:enc-jpegli:q78:xyb:dec-jpegli 5532 445074 0.6435797 9.54435825 68.38660486 1.86519500 jpeg:enc-jpegli:q79:xyb:dec-jpegli 5532 460681 0.6661476 9.59946251 68.92551213 1.86795871 jpeg:enc-jpegli:q80:xyb:dec-jpegli 5532 472928 0.6838568 2.48481417 70.67981377 1.04270666 jpeg:enc-jpegli:q81:xyb:dec-jpegli 5532 492416 0.7120366 6.40297413 70.70687798 1.35580168 jpeg:enc-jpegli:q82:xyb:dec-jpegli 5532 512724 0.7414020 6.45031261 71.31698220 1.34709810 jpeg:enc-jpegli:q83:xyb:dec-jpegli 5532 530277 0.7667838 10.81851101 70.26461499 1.90298127 jpeg:enc-jpegli:q84:xyb:dec-jpegli 5532 549742 0.7949303 11.13633347 69.58965599 2.12506658 jpeg:enc-jpegli:q85:xyb:dec-jpegli 5532 570472 0.8249060 11.09750748 70.08839280 2.11339572 jpeg:enc-jpegli:q86:xyb:dec-jpegli 5532 601213 0.8693577 6.73269033 73.36321044 1.32186981 jpeg:enc-jpegli:q87:xyb:dec-jpegli 5532 626568 0.9060212 1.93637526 75.24245529 0.86236665 jpeg:enc-jpegli:q88:xyb:dec-jpegli 5532 661893 0.9571013 12.80215454 72.66036916 2.16158320 jpeg:enc-jpegli:q89:xyb:dec-jpegli 5532 700917 1.0135303 12.79846287 73.14141777 2.15291847 jpeg:enc-jpegli:q90:xyb:dec-jpegli 5532 735382 1.0633669 12.82965851 73.57953140 2.14843630 jpeg:enc-jpegli:q91:xyb:dec-jpegli 5532 779395 1.1270099 1.62044144 77.40647337 0.76951391 jpeg:enc-jpegli:q92:xyb:dec-jpegli 5532 852897 1.2332943 1.54923189 78.33942532 0.72773519 jpeg:enc-jpegli:q93:xyb:dec-jpegli 5532 913782 1.3213344 1.47751951 79.08779795 0.68925159```
2023-01-24 05:04:54
```Encoding kPixels Bytes BPP Max norm SSIMULACRA2 pnorm ----------------------------------------------------------------------------------------------------- jpeg:enc-jpegli:q77:xyb:dec-jpegli 4270 440755 0.8256912 2.57653522 73.83731587 1.08323953 jpeg:enc-jpegli:q78:xyb:dec-jpegli 4270 448209 0.8396552 2.46053791 74.12077303 1.07571795 jpeg:enc-jpegli:q79:xyb:dec-jpegli 4270 469636 0.8797956 2.31674862 75.04041524 1.02801235 jpeg:enc-jpegli:q80:xyb:dec-jpegli 4270 481438 0.9019050 2.27511597 75.40451765 1.00002946 jpeg:enc-jpegli:q81:xyb:dec-jpegli 4270 511347 0.9579352 2.22766042 76.61113140 0.94573886 jpeg:enc-jpegli:q82:xyb:dec-jpegli 4270 520716 0.9754867 2.11857700 77.09132426 0.94801233 jpeg:enc-jpegli:q83:xyb:dec-jpegli 4270 546882 1.0245049 2.13817835 78.24623401 0.90216890 jpeg:enc-jpegli:q84:xyb:dec-jpegli 4270 573754 1.0748457 2.13797522 78.86015560 0.87542524 jpeg:enc-jpegli:q85:xyb:dec-jpegli 4270 593800 1.1123990 1.99826527 79.57994231 0.82144321 jpeg:enc-jpegli:q86:xyb:dec-jpegli 4270 626401 1.1734723 1.80742538 80.06207563 0.78408051 jpeg:enc-jpegli:q87:xyb:dec-jpegli 4270 665462 1.2466475 1.79822123 81.04907356 0.73527516 jpeg:enc-jpegli:q88:xyb:dec-jpegli 4270 686695 1.2864245 1.62478518 81.31783304 0.70662563 jpeg:enc-jpegli:q89:xyb:dec-jpegli 4270 734165 1.3753527 1.70427763 82.28476303 0.81580474 jpeg:enc-jpegli:q90:xyb:dec-jpegli 4270 778534 1.4584717 1.46675730 82.80288597 0.62502899 jpeg:enc-jpegli:q91:xyb:dec-jpegli 4270 830618 1.5560436 1.73360562 83.61609663 0.86297484 jpeg:enc-jpegli:q92:xyb:dec-jpegli 4270 891308 1.6697376 1.56471860 84.36080824 0.71326347 jpeg:enc-jpegli:q93:xyb:dec-jpegli 4270 959696 1.7978527 1.55117285 84.59052930 0.70106243```
afed sadly the jpegli-decoder is still broken, looks like some incorrectly decoded 8x8 blocks (even for some xyb encodings) <https://unsplash.com/photos/zHcI7_TA5Yg>
2023-01-24 05:06:41
afed ```Encoding kPixels Bytes BPP Max norm SSIMULACRA2 pnorm ---------------------------------------------------------------------------------------------------- jpeg:enc-jpegli:q77:dec-jpegli 5532 486612 0.7036439 133.04379272 -14.49615687 22.28802677 jpeg:enc-jpegli:q78:dec-jpegli 5532 501600 0.7253167 133.05514526 -12.27793198 22.24198255 jpeg:enc-jpegli:q79:dec-jpegli 5532 514678 0.7442275 135.58435059 -19.15237382 23.69608168 jpeg:enc-jpegli:q80:dec-jpegli 5532 529287 0.7653522 135.58409119 -16.72918914 22.48391403 jpeg:enc-jpegli:q81:dec-jpegli 5532 549683 0.7948450 127.24156189 -2.72853989 20.07771740 jpeg:enc-jpegli:q82:dec-jpegli 5532 568713 0.8223625 127.27835083 -4.17448154 20.07561954 jpeg:enc-jpegli:q83:dec-jpegli 5532 591524 0.8553473 125.41096497 -5.51799462 19.81012298 jpeg:enc-jpegli:q84:dec-jpegli 5532 611947 0.8848791 125.40847015 -7.13729803 20.03092070 jpeg:enc-jpegli:q85:dec-jpegli 5532 643516 0.9305281 137.93171692 -11.79842853 22.90897979 jpeg:enc-jpegli:q86:dec-jpegli 5532 669916 0.9687026 137.95727539 -15.22964194 22.74869022 jpeg:enc-jpegli:q87:dec-jpegli 5532 714181 1.0327101 68.47742462 -9.79819919 13.67024590 jpeg:enc-jpegli:q88:dec-jpegli 5532 745805 1.0784386 68.33783722 -19.76422160 13.83092302 jpeg:enc-jpegli:q89:dec-jpegli 5532 799633 1.1562742 73.66311646 -18.14493015 12.63958809 jpeg:enc-jpegli:q90:dec-jpegli 5532 812859 1.1753991 66.94897461 -19.09748908 12.06024470 jpeg:enc-jpegli:q91:dec-jpegli 5532 881885 1.2752111 107.37985992 -18.71724947 16.67591801 jpeg:enc-jpegli:q92:dec-jpegli 5532 956604 1.3832552 107.28179169 -16.90508134 16.83103876 jpeg:enc-jpegli:q93:dec-jpegli 5532 1031530 1.4915987 78.80941772 -22.08231051 14.14055037```
2023-01-24 05:07:36
```Encoding kPixels Bytes BPP Max norm SSIMULACRA2 pnorm ------------------------------------------------------------------------------------------------- jpeg:enc-jpegli:q77:dec-jpegli 5532 486612 0.7036439 2.39953136 71.65202106 1.00502228 jpeg:enc-jpegli:q78:dec-jpegli 5532 501600 0.7253167 2.75782180 72.21801605 0.97967721 jpeg:enc-jpegli:q79:dec-jpegli 5532 514678 0.7442275 2.33501077 72.54523663 0.96377555 jpeg:enc-jpegli:q80:dec-jpegli 5532 529287 0.7653522 2.22937679 72.84296049 0.94489784 jpeg:enc-jpegli:q81:dec-jpegli 5532 549683 0.7948450 2.15364552 73.37476724 0.91669055 jpeg:enc-jpegli:q82:dec-jpegli 5532 568713 0.8223625 2.14751482 74.17753353 0.89466890 jpeg:enc-jpegli:q83:dec-jpegli 5532 591524 0.8553473 1.99748659 74.75211395 0.86822956 jpeg:enc-jpegli:q84:dec-jpegli 5532 611947 0.8848791 1.99582553 75.43981382 0.84466982 jpeg:enc-jpegli:q85:dec-jpegli 5532 643516 0.9305281 1.86209989 76.16199395 0.81308184 jpeg:enc-jpegli:q86:dec-jpegli 5532 669916 0.9687026 1.89331925 76.61815939 0.80118657 jpeg:enc-jpegli:q87:dec-jpegli 5532 714181 1.0327101 1.70116842 77.45964155 0.75665667 jpeg:enc-jpegli:q88:dec-jpegli 5532 745805 1.0784386 1.65578604 78.00792635 0.73780008 jpeg:enc-jpegli:q89:dec-jpegli 5532 799633 1.1562742 1.56718040 78.49469715 0.69675601 jpeg:enc-jpegli:q90:dec-jpegli 5532 812859 1.1753991 1.47841942 79.01235813 0.68392626 jpeg:enc-jpegli:q91:dec-jpegli 5532 881885 1.2752111 1.47080064 79.68642896 0.65018029 jpeg:enc-jpegli:q92:dec-jpegli 5532 956604 1.3832552 1.29623413 80.74501217 0.59380554 jpeg:enc-jpegli:q93:dec-jpegli 5532 1031530 1.4915987 1.24743545 81.19958677 0.56947431```
afed ```Encoding kPixels Bytes BPP Max norm SSIMULACRA2 pnorm ------------------------------------------------------------------------------------------------------ jpeg:enc-jpegli:q77:xyb:dec-jpegli 5532 435254 0.6293800 9.88808060 67.96276485 1.91975512 jpeg:enc-jpegli:q78:xyb:dec-jpegli 5532 445074 0.6435797 9.54435825 68.38660486 1.86519500 jpeg:enc-jpegli:q79:xyb:dec-jpegli 5532 460681 0.6661476 9.59946251 68.92551213 1.86795871 jpeg:enc-jpegli:q80:xyb:dec-jpegli 5532 472928 0.6838568 2.48481417 70.67981377 1.04270666 jpeg:enc-jpegli:q81:xyb:dec-jpegli 5532 492416 0.7120366 6.40297413 70.70687798 1.35580168 jpeg:enc-jpegli:q82:xyb:dec-jpegli 5532 512724 0.7414020 6.45031261 71.31698220 1.34709810 jpeg:enc-jpegli:q83:xyb:dec-jpegli 5532 530277 0.7667838 10.81851101 70.26461499 1.90298127 jpeg:enc-jpegli:q84:xyb:dec-jpegli 5532 549742 0.7949303 11.13633347 69.58965599 2.12506658 jpeg:enc-jpegli:q85:xyb:dec-jpegli 5532 570472 0.8249060 11.09750748 70.08839280 2.11339572 jpeg:enc-jpegli:q86:xyb:dec-jpegli 5532 601213 0.8693577 6.73269033 73.36321044 1.32186981 jpeg:enc-jpegli:q87:xyb:dec-jpegli 5532 626568 0.9060212 1.93637526 75.24245529 0.86236665 jpeg:enc-jpegli:q88:xyb:dec-jpegli 5532 661893 0.9571013 12.80215454 72.66036916 2.16158320 jpeg:enc-jpegli:q89:xyb:dec-jpegli 5532 700917 1.0135303 12.79846287 73.14141777 2.15291847 jpeg:enc-jpegli:q90:xyb:dec-jpegli 5532 735382 1.0633669 12.82965851 73.57953140 2.14843630 jpeg:enc-jpegli:q91:xyb:dec-jpegli 5532 779395 1.1270099 1.62044144 77.40647337 0.76951391 jpeg:enc-jpegli:q92:xyb:dec-jpegli 5532 852897 1.2332943 1.54923189 78.33942532 0.72773519 jpeg:enc-jpegli:q93:xyb:dec-jpegli 5532 913782 1.3213344 1.47751951 79.08779795 0.68925159```
2023-01-24 05:07:57
```Encoding kPixels Bytes BPP Max norm SSIMULACRA2 pnorm ----------------------------------------------------------------------------------------------------- jpeg:enc-jpegli:q77:xyb:dec-jpegli 5532 435254 0.6293800 2.88526392 69.18842530 1.10358122 jpeg:enc-jpegli:q78:xyb:dec-jpegli 5532 445074 0.6435797 2.66324234 69.62329350 1.08546132 jpeg:enc-jpegli:q79:xyb:dec-jpegli 5532 460681 0.6661476 2.55543423 70.20905078 1.06358181 jpeg:enc-jpegli:q80:xyb:dec-jpegli 5532 472928 0.6838568 2.48481417 70.67981377 1.04270666 jpeg:enc-jpegli:q81:xyb:dec-jpegli 5532 492416 0.7120366 2.40248656 71.80530363 1.01292492 jpeg:enc-jpegli:q82:xyb:dec-jpegli 5532 512724 0.7414020 2.26550627 72.45684021 0.98994962 jpeg:enc-jpegli:q83:xyb:dec-jpegli 5532 530277 0.7667838 2.22364569 72.95387236 0.95430152 jpeg:enc-jpegli:q84:xyb:dec-jpegli 5532 549742 0.7949303 2.05206013 73.43388111 0.93784557 jpeg:enc-jpegli:q85:xyb:dec-jpegli 5532 570472 0.8249060 2.00240016 74.00596888 0.91469587 jpeg:enc-jpegli:q86:xyb:dec-jpegli 5532 601213 0.8693577 1.97627652 74.66762988 0.88284717 jpeg:enc-jpegli:q87:xyb:dec-jpegli 5532 626568 0.9060212 1.93637526 75.24245529 0.86236665 jpeg:enc-jpegli:q88:xyb:dec-jpegli 5532 661893 0.9571013 2.01312304 75.58584974 0.83912196 jpeg:enc-jpegli:q89:xyb:dec-jpegli 5532 700917 1.0135303 1.82577336 76.16010496 0.81066594 jpeg:enc-jpegli:q90:xyb:dec-jpegli 5532 735382 1.0633669 1.65119314 76.64671150 0.79583838 jpeg:enc-jpegli:q91:xyb:dec-jpegli 5532 779395 1.1270099 1.62044144 77.40647337 0.76951391 jpeg:enc-jpegli:q92:xyb:dec-jpegli 5532 852897 1.2332943 1.54923189 78.33942532 0.72773519 jpeg:enc-jpegli:q93:xyb:dec-jpegli 5532 913782 1.3213344 1.47751951 79.08779795 0.68925159```
afed xyb
2023-01-24 05:11:21
mjbennett
_wb_ I took a look at the dataset described in https://ds.jpeg.org/documents/jpegaic/wg1n100334-097-ICQ-JPEG_AIC_CTC_for_subjective_quality_assessment.pdf, where they estimated JNDs for images compressed with JPEG, J2K, JXL, HEIC and VVC. Looking at the average curves linking metric scores to JNDs, I see the following biases in metrics: PSNR (either PSNR-Y or ImageMagick’s default PSNR): overestimates HEIC, VVC, J2K. Underestimates JXL and JPEG. Butteraugli: overestimates HEIC and JXL. Underestimates JPEG. (more or less neutral to VVC and J2K) SSIMULACRA2: overestimates HEIC. Underestimates JPEG. (more or less neutral to the rest: VVC, J2K, JXL) PSNR-HVS: overestimates HEIC. Underestimates JXL and JPEG. (more or less neutral to VVC and J2K) MS-SSIM: overestimates HEIC. Underestimates JPEG. (more or less neutral to the rest) VMAF: overestimates J2K at all qualities, HEIC at higher qualities and JPEG at lower qualities. Underestimates JXL at all qualities, and VVC, HEIC at lower qualities and JPEG at higher qualities. DSSIM: overestimates HEIC and VVC. Underestimates JPEG, JXL at lower qualities and J2K at higher qualities.
2023-01-25 01:24:30
What's your guess as to why this is the case with HEIC? Do you think that its design is purposely modeled around the tests? Seems like that would be tough to do with so many different and varied eval tools. But maybe not.
BlueSwordM
mjbennett What's your guess as to why this is the case with HEIC? Do you think that its design is purposely modeled around the tests? Seems like that would be tough to do with so many different and varied eval tools. But maybe not.
2023-01-25 01:42:37
HM is a reference encoder based to absolutely maximize PSNR scores at all costs. VTM is actually a decent bit better in this regard, but it makes sense since we're comparing 2020 encoder design vs 2013 encoder design. What seems to be happening in all of these metrics is that structure retention is better to them than frequency detail retention. IE, even with butteraugli and SSIMULACRA2 being quite strong psy wise, they're not perfect metrics, and as such have flaws.
Jyrki Alakuijala
_wb_ looks like a good validation for ssimulacra2
2023-01-25 10:42:47
it is rather suspicious that psnr-hvs has better performance than butteraugli, that is quite the opposite what I observe in several experiments -- possibly something went wrong with selection of deformations or human eval
2023-01-25 10:52:08
I like it very much that jpegli is getting some attention -- we need it desperately to get all things right -- jpegli has quite significant potential in shaking the compression world and giving us instant benefits
_wb_
2023-01-25 10:53:41
The eval wasn't very accurate, only based on 15 test subjects. Also they didn't use mozjpeg but Thomas Richter's libjpeg, which makes a difference β€” mozjpeg is optimized for psnr-hvs so it will cause psnr-hvs to be overly optimistic and correlate worse, but that didn't happen here.
joppuyo
Jyrki Alakuijala I like it very much that jpegli is getting some attention -- we need it desperately to get all things right -- jpegli has quite significant potential in shaking the compression world and giving us instant benefits
2023-01-25 10:55:37
are you planning on writing some sort of blog post or something like that when jpegli is ready to be shown off? right now only places I've seen it mentioned is this discord and the jxl repository so there's very little info about it available
_wb_
2023-01-25 10:58:39
Also they only did pairwise comparisons within the same codec, so I'm not convinced that the JND scale they end up getting is actually fully consistent between codecs β€” it could be that 2 JNDs in HEIC is on average less distorted than 2 JNDs in other codecs for some reason, and then maybe it's not the metrics overestimating HEIC but the subjective results underestimating HEIC. These things will become more clear when more accurate subjective data will become available.
Jyrki Alakuijala
2023-01-25 03:40:16
if they had used mozjpeg in another session that has lower standards, smaller pixels or larger viewing distance, that would have easily explained the mystery why psnr-hsv is doing so well
joppuyo are you planning on writing some sort of blog post or something like that when jpegli is ready to be shown off? right now only places I've seen it mentioned is this discord and the jxl repository so there's very little info about it available
2023-01-25 03:42:30
It is not time for getting a lot of publicity on jpegli yet -- it is still a (buggy) expert tool. We are getting feedback here and from some capable industry partners. We are working towards libjpeg-functionality parity and I hope that we will eventually be able to replace libjpeg with jpegli in linux distributions, browsers, operating systems, cameras, graphics software and similar. I'm hoping that we will reach technical readiness during 2023, but a lot will depend on the feedback that we will be receiving.
joppuyo
Jyrki Alakuijala It is not time for getting a lot of publicity on jpegli yet -- it is still a (buggy) expert tool. We are getting feedback here and from some capable industry partners. We are working towards libjpeg-functionality parity and I hope that we will eventually be able to replace libjpeg with jpegli in linux distributions, browsers, operating systems, cameras, graphics software and similar. I'm hoping that we will reach technical readiness during 2023, but a lot will depend on the feedback that we will be receiving.
2023-01-25 04:40:54
good to know πŸ™‚ looking forward to hearing more details about jpegli in the future
Traneptora
2023-01-25 06:35:08
does jpegli encode anything other than XYB jpeg with an iccv4 profile?
afed
afed ```Encoding kPixels Bytes BPP Max norm SSIMULACRA2 pnorm ------------------------------------------------------------------------------------------------------ jpeg:enc-jpegli:q77:dec-jpegli:bd16 4270 506467 0.9487932 2.72684336 77.56081328 0.95369086 jpeg:enc-jpegli:q78:dec-jpegli:bd16 4270 517770 0.9699678 2.65700030 77.55883662 0.93917341 jpeg:enc-jpegli:q79:dec-jpegli:bd16 4270 539942 1.0115038 2.77928925 78.53916234 0.89930998 jpeg:enc-jpegli:q80:dec-jpegli:bd16 4270 558322 1.0459361 2.85500360 78.85773219 0.88113728 jpeg:enc-jpegli:q81:dec-jpegli:bd16 4270 584871 1.0956718 2.57502866 79.90858541 0.82815398 jpeg:enc-jpegli:q82:dec-jpegli:bd16 4270 605818 1.1349130 2.63401079 80.42285602 0.80861482 jpeg:enc-jpegli:q83:dec-jpegli:bd16 4270 626056 1.1728260 2.48551631 80.83351512 0.78469510 jpeg:enc-jpegli:q84:dec-jpegli:bd16 4270 658955 1.2344576 2.26984620 81.85873616 0.72832107 jpeg:enc-jpegli:q85:dec-jpegli:bd16 4270 676199 1.2667617 2.23942900 82.35300166 0.71008788 jpeg:enc-jpegli:q86:dec-jpegli:bd16 4270 727943 1.3636967 1.93581724 83.15091152 0.65912585 jpeg:enc-jpegli:q87:dec-jpegli:bd16 4270 750174 1.4053433 1.77398717 83.57974444 0.63642079 jpeg:enc-jpegli:q88:dec-jpegli:bd16 4270 797480 1.4939643 1.72937787 83.69506242 0.59862877 jpeg:enc-jpegli:q89:dec-jpegli:bd16 4270 833215 1.5609087 1.58554494 84.24703823 0.56027005 jpeg:enc-jpegli:q90:dec-jpegli:bd16 4270 858588 1.6084413 1.63803422 84.49327837 0.55449904 jpeg:enc-jpegli:q91:dec-jpegli:bd16 4270 915529 1.7151121 1.59495139 85.86511935 0.50916213 jpeg:enc-jpegli:q92:dec-jpegli:bd16 4270 990559 1.8556701 1.33545852 86.14141714 0.46475208 jpeg:enc-jpegli:q93:dec-jpegli:bd16 4270 1028262 1.9263012 1.30757749 86.92874562 0.44365930```
2023-01-25 06:40:52
yeah, without :xyb it's just normal jpegs
afed ```Encoding kPixels Bytes BPP Max norm SSIMULACRA2 pnorm ----------------------------------------------------------------------------------------------------------------- jpeg:q83 2219 610022 2.1988718 2.79324722 86.21449334 0.83514355 jpeg:q83:dec-jpegli 2219 610022 2.1988718 77.86694336 29.41114753 13.35322977 jpeg:q83:dec-jpegli:bd16 2219 610022 2.1988718 77.86669922 29.42202507 13.35255489 jpeg:enc-jpegli:q88 2219 656425 2.3661350 1.60545588 84.36873286 0.57766172 jpeg:enc-jpegli:q88:dec-jpegli 2219 656425 2.3661350 102.29298401 -2.65251884 20.03833136 jpeg:enc-jpegli:q88:dec-jpegli:bd16 2219 656425 2.3661350 102.30054474 -2.64473454 20.03825618 jpeg:enc-jpegli:xyb:q93 2219 678863 2.4470145 1.44632685 84.90054819 0.50148861 jpeg:enc-jpegli:xyb:q93:dec-jpegli 2219 678863 2.4470145 1.50155556 84.68694477 0.50180967 jpeg:enc-jpegli:xyb:q93:dec-jpegli:bd16 2219 678863 2.4470145 1.44506371 85.08306567 0.48657300 jxl:q96:3 2219 507761 1.8302640 1.56963921 88.14221072 0.59136184 jxl:q96:4 2219 511876 1.8450969 1.57371497 88.68837783 0.58998264 jxl:q96:5 2219 464771 1.6753032 1.45894945 87.44297991 0.54723276 jxl:q96:6 2219 468528 1.6888456 1.26435709 87.60899208 0.53606737```
2023-01-25 06:46:01
`jpeg:q83` - libjpeg(-turbo) `jpeg:enc-jpegli:q88` - jpegli encoder `jpeg:enc-jpegli:q88:dec-jpegli` - jpegli encoder/decoder `jpeg:enc-jpegli:q88:dec-jpegli:bd16` - jpegli encoder/decoder (16 bit output buffer) `jpeg:enc-jpegli:xyb:q93` - jpegli xyb encoder `jpeg:enc-jpegli:q88:yuv420` - jpegli encoder yuv420 (also for yuv422, yuv444)
Traneptora
2023-01-25 06:48:11
what improvement does it have over mozjpeg for non-XYB jpegs?
2023-01-25 06:48:17
just targetting butteraugli distance?
afed
2023-01-25 07:40:36
https://discord.com/channels/794206087879852103/794206170445119489/1055590417225240617 from what i understand, jpegli is currently more tuned for higher quality when i compared, jpegli was better on q90+ than mozjpeg, on lower qualities mozjpeg is mostly better (but not always) jpegli-xyb has even better quality, but also not enough to be always better than mozjpeg at lower qualities and jpegli-decoder increases the visual quality and the ssimulacra2 score by 1-1.7 points on average (roughly q88-q89 with jpegli-decoder = q90 with a normal decoder), just by changing the decoder
_wb_
2023-01-25 09:12:34
From a paper I'm currently writing:
2023-01-25 09:13:38
benchmarking metrics is fun πŸ™‚
2023-01-25 09:20:35
Ssimulacra2 doesn't really count since it was tuned using part of these subjective results, but butteraugli and ssimulacra1 doing well is quite cool to see confirmed. Now I just need to finish this paper and get it published...
Demiurge
Jyrki Alakuijala It is not time for getting a lot of publicity on jpegli yet -- it is still a (buggy) expert tool. We are getting feedback here and from some capable industry partners. We are working towards libjpeg-functionality parity and I hope that we will eventually be able to replace libjpeg with jpegli in linux distributions, browsers, operating systems, cameras, graphics software and similar. I'm hoping that we will reach technical readiness during 2023, but a lot will depend on the feedback that we will be receiving.
2023-01-26 11:49:41
I hope future cameras shoot in JXL :)
novomesk
Demiurge I hope future cameras shoot in JXL :)
2023-01-26 01:51:32
Camera apps on smartphones could be faster.
Demiurge
2023-01-26 02:25:28
I wonder if existing hardware codecs are so specialized that they cannot be made to output JXL with a firmware update.
2023-01-26 02:26:35
Only because, for a camera app, hardware encoding might theoretically save power or reduce the time it takes to save a photo.
2023-01-26 02:28:38
I wonder if hardware encoding can compete with software encoding for high-fidelity lossy compression
DZgas Π–
afed
2023-01-29 07:42:36
discord not support xyb lol for create preview
_wb_
2023-01-29 08:05:26
It does not support color profiles in general
Demiurge
2023-01-29 11:10:02
Well whatever they are using to re-encode downsampled preview images is ignoring color profiles.
2023-01-29 11:10:16
It looks like a server side problem
2023-01-29 11:10:40
Whatever image resizing library/tool their server is using
afed
2023-01-29 11:17:40
I did a much bigger 8-bit screenshots benchmark via ffmpeg large amount of various videos and animations movies have a decent percentage of 4k 10-bit hdr with proper conversion to 8-bit sdr images using libplacebo besides the final results i can say that jxl e1 and e4 have the most stable compression, on some titles jxl e2 (or even e5, e6) and webp z0 can be worse than jxl e1 even if they are better on average fpnge better than the internal ffmpeg png encoder with default settings and overall fpnge results might be even better, but it's noticeably worse on something like opening/final credits or flat colors
2023-01-29 11:17:53
**Animation** (mostly new and 2d, some cg, some old, western and anime): ```scss 13 753 454 557 libvips 1 9 307 079 808 libvips 9 030 312 569 ffmpeg png 8 797 781 837 FPNGE 8 782 277 078 FPNGE 5 4 687 025 737 JXL e1 4 519 150 101 JXL e2 5 239 330 470 JXL e3 3 259 031 338 JXL e4 3 625 116 930 JXL e5 3 613 206 845 JXL e6 4 925 632 028 webp z0 5 226 483 424 ZPNG 4 249 402 514 HALIC 5 832 866 997 QLIC2 3 139 394 072 LEA ```
2023-01-29 11:18:07
**Movies** (mostly new, some old movies, tv-shows and music videos): ```scss 17 851 292 019 libvips 1 11 435 279 928 libvips 11 111 663 621 ffmpeg png 9 730 664 134 FPNGE 9 719 759 364 FPNGE 5 6 324 851 181 JXL e1 5 140 996 726 JXL e2 5 566 614 138 JXL e3 4 077 238 945 JXL e4 4 560 331 798 JXL e5 4 548 864 282 JXL e6 5 160 464 834 webp z0 7 411 335 649 ZPNG 5 229 353 117 HALIC 6 217 644 552 QLIC2 3 667 660 416 LEA ```
2023-01-29 11:38:54
jxl e4 is pretty good and if it got faster it would be cool, though it doesn't feel slower than png in mpv (but still not snappy) and if fpnge would compress some simple images better, it would be a true png king for screenshots <:Stonks:806137886726553651>
_wb_
2023-01-30 07:10:11
e5 being worse than e4 is unexpected, could you open an issue for that with an example image where that happens?
2023-01-30 07:11:21
(I thought e5 could only be better than e4, since it should be doing basically the same thing but more exhaustively)
afed
2023-01-30 07:32:48
and e6 is more different? because it is also worse and e5 is pretty similar to e6 in compression
_wb_
2023-01-30 07:36:36
e4+ should all be similar but just more exhaustive, trying more types of MA tree nodes, more RCTs, etc
2023-01-30 07:37:25
though some things are still only driven by heuristics, not trying full encode and picking the smallest result
2023-01-30 07:40:26
especially for patches and (channel) palettes, it could be that the heuristics to balance signaling cost vs compression gain are not very good
afed
2023-01-30 07:40:54
_wb_
2023-01-30 07:42:46
thanks!
2023-01-30 07:51:53
looks like it is applying palette at e5 on that image and it is not a good idea
2023-01-30 07:56:39
so basically that image is dark, and YCbCr has reduced precision in the R and B channels, so the number of distinct colors per 256x256 group is small, causing it to apply a palette transform
afed
2023-01-30 07:56:40
and this happens on most images and only some are better compressed
_wb_
2023-01-30 07:58:21
but on images like this, palette is not likely to be a good idea β€” while it does reduce things from 3 channels to 1, all the spatial smoothness that made things well-predictable gets ruined by doing palette
2023-01-30 08:03:43
so what happens in particular here, is that also at e4 global channel palettes are used, changing the range for R to 0..83, G to 0..77 and B to 0..83
2023-01-30 08:05:21
those channel palettes don't help with compression though
afed
2023-01-30 08:09:26
hmm, interesting, so needs a new heuristic for such screenshots? and it would be nice to have yuv420p10le (and maybe yuv420p) compatible modes to save similar frames from video content, maybe not directly, but something that is more compact (than 16 bpc) and losslessly convertible maybe ffv1 does something similar?
veluca
2023-01-30 09:11:55
I don't understand how the ffmpeg png encoder can be worse than fpnge
2023-01-30 09:13:40
only guess I have is if they just do huffman coding with fixed tables and no lz77/rle, but even then, it should at least be pretty fast and IIRC from what people said it isn't
JendaLinda
2023-01-30 12:18:41
I guess ffmpeg uses libpng and that probably isn't optimized for speed.
veluca
2023-01-30 01:57:01
IIRC *all* libpng modes compress better than fpnge
sklwmp
JendaLinda I guess ffmpeg uses libpng and that probably isn't optimized for speed.
2023-01-30 02:01:30
im pretty sure ffmpeg has a native encoder
2023-01-30 02:01:45
it doesn't even link libpng
_wb_
veluca IIRC *all* libpng modes compress better than fpnge
2023-01-30 02:44:51
Doesn't libpng have an option to do basically uncompressed (deflate only using fallback raw blocks)?
veluca
2023-01-30 02:51:21
Probably, but then it would be a lot bigger than fpnge πŸ˜›
2023-01-30 02:51:36
I'm 99% sure it's compressing at least somewhat
_wb_
2023-01-30 03:42:40
you can configure libpng to use various zlib settings and filtering strategies
2023-01-30 03:46:23
``` #include zlib.h /* Set the zlib compression level */ png_set_compression_level(png_ptr, Z_BEST_COMPRESSION); /* Set other zlib parameters for compressing IDAT */ png_set_compression_mem_level(png_ptr, 8); png_set_compression_strategy(png_ptr, Z_DEFAULT_STRATEGY); png_set_compression_window_bits(png_ptr, 15); png_set_compression_method(png_ptr, 8); png_set_compression_buffer_size(png_ptr, 8192) /* Set zlib parameters for text compression * If you don't call these, the parameters * fall back on those defined for IDAT chunks */ png_set_text_compression_mem_level(png_ptr, 8); png_set_text_compression_strategy(png_ptr, Z_DEFAULT_STRATEGY); png_set_text_compression_window_bits(png_ptr, 15); png_set_text_compression_method(png_ptr, 8); ```
2023-01-30 03:48:23
optipng basically just calls libpng with various options for zlib and various settings for `png_set_filter()`, just brute-force trying things (only optimization being that it does streaming encode and aborts an attempt as soon as it gets larger than the current best attempt)
2023-01-30 03:49:04
you can definitely configure libpng to encode a lot faster (and worse) than what it does by default
2023-01-30 03:50:35
I think libpng defaults are more or less set to whatever compresses best in a single attempt and only using zlib (no custom/image-specific deflate)
afed
2023-01-30 07:29:45
ffmpeg uses its own internal png encoder, perhaps it is also tuned for faster speed by default because its often used as an intermediate format even for video encoding but for these screenshots it's not very good except for credits, titles, black frames and flat colors maybe it could be better configured, but anyway it would be good to have some fpnge mode for such images, I guess they are well compressed because ffmpeg uses zlib and bigger window size, I will show some examples
2023-01-30 07:31:59
FPNGE
JendaLinda
2023-01-30 08:07:05
No big deal, if I need png as the destination format, I will run it through pngout anyway.
2023-01-30 08:11:16
After all, PNGs I came across most of the times, are fully opaque images encoded as RGBA. Even resaving in IrfanView will significantly reduce the file size.
afed
2023-01-31 01:14:42
png optimization or recompression is not always possible or convenient and requires extra effort having a fast encoder with still good compression (or when it's better and faster than others) is very useful, even for screenshots most people will just be too lazy or don't want to spend time on it or for frames sequences for further processing, they consume a lot of space and png is a pretty universal format and has good compression, unlike many other formats that may be slower or not have (enough) compression or are not as supported
afed **Animation** (mostly new and 2d, some cg, some old, western and anime): ```scss 13 753 454 557 libvips 1 9 307 079 808 libvips 9 030 312 569 ffmpeg png 8 797 781 837 FPNGE 8 782 277 078 FPNGE 5 4 687 025 737 JXL e1 4 519 150 101 JXL e2 5 239 330 470 JXL e3 3 259 031 338 JXL e4 3 625 116 930 JXL e5 3 613 206 845 JXL e6 4 925 632 028 webp z0 5 226 483 424 ZPNG 4 249 402 514 HALIC 5 832 866 997 QLIC2 3 139 394 072 LEA ```
2023-01-31 04:40:52
`fpnge -5` just a little bit better lib`vips [compression=1]` <:monkaMega:809252622900789269> so nothing wrong with the ffpmeg png encoder, libvips with the default settings is even slightly worse
paperboyo
HLBG007 Hello one graphic in your article is wrong. Here my version
2023-02-01 11:41:06
This is very funny, actually. In the interest of taking arguments away from browser vendors’ hands: is this only implementation in browsers that is responsible for decode time? Or can something be done in the library too? And if the latter, is it being looked at? (another argument being less competitive lower quality spectrum, but here I know JXL is constantly improving)
Traneptora
2023-02-01 04:52:41
decode time in JXL is very fast, I don't believe that data you pinged is correct
Cool Doggo
2023-02-01 06:02:23
what he posted is an edited version of this
_wb_
2023-02-01 06:06:19
Both are just illustrations, not actual plots.
afed
yurume "even though most likely based on ect" -> is it even likely? to my knowledge an image that went through ECT can be further compressed by pingo and vice versa (but only by an inch), and the parameter space of ECT seems tight enough---this holds true even after trying all parameters with ECT successively.
2023-02-02 08:57:19
also a comment from fhanau (<https://github.com/fhanau/Efficient-Compression-Tool/>) https://css-ig.net/submit/view?1118818738
yurume
2023-02-02 08:59:10
interesting
Deleted User
2023-02-03 06:55:38
There are now benchmarks by one side, or the other - while to really convince, it would be great to have some unquestionably objective ones. Maybe it is worth to make e.g. a separate github with neutral datasets, clear scripts to calculate various metrics, inviting AVIF and others e.g. JPEG members, media to participate to make it as neutral, objective as possible ...
_wb_
2023-02-03 07:10:25
The thing with metrics is that no perfect metric exists, and most existing metrics are quite bad and biased towards codecs that use YCbCr420 (e.g. because they only look at Y).
Deleted User
2023-02-03 07:55:42
the "everybody does own benchmark" current situation is quite problematic for objective evaluation, also might be the reason Mozilla doesn't give any details, media are not certain who is right here ... maybe e.g. JPEG with collaborators could establish some looking neutral and objective benchmarking pipeline also for future image compressors?
_wb_
2023-02-03 08:04:32
This is what the JPEG AIC-3 effort is aiming to do.
2023-02-03 08:07:37
But imo even the comparison done by the avif team is actually showing jxl performs quite well, it's just that you need to click through to the actual data and the 'summary' they put on the landing page is completely zooming in on all the wrong things because they're trying to make avif look good.
2023-02-03 08:13:53
On the landing page they show this: https://storage.googleapis.com/avif-comparison/images/main/charts/Main_filesize_vs_TurboJPEG_MS-SSIM.png
2023-02-03 08:15:28
which looks like avif is like 15% smaller than jxl for the same quality according to ms-ssim
2023-02-03 08:17:43
but then if you click through to the actual data, you see that this was based on avif at the slowest speed. The plot looks like this: https://storage.googleapis.com/avif-comparison/images/subset1/rateplots/subset1_avif-jxl_t-1_avif-s0_jxl-s9_msssim_2022-09-01_23d3bb6d_bpp-0.1-3.0.png
2023-02-03 08:18:28
if you look at more relevant encode speeds, the plot already starts to look a bit different: https://storage.googleapis.com/avif-comparison/images/subset1/rateplots/subset1_avif-jxl_t-8_avif-s7_jxl-s6_msssim_2022-09-01_23d3bb6d_bpp-0.1-3.0.png
2023-02-03 08:20:05
or even if you allow avif encoding to be extremely slow, but just look at a more modern and non-colorblind metric (ms-ssim ignores color and only looks at the luma component), you also get a different picture: https://storage.googleapis.com/avif-comparison/images/subset1/rateplots/subset1_avif-jxl_t-1_avif-s0_jxl-s9_ssimulacra2__bpp-0.1-3.0.png
2023-02-03 08:21:27
here you see avif being 13% better at the very low end and jxl being 9% better around 1bpp (and 20% better or so around 2bpp)
2023-02-03 08:22:51
when looking at the same time at relevant encode speeds and at relevant metrics, you get this: https://storage.googleapis.com/avif-comparison/images/subset1/rateplots/subset1_avif-jxl_t-1_avif-s7_jxl-s6_ssimulacra2__bpp-0.1-3.0.png
2023-02-03 08:23:57
now avif is 8% better at the very low end, jxl is 17% better around 1 bpp (and 22% better or so around 2bpp)
2023-02-03 08:28:16
'web quality' ranges more or less from ssimulacra2=50 (web devs who don't care about quality and only about bandwidth) to ssimulacra2=85 (web devs who don't care about bandwidth and only about quality)
Deleted User
2023-02-03 08:28:23
I understand, but it is still one side against the other - to convince the general public, there is needed a neutral pipeline ... e.g. a github in which all sides decides to choose as neutral and objective benchmarking pipeline as possible
_wb_
2023-02-03 08:29:00
this is not really one side against the other: these plots come from the avif team, not from me
2023-02-03 08:29:27
so there is no controversy about the benchmarking pipeline
2023-02-03 08:30:05
i'm fine with these plots
2023-02-03 08:31:01
the disagreement is only on which plot to look at and put on the 'front page', and which part of that plot to give the most weight
Deleted User
2023-02-03 08:32:22
ok, so the problem is how to stimulate a real discussion? media coverage could do it ...
2023-02-03 08:32:50
e.g. JPEG members writing articles, contacting media ...
_wb_
2023-02-03 08:34:51
the avif team is basically weighing things so that effectively the range of ssimulacra2 below 30 is considered more important than all the range of ssimulacra2 above 30, so they can arrive at the conclusion that avif has better compression β€” except that's the kind of quality you get when doing a video call on a bad network, nobody would use such low qualities on a web site
2023-02-03 08:35:50
sure, avif has (somewhat) better compression at this type of quality: https://res.cloudinary.com/cloudinary-marketing/images/f_auto,q_auto/v1670951930/jpegxl2/jpegxl2-png?_i=AA
2023-02-03 08:37:09
but that's only relevant for bandwidth-constrained video use cases. Nearly no still image use case would use such low qualities.
paperboyo
2023-02-03 08:37:42
^ even **I** wouldn’t go that far! 😜
_wb_
ok, so the problem is how to stimulate a real discussion? media coverage could do it ...
2023-02-03 08:45:29
I think we need to somehow get independent benchmarks and opinions to be performed. Anything coming from me or from JPEG will (rightfully) be considered a biased source. At this point, I think we need e.g. a professional photographer or web dev or some other 'expert user' to just try jxl, compare it with avif/jpeg/webp/heic for their own use case, manually encoding images at the qualities they would like to use, and write about their experiences.
yurume
2023-02-03 08:52:03
people seem to quote Nick Doyle (Akamai) for that matter, but that was also not a public benchmark. did you ever get more information from him?
_wb_
2023-02-03 09:02:46
no, he didn't respond to my questions
orchid_glamour
2023-02-04 09:01:30
I dont understand how they can say AVIF is faster because its multithreaded. Its not like in the real world youre only decoding a single image at a time in browsers. Likewise for the actual encoding of images for use on websites. They are either done in parallel as part of a batch build or they are processed in parallel on workers as part of an image processing pipeline. And for those people that are actually saving out single images from an editor - they arent going to notice the difference between a second here or there. Then theres the ACTUAL cost of the energy involved in that CPU time...
_wb_
2023-02-04 09:08:44
Not to mention that multithreaded avif encoding comes at a ~3% cost in BD rate. Unlike multithreaded libjxl encoding which just produces the exact same bitstreams as single-threaded, only doing in parallel what can be done without changing the result.
orchid_glamour
2023-02-04 09:14:21
i was flicking through social media the other day on my phone. just flicking through pages mindlessly. Well - almost mindlessly - i was waiting for the images to load so not scrolling too fast, and it occurred to me how perfect an example for the benefits of JXL that usecase would be
2023-02-04 09:15:02
i wonder how hard it would be to put together some kind of demo to showcase jxl vs avif in that kind of case
2023-02-04 09:16:02
scrolling through, viewing output from progressive decoding, etc
2023-02-04 09:16:13
terminating downloads that are no longer on screen, etc
2023-02-04 09:16:50
its a real usability concern in that respect
2023-02-04 09:16:57
IMHO
2023-02-04 09:18:27
<@794205442175402004> did you get my message on twitter the other day? Your website said its best place to reach out to you, but not sure if you got the message given how awful twitter is these days
_wb_
2023-02-04 09:39:30
Got it, forgot to check pending message requests
Demiurge
_wb_ which looks like avif is like 15% smaller than jxl for the same quality according to ms-ssim
2023-02-05 03:25:14
the dumbest thing is that they only show ms-ssim results without even attempting to perform any basic sanity-check validation by comparing the actual image data side by side to see what they are even comparing or what it even looks like.
_wb_ I think we need to somehow get independent benchmarks and opinions to be performed. Anything coming from me or from JPEG will (rightfully) be considered a biased source. At this point, I think we need e.g. a professional photographer or web dev or some other 'expert user' to just try jxl, compare it with avif/jpeg/webp/heic for their own use case, manually encoding images at the qualities they would like to use, and write about their experiences.
2023-02-05 03:32:04
This would be the most effective way to draw attention to the BS that's going on with web browsers right now. If anyone actually tried to use AVIF and JXL and compare them, most people would walk away from the experience wondering what the hell is mozilla and google thinking
Orum
2023-02-07 02:39:31
most professional photographers have little understanding of file formats beyond "jpg = lossy" and "tiff/raw = better"
gb82
2023-02-13 06:58:54
https://autocompressor.net/image_bench.html
_wb_
2023-02-13 07:55:46
That is a somewhat strange way to benchmark encoders. I am not convinced that this says much about how good an encoder is. It's an interesting experiment though, and I do think it does say something about the range an encoder is most suitable for.
gb82
2023-02-14 01:08:21
Here it says JPEG XL's results are very promising at higher quality, which is where it really pulls ahead compared to video codecs. The testing methodology did confuse me a bit though but I think its interesting nonetheless
Demiurge
2023-02-14 05:53:48
There are a lot of ABX programs for doing blind comparisons of audio. But I don't think there is something like that for images.
2023-02-14 05:53:56
But it's probably not as needed.
2023-02-14 05:57:37
Any comparison that doesn't let you see what the actual things being compared actually look like is a worthless comparison that has no value or purpose.
2023-02-14 05:58:18
Using a metric to compare which image format is the best is like declaring which audio codec sounds the best without actually listening to any samples.
gb82 https://autocompressor.net/image_bench.html
2023-02-14 06:09:01
This article says they found an ideal quality level or bitrate for each codec but fails to show what the ideal for each codec actually LOOKS like at the end of the article...
2023-02-14 06:09:36
So you have no reference for what AVIF's supposed ideal actually looks like compared to other codecs
2023-02-14 06:09:59
Overall pretty useless and a missed opportunity
2023-02-14 06:11:05
If someone presents an audio codec comparison and fails to include any actual samples for reference they would be laughed at and their hydrogenaudio forums account would probably get banned. Fail.
BlueSwordM
2023-02-14 06:11:08
>Pretty useless >SSIMULACRA2
2023-02-14 06:11:50
Basically, this is a good benchmark which shows the inflection points at which the highest visual quality/bit can be obtained using each encoder. `Absolutely no attention should be paid to the absolute SSIMULACRA2 values, only to the shape and peak of the curves. Target sizes differ.`
Demiurge
2023-02-14 06:13:19
Supposedly. But without any reference at the end we don't even know how AVIF looks like at cq-level 32
2023-02-14 06:13:39
So we don't even know if the "ideal" bitrate actually looks useable
2023-02-14 06:14:15
since the ideal was judged by computer vision, not human vision
_wb_
2023-02-14 06:20:22
Not even that, the ideal is judged by downscaling the image, encoding, decoding, upscaling again, and then comparing that to the original
Demiurge
2023-02-14 06:20:52
The graph shows which quality level packs the most amount of quality in the same amount of bits. At least in theory.
2023-02-14 06:21:17
Which quality level has the best quality-bitrate economy.
2023-02-14 06:21:51
It does not say whether or not that "ideal" quality level looks remotely acceptable to human eyes.
2023-02-14 06:22:57
So without being able to LOOK at the results, it's a worthless test.
2023-02-14 06:23:22
Like all tests that don't include any actual sample references.
BlueSwordM
2023-02-14 06:23:55
I mean, it's not a worthless test. A worthless test would be to look at PSNR values between encoders, not even within the same encoder.
Demiurge
2023-02-14 06:24:19
That's essentially what's happening here.
_wb_
2023-02-14 06:26:29
It does say something imo, but not the main thing that matters, which is (imo): how does it perform at 1:1 at reasonable qualities?
Demiurge
2023-02-14 06:27:56
All that was done is a metric was used in order to attempt to determine for each encoder which quality level has theoretically the best bitrate economy. They determined ideal quality settings at the end, for each encoder. But they neglected to show what these ideal settings actually look like in practice so we can get an idea of what each codec's strength actually looks like.
2023-02-14 06:28:32
Having a visual reference would have helped us determine when to use which codec.
2023-02-14 06:29:31
Neglecting to include one is a serious omission.
2023-02-14 06:33:24
Sorry if I sound harsh but I can't believe how common this is with images/video, it's something that would never ever fly in the audio world.
2023-02-14 06:34:44
It would be outrageous and laughable over there.
2023-02-14 06:35:00
And like I said they would probably get banned from hydrogenaudio
BlueSwordM
Demiurge It would be outrageous and laughable over there.
2023-02-14 06:42:23
Because comparing audio with metrics is far harder to do than with images. Let alone doing it well.
2023-02-14 06:43:36
Perhaps the author should have added a line of the sort: "This study could be further revised in a future article as to delve deeper in the subject."
_wb_
2023-02-14 06:44:31
Good image testing is done with blind subjective testing too. It's just expensive and time-consuming to do that, so metrics became a popular/necessary alternative. The main issue is when codec devs start trusting the metrics more than subjective results and optimize too much for the metrics even when it causes images to look workse.
2023-02-14 06:45:46
No metric is perfect, I know for sure that there are cases where ssimulacra2, butteraugli, or any other 'good' metric will correlate poorly with subjective results.
2023-02-14 06:47:42
(for the 'old' metrics like ssim and vmaf, correlation is quite clearly poor, especially when comparing an encoder that has been tuned to death to optimize for one of them to an encoder that doesn't care about those metrics)
2023-02-14 06:50:16
Many metrics are colorblind (ignoring chroma completely, or not taking chroma properly into account), which is no doubt one of the reasons why there's such a widespread belief that chroma subsampling and other forms of chroma thrashing are OK.
2023-02-14 06:51:29
While most of it is basically because academics were going "color is complicated, so let's start with grayscale, make a metric for that, and leave color for the future work section of the paper"
BlueSwordM
_wb_ Many metrics are colorblind (ignoring chroma completely, or not taking chroma properly into account), which is no doubt one of the reasons why there's such a widespread belief that chroma subsampling and other forms of chroma thrashing are OK.
2023-02-14 06:51:39
To be fair, with more advanced chroma scaling algorithms being used in more modern codecs, the benefits of full chroma resolution aren't always as high as they were compared to earlier codecs.
2023-02-14 06:53:01
Now, I still don't want chroma subsampling... πŸ™‚
_wb_
2023-02-14 06:53:03
Sure, but with better entropy coding there's also no reason to do subsampling as opposed to having lots of zeroes in the high frequencies (but the option to keep some nonzeroes there where needed)
2023-02-14 06:57:07
The main reason why chroma subsampling is still a thing today imo, is because of hardware implementations of video codecs, where 4:4:4 is almost twice as costly as 4:2:0 due to buffer sizes
gb82
2023-02-14 06:58:52
here's my source, just read some tests
2023-02-14 07:00:10
2023-02-14 07:00:23
here's the script:
2023-02-14 07:00:53
written by the same person who did the autocompressor tests
afed
2023-02-14 07:09:50
this is still a very strange comparison, this test is only for one image comparing when resizing is a pretty significant loss in accuracy of comparisons it works for a larger difference, also this is used for video encoding to understand at what bitrate it needs to decrease resolutions to keep quality (like stay at 1080p or drop to 720p), and as other similar tests have shown, then more modern formats very rarely need to decrease resolution, unlike older ones but for a small difference this comparison has very low accuracy, also its almost unusable for web, I doubt that someone will use very high resolution with higher compression and lower resolution for viewing, also the resizing algorithms can be different, like different browsers can use different algorithms, even not very good bilinear resizing also strange conclusions about the ideal Q, but it's ideal only for this particular image with this resolution, with this complexity, with this size limitation, and for this metric it can show how effectively codecs can hold quality without resizing, but even that requires a lot more test images
Demiurge
2023-02-14 12:26:14
Well the distortion introduced from resampling potentially adds noise to the data, which is why no one else does this, or why it's so unusual...
_wb_
2023-02-14 02:36:14
As a baseline, it would be interesting to see what that curve looks like when doing lossless and only doing the downscale/upscale thing
2023-02-14 02:37:54
Drawing conclusions from one image is in any case very risky - but aggregating data from many images is also tricky, since you easily get into situations where you're drowning in a lake that is only 10cm deep on average...
afed
2023-02-14 02:58:15
yeah, but what I mean is that for any encoder there is no one best Q/quality, even with resizing and tests on other images would show different results
Demiurge
2023-02-15 10:04:31
I wonder if they would have achieved the same results without any resizing being involved, simply by measuring the ssimu2/bitrate ratio for each quality setting. I fail to see why the resizing step was even necessary at all. Couldn't they have created the same graph without the resizing?
2023-02-15 10:04:57
And without the wasted time trying to make each quality level match the same filesize by resizing the image
2023-02-15 10:05:24
That would only introduce noise as far as I can tell.
2023-02-15 10:07:29
I'm pretty sure a graph of y=ssimu2/bitrate, x=q-level would theoretically be the same curve, a graph of the same thing.
2023-02-15 10:09:18
Just divide the ssimu2 score by the bitrate, instead of trying to match file sizes... That would save time and graph the same thing, no?
2023-02-15 10:09:36
In theory? Am I missing something here?
2023-02-15 10:10:30
The crest of that curve would show the most bit-efficient quality setting, in exactly the same way as these graphs.
2023-02-15 10:11:34
And the "waviness" being measured here in these graphs is an artifact of resampling/resizing.
2023-02-15 10:11:49
It's just noise in other words
2023-02-15 10:12:35
Unless some codecs truly have a hard time with specific resolutions.
2023-02-15 10:12:48
which is a weird assumption to make.
2023-02-15 10:13:50
Pretty weird test...
bonnibel
_wb_ Sure, but with better entropy coding there's also no reason to do subsampling as opposed to having lots of zeroes in the high frequencies (but the option to keep some nonzeroes there where needed)
2023-02-16 03:02:10
literally, even in my limited testing with just mozjpeg i got better results by just disabling subsampling and using a lower q for chroma than by enabling subsampling and thats not even doing anything smart
Jyrki Alakuijala
bonnibel literally, even in my limited testing with just mozjpeg i got better results by just disabling subsampling and using a lower q for chroma than by enabling subsampling and thats not even doing anything smart
2023-02-22 12:49:47
this matches my experiences that led to dropping subsampling in jpeg xl/pik as a compression strategy
2023-02-22 12:50:51
chroma subsampling is just weird -- it allows chromacity ringing to propagate 2x longer, and there is nothing in the eye that hints that it is a valid strategy
2023-02-22 12:51:45
it worked well at a time when cameras didn't generate hf chroma, and thus made sense for early tv
2023-02-22 01:10:19
when we built guetzli and guided it with butteraugli, we gave it an option to choose yuv420 --- it would only use that option a few percent of the time
2023-02-22 01:10:30
like 4 % perhaps
_wb_
2023-02-22 01:10:59
when color tv was introduced and broadcast bands were already assigned for black&white signals, they literally had to squeeze the color info in a rather limited range since they wanted to keep things compatible with the old b&w TVs and they only had some room in the padding between the already assigned bands to put all of the chroma signal
2023-02-22 01:13:37
I think that's the main reason why historically, chroma was just crap quality β€” because big compromises had to be made to be able to broadcast in color in a backwards compatible way. And then I think video folks got so used to bad chroma quality that they kept doing it and rationalized it away as being perceptually fine
Jyrki Alakuijala when we built guetzli and guided it with butteraugli, we gave it an option to choose yuv420 --- it would only use that option a few percent of the time
2023-02-22 01:18:22
yeah but guetzli was targeting q>85. I think below q80 or so, 420 does typically beat 444 in jpeg (mostly because jpeg's entropy coding is not very good; when looking at jxl-recompressed sizes, probably the difference disappears and 444 might even get better)
paperboyo
_wb_ yeah but guetzli was targeting q>85. I think below q80 or so, 420 does typically beat 444 in jpeg (mostly because jpeg's entropy coding is not very good; when looking at jxl-recompressed sizes, probably the difference disappears and 444 might even get better)
2023-02-22 06:00:46
I may be wrong but I think both mozJPEG and (at least old) Adobe encoder dropped chroma quality at arbitrary q levels in JPEG. Can’† remember which level, though. I fear stuff happening without me knowing…
afed
2023-02-22 06:04:33
https://discord.com/channels/794206087879852103/803663417881395200/1068949307987857499
spider-mario
bonnibel literally, even in my limited testing with just mozjpeg i got better results by just disabling subsampling and using a lower q for chroma than by enabling subsampling and thats not even doing anything smart
2023-02-23 09:24:18
I briefly tried that with libjpeg-turbo (not moz) on just one image and the results seemed to favour 4:4:4 + lower chroma q at high qualities and either 4:2:0 or 4:4:4 + slightly lower luma q + lower chroma q at lower qualities
2023-02-23 09:24:48
as in: 4:4:4 q100,97 matched the size of 4:2:0 q100 while retaining more detail,
2023-02-23 09:25:30
but 4:4:4 q85,<n> required a very low <n> to match the size of 4:2:0 q85, at which point the 4:4:4 image was disgustingly bad
2023-02-23 09:25:56
but it was much easier to match the size of 4:2:0 q85 with 4:4:4 q82,<n>, and then it was more comparable
gb82
2023-02-25 03:21:57
https://cdn.discordapp.com/attachments/673202643916816384/1078879391024689192/chart.png
2023-02-25 03:22:14
seems like well-tuned jpeg with arithmetic coding is kinda great
2023-02-25 04:53:08
here's another on a non-photographic image
DZgas Π–
2023-02-25 08:49:22
Well non
HLBG007
gb82 here's another on a non-photographic image
2023-02-25 08:59:49
Can I somewhere see the picture ?
gb82
2023-02-25 09:24:07
https://cdn.discordapp.com/attachments/673202643916816384/1078902630639751218/the_apps.png
HLBG007
2023-02-25 10:30:28
2023-02-25 10:32:55
<@532010383041363969> <@794205442175402004>
gb82
2023-02-25 10:38:31
`cjxl v0.9.0 6280645e [AVX2,SSE4,SSSE3,Unknown]`
2023-02-25 10:56:24
2023-02-25 10:56:29
2023-02-25 10:59:18
`cwebp the_apps.png -lossless -near_lossless 0 -z 9 -o the_apps_slightloss.webp`
2023-02-25 11:02:43
would spline detection make a big difference w jxl in a situation like this?
2023-02-25 11:15:58
https://slow.pics/c/zXYbKxAV
_wb_
gb82 would spline detection make a big difference w jxl in a situation like this?
2023-02-25 11:18:38
I think better patch detection would help more.
afed
2023-02-26 09:50:46
looks promising for fast image compression, but it seems to be some old jxl version, because e1 speed is almost the same as e2, also very strange that memory consumption is the same for all efforts <https://encode.su/threads/4025-HALIC-(High-Availability-Lossless-Image-Compression)>
2023-02-26 10:10:33
> **HALIC (High Availability Lossless Image Compression)** > Fully one thread is running and SIMD, ASM or GPU is not used. > My goal was to make something as fast as possible, low-resource consuming and suitable for multithreading. The work is still very new at the moment and there are things I need to improve. I want to improve as much as I can without distractions. > Of course, I will share the codes later. This is not a secret especially if it's going to be open source
gb82
2023-02-26 10:15:10
Some web benchmarks. Promising results for Thorium!
HLBG007
_wb_ I think better patch detection would help more.
2023-02-26 10:42:45
when will this be built into the source code? πŸ™‚
_wb_
HLBG007 when will this be built into the source code? πŸ™‚
2023-02-26 11:26:20
It requires research, it's not trivial.
Demez
2023-02-26 04:33:44
something funny I found with these tests is that the JavaScript ones were much faster on waterfox classic, and just a bit faster on waterfox for me as well
2023-02-26 04:34:46
also I ended up getting different numbers on my end, Firefox was always slower for me than chromium
diskorduser
2023-02-26 04:36:29
Yes Firefox is noticeably slower than chromium but Firefox fans always lie that they don't notice any difference.
Demez
2023-02-26 04:39:50
here's one case where waterfox classic is faster for some reason
2023-02-26 04:40:05
images from a few weeks ago
2023-02-26 04:41:02
motionmark also did horrible on firefox for me as well
username
2023-02-26 04:42:07
I have a theory that mozilla in their attempt to make the jit for their javascript engine easier to work with they ended up making it regress in performance
Demez
2023-02-26 04:42:16
here's waterfox
2023-02-26 04:42:25
thorium
username I have a theory that mozilla in their attempt to make the jit for their javascript engine easier to work with they ended up making it regress in performance
2023-02-26 04:42:43
yeah I think so too lol
2023-02-26 04:44:22
also I had tested Brave and was getting numbers right around thorium, or slightly higher
yoochan
diskorduser Yes Firefox is noticeably slower than chromium but Firefox fans always lie that they don't notice any difference.
2023-02-26 05:26:52
We don't notice because we don't use both. I hate the way chrome hold an obnoxious connection to a single google account to work properly... The increased performance is not enough, after all, it's just browsing.
2023-02-26 06:10:31
(tested at 788.44 on motion mark, for firefox 110... should be good enough)
w
2023-02-26 09:42:57
I've always known Firefox is slower, but it's also just faster
2023-02-26 09:46:26
I don't particularly care how many cums per fart the browser can do. What I do care about is how fast I can make a new tab with a mouse and stuff like that
2023-02-26 09:46:57
there should be a benchmark measuring the time to do actions
gb82
2023-02-26 11:23:16
that's heuristic & not as easy to quantify
gb82 Some web benchmarks. Promising results for Thorium!
2023-02-26 11:23:43
Firefox consistently wins for me in WebXPRT 3/4 & MotionMark 1.2, so it isn't always "slower"
HLBG007
2023-02-27 08:59:50
_wb_
2023-02-27 09:10:05
Lenna is not a very good test image. Also benchmarking is better done with a bigger corpus, because codecs do have behavior that depends on image content.
HLBG007
_wb_ Lenna is not a very good test image. Also benchmarking is better done with a bigger corpus, because codecs do have behavior that depends on image content.
2023-02-27 09:13:38
the benchmark was my answer to this posting https://discord.com/channels/794206087879852103/794206170445119489/1079857874488012942
_wb_
2023-02-27 09:15:37
What encode settings are you comparing here?
2023-02-27 09:19:40
I think libaom s6 vs jxl e6 is the most relevant comparison. That still gives avif more time budget than jxl, but not a crazy factor like 30x. No image cdn is going to multiply their cpu bill and latency by 30. That's only something hobbyist blogs or the like can afford, or maybe some very high traffic images above the fold on important landing pages...
HLBG007
_wb_ What encode settings are you comparing here?
2023-02-27 09:53:35
jxl -e 5 -q 0..95 avif -s 5 -j 8 -d 10 -y 444 --min 1 --max 63 -a end-usage=q cq-level=(63 - 0..60)
DZgas Π–
2023-02-28 11:02:21
jxl e5 vs avif s5 πŸ˜‚
HLBG007
2023-02-28 08:11:45
https://libwebpjs.hohenlimburg.org/avif-jxl-bench/charts.html
2023-02-28 08:15:42
<@532010383041363969> You like bugs in jxl lossy? Here the link
yoochan
2023-03-01 06:07:22
It would be interesting indeed to compare settings which take roughly the same time to encode πŸ€”
improver
2023-03-01 05:35:52
encoding time should be third axis tbh
_wb_
2023-03-01 05:51:18
ooh, that could make an interesting 3D plot
yoochan
2023-03-01 05:59:40
Effort vs bbp vs quality metrics vs encode time.... 4D graph! Dimensions are like blades on razors, we always need one more than you expect πŸ˜…
2023-03-01 06:01:20
Nah effort is not really required... 3D should be nice...
improver
2023-03-01 06:50:34
yeah different quality metrics could use different colors
Demiurge
HLBG007 https://libwebpjs.hohenlimburg.org/avif-jxl-bench/charts.html
2023-03-01 07:25:41
this is a lot of images...
2023-03-01 07:26:32
And these graphs look really strange. AVIF destroying AVIF at nearly the same bitrate...
2023-03-01 07:32:29
AVIF wrecking JXL at pixel graphics and blocky nearest-neighbor upscaled graphics... This could be fixed with some sort of specialized encoder designed for non-photographic images or maybe a way to detect images that have an unusually low amount of entropy per pixel and using different techniques on those images...
spider-mario
2023-03-01 07:47:56
on those upscaled images, jxl lossless does quite well
2023-03-01 07:48:42
```console $ cjxl 0czt1ekqww531.png test.jxl JPEG XL encoder v0.9.0 984d6f1e [AVX2,SSE4,SSSE3,Unknown] Read 1152x1440 image, 65296 bytes, 387.0 MP/s Encoding [VarDCT, d1.000, effort: 7], Compressed to 243678 bytes (1.175 bpp). 1152 x 1440, 7.00 MP/s [7.00, 7.00], 1 reps, 32 threads. $ cjxl -d 0 0czt1ekqww531.png test.jxl JPEG XL encoder v0.9.0 984d6f1e [AVX2,SSE4,SSSE3,Unknown] Read 1152x1440 image, 65296 bytes, 385.0 MP/s Encoding [Modular, lossless, effort: 7], Compressed to 23977 bytes (0.116 bpp). 1152 x 1440, 3.94 MP/s [3.94, 3.94], 1 reps, 32 threads. ```
HLBG007
yoochan It would be interesting indeed to compare settings which take roughly the same time to encode πŸ€”
2023-03-01 08:05:53
https://libwebpjs.hohenlimburg.org/avif-jxl-bench/charts_8-5.html
2023-03-01 08:08:33
I updated the charts. At the beginning you need a little bit waiting time
2023-03-01 08:16:13
In this charts y: ssimulacra2 x: bpp y: ssimulacra2 x: EncodingTime
_wb_
2023-03-01 08:25:21
I can't load that page on my phone, could you screenshot it?
Traneptora
_wb_ I can't load that page on my phone, could you screenshot it?
2023-03-01 08:26:29
it's a very large page
_wb_
2023-03-01 08:27:15
I see. Maybe split it in multiple pages?
2023-03-01 08:28:12
Are you polyfilling those plots or something? My phone is choking on it
improver
2023-03-01 08:53:24
they're kinda interactive
HLBG007
_wb_ I can't load that page on my phone, could you screenshot it?
2023-03-01 09:16:46
should work now
_wb_
2023-03-02 07:14:07
is this still s5 vs e5 ?
2023-03-02 07:15:05
for https://files.catbox.moe/1i2wyr.png there is no avif
2023-03-02 07:15:51
also https://files.catbox.moe/0x96y3.png only has two avif data points
2023-03-02 07:17:20
the times for https://i.redd.it/01tc6iemk2x31.png are somewhat atypical, how are you measuring time?
2023-03-02 07:17:48
is this single-core or multithreaded? cpu time or wall time?
HLBG007
_wb_ is this still s5 vs e5 ?
2023-03-02 07:18:24
s8 vs e5
_wb_ is this still s5 vs e5 ?
2023-03-02 07:18:34
I removed bpp over < 3 for avif else the chart would look horrible
_wb_ for https://files.catbox.moe/1i2wyr.png there is no avif
2023-03-02 07:21:19
https://files.catbox.moe/1i2wyr.png cq-level filesize bpp ssimulacra encodingtime 0 142271 17.36706542968750000000 100.00000000 .072472467 5 99227 12.11267089843750000000 100.00000000 .047063700 10 82215 10.03601074218750000000 100.00000000 .051144220 15 72916 8.90087890625000000000 100.00000000 .049388151 20 67125 8.19396972656250000000 93.45713385 .052162421 25 62231 7.59655761718750000000 88.17699420 .041530926 30 56954 6.95239257812500000000 82.78476910 .040196861 35 51784 6.32128906250000000000 74.20391260 .038413292 40 47594 5.80981445312500000000 62.33402449 .036847730 45 44025 5.37414550781250000000 44.05832175 .035554697 50 41648 5.08398437500000000000 19.63478447 .031802677 55 40761 4.97570800781250000000 -3.74272099 .029050859 60 40333 4.92346191406250000000 -42.28387609 .028723501
_wb_
2023-03-02 07:21:27
oh, https://i.redd.it/01tc6iemk2x31.png has an alpha channel, that probably explains the slower encode times for jxl
2023-03-02 07:23:58
it looks like an alpha channel that is only there to fool some things into keeping it as PNG, alpha is 255 everywhere except one pixel where it is 254
2023-03-02 07:24:34
the kind of thing people resort to when they want to preserve fidelity
2023-03-02 07:26:43
if you could add thumbnails of the images to the page, it would be useful β€” just to have an idea of what kind of image content it is
HLBG007
2023-03-02 07:30:18
https://libwebpjs.hohenlimburg.org/avif-jxl-bench/charts_8-5-all.html all bpp
_wb_
2023-03-02 07:33:59
https://i.redd.it/0czt1ekqww531.png lossless jxl is a better idea than lossy on an image like that: ``` Encoding [Modular, lossless, effort: 5], Compressed to 28694 bytes (0.138 bpp). Encoding [Modular, lossless, effort: 9], Compressed to 21944 bytes (0.106 bpp). ```
HLBG007
_wb_ is this single-core or multithreaded? cpu time or wall time?
2023-03-02 07:35:42
avif multithread 8 jxl defaults
_wb_
2023-03-02 07:36:10
of course ideally we would detect these cases where lossless works better
HLBG007
_wb_ the times for https://i.redd.it/01tc6iemk2x31.png are somewhat atypical, how are you measuring time?
2023-03-02 07:38:50
start=`date +%s.%N` ./avifenc or ./cjxl end=`date +%s.%N` runtime=$(echo "$end - $start" | bc) echo "$runtime" >> $2
_wb_
2023-03-02 07:39:07
so wall time
2023-03-02 07:40:25
for end-users encoding images on their laptop/desktop machine, that's fine
2023-03-02 07:41:47
at Cloudinary we do image encoding using single-core, since if you need to do lots of encoding, that's always more effective
2023-03-02 07:45:22
2023-03-02 07:46:10
you can see here how the avif team's codec comparison arrived at the conclusion that avif encoding is fast
2023-03-02 07:47:22
if you look mostly at the region of unusably low qualities (ssimulacra2 < 0), it does actually get quite fast
2023-03-02 07:48:09
for video that range is still useful, so it's understandable that they looked at that range β€” they're mostly video codec engineers, I assume