Prisma photo? No thanks, I’d use the open source deep learning from Torch on GitHub

By on July 16, 2016

Prisma filter is a real “a must do trend” in smartphone photography, nowadays. It transforms your photos into artworks using the styles of famous artists: Van Gogh, Picasso, Levitan, as well as world famous ornaments and patterns. A unique combination of neural networks and artificial intelligence helps you turn memorable moments into timeless art.

How do they make it? Pre-processed gallery? Simple photo effects? Wizardry? Nope, it is a process called “deep learning algorithm”, and it is done through the use of convolutional neural networks.

The good news is that we have open source version of that algorithm!

This is a torch implementation of the paper A Neural Algorithm of Artistic Style by Leon A. Gatys, Alexander S. Ecker, and Matthias Bethge.

The paper presents an algorithm for combining the content of one image with the style of another image using convolutional neural networks. Here’s an example that maps the artistic style of The Starry Night onto a night-time photograph of the Stanford campus:

torch prisma

Setup:

Dependencies:

Optional dependencies:

After installing dependencies, you’ll need to run the following script to download the VGG model:

<code>sh models/download_models.sh
</code>

This will download the original VGG-19 model. Leon Gatys has graciously provided the modified version of the VGG-19 model that was used in their paper; this will also be downloaded. By default the original VGG-19 model is used.

If you have a smaller memory GPU then using NIN Imagenet model will be better and gives slightly worse yet comparable results. You can get the details on the model from BVLC Caffe ModelZoo and can download the files from NIN-Imagenet Download Link

You can find detailed installation instructions for Ubuntu in the installation guide.

Usage

Basic usage:

<code>th neural_style.lua -style_image &lt;image.jpg&gt; -content_image &lt;image.jpg&gt;
</code>

OpenCL usage with NIN Model (This requires you download the NIN Imagenet model files as described above):

<code>th neural_style.lua -style_image examples/inputs/picasso_selfport1907.jpg -content_image examples/inputs/brad_pitt.jpg -output_image profile.png -model_file models/nin_imagenet_conv.caffemodel -proto_file models/train_val.prototxt -gpu 0 -backend clnn -num_iterations 1000 -seed 123 -content_layers relu0,relu3,relu7,relu12 -style_layers relu0,relu3,relu7,relu12 -content_weight 10 -style_weight 1000 -image_size 512 -optimizer adam
</code>

OpenCL NIN Model Picasso Brad Pitt

To use multiple style images, pass a comma-separated list like this:

-style_image starry_night.jpg,the_scream.jpg.

Note that paths to images should not contain the ~ character to represent your home directory; you should instead use a relative path or a full absolute path.

more info here: GitHub – jcjohnson/neural-style: Torch implementation of neural style algorithm

About Luca Ruggeri

  • Rupesh Sreeraman

    Check out NeuralStyler AI for Windows and Ubuntu …Turn Your Videos/Photos/GIF into Art (offline)
    Style videos,gif animation and photos
    No need to upload videos (Offline processing)
    Faster AI styling algorithm
    Extensible styling system(Plugin)
    http://neuralstyler.com/

  • Vasaka Funarg

    I get /home/vasaka/torch/install/bin/luajit: /home/vasaka/torch/install/share/lua/5.1/nn/Container.lua:67:
    In 40 module of nn.Sequential:
    /home/vasaka/torch/install/share/lua/5.1/nn/Linear.lua:57: size mismatch, [4096 x 25088], [106496] at /home/vasaka/torch/pkg/torch/lib/TH/generic/THTensorMath.c:709

    when run bradd pit command with -gpu -1 it seems something wrong with the model.

  • Eli Peters

    How consistent is the algorithm? Given the same input can we expect the same result over two seperate passes?

    Im looking at implementing this for animation and I hope that the image can remain consistent bewteen frames.