Deep Dreaming Gallery

Google released their deepdream AI software in early July 2015. Here are some images I made using their software, my originals, and playing with parameters.

It's ok if your jaw drops.

Animation / YouTube Videos

If you want a real trip, then try these videos I made (sorted in order of increasing resolution):
ThumbnailResolutionRuntimeDescription
320 x 24000:33Flowers
320 x 24001:40Drinking beer in Prague
320 x 42701:26Algonquin Park
640 x 48001:17Railroad tracks in Prague
640 x 89605:00Yours truly
960 x 72000:333x3 array with fixed center colour
1280 x 72003:20Orange vortex
1920 x 108008:35Clouds, from both sides now

Stills Gallery

Original, Algonquin Park 4346
Original, Algonquin Park 4346
Processed via inception_4c/output
Processed via inception_4c/output
Processed via pool3/3x3_s2
Processed via pool3/3x3_s2
Original, Algonquin Park 4323
Original, Algonquin Park 4323
Processed via inception_4c/output
Processed via inception_4c/output
Processed via pool3/3x3_s2
Processed via pool3/3x3_s2
Original, Algonquin Park 4324
Original, Algonquin Park 4324
Processed via inception_4c/output
Processed via inception_4c/output
Processed via pool3/3x3_s2
Processed via pool3/3x3_s2
Original, Algonquin Park 4320
Original, Algonquin Park 4320
Processed via inception_4c/output
Processed via inception_4c/output
Processed via inception_3a/3x3_reduce
Processed via inception_3a/3x3_reduce
Original, Algonquin Park 4331
Original, Algonquin Park 4331
Processed via inception_4c/output
Processed via inception_4c/output
Processed via conv2/norm2
Processed via conv2/norm2
Original, Algonquin Park 4503
Original, Algonquin Park 4503
Processed via inception_4c/output
Processed via inception_4c/output
Processed via inception_4c/output 5x99
Processed via inception_4c/output 5x99
Original, Algonquin Park 4499
Original, Algonquin Park 4499
Processed via inception_4c/output
Processed via inception_4c/output
Processed via inception_4d/output
Processed via inception_4d/output
Continuing from the 4d (rightmost) output above
Continuing from the 4d (rightmost) output above
Another inception_4d/output
Another inception_4d/output
Processed via conv2/3x3
Processed via conv2/3x3
Original, Algonquin Park 4538
Original, Algonquin Park 4538
Processed via inception_4c/output
Processed via inception_4c/output
Processed via inception_4e/5x5
Processed via inception_4e/5x5
Original, Back Yard 20020918/100-0024
Original, Back Yard 20020918/100-0024
Processed via inception_4c/output
Processed via inception_4c/output
Processed via inception_3a_3x3_reduce
Processed via inception_3a_3x3_reduce
Original, Prague Dam 20021011/100-0098
Original, Prague Dam 20021011/100-0098
Processed via inception_4c/output
Processed via inception_4c/output
Processed via inception_4c/output 5x99
Processed via inception_4c/output 5x99
Original, Prague Bar 20021101/100-0005
Original, Prague Bar 20021101/100-0005
Processed via inception_4c/output
Processed via inception_4c/output
Processed via inception_4c/output 5x99
Processed via inception_4c/output 5x99
Original, Dow's Lake 5910
Original, Dow's Lake 5910
Processed via inception_5a/pool_proj
Processed via inception_5a/pool_proj
Processed via inception_5b/pool_proj
Processed via inception_5b/pool_proj
Processed via inception_5a/pool_proj 5x99
Processed via inception_5a/pool_proj 5x99
Processed via inception_5b/pool_proj 5x99
Processed via inception_5b/pool_proj 5x99

Iterations

What about running lots of iterations? Turns out, it makes the features much clearer:

Original, Prague Bridge Support 20021011/101-0122
Original, Prague Bridge Support 20021011/101-0122
Processed via inception_4c/output
Processed via inception_4c/output
Processed via inception_4c/output 5x39
Processed via inception_4c/output 5x39
Processed via inception_4c/output 5x99
Processed via inception_4c/output 5x99
Original, Prague Rails 20021011/100-0094
Original, Prague Rails 20021011/100-0094
Processed via inception_4c/output 5x99
Processed via inception_4c/output 5x99

Colour Depth

For scenes that don't have a lot of colour, here's what it comes up with:

Original, Almonte Property 20030102/100-0082
Original, Almonte Property 20030102/100-0082
Processed via inception_4c/output
Processed via inception_4c/output
Processed via inception_4c/output 5x99
Processed via inception_4c/output 5x99
Processed via inception_3a/output 5x49
Processed via inception_3a/output 5x49
Processed via inception_3b/output 5x49
Processed via inception_3b/output 5x49
You can see that the approximately vertical line (where the tree line is) is retained across the various images.
Original, Illuminated Tree 20031218/107-0778
Original, Illuminated Tree 20031218/107-0778
Processed via inception_4b/output
Processed via inception_4b/output
Processed via inception_4b/output 5x9
Processed via inception_4b/output 5x9
Processed via inception_4b/output 5x19
Processed via inception_4b/output 5x19
Processed via inception_4b/output 5x49
Processed via inception_4b/output 5x49
Processed via inception_4b/output 5x99
Processed via inception_4b/output 5x99
Processed via inception_5a/pool_proj 5x99
Processed via inception_5a/pool_proj 5x99
Processed via inception_5b/pool_proj 5x99
Processed via inception_5b/pool_proj 5x99

What are all these Filters?

Original, Prague Downtown 20030408-02/100-0008
Original, Prague Downtown 20030408-02/100-0008
Processed via conv1/7x7_s2
Processed via conv1/7x7_s2
Processed via pool1/3x3_s2
Processed via pool1/3x3_s2
Processed via pool2/3x3_s2
Processed via pool2/3x3_s2
Processed via inception_3a/output
Processed via inception_3a/output
Processed via inception_3b/output
Processed via inception_3b/output
Processed via pool3/3x3_s2
Processed via pool3/3x3_s2
Processed via inception_4a/output
Processed via inception_4a/output
Processed via inception_4b/output
Processed via inception_4b/output
Processed via inception_4c/output
Processed via inception_4c/output
Processed via inception_4d/output
Processed via inception_4d/output
Processed via inception_4e/output
Processed via inception_4e/output
Processed via pool4/3x3_s2
Processed via pool4/3x3_s2
Processed via inception_5a/3x3_reduce
Processed via inception_5a/3x3_reduce
Processed via inception_5b/3x3_reduce
Processed via inception_5b/3x3_reduce

Randomness

What about variability? Turns out, there's a randomization element in the algorithm, so running the same image with the same parameters yields many different results. The interesting thing is to note where the images are the same and where they differ:

Original, Prague Rails 20021011/100-0094
Original, Prague Rails 20021011/100-0094
Processed via inception_4c/output (1<sup>st</sup> run)
Processed via inception_4c/output (1st run)
Processed via inception_4c/output (2<sup>nd</sup> run)
Processed via inception_4c/output (2nd run)
Processed via inception_4c/output (3<sup>rd</sup> run)
Processed via inception_4c/output (3rd run)
Processed via inception_4c/output (4<sup>th</sup> run)
Processed via inception_4c/output (4th run)
Processed via inception_4c/output (5<sup>th</sup> run)
Processed via inception_4c/output (5th run)

For some reason, the algorithm doesn't like my train tracks.

Size

Giving it a 640x480 image costs a lot more in CPU, and yields some nicer images (this is the Prague Rails picture from above):

Processed via inception_4c/output 5x99 640x480
Processed via inception_4c/output 5x99 640x480

Note that with this particular filter, setting the iter_n to 100 didn't cause any visible changes in the last set of iterations — I suppose the network had already decided on what it was going to show, and that was that. Memory was around 1GB for python.

Giving it a 1280x960 image costs even more in CPU, and yields even nicer images:

Processed via inception_4c/output 5x99 1280x960
Processed via inception_4c/output 5x99 1280x960

Doing camera resolution (the image was taken with a 2272x1704 (4MPixel) camera), produces awesome images (and takes 8GB of memory):

Processed via inception_4c/output 5x99 2272x1704
Processed via inception_4c/output 5x99 2272x1704

Drawing Aid

For someone like me who doesn't have a whole bunch of artistic talent, my question is, “can deepdream help me generate some art using guided drawings?”

Original, Trivial line drawing
Original, Trivial line drawing
Processed via inception_4c/output
Processed via inception_4c/output
Processed via inception_4c/output 5x99
Processed via inception_4c/output 5x99

Computer Generated Art as Input

Using a finite-state automaton as input:

Original, Finite-State Automaton Output FSA-1
Original, Finite-State Automaton Output FSA-1
Processed via inception_4c/output
Processed via inception_4c/output
Processed via inception_4b/output 5x49
Processed via inception_4b/output 5x49
Original, Finite-State Automaton Output FSA-2
Original, Finite-State Automaton Output FSA-2
Processed via inception_4c/output
Processed via inception_4c/output
Processed via inception_4b/output 5x49
Processed via inception_4b/output 5x49