Style Transfer

We have implemented the style transfer strategy from:

Gatys, Leon A., Alexander S. Ecker, and Matthias Bethge. "A neural algorithm of artistic style." arXiv preprint arXiv:1508.06576 (2015).

Check as the usage possibilities with the command:

$ bob tf style_transfer --help

Here we have an example on how to do a style transfer using VGG 19 trained with the image net

>>> from bob.learn.tensorflow.network import vgg_19
>>> # --architecture
>>> architecture = vgg_19

>>> import numpy

>>> # YOU CAN DOWNLOAD THE CHECKPOINTS FROM HERE
>>> # https://github.com/tensorflow/models/tree/master/research/slim#pre-trained-models
>>> checkpoint_dir = "[DOWNLOAD_YOUR_MODEL]"

>>> # --style-end-points and -- content-end-points
>>> content_end_points = ['vgg_19/conv4/conv4_2', 'vgg_19/conv5/conv5_2']
>>> style_end_points = ['vgg_19/conv1/conv1_2',
...                 'vgg_19/conv2/conv2_1',
...                 'vgg_19/conv3/conv3_1',
...                 'vgg_19/conv4/conv4_1',
...                 'vgg_19/conv5/conv5_1'
...                ]

>>> # Transfering variables
>>> scopes = {"vgg_19/":"vgg_19/"}

>>> # Set if images using
>>> style_image_paths = ["vincent_van_gogh.jpg"]

>>> # Functions used to preprocess the input signal and
>>> # --preprocess-fn and --un-preprocess-fn
>>> # Taken from VGG19
>>> def mean_norm(tensor):
...     return tensor - numpy.array([ 123.68 ,  116.779,  103.939])

>>> def un_mean_norm(tensor):
...     return tensor + numpy.array([ 123.68 ,  116.779,  103.939])

>>> preprocess_fn = mean_norm

>>> un_preprocess_fn = un_mean_norm

Here we use an image from Angelina Jolie using Van Gogh style as an example:

$ bob tf style_transfer angelina.jpg angelina_output.jpg vgg19_example.py -i 1000.
_images/angelina.jpg

Fig. 1 Source (content) image

_images/vincent_van_gogh.jpg

Fig. 2 Style image

_images/angelina_output.jpg

Fig. 3 Generated image