About DeepDream
DeepDream is an algorithm through which computers can picture patterns with the help of a neural network. We can compare it with a child who looks at the cloud and profusely tries to create random shapes and images (a phenomenon also known as pareidolia). Similarly, DeepDream provides too much interpretation and magnifies the compositions whenever it encounters an image.
DeepDream algorithm initiates the process by forwarding a particular picture or image through the network and then it starts measuring the gradient of the image with respect to a specific activation layer. In the next step, the picture is adjusted in order to improve these activations and amplify the patterns which result in a dream-like picture. This entire process is also known as Inceptionism.
The entire process of enhancing the pattern of images is very much dependent on how the algorithm has been trained. Therefore, if an algorithm has been instructed to recognize the faces in any image then that particular algorithm will also try to deduce the faces from any given image using the algorithmic pareidolia.
How the DeepDream algorithm functions
Now that we have properly understood what DeepDream is, it is time for us to understand the functions of this algorithm in more detail. Before that let us have a look at how the convolutional neural networks work:
- First, we provide an image to the convolutional neural networks and the first layer of the network distinguishes the low-level features such as edges.
- In the next step, the second layer of the network will try to expose the higher-level features of the picture such as trees, cars, faces, etc.
- Lastly, the remaining layers will try to collect all of these features and complete the interpretations so that the pictures can be categorized accordingly.
In convolutional neural networks, there are different layers available to perform different tasks. On the other hand, in the DeepDream algorithm, we can take any particular feature (be it high level or low level) and increase its activation so that it can have a huge impact on the image.
Let us have a look at the function of the DeepDream algorithm in detail:
- Whenever you try to give a picture (as an input) to a trained artificial neural network, the neurons kickstart and initiate activation.
- The DeepDream algorithm tries to modify the input image and in the process, it boosts some of the neurons more than others. We can specify the type of layer and neuron we want to strengthen precisely.
- The process will continue until all the elements of the input image have been disclosed appropriately.
For example, if we have used a specific layer to discover the cat faces while we have provided the image of a cloud (as input) then, the DeepDream algorithm will meticulously convert the image and will begin to produce cat faces on the blue sky.
Processing an image with DeepDream
Here is a step-by-step process through which you can apply the DeepDream algorithm to any image:
- Use an already trained ResNet, ANN, CNN, etc. to forward an image.
- Now choose a specific layer while remembering that the first layer analyses the edges whereas the deeper layers analyze different shapes and figures.
- It is time to measure the output from the layer of interest.
- Measure the gradient of the image in regard to the already chosen activation layer.
- Adjust the image in order to amplify the activations and the image will turn out like a dream-like hallucinated image.
- Continue to repeat this operation on multiple images.
To conclude
The DeepDream algorithm is a major invention in the technological world; it can help you find archetypes even in garbage images. It can easily identify the common parts in the same image. Moreover, with every image you feed to the algorithm, it trains itself to become better and provide better results than its previous performance.
Reference links:
https://www.mlq.ai/deep-dream-with-tensorflow-2-0/
https://ai.plainenglish.io/deepdream-ebe2a8016b29
https://github.com/google/deepdream
https://www.tensorflow.org/tutorials/generative/deepdream