BPG Image Format(bellard.org)
bellard.org
BPG Image Format
https://bellard.org/bpg/
35 コメント
This just proves how the following has happened without many noticing:
Fabrice Bellard has released an Artificial Neural Networks library, LibNC, "C Library for Tensor Manipulation" ( https://bellard.org/libnc/ ). Similar to PyTorch, but in sheer C.
It's the library behind that data compressor mentioned: we do not just have the compressor, he gave us the very AI tool. If that does not make one ecstatic... Summary of features:
> * C API ; * Small library, no external dependency, available for Linux and Windows ; * Define-by-run automatic differentiation engine (same idea as PyTorch) ; * High performance for both CPU (x86) and GPU (CUDA support). Optimized support of float32 and bfloat16 data types ; * CPU backend optimized for inference and small batch sizes ; * Optimized for online learning (i.e. simultaneous evaluation and training) using LSTM or Transformer models ; * Fully deterministic: return the same results at each run ; * Reproducible results (CPU backend only): return the same results regardless the CPU brand and OS
Fabrice Bellard has released an Artificial Neural Networks library, LibNC, "C Library for Tensor Manipulation" ( https://bellard.org/libnc/ ). Similar to PyTorch, but in sheer C.
It's the library behind that data compressor mentioned: we do not just have the compressor, he gave us the very AI tool. If that does not make one ecstatic... Summary of features:
> * C API ; * Small library, no external dependency, available for Linux and Windows ; * Define-by-run automatic differentiation engine (same idea as PyTorch) ; * High performance for both CPU (x86) and GPU (CUDA support). Optimized support of float32 and bfloat16 data types ; * CPU backend optimized for inference and small batch sizes ; * Optimized for online learning (i.e. simultaneous evaluation and training) using LSTM or Transformer models ; * Fully deterministic: return the same results at each run ; * Reproducible results (CPU backend only): return the same results regardless the CPU brand and OS
I found his Wikipedia entry interesting as well: https://en.wikipedia.org/wiki/Fabrice_Bellard
You forgot my favorite - JSLinux, Linux running in your browser.
The comment did mention PC emulator in JavaScript.
...and he has also written a JS interpreter: https://news.ycombinator.com/item?id=20411154
...and he has also written a JS interpreter: https://news.ycombinator.com/item?id=20411154
We should have a programmer's hall of fame for people like this!
https://bellard.org/mersenne.html
Absolutely astonishing!! A bit like the Bobby Fisher of programming ;)
Absolutely astonishing!! A bit like the Bobby Fisher of programming ;)
discussion about this from 2014, when it was brand new and HEIF didn't exist yet: https://news.ycombinator.com/item?id=8704629
And here's another discussion from 2018: https://news.ycombinator.com/item?id=17587684
Has the patent situation changed any since then? I wouldn't expect so.
Has the patent situation changed any since then? I wouldn't expect so.
I cannot figure out if Bellard’s creations are hobby projects or serious production libraries.
This one has a couple of issues: browsers have already settled on AVIF. And HEVC is patent encumbered which makes it not a good choice for deploying on devices.
I wonder if he will update it when x266 is out.
I remember one of the thing we expected to happen with asm.js ( Now Wasm ) was we could swap any new image format decoder. So we could have rapid iteration of image codec. This hasn't happened though.
I remember one of the thing we expected to happen with asm.js ( Now Wasm ) was we could swap any new image format decoder. So we could have rapid iteration of image codec. This hasn't happened though.
Where did Fabrice Bellard work before 2012? I'm interested in seeing how he funded his work over time.
Title needs a (2018)
But how is it pronounced?!
Bay-PEG, of course.
"Throatwobbler Mangrove".
Can we stop using the Lena image please.
I thought HEVC already came with a way to encode images (HEIF)? I don't have any experience in this space so I am probably missing something obvious, but I thought HEVC technology was being used for images for a while.
The release date makes the difference: BPG is from 2018, HEIF is from 2020. At least that's the official standard release date according to Wikipedia.
HEIF was finalized in 2015 and was standardized by ISO in 2017; not sure where you're getting a 2020 date from.
It's been in widespread real-world use since at least 2017, when HEIF support was added to the built-in camera app in iOS 11.
It's been in widespread real-world use since at least 2017, when HEIF support was added to the built-in camera app in iOS 11.
Also BPG is from 2014. 2018 is just the latest release.
Thanks for correcting. Unfortunately I cannot edit my comment now.
JPEG2000 looks better to me,
these new "videoframe" formats are blurry at higher
compression levels and lose detail.
Indeed, I was looking at encoding black-and-white manga, and I dialed in the quality knob based on "Is the text crisp" "Are cross-hatching textures reasonably preserved" and "Lack of visible artifacts around the edges."
I then compared the file sizes and JP2K won hands down. It also had the advantage of already being supported in PDF, so I can just bundle them up into a PDF for relatively[1] easy reading.
[edit]
Someone pointed me to "Squoosh" and AVIF (which was still very experimental when I previously ran the tests; there was only a single encoder I could find, it took forever and crashed a lot) seems to win over JP2K; a quick estimate makes it look about 30% smaller (My first test image showed up at almost 50% smaller when I tuned it, but experience tells me that I need some padding if I'm just going to point it at a large directory tree).
1: A few PDF readers have failed to properly render the JP2K pages, but modern poppler and muPDF based readers both seem to handle it fine.
I then compared the file sizes and JP2K won hands down. It also had the advantage of already being supported in PDF, so I can just bundle them up into a PDF for relatively[1] easy reading.
[edit]
Someone pointed me to "Squoosh" and AVIF (which was still very experimental when I previously ran the tests; there was only a single encoder I could find, it took forever and crashed a lot) seems to win over JP2K; a quick estimate makes it look about 30% smaller (My first test image showed up at almost 50% smaller when I tuned it, but experience tells me that I need some padding if I'm just going to point it at a large directory tree).
1: A few PDF readers have failed to properly render the JP2K pages, but modern poppler and muPDF based readers both seem to handle it fine.
I suppose that's what happens with a format originally designed for video --- things that wouldn't be noticeable in a split-second frame but increase compression are valued, whereas in a still image format, it's to be avoided.
"Yes, yes, another image format by... oh, Fabrice Bellard. Alright, tell me more."
Well yes but no. It's a container but not a compression method.
I swear, the guy must be a genius.
Fabrice Bellard is Mozart when most of us can only hope to be Salieri.
Nothing wrong with it, but at first I thought BPG starts with Bellard
Comparison of this with some more formats (BGP is basically HEIF):
https://eclipseo.github.io/image-comparison-web
https://eclipseo.github.io/image-comparison-web
If this sounds far-fetched, consider that he has created not only BPG, but FFMPEG, QEMU, LibBF, SoftFP, TinyEMU, a software implementation of 4G/LTE, a PC emulator in Javascript, the TCC compiler, TinyGL, LZEXE, a tiny program for computing the biggest known prime number, and NNCP, a clever lossless data compression system using deep neural networks (transformers, to be precise). And that's just a partial list of his successful projects.
Any of these projects, on its own, would be considered a notable achievement for an ordinary human being.
Source: https://bellard.org