back
150 comments
I used to roll my eyes at crime television shows, whenever they said "Enhance" for a low quality image.

Now it seems the possibility of that becoming realistic are increasing with a steady clip, based on this paper and other enhancement techniques I've seen posted here.

Except, and this is really the fundamental catch, it's not so much "enhance" as it is "project a believable substitute/interpretation".

You fundamentally can't get back information that has been destroyed/or never captured in the first place.

What you can do is fill in the gaps/information with plausible values.

I don't know whether this sounds like I'm splitting hairs, but it's really important that the general public not think we're extracting information in these procedures, we're interpolating or projecting information that is not there.

Very useful for artificially generating skins for each shoe on a shoe rack in a computer game or simulation, potentially disastrous if the general public starts to think it's applicable to security camera footage or admissible as evidence...

Out of sheer curiosity I had a go at manually enhancing the Roundhay Garden Scene by dramatically enlarging the frames, stacking them, aligning them, erasing the most blurred ones and the obvious artifacts.

It went from this:

https://media.giphy.com/media/pUf3YfamV7BV6/giphy.gif

To this:

http://img.go-here.nl/Roundhay_Garden_Scene.gif

The funniest part was that the resolution really goes up if you make 1 px into 40 and align the frames accurately (then adjust opacity to the level of blur)

The crime television thing would be possible if you have enough frames of the gangster.

Approaches like these are hallucinating the high resolution images though--not something that we'd ever want being used for police work. That said, I wonder if it would perform better than eyewitness testimony...
This image from the article shows that the original image and the fantasy image are not alike at all. The faces look to have different ages. The computer even fantasized a beauty mark.

http://www.cs.cmu.edu/~aayushb/pixelNN/freq_analysis.png

The computer is fantasizing.

The low resolution to high resolution image synthesis reminds me of the unblur tool that Adobe demoed during Adobe MAX in 2011. Here is the relevant clip if you're interested https://www.youtube.com/watch?v=xxjiQoTp864
You'll get something that looks plausible for sure, maybe not what was originally there though. In the future, someone will be falsely convicted of a crime because a DNN enhance decided to put their picture in some fuzzy context.
It can give possible matches, i don't think it would be admissible in court. they could still trick a confession out of someone using that image.
It's still impossible. These algorithms find in gaps with their biases, not reality. If information is not there it is not there.
Yes!

Although what we don't have is any certainty that the enhanced face actually looks like the killer.

To paraphrase Google Brain's Vincent Vanhoucke, this appears to be another example where using context prediction from neighboring values outperforms an autoencoder approach.

If 2017 was the year of GANs, 2018 will be the year context prediction.

I hope some day this will generalize to video. I don't care about the exact shape of background trees in an action movie - with this approach, they could be compressed to just a few bytes, regardless of resolution.
Except that it can put trees somewhere where there were no trees but something similar to them. Or it can put face of a more popular actor instead of an actual less popular one because it was more often present in the training dataset. No, thanks.
Plug in the script and some artist's impressions of the sets and generate the whole movie on the fly.
That's what video compression does now.
I wonder if this could be applied to "incomplete" 3D models and the work shifted to the GPU!?
I don't understand how the edges-to-faces can possibly work. The inputs seem to be black & white, and yet the output pictures have light skin tones.

How can their algorithm work out the skin tone from a colourless image. Perhaps their training data only had white people in it?

You never saw edges2cats I take it? https://affinelayer.com/pixsrv/

> I don't understand how the edges-to-faces can possibly work. The inputs seem to be black & white, and yet the output pictures have light skin tones.

The step you're missing is that an edge detector is run on the entire database of training images to produce a database of edge images. The input edge image is run against that corpus of edge images in order to find which edge images match, then sample the corresponding original color images and synthesize a new color image.

I had the same thought. Maybe it's not that there were only white people in the dataset, but it's actually taking the shape of the face into account, and it most closely matches those with white skin tones. I suggest this by looking at the cat one: it has the stripes coming off the eyes, so suggests one of the grey striped breeds rather than, e.g. all black or calico. It's probably more than pixel-by-pixel NN interpolation, but also taking into account some of the actual structure of the edges.
Color comes from the initial neural network step. Since skin color is relatively predictable from facial features (ex: nose width), it should be able to do reasonably well.
Seems to have a thing for beards.
I have a large collection of images, many being accessible through google image search.

I wonder if there could be a way to "index" those images so I can find them back without storing the whole image, using some type of clever image histogram or hashing-kind function.

I wonder if that thing already exist, since there are many images, and since most images have a lot of difference in their data, could it be possible to create some kind of function that describe an image in a way that entering such histogram redirects to (or the closest) the image it indexed? I guess I'm lacking the math, but it sounds like some "averaging" hashing function.

That's perceptual hashing. Check out https://www.phash.org/
This is the current approach for large sale image retrieval. By using some model to extract features and then performing distance calculations. This is usually done with hashing once speed and the size of the dataset become large.
I am developing a Visual Search engine with pluggable indexing models.

https://www.deepvideoanalytics.com

Is anyone in the FX business playing with this stuff? I'm thinking generational backdrops with groups of people/stuff/animals in them without a lot of modelling input.
So is there an analagous process that would apply to audio I wonder?
Yes, this is a fairly similar concept: https://magenta.tensorflow.org/nsynth

This is actually training a neural network on the Markov model, so it's very similar to core ideas behind the OP's paper. The core idea is to model the probability of a bit of sound by breaking it into the last note and everything that comes before the last note ("P(audio)=P(audio∣note)P(note)"). If you sample a bunch of audio and factor it that way for any given point in time, and accumulate that data somewhere, you can then sample the accumulated data randomly to generate new music.

There are other audio NN synthesis methods as well, pretty sure I've even seen one posted to ShowHN before.

There kind of already is audio equivalent: MIDI. It supplies low resolution timing and pitch information and it's up to synthesizer to produce audio output matching those data.
What would the lo-res starting point be? Low sample-rate, bit depth, ...?
This is amazing. I especially like how the result can somewhat be interpreted by showing from what image the part of the generated image is copied (see Figure 5).
Apparently you grow a beard after using their nn model?
No code available.
Very clever. I wonder if something like this could be used for other forms of sensor data as well?
A pair of the inputs in the edge-to-edge faces are swapped. I have nagged an author.
All those examples are fairly low-resolution. Does this approach scale or can it be applied in some tiled fashion? Or would the artifacts get worse for larger images?
Does anything like this exist on the web would like to send a blurry license plate picture through this and see what it comes up with..
OMG, now the "enhance" they say in investigative TV series and movies will actually be reality! :p
This is cool, but in the comparison with Pix-to-Pix, it seems like Pix-to-Pix is the clear winner.
"Enhance" is real. When will this stuff trickle into lower level law enforcement?
Can we use this to identify the leprechaun and find where da gold at?
Is there a GitHub repository link?
I found the title somewhat misleading. I was expecting some clever application of the nearest-neighbor interpolation. But this seems to involve neural nets and appears far from "simple" to me (I'm not in the image processing field though).
It almost looks like they mixed training and testing data in some of the examples. The bottom-left sample in the normals-to-faces is extremely suspicions.
Enhance.
Hollywood got it right!!!