Closed monad0 closed 1 week ago
I agree that there are many caveats and nuances here.
Clearly there are still circumstances / use cases where lossless webp is more competitive than how it's depicted in that plot, and there are certainly images where libwebp is Pareto-better than libjxl.
For the front page high-level overview and "sales pitch", I don't think it's a good idea to specifically highlight the (current) weaknesses of (lib)jxl. I think it's better to add more in-depth subpages where things can be covered with more nuance, rigor and fairness. This will also require explaining the difference between a codec and an encoder etc.
For some specific circumstances (photographic images, encoding a single relatively large image at a time on a modern multi-core computer, lossless or high-quality lossy) — which I do think are pretty relevant circumstances for some of the main use cases of JPEG XL — these plots do paint a simplistic but roughly correct picture. For other circumstances (non-photo, single-core, very low quality, etc), the situation is indeed different and can be more favorable to webp / avif / heic.
I don't think we should hide the nuances, but I do think it makes sense on the front page to highlight mostly the strengths and the reasons for using jxl, and to keep the more complicated and nuanced analysis for subpages.
For the front page high-level overview and "sales pitch", I don't think it's a good idea to specifically highlight the (current) weaknesses of (lib)jxl.
Yes, I'm rather speaking to being honest in making claims. This gives the claims more presence and resilience. I didn't see a good way to just fix it directly, because I didn't know where those plots came from, but now we know their meaning, we can just communicate that specifically. https://github.com/jxl-community/jxl-community.github.io/pull/44
Under "Fast Encoding & Decoding" we're shown two dramatic graphs followed by equaling summary claims. Unfortunately, the graphics betray no specific details, nor is any process communicated which would encourage trust in the representations. Promisingly, the graphs seem to have been derived from Jon's prior work. The lossless graph shares the shape of this one in particular. Jon offers us nearly everything we'd wish to know about the methodology and the specific details of the findings, which arms us with the information to identify in what way the broad conclusions are misleading.
JPEG XL and one small slice of the Pareto front
For comparing lossless JXL to WebP, the game was heavily stacked in JXL's favor. First, cjxl utilized 8 available threads on sufficiently large images to make those threads count, while cwebp apparently used its default single threading (about WebP's settings, the article is not totally transparent, but I would expect an MT label like AVIF. cwebp only uses two threads with
-mt
anyway). Improvement in real time performance by adding more threads is of practical importance in contexts dealing with a single image at a time, but it doesn't generalize well to contexts where images are small, parallel resources are limited, or very many images need processed. Second, this graph represents mostly photographic or similarly complex content, were lossless WebP is relatively weaker. This at least is demonstrated by the article's following chart on non-photo content, where WebP is much more competitive despite its threading disadvantage.Not JPEG XL and the many slices of the Internet front
Thing is, other people can make graphs, divine stats, and they're very likely to show less favorable results than JXL's best case. On a large and diverse corpus, I find this with otherwise default lossless settings: Here, cjxl has access to 20x the number of threads as cwebp!
Here's the same, but plotting CPU time:
I can make even less favorable graphs. Here's just UI and text, but with singlethreading for fairness: I hope you're not handling screenshots.
But if I measured only photographic stuff, I might conclude JPEG XL wins hands down.
Corpus composition: