So the Chrome team (or is it the AVIF team? I am a bit confused now) finally released the data that was the basis for the decision to remove JPEG XL support in Chrome. Here it is: storage.googleapis.com/avif-comparisoβ¦
It would be good if all people with experience in image compression take a closer look at this data and perhaps try to reproduce it. I will certainly do the same. I will perhaps already give some initial remarks/impressions.
Decode speed: why is this measured in Chrome version 92, and not a more recent version? Improvements in jxl decode speed have been made since then β that version of Chrome is more than 1.5 years old.
Encode speed: these measurements seem somewhat strange, and do not correspond to my own measurements. It would be interesting to check this with independent measurements.
Note that the fastest avif encode speed is not very useful for still images (it is not better than jpeg).
Quality. What is strange is that only objective metrics are used, while it is well known that subjective evaluation is needed to reach any useful conclusions β trusting just the metrics is not a good idea.
In particular, MS-SSIM in YCbCr is not a very reliable metric to compare an encoder that works in YCbCr and optimizes for SSIM (like the avifenc setting they used) against an encoder that works in XYB and optimizes for perceptual quality (like libjxl).
Also the bitrate range that was selected (going as low as 0.1 bpp) for computing BD rates, leads to an overemphasis on codec performance at fidelity ranges nobody uses in practice. The median AVIF image on the web is around 1 bpp, not 0.1 bpp.
For example, on this plot you see that their data confirms and even exceeds my estimate that JXL compresses 10-15% better than AVIF in the range that is relevant for the web. However by putting a lot of weight on the < 0.4 bpp range, this plot is averaged to "JXL is 3% better".
For lossless compression it would be interesting to look at different speed settings too. But this is less relevant for the web.
The choice of test sets is somewhat strange. In particular, the "noto-emoji" set is strange, since these images are better kept as vector graphics. Also dropping the alpha channel is a strange choice here. It seems like a cherry-picked and not very relevant test set.
I would also have expected a discussion or even some benchmarks related to other relevant aspects, like progressive decoding, header overhead / small images, jpeg recompression, etc.
Anyway, those are some of my initial thoughts. I will have a closer look after the weekend.
β’ β’ β’
Missing some Tweet in this thread? You can try to
force a refresh
"Desperate times call for desperate measures."
Hamas and the Israeli regime have in common that they justify their own unjustifiable, inhumane actions by pointing to the unjustifiable, inhumane actions of the other side, leading to a vicious cycle of desperation.
Although it is linguistically perhaps not so clear in English, the only antidote for desperation is HOPE. Hope is the optimistic, constructive feeling that we can work together to build a better world, a world of peace, freedom, solidarity and social justice.
Bombs and rockets shatter hope and feed desperation. Bloodshed feeds bloodlust. No weapon can ever stop this cycle of violence. No wall can ever bring freedom.
@laughinghan@atax1a@atomicthumbs Video codec intra frame from today is compression-wise indeed better than image formats from the 80s and 90s like jpeg and png.
But there are some downsides. Let me elaborate a bit.
@laughinghan@atax1a@atomicthumbs 1) Video codecs are designed for low bitrate, since they need to do lots of frames per second so bandwidth is a bigger concern and also you don't have time to look at each single frame anyway. Compression techniques for low bitrate are different than for high fidelity though.
@laughinghan@atax1a@atomicthumbs (e.g. low bitrate benefits from directional prediction modes and aggressive deblocking filters that can hide artifacts well; high bitrate benefits from context modeling and high precision)
Chrome's decision may actually turn out to be a blessing in disguise, in the long run. Allow me to explain. π§΅
WebP and AVIF were created specifically for one use case: web image delivery. In both cases, the reasoning was "we have this video codec in the browser anyway, so we might as well use it for images too".
They are not very suitable for other use cases, like image authoring, printing, or capture, since they inherit the limitations of video codecs designed for web delivery: the compression is not designed for high-fidelity, the features are limited to what is useful in video.
There's something about color spaces and their transfer curves that has been bothering me for a while. Put bluntly: image (and video) codecs can be racist. Of course not intentionally, and it's a pretty subtle thing, but 'being bad at dark shades' has implications. An example. π§΅
Consider these two images. I'm hoping twitter recompression will not ruin them too much β these are the original images, before compression.
Let's use an AVIF encoder to significantly reduce their filesize. Using the exact same encode setting for both images, I get the following result. Of course both images have artifacts. Which one has the worst artifacts though?
Overall, JPEG XL at default cjxl speed outperforms AVIF even when using a very slow libaom setting (s1, >30 times slower). At a more reasonable libaom s7 (about half as fast as default cjxl), the improvement JPEG -> AVIF is comparable to the improvement AVIF -> JPEG XL.
Of course behind the overall picture, there are differences depending on the image contents. For example, for images of sports or rooms, AVIF actually does (slightly) better than JPEG XL (if you don't mind the extra encode time).
For landscapes or portraits, on the other hand, JPEG XL has a clearer advantage.