Difference between revisions of "Optimization-based Neural Style Transfer"
(→Usage) |
|||
Line 3: | Line 3: | ||
== Setup & Execution== | == Setup & Execution== | ||
+ | This section explains how to use the Neural Style Transfer program implemented on Python2.7 using Keras with Tensorflow as a backend. | ||
+ | |||
===Pre-requisites=== | ===Pre-requisites=== | ||
This program has been implemented in Python 2.7. The following libraries must be installed on your system to run it: | This program has been implemented in Python 2.7. The following libraries must be installed on your system to run it: | ||
Line 11: | Line 13: | ||
*h5py | *h5py | ||
*Tensorflow | *Tensorflow | ||
+ | |||
+ | This program can be run on the CPU or a GPU without any modifications. It was tested on MacOS and NVIDIA GTX 970 GPU running CUDA 9.0. | ||
===Usage=== | ===Usage=== | ||
Line 47: | Line 51: | ||
: <pre>python NST.py images/inputs/content/Dipping-Sun.jpg images/inputs/style/the_scream.jpg images/inputs/style/wave_kanagawa.jpg Results/generated --num_iter 30 --style_weight 0.3 0.7 --content_weight 0.1</pre> | : <pre>python NST.py images/inputs/content/Dipping-Sun.jpg images/inputs/style/the_scream.jpg images/inputs/style/wave_kanagawa.jpg Results/generated --num_iter 30 --style_weight 0.3 0.7 --content_weight 0.1</pre> | ||
− | + | ==Results== | |
The results are saved to the path provided at the beginning through the mandatory argument - Path to save generated image. The program saves the intermediate output after each iteration along with the final result (which is just the output after the final iteration). | The results are saved to the path provided at the beginning through the mandatory argument - Path to save generated image. The program saves the intermediate output after each iteration along with the final result (which is just the output after the final iteration). |
Revision as of 16:25, 4 October 2018
Contents
Overview
This page provides instructions on how to set up and run an artistic style transfer program on your machines. The following implementation is based on the optimization method proposed by Gatys et al in 2015 ([1]).
Setup & Execution
This section explains how to use the Neural Style Transfer program implemented on Python2.7 using Keras with Tensorflow as a backend.
Pre-requisites
This program has been implemented in Python 2.7. The following libraries must be installed on your system to run it:
- Numpy
- Scipy
- Keras
- h5py
- Tensorflow
This program can be run on the CPU or a GPU without any modifications. It was tested on MacOS and NVIDIA GTX 970 GPU running CUDA 9.0.
Usage
Download the following zip file for the code Media:NeuralStyleTransfer.zip to your preferred directory on your machine. This program accepts multiple arguments that provide the user with the flexibility of altering inputs, outputs, and control parameters without modifying the code.
Here's a rundown on the arguments:
(Mandatory)
Without these arguments, the program will not run
- Path to content image
- Path to style images(s). One or more style images can be provided by separating each path with space.
- Path to save generated image.
At this point, you should be able to run the program. Here's how you can do that:
Open the Terminal from that directory and run the program using the following command:
python NST.py path/to/content/image path/to/content/image path/to/style/image(s) path/to/generated/image
Example:
python NST.py images/inputs/content/Dipping-Sun.jpg images/inputs/style/the_scream.jpg images/inputs/style/wave_kanagawa.jpg Results/blue
If you'd like to further control your program parameters, you can make use of these additional arguments:
(Optional)
These arguments have default values, and can hence be skipped if required. However, to include it in your command, just append the syntax provided below to the main command:
- Minimum image size. Default value: 400. Hence, the generated image saved has a size of 400 x 713.
- To change this, you can pass the following argument to the command:
--image_size <new_value>
Example:--image_size 800
- To change this, you can pass the following argument to the command:
- Content weight. Default value: 0.025.
- To change this, you can pass the following argument to the command:
--content_weight <new_value>.
Example:--content_weight 0.5
- To change this, you can pass the following argument to the command:
- Style weight(s). Default value: 1.0 (in case of single style transfer), 1/n for each style (in case of n-style transfer).
- To change this, you can pass the following argument to the command:
--style_weight <new_value(s) separated by space>.
Example:--style_weight 0.3 0.7
Caution: Weights assigned are matched to the corresponding style image provided in the style path argument.
- To change this, you can pass the following argument to the command:
- Number of iterations. Default value: 10.
- To change this, you can pass the following argument to the command:
--num_iter <new_value>.
Example:--num_iter 25
- To change this, you can pass the following argument to the command:
- Model. Default value: "vgg19".
- To change this, you can pass the following argument to the command:
--model <new_value>.
Example:--model 'vgg16'
- To change this, you can pass the following argument to the command:
For example, to run a multi-style transfer program with custom weights and 30 iterations, you can run the following command from your directory:
python NST.py images/inputs/content/Dipping-Sun.jpg images/inputs/style/the_scream.jpg images/inputs/style/wave_kanagawa.jpg Results/generated --num_iter 30 --style_weight 0.3 0.7 --content_weight 0.1
Results
The results are saved to the path provided at the beginning through the mandatory argument - Path to save generated image. The program saves the intermediate output after each iteration along with the final result (which is just the output after the final iteration).