191
submitted 2 years ago by Paradox@lemdro.id to c/technology@lemmy.world
all 49 comments
sorted by: hot top controversial new old
[-] kbity@kbin.social 38 points 2 years ago

This is the first I've heard of the JPEG XL format, but it sounds pretty good!

Hopefully it doesn't get misused by websites to mangle lossless compressed images with so much compression they're barely visible to save a few kilobytes, though.

[-] reddig33@lemmy.world 12 points 2 years ago* (last edited 2 years ago)

What is the point of this format? How is it any better than png or webp? Do we really need yet another format? I mean 44k really isn’t that great of a savings in the example used.

[-] DarienGS@lemmy.world 16 points 2 years ago

JPEG XL provides comparable image quality to ordinary JPEG compression at around 80% of the file size. It also supports lossless encoding at smaller sizes than PNG, and can handle layers, transparency and CMYK, so in principle it could conveniently replace almost every existing raster image format.

[-] pastcoma@lemmy.world 6 points 2 years ago

So I agree with your sentiment for the most part. Mainly, it’s frustrating to see all of these new image standards come out which somehow compete with each other due to lack of browser support.

That said 44k isn’t peanuts. That’s a huge reduction, especially on lower end connection speeds.

[-] Paradox@lemdro.id 5 points 2 years ago

The article discusses how it's better than webp. Specifically, it's much better at both compression ratios and performance, at all quality levels. WebP has problems where the compression falls off due to being locked to yuv420

[-] gregoryw3@lemmy.ml 3 points 2 years ago

It is when you’re a cloud hosting platform and you have 1000’s of photos uploaded daily. That 44k saving scales massively when talking about cloud hosting platforms. The jpeg xl format license is more open than webp which is controlled by google.

The new format also enables more features than just file size, a quick google shows it supports animation, 360 photos, and image bursts (as well as more technical specifics that allow for better share ability without needing to have an accompanying json file or dropping to RAW).

This is more important because it means websites can embed photos and the web engine whether it be chromium, Firefox, or safari can handle it natively without needing JavaScript or some other intermediary.

What about png? It’s just another competing standard. At the end of the day it doesn’t really matter, but by not having competing standards we end up having one company controlling it. So since at the very least it gives a decent file size saving it’s good enough for me.

[-] DrNeurohax@kbin.social 1 points 2 years ago

Even better, this must be fantastic when you're training AI models with millions of images. The compression level AND performance should be a game changer.

[-] gregoryw3@lemmy.ml 1 points 2 years ago

Hmm, I haven’t delved into image training in a couple years so I’m assuming they still downscale images anyway, so I’m not sure how much the format helps? Do you know if better compression helps at lower resolution? I could see it helping but I could also seeing it be marginal gains and depending on processing time it might not be worth it to convert whole image sets to jpeg xl. And for performance does jpeg xl require less power/time to decode than other formats? Maybe for new image sets going forward it will be the standard.

[-] DrNeurohax@kbin.social 2 points 2 years ago

Oh, I've just been toying around with Stable Diffusion and some general ML tidbits. I was just thinking from a practical point of view. From what I read, it sounds like the files are smaller at the same quality, require the same or less processor load (maybe), are tuned for parallel I/O, can be encoded and decoded faster (and there being less difference in performance between the two), and supports progressive loading. I'm kinda waiting for the catch, but haven't seen any major downsides, besides less optimal performance for very low resolution images.

I don't know how they ingest the image data, but I would assume they'd be constantly building sets, rather than keeping lots of subsets, if just for the space savings of de-duplication.

(I kinda ramble below, but you'll get the idea.)

Mixing and matching the speed/efficiency and storage improvement could mean a whole bunch of improvements. I/O is always an annoyance in any large set analysis. With JPEG XL, there's less storage needed (duh), more images in RAM at once, faster transfer to and from disc, fewer cycles wasted on waiting for I/O in general, the ability to store more intermediate datasets and more descriptive models, easier to archive the raw photo sets (which might be a big deal with all the legal issues popping up), etc. You want to cram a lot of data into memory, since the GPU will be performing lots of operations in parallel. Accessing the I/O bus must be one of the larger time sinks and CPU load becomes a concern just for moving data around.

I also wonder if the support for progressive loading might be useful for more efficient, low resolution variants of high resolution models. Just store one set of high res images and load them in progressive steps to make smaller data sets. Like, say you have a bunch of 8k images, but you only want to make a website banner based on the model from those 8k res images. I wonder if it's possible to use the the progressive loading support to halt reading in the images at 1k. Lower resolution = less model data = smaller datasets to store or transfer. Basically skipping the downsampling.

Any time I see a big feature jump, like better file size, I assume the trade off in another feature negates at least half the benefit. It's pretty rare, from what I've seen, to have improvements on all fronts.

[-] gregoryw3@lemmy.ml 1 points 2 years ago

Interesting I hadn’t thought about how the reduced image size could allow for more data throughput overall. Also great to hear that’s it’s similar or lower processing required. Although I’m not sure what tuned for parallel I/O means? Do they split the data into subgroups so multiple threads can process it at the same time?

[-] DrNeurohax@kbin.social 0 points 2 years ago

(fair warning - I go a little overboard on the examples. Sorry for the length.)

No idea on the details, but apparently it's more efficient for multithreaded reading/writing.

I guess that you could have a few threads reading the file data at once into memory. While one CPU core reads the first 50% of the file, and second can be reading in the second 50% (though I'm sure it's not actually like that, but as a general example). Image compression usually works some form of averaging over an area, so figuring out ways to chop the area up, such that those patches can load cleanly without data from the adjoining patches is probably tricky.

I found this semi-visual explanation with a quick google. The image in 3.4 is kinda what I'm talking about. In the end you need equally sized pixels, but during compression, you're kinda stretching out the values and/or mapping of values to pixels.

Not an actual example, but highlights some of the problems when trying to do simultaneous operations...

Instead of pixels 1, 2, 3, 4 being colors 1.1, 1.2, 1.3, 1.4, you apply a function that assigns the colors 1.1, 1.25, 1.25, 1.4. You now only need to store the values 1.1, 1.25, 1.4 (along with location). A 25% reduction in color data. If you wanted to cut that sequence in half for 2 CPUs with separate memory blocks to read at once, you lose some of that optimization. Now CPU1 and CPU2 need color 1.25, so it's duplicated. Not a big deal in this example, but these bundles of values can span many pixels and intersect with other bundles (like color channels - blue can be most efficiently read in 3 pixels wide chunks, green 2 pixel wide chunks, and red 10 pixel wide chunks). Now where do you chop those pixels up for the two CPUs? Well, we can use our "average 2 middle values in 4 pixel blocks" approach, but we're leaving a lot of performance on the table with empty or useless values. So, we can treat each of those basic color values as independent layers.

But, now that we don't care how they line up, how do we display a partially downloaded image? The easiest way is to not show anything until the full image is loaded. Nothing nothing nothing Tada!

Or we can say we'll wait at the end of every horizontal line for the values to fill in, display that line, then start processing the next. This is the old waiting for the picture to slowly load in 1 line at a time cliche. Makes sense from a human interpretation perspective.

But, what if we take 2D chunks and progressively fill in sub-chunks? If every pixel is a different color, it doesn't help, but what about a landscape photo?

First values in the file: Top half is blue, bottom green. 2 operations and you can display that. The next values divide the halves in half each. If it's a perfect blue sky (ignoring the horizon line), you're done and the user can see the result immediately. The bottom half will have its values refined as more data is read, and after a few cycles the user will be able to see that there's a (currently pixelated) stream right up the middle and some brownish plant on the right, etc. That's the image loading in blurry and appearing to focus in cliche.

All that is to say, if we can do that 2D chunk method for an 8k image, maybe we don't need to wait until the 8k resolution is loaded if we need smaller images for a set. Maybe we can stop reading the file once we have a 1024x1024 pixel grid. We can have 1 high res image of a stoplight, but treat is as any resolution less than the native high res, thanks to the progressive loading.

So, like I said, this is a general example of the types of conditions and compromises. In reality, almost no one deals with the files on this level. A few smart folks write libraries to handle the basic functions and everyone else just calls those libraries in their paint, or whatever, program.

Oh, that was long. Um, sorry? haha. Hope that made sense!

[-] gregoryw3@lemmy.ml 1 points 2 years ago

Yeah a bit confusing at times but overall very cool and informative, thanks so much!

[-] blazera@kbin.social 9 points 2 years ago

there's a graph in there that only has 1 axis labeled

[-] WrittenWeird@lemmy.world 7 points 2 years ago

The compression is just that good, bro.

[-] M0oP0o@mander.xyz 4 points 2 years ago

I am going crazy or was this not posted a few days ago?

[-] M0oP0o@mander.xyz 6 points 2 years ago

I am not crazy it was posted 3 days ago with the same title. Why? https://lemm.ee/post/1629469

[-] sab@kbin.social 9 points 2 years ago

I guess it's hardly surprising it would have the same title, considering it's the title of the article. Just a case of someone not seeing the first post before sharing it again, kind of natural.

Maybe eventually users could be given a warning of the sort "This link has already been posted in this community. Are you sure you want to share it?".

[-] Xylight@lemmy.xylight.dev 2 points 2 years ago

Repost bots are on Lemmy now

[-] Paradox@lemdro.id 6 points 2 years ago

I assure you I am not a repost bot. I saw the article on hackernews and thought it was worth sharing

[-] Xylight@lemmy.xylight.dev 1 points 2 years ago
[-] M0oP0o@mander.xyz 1 points 2 years ago

For the no karma? For pushing the format?

[-] bulwark@lemmy.world 3 points 2 years ago

JPEG XL sound interesting. Maybe I missed it but why did Google drop support?

[-] ItsPlasmaSir@lemmy.ml 11 points 2 years ago

The TLDR summary is that AVIF was going to be the next generation standard for image formats but when JPEG-XL released with a near identical feature-set, better quality compression, and backwards compatibility with JPEG, the tech world put its support behind JPEG-XL.

Naturally, Google as one of AVIF’s creators was unhappy that the standard they control looks like it will lose the format war and so they decided to use their web monopoly to kill JPEG-XL in the cradle by killing support for it in Chrome around a few months ago.

While this has slowed JPEG-XL’s momentum by a lot, even the other co-creators of AVIF like Apple, Meta, and Microsoft are still putting their support behind JPEG-XL and it seems like they would rather force JPEG-XL adoption themselves than go back to AVIF.

[-] Random_user@lemmy.world 1 points 2 years ago

Wow a Weissman score of 2.89!

this post was submitted on 23 Jul 2023
191 points (99.0% liked)

Technology

71272 readers
2539 users here now

This is a most excellent place for technology news and articles.


Our Rules


  1. Follow the lemmy.world rules.
  2. Only tech related news or articles.
  3. Be excellent to each other!
  4. Mod approved content bots can post up to 10 articles per day.
  5. Threads asking for personal tech support may be deleted.
  6. Politics threads may be removed.
  7. No memes allowed as posts, OK to post as comments.
  8. Only approved bots from the list below, this includes using AI responses and summaries. To ask if your bot can be added please contact a mod.
  9. Check for duplicates before posting, duplicates may be removed
  10. Accounts 7 days and younger will have their posts automatically removed.

Approved Bots


founded 2 years ago
MODERATORS