Painting With Neural Networks

This project was born as one of my first course work for the Creative Applications of Deep Learning course on Kadenze (which I recommend). The idea of this project was to train a function that maps points (x, y) regarding the location of a pixel in R2, to a point (R, G, B) corresponding to the values of each channel in the pixel.

The architecture is simply a feed forward with the hyper-parameters mentioned below as Default settings. I used two images with this architecture. The first one is from the movie Metalhead and the second one is a low polygon illustration of Daenerys by Mordi Levi. The result of each network can be seen to the right. The left column corresponds to the original image and the right column corresponds to the reconstruction of the image by the network at different train steps. In addition to this, I did a small grid search and see how the selection of hyper-parameters affects the output. The grid search is constrained by the default settings, meaning that only one parameter of the default setting can be different at a time.

Default settings

number of neurons = 20
number of layers = 6
learning rate = 0.001
activation function = "relu"

Gridsearch settings

number of neurons = [1, 5, 10]
number of layers = [1, 3]
learning rate = [1, 0.1, 0.01]
activation function = [sigmoid, tanh]

Gridsearch results

original image

sigmoid tanh lr1 lr2 lr3 nl0 nl1 nn0 nn1 nn2