The proposed solution consists of five Convolutional Neural Networks. The first network is a 12-layer Residual CNN which goal is to enhance the input image to DSLR quality. However, since we don't have explicit target images, we are facing the following problem: the network doesn't know how the enhanced image should look like. Moreover, without any constraints it can produce the enhanced image that is not related to the input photo at all. To solve these challenges, we propose three loss functions that take care about all these aspects:

● Content loss: We introduce the second CNN with the same architecture that takes the enhanced image as an input and tries to reproduce the original photo. If the content of the original photo is not preserved in the enhanced image, the network will fail and the loss will be high. The loss itself is computed as a difference between the original image and its reconstruction using their content descriptions produced by VGG-19 CNN pre-trained on Alexnet. ● Color loss: The enhanced image should have bright and vivid colors. To measure its color quality, we train an adversarial CNN-discriminator that observes the improved and arbitrary high-quality images, and its objective is to predict which image is which. Before passing images to this CNN, we apply Gaussian blur to them to avoid texture and content comparison. The goal of the image enhancement network is to fool the discriminator, so that it cannot distinguish between the enhanced and DSLR photos. ● Texture loss: A separate CNN-discriminator is trained to measure texture quality of the enhanced image. To avoid color comparison, we pass grayscale enhanced and DSLR images to this CNN and its objective is to predict which image is which. The goal of the image enhancement network is the same as in the previous case.

Finally, these losses are summed, and the presented system is trained as a whole to minimize the final weighted loss.