Skip to content
"A neural algorithm of Artistic style" in tensorflow
Branch: master
Clone or download

Latest commit

Fetching latest commit…
Cannot retrieve the latest commit at this time.


Type Name Latest commit message Commit time
Failed to load latest commit information.

"Neural Art" in TensorFlow

An implementation of "A neural algorithm of Artistic style" in TensorFlow, for

  • Introductory, hackable demos for TensorFlow, and
  • Demonstrating the use of importing various Caffe cnn models (VGG and illustration2vec) in TF.

In this work, I put effort in putting the code simple as possible, for being a good introductory code to TF. For this reason, I also implemented very basic uses of TensorBoard (the visualizer). I also aimed on demonstrating the use of importing various Caffe models from *.caffemodel files into TensorFlow, especially models that seemed not to be imported by anybody yet in TF (as far as I know). Based on, I modified the importer so that it can import illustration2vec (, which is another CNN available as a Caffe model. Using different CNNs yields different results, which reflects the characteristics of the model.

In the Neural Art problem setting, the weights of the CNN are fixed, and the input image into the CNN is the only "trainable" variable, making the code easy to understand (the optimized/trained image is the output image). I hope this example serves as a good introduction to TensorFlow as well as for entertainment purposes.

(VGG, default settings, 70 iterations)

(illustration2vec, width=500, beta=10000, 100 iterations)


Step 0: Prepare the Caffe model

First, download either the VGG model or the illustration2vec model (*.caffemodel), along with the prototxt (*.prototxt):

Then, convert the model to a binary format recognizable to TensorFlow:

python ./kaffe/ [path.prototxt] [path.caffemodel] [output-path]

Note that Caffe is not required for conversion.

The converter included in this repo (all code inside ./kaffe) is a modified version of (an old version of) . The converter is modified to be capable of handling the illusration2vec neural network. Since the newer version of the converter requires preprocessing with the Caffe framework for old-format Caffe models (at the time of writing), I have included the converter which is based on the older code, which is capable of handling old-format Caffe models.

Step 1: Neural Art


Running without options yields the default settings and input images. Available options are:

  • -m, --model: Model type - Use vgg or i2v
  • -mp, --modelpath: Model file path - The path to the converted Caffe model in Step 0
  • -c, --content: Content image path
  • -s, --style: Style image path
  • -w, --width: Output image width
  • -i, --iters: Number of iterations
  • -a, --alpha: alpha (content weight)
  • -b, --beta: beta (style weight)

For example:

python -m vgg -mp ./vgg -c ./images/sd.jpg -s ./images/style.jpg -w 800

You can view the progress on tensorboard by running

tensorboard --logdir=/tmp/na-logs


You can’t perform that action at this time.