Hacker News new | ask | show | jobs
by vladdanilov 3388 days ago
I'm working on a similar thing (http://getoptimage.com). While Guetzli is still visually better and a bit smaller in file size, it's terribly slow and requires a lot of memory. But it's a great experiment. So much knowledge has been put into it.

I believe using a full blown FFT and complex IQA metrics is too much. I have great results with custom quantization matrices, Mozjpeg trellis quantization, and a modification of PSNR-HVS-M, and there's still a lot of room for improvement.

4 comments

> it's terribly slow and requires a lot of memory.

...and generates a solution that uses far less bandwidth, especially after thousands or millions of hits, which is the real point of the exercise.

Cloud computing companies love this. They've got a lot of bored hardware to put to use. It's absolutely no surprise to see solutions like this coming from Google. Spending a dollar of compute time to save $1000 in bandwidth is a no-brainer win for a company with a million servers.

At the image upload rate nowadays, there's a place for a practical solution, and for any external company, that kind of cloud computing will cost a fortune.
Have you noticed a lot of image results from a Google search are actually .webp, probably also for that reason
Would it be possible to accelerate Guetzli on a GPU?
It's block-based so definitely yes.
It appears that FFT can be GPU accelerated. Nvidia has cuFFT which claims to be 10x faster.
I'd expect this to behave quite differently to cuFFT: the transforms are likely to be small (either length 8 1D FFTs, or 8x8 2D FFTs) and thus synchronisation overhead is likely to dominate if one was to try to parallelise within a transform (other than via SIMD). However, this small size does mean that the transforms can be written out to have "perfect" data transfer and branching behaviour, so that they parallelise well at JPEG's natural parallelisation granularity (the 8x8 pixel blocks).
Any plans for a Wordpress plugin like TinyPNG has? We use that currently but TinyPNG's JPG output leads to visible pixilation.
Try out the https://kraken.io plugin. Kraken.io's optimization is more about fidelity to the original than maximising file size savings.
Can vouch for Kraken.io -- I've just begun using it to optimize ~50k+ interior architectural images so fidelity is important to me and my users. I'm about a third of the way done with the project and am saving just about 40% in size on average.
I'm still thinking on the best way to implement it. Right now you can mount an FTP/SFTP folder and process from there. But I might try to bypass the mounting part. Server version is also in the works.
Google's implementation may be slower, but it's open source.