#!/usr/bin/env bash
# Assuming OS X Yosemite 10.10.4
# Install XCode and command line tools
# See https://itunes.apple.com/us/app/xcode/id497799835?mt=12#
# See https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/xcode-select.1.html
xcode-select --install
# Install the Homebrew package manager if you don't already use it; see source http://brew.sh
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
# Install homebrew cask
brew install caskroom/cask/brew-cask
# Install Python 2.7 and pip
brew install python pip
# Install Cuda 7
brew cask install cuda
# Optionally install cuDNN from https://developer.nvidia.com/cudnn which requries
# 1) Registering for an NVIDIA account, accepting an end-user-license-agreement
# 2) Downloading and extracting a tar.gz archive
# 3) Copying lib* files to /usr/local/cuda/lib and cudnn.h to /usr/local/cuda/include
#
# robertsdionne:~/$ ls /usr/local/cuda/lib/*dnn*
# /usr/local/cuda/lib/libcudnn.6.5.dylib /usr/local/cuda/lib/libcudnn_static.a
# /usr/local/cuda/lib/libcudnn.dylib
# robertsdionne:~/$ ls /usr/local/cuda/include/*dnn*
# /usr/local/cuda/include/cudnn.h
# Install dependencies; see http://caffe.berkeleyvision.org/install_osx.html
brew install --fresh -vd snappy leveldb gflags glog szip lmdb
# need the homebrew science source for OpenCV and hdf5
brew tap homebrew/science
brew install hdf5 opencv
# with Python pycaffe needs dependencies built from source
brew install --build-from-source --with-python --fresh -vd protobuf
# We need boost{,-python}-1.57.0 due to a bug in 1.58.0 on Yosemite 10.10.4
brew install --build-from-source --fresh -vd \
https://raw.githubusercontent.com/Homebrew/homebrew/6fd6a9b6b2f56139a44dd689d30b7168ac13effb/Library/Formula/boost.rb \
https://raw.githubusercontent.com/Homebrew/homebrew/3141234b3473717e87f3958d4916fe0ada0baba9/Library/Formula/boost-python.rb
# Clone caffe
git clone https://github.com/BVLC/caffe.git
cd caffe
# Install python dependencies
pip install --requirement python/requirements.txt
# Adjust Makefile.config
cp Makefile.config.example Makefile.config
########## Make the following adjustments to Makefile.config:
diff --git a/Makefile.config b/../caffe/Makefile.config
index a873502..c6806c2 100644
--- a/Makefile.config
+++ b/../caffe/Makefile.config
@@ -2,7 +2,7 @@
# Contributions simplifying and improving our build system are welcome!
# cuDNN acceleration switch (uncomment to build with cuDNN).
-# USE_CUDNN := 1
+# USE_CUDNN := 1 ########### Keep it like this to disable cuDNN
+USE_CUDNN := 1 ########### Make it like this to enable cuDNN
# CPU-only switch (uncomment to build without GPU support).
# CPU_ONLY := 1
@@ -34,7 +34,7 @@ BLAS := atlas
# Custom (MKL/ATLAS/OpenBLAS) include and lib directories.
# Leave commented to accept the defaults for your choice of BLAS
# (which should work)!
-# BLAS_INCLUDE := /path/to/your/blas
+BLAS_INCLUDE := /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/System/Library/Frameworks/Accelerate.framework/Versions/Current/Frameworks/vecLib.framework/Headers
# BLAS_LIB := /path/to/your/blas
# Homebrew puts openblas in a directory that is not on the standard search path
@@ -48,8 +48,8 @@ BLAS := atlas
# NOTE: this is required only if you will compile the python interface.
# We need to be able to find Python.h and numpy/arrayobject.h.
-PYTHON_INCLUDE := /usr/include/python2.7 \
- /usr/lib/python2.7/dist-packages/numpy/core/include
+PYTHON_INCLUDE := /usr/local/lib/python2.7/site-packages/numpy/core/include/ \
+ /usr/local/Cellar/python/2.7.10/Frameworks/Python.framework/Versions/2.7/include/python2.7/
# Anaconda Python distribution is quite popular. Include path:
# Verify anaconda location, sometimes it's in root.
# ANACONDA_HOME := $(HOME)/anaconda
@@ -58,7 +58,9 @@ PYTHON_INCLUDE := /usr/include/python2.7 \
# $(ANACONDA_HOME)/lib/python2.7/site-packages/numpy/core/include \
# We need to be able to find libpythonX.X.so or .dylib.
-PYTHON_LIB := /usr/lib
+PYTHON_LIB := /usr/local/lib/python2.7 \
+ /usr/local/Cellar/python/2.7.10/Frameworks/Python.framework/Versions/2.7/lib/ \
+ /usr/local/lib/python2.7/site-packages/numpy/lib
# PYTHON_LIB := $(ANACONDA_HOME)/lib
# Homebrew installs numpy in a non standard path (keg only)
########## Make the following adjustments to Makefile:
diff --git a/Makefile b/../caffe/Makefile
index e4e66df..8babaf8 100644
--- a/Makefile
+++ b/../caffe/Makefile
@@ -335,7 +335,7 @@ else
LDFLAGS += -framework Accelerate
else
BLAS_INCLUDE ?= /System/Library/Frameworks/vecLib.framework/Versions/Current/Headers/
- LDFLAGS += -framework vecLib
+ LDFLAGS += -framework Accelerate
endif
endif
endif
# Build caffe
make all -j8; make pycaffe -j8
# Package caffe
make distribute
# Set your environment variables for success
export PYTHONPATH="$HOME/caffe/distribute/python:$PYTHONPATH"
export DYLD_FALLBACK_LIBRARY_PATH=/usr/local/cuda/lib:/usr/local/lib:$HOME/caffe/distribute/lib:$DYLD_FALLBACK_LIBRARY_PATH
# Clone deepdream
cd ..
git clone https://github.com/google/deepdream.git
cd deepdream
# Install python requirements
pip install numpy scipy scikit-image pillow ipython[notebook]
# Start IPython Notebook and select dream.ipynb
ipython notebook dream.ipynb
I've seen quite a few with the google.protobuf error and not really seeing any solutions here. Has anyone been able to address this error? I have everything 'working', or so it seems. When i run ipython in my terminal and import caffe, it seems to work. When I make runtest caffe it all comes back OK. I've followed all of the steps and the only thing I can think is that it's possible my ENV's aren't set correctly. But I'm immediately stopped in my tracks after the notebook launches and in the first module there is the dreaded "ImportError: No module named google.protobuf" error and I'm stopped right there. Or, at least it seems that way. Im in Ubuntu, but at this stage I'm not sure that matters as much. Help?