52 comments

[ 2.2 ms ] story [ 122 ms ] thread
I wonder how it compares to this: https://tinyjpg.com/
The cool thing is that it's not a compression algorithm so you could use both. TinyJPG to compress the smaller-sized image, RAISR to upsample the smaller image. If you've ever played with GIMP (or Photoshop I suppose), RAISR looks like unsharp mask with an neural network controlling the inputs.
Now create a psychophysical compressor that optimizes for the weighted combination of smallest compressed size and most-faithful RAISR restoration.

I wonder if there's a guaranteed-optimal way to do that, given whatever RAISR is using as an algorithm; some logical inverse to the particular way it adds information. Maybe truncated wavelet compression?

This article and the linked blog post from Google [1] suggest that this has already been deployed. How does it work in the field? For instance, I can imagine it being a JS library that can be downloaded and cached for client-side use, or it could be deployed as an Android module that the Android browser can use. But I don't know where to go looking for this because I don't use Google+, have no photos on it, and wouldn't be sure whether or not I was seeing it.

[1]: https://www.blog.google/products/google-plus/saving-you-band...

>RAISR produces results that are comparable to or better than the currently available super-resolution methods, and does so roughly 10 to 100 times faster, allowing it to be run on a typical mobile device in real-time....For example, in addition to improving digital “pinch to zoom” on your phone, one could capture, save, or transmit images at lower resolution and super-resolve on demand without any visible degradation in quality, all while utilizing less of mobile data and storage plans.

> In our proposed approach, the run-time is more than one to two orders of magnitude faster than the best competing methods currently available, while producing results comparable or better than state-of-the-art.

From the blog post & article, I think the idea is that you ship a small CNN (a few MB model size, which will accordingly run in realtime on mobile GPUs) to the Android device, and then when browsing, it downloads a small thumbnail (cheap on bandwidth, quick to download), and upscale it as necessary locally on the device.

In general they’d get better bandwidth savings for the same quality and decode effort by shipping the higher-resolution image with more aggressive image compression (using http://bellard.org/bpg/ or something, not JPEG, and ideally running the decode in hardware). Seems like a dubious method overall.

The main impression I get is “woo! neural nets can do everything! let’s use them everywhere!”

I don’t believe their claim that this is “comparable or better than the state of the art” for image upscaling without much better evidence than they provide in their paper.

The article makes it sound like it is some sort of machine learning algorithm, which makes me wonder: How is the upscaling done client side?
It's very much within the realm of possibility to have a pre-trained neural net on the client, which then simply asks it questions.

For example, swiftkey does this already with its keyboard prediction. Prisma does it with image styling.

I actually think Prisma sends the image to their servers for processing, their app size is way too small to contain that many trained networks. Also it doesn't work without an internet connection if I'm correct.
That used to be the case but recent updates do the processing on the device now. I don't know how they managed it but they did.
It is possible, no doubt. You also have image decoder on the client and getting support for a new format is difficult because it is the browser vendors job to distribute these.

So how do they practically get the client to decode / upscale? JavaScript?

The biggest about this is not being able to 'compress' images to 25%, but that you can now take (some) images that we're previously only low-res, and upscale them!
One day we'll be pointing at pictures yelling "Enhance!", and not in jest!
Good idea for a dystopian CSI. "This AI invented image detail shows you are guilty"
Well then it means statistically there's a good chance that what produced the end low res image is incriminating. And of course I'm not serious.

Although on a serious note, does anyone know if and how statistical probability is accepted as evidence in a court of law?

Yeah, it is, that's called circumstantial evidence. You do need direct evidence to validate the circumstantial evidence though..
It even has a name, didn't expect that. Thank you.
New episode of Black Mirror or maybe some comedy sketch.

"Your face is too generic that the AI drew you as all of our suspects."

I'd be interested to see if similar techniques could be used for scaling up pixel art. Tools to upscale pixel art do exist already, but the results are a bit hit and miss. Could be a good stress test for the machine learning algorithms too.
That sounds interesting. Do you have any links?

I must not understand what you mean by scaling up, I though the best way to scale up pixel art was to disable interpolation, so each pixel just becomes a perfectly sharp square?

The title is a bit misleading. Detail was lost, that is the law. Raisr makes up detail based on some learned likelihood of that detail being there.

You could add any image to Raisr and it will make up more detail, you could let it loop over the same picture over and over and it will probably add infinite detail, or up to some fixed point.

What's cool is that for many pictures, it's good enough at making up detail that the result is credible.

Seems similar to image inpainting...educated guesses that can be stunningly accurate, or stunningly bad :)
Yes. And as such it has obvious artistic value, as images look better. But I can see that people can misuse them CSI style. You can add more detail to an image, but it is mainly an artistic interpretation that is not the real original image.
From TFA, “the quality gain is clear to see”, and then they show a picture where pixels have been upsized into weird painterly blotches, with essentially the same level of detail as the original.

This doesn’t seem to produce results which are obviously better than the state of the art from 20 years ago. (Or if so, this article certainly doesn’t demonstrate it.) So is the novelty supposed to be that it’s less computationally expensive?

Here’s a site I just found in a quick web search with some comparisons of other upscaling tools: http://www.americaswonderlands.com/digital_photo_interpolati...

The blotches in the example on the right resemble what happens when you run an ordinary raster image through some freely available raster-to-vector image processing tools.
Reminds me of Jaggies Are Gone, a old Macintosh application which did this sort of thing by dumber means.

There's an neural net system which upscales old low-resolution anime stills.[1] It's been trained on hand-drawn cartoons, so it restores line art detail. That's very similar to this Google thing.

[1] http://waifu2x.udp.jp/

Didn't those guys enlarge images by using some sort of mandelbrot-based process?
From Google blog:

https://www.blog.google/products/google-plus/saving-you-band...

"To help everyone be able to see the beautiful photos that photographers share to Google+ in their full glory"

"we’ve only begun to roll this out for high-resolution images when they appear in the streams of a subset of Android devices."

Anybody has an idea which subset?

I'm fairly confident you can assume they're referring to pixel devices.
And it's probably something like 20% of them.
If you click enough links, you may eventually find your way to the paper: https://arxiv.org/abs/1606.01299
Thanks. I'd like to make some comments on the paper - it is very readable, even for non-ML folk

- first author was an intern at Google. Cool for him to have a project like this handed to him.

- paper is quite long and I don't think it would ever be published in a reputable journal. The content/length ratio is too low, for one

- another reason I think it would not get accepted is the lack of novelty. What is being done here is a basic interpolation scheme (which explains the "10-100X speedup over SotA) but with weights determined by a lookup table. The table itself is learned beforehand by analyzing a large number of other images.

I havn't time to read through it, but based on your comments, I could see it being accepted to a conference, which is where most CS publications come from (in europe anyway).
I wonder if this could be used to upscale, say, a 1080p movie frame-by-frame to 4k? Could be fantastic if so. Imagine if it could be built into an FPGA and done in real-time by high-end TVs. Very impressive!
(comment deleted)
I thought that 4k devices often had the ability to do this kind of up-scaling already?
The trick is that using a simple frame-by-frame approach means the details filled in only depend on the frame, not on the details which were filled in to the previous frame, so you get crazy jitter.

Deepart.io now has a video mode [0] that takes this into account.

[0] https://deepart.io/video/

Great list, leaving a comment here to "bookmark" it.
Does anyone know if there's something like this available now to experiment with? I've been looking for a new way to ultra compress images and never heard of these techniques before. Looks like Google hasn't released any tools yet to the public, if they ever will.
For storage purposes: If you want, you could just downsample your images right now, and just wait around for this or similar to be released. I dont recommend it.
Inventing details out of thin air to make a low resolution image look more detailed feels like cheating to me.
I think this is what futurama's "better resolution than real life" TV sets are going to look like.
How many of these compression plays are driven by a real market need and how many are driven by Pied Piper envy?