An ELI5 response to how Deep Dream works
Courtesty Dark_Ethereal over at reddit for this response:
Ok, so google has image recognition software that is used to determine what is in an image.
the image recognition software has thousands of reference images of known things, which it compares to an image it is trying to recognise.
So if you provide it with the image of a dog and tell it to recognize the image, it will compare the image to it's references, find out that there are similarities in the image to images of dogs, and it will tell you "there's a dog in that image!"
But what if you use that software to make a program that looks for dogs in images, and then you give it an image with no dog in and tell it that there is a dog in the image?
The program will find whatever looks closest to a dog, and since it has been told there must be a dog in there somewhere, it tells you that is the dog. Now what if you take that program, and change it so that when it finds a dog-like feature, it changes the dog-like image to be even more dog-like? Then what happens if you feed the output image back in?
What happens is the program will find the features that looks even the tiniest bit dog-like and it will make them more and more doglike, making doglike faces everywhere.
Even if you feed it white noise, it will amplify the slightest most minuscule resemblance to a dog into serious dog faces. This is what Google did. They took their image recognition software and got it to feed back into it's self, making the image it was looking at look more and more like the thing it thought it recognized.
The results end up looking really trippy.
It's not really anything to do with dreams IMO
Edit: Man this got big. I'd like to address some inaccuracies or misleading statements in the original post... I was using dogs an example. The program clearly doesn't just look for dog, and it doesn't just work off what you tell it to look for either. It looks for ALL things it has been trained to recognize, and if it thinks it has found the tiniest bit of one, it'll amplify it as described. (I have seen a variant that has been told to look for specific things, however).
However, it turns out the reference set includes a heck of a lot of dog images because it was designed to enable a recognition program to tell between different breeds of dog (or so I hear), which results in a dog-bias.
I agree that it doesn't compare the input image directly with the reference set of images. It compares reference images of the same thing to work out in some sense what makes them similar, this is stored as part of the program, and then when an input image is given for it to recognize, it judges it against the instructions it learned from looking at the reference set to determine if it is similar.
One example of a Deep Dream processed image from this websiteThe dogs. WHY. WHY ARE THERE DOGS IN THE TREE?