Data-parallel image stylization using Caffe.
Data-parallel image stylization using Caffe. Implements A Neural Algorithm of Artistic Style [1].
Dependencies:
The current preferred Python distribution for style_transfer
is Anaconda (Python 3.6+ version). style_transfer
will run faster with Anaconda than with other Python distributions due to its inclusion of the MKL BLAS (mathematics) library. In addition, if you are running Caffe without a GPU, style_transfer
will run a great deal faster if compiled with MKL (BLAS := mkl
in Makefile.config
).
Cloud computing images are available with style_transfer
and its dependencies preinstalled.
Command line arguments are documented in detail in the work-in-progress parameter usage guide.
--size 2048 --tile-size 1024
)--devices 0 1 2 3
). Four GPUs, for instance, can process four tiles at a time.The obligatory Golden Gate Bridge + The Starry Night (van Gogh) style transfer (big version):
Golden Gate Bridge + The Shipwreck of the Minotaur (Turner) (big version):
barn and pond (Cindy Branham) + The Banks of the River (Renoir) (big version):
On macOS (with Homebrew-provided Boost.Python):
ANACONDA_HOME := $(HOME)/anaconda3
PYTHON_INCLUDE := $(ANACONDA_HOME)/include \
$(ANACONDA_HOME)/include/python3.6m \
$(ANACONDA_HOME)/lib/python3.6/site-packages/numpy/core/include
PYTHON_LIBRARIES := boost_python3 python3.6m
PYTHON_LIB := $(ANACONDA_HOME)/lib
The exact name of the Boost.Python library will differ on Linux but the rest should be the same.
On macOS, you can install Python 3 and Boost.Python using Homebrew:
brew install python
brew install numpy
brew install boost-python3
Then insert these lines into Caffe’s Makefile.config
to build against the Homebrew-provided Python 3.7:
PYTHON_DIR := /usr/local/opt/python3/Frameworks/Python.framework/Versions/3.7
PYTHON_LIBRARIES := boost_python37 python3.7m
PYTHON_INCLUDE := $(PYTHON_DIR)/include/python3.7m \
/usr/local/lib/python3.7/site-packages/numpy/core/include
PYTHON_LIB := $(PYTHON_DIR)/lib
make pycaffe
ought to compile the Python 3 bindings now.
Note that on macOS you currently have to set an environment variable before running style_transfer
to prevent a crash on forking:
export OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES
Note that Python 3.6+ is required now and these instructions need to be updated.
On Ubuntu 16.04, follow Caffe’s Ubuntu 15.10/16.04 install guide. The required Makefile.config
lines for Python 3.5 are:
PYTHON_LIBRARIES := boost_python-py35 python3.5m
PYTHON_INCLUDE := /usr/include/python3.5m \
/usr/local/lib/python3.5/dist-packages/numpy/core/include
PYTHON_LIB := /usr/lib
Using pip:
pip3 install -Ur requirements.txt
[1] L. Gatys, A. Ecker, M. Bethge, “A Neural Algorithm of Artistic Style“
[2] D. Liu, J. Nocedal, “On the limited memory BFGS method for large scale optimization“
[3] A. Mahendran, A. Vedaldi, “Understanding Deep Image Representations by Inverting Them“
[4] D. Kingma, J. Ba, “Adam: A Method for Stochastic Optimization“
[5] K. Simonyan, A. Zisserman, “Very Deep Convolutional Networks for Large-Scale Image Recognition“