One of Google's main projects is teaching computers how to see. Machine vision is the key to several important Google projects, from self-driving cars identifying obstacles in the road to the Google Photos app returning the right photos when you search for "cats."

Earlier this month, Google's research department revealed a research tool using artificial neural networks that "turn the network upside down." Basically, the same alforithms that can identify objects in images can also generate images as well. You feed the network tool an input image and you ask the software to enhance it. Google's example is that you can feed it a image of random noise and it can transform it into a picture that the algorithm would identify as a banana. You can also input an existing image, like a work of art or a photo you've taken.

Google open-sourced its neural network visualising tool on Wednesday, calling it DeepDream. If you're comfortable with IPython Notebooks, you can download the source code from Github and start playing around with it. Of course, the internet has already embraced it, flooding Twitter, Flickr and Instagram with some very bizarre and compelling computer-generated images, tagged with #deepdream. The tool allows users to supply a starting image, how many layers to enhance, how many iterations to apply, and how far to zoom-in.

Turns out, the images Google's tool creates are incredibly trippy and dreamlike.

This adaption of The Creation of Adam was one of 19 experiments Kyle McDonald ran.

DeepDream can be applied to any image, including memes. Instagram / TheByronicHero
DeepDream's got memes. Picture via Matthew Smollon on Instagram.
fennecfoxen screengrab deepdream
How a computer might see a cat. Instagram / Fennecfoxen

DeepDream also does kitty pictures. Image from Fennecfoxen.

DeepDream isn't all fun, though. It's actually a useful tool for researchers who want to better understand how computer vision works. From Google's blog post:

Why is this important? Well, we train networks by simply showing them many examples of what we want them to learn, hoping they extract the essence of the matter at hand (e.g., a fork needs a handle and 2-4 tines), and learn to ignore what doesn’t matter (a fork can be any shape, size, color or orientation). But how do you check that the network has correctly learned the right features? It can help to visualize the network’s representation of a fork.

So although you could spend all day getting lost in these generative images, and you could approach DeepDream as a type of Instagram filter on acid, it's actually a tool that will hasten the day when computers will be able to run the world.

Top image via Kyle McDonald / Flickr Creative Commons.