系統ubuntu16.04 自帶python3.5.2
第一 安裝依賴包
sudo apt-get install libprotobuf-dev(接口的版本太低)
sudo apt-get install libleveldb-dev
sudo apt-get install libsnappy-dev
sudo apt-get install libopencv-dev(簡裝)
sudo apt-get install libhdf5-serial-dev
sudo apt-get install protobuf-compiler
sudo apt-get install libgflags-dev
sudo apt-get install libgoogle-glog-dev
sudo apt-get install liblmdb-dev sudo
apt-get install libatlas-base-dev
這些包應該是ubuntu官網提供的,網址https://launchpad.net/ubuntu
第二 安裝3.6.1版本protobuf
1.libprotobuf-dev 是2.6.1版本的,前面spt-get默認安裝后應該已經將
protoc可執行程序添加到環境變量中可用命令查看
$ which protoc
$ protoc --version
$ whereis protoc
2.因為從github的源碼安裝caffe需要3.6.1版本的protobuf
下載地址https://github.com/protocolbuffers/protobuf/releases
解壓到主目錄改文件夾名字為protobuf
3.安裝這些依賴包
$ sudo apt-get install autoconf automake libtool curl make g++ unzip;
4.進入protobuf根據文件夾下的configure配置文件進行編譯和安裝
$ cd protobuf;
$ ./autogen.sh;
$ ./configure
$ make(編譯)
$ make check(檢查)
$ sudo make install (安裝到默認文件夾)
$ sudo ldconfig # refresh shared library cache.;
第三 安裝opencv3.4.5
1.安裝依賴包
$ sudo apt-get install build-essential
$ sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
$ sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
$ sudo apt-get install python3-dev python3-scipy python3-numpy python3-pandas python3-matplotlib python3-sklearn
2.下載源碼
https://github.com/opencv/opencv/releases;
解壓后重命名為opencv3
3.編譯
$ cd opencv
$ mkdir release;cd release
$ cmake -D CMAKE_BUILD_TYPE=RELEASE \ -D CMAKE_INSTALL_PREFIX=/usr/local \ -D PYTHON3_EXECUTABLE=/usr/bin/python3 \
-D PYTHON_INCLUDE_DIR=/usr/include/python3.5 \ -D PYTHON_LIBRARY=/usr/lib/x86_64-linux-gnu/libpython3.5m.so \
-D PYTHON3_NUMPY_INCLUDE_DIRS=/usr/lib/python3/dist-packages/numpy/core/include \ -D INSTALL_PYTHON_EXAMPLES=ON \
-D INSTALL_C_EXAMPLES=OFF \ -D OPENCV_EXTRA_MODULES_PATH=../opencv_contrib/modules \ -D PYTHON_EXECUTABLE=/usr/lib/python3 \
-D BUILD_opencv_xfeatures2d=OFF \ -D BUILD_EXAMPLES=ON ..
nunmy文件夾可能是 /usr/local/lib/python3.5/dist-packages/numpy/core/include
$ make -j8
4.安裝配置
安裝到默認文件夾
$ sudo make install;
將OpenCV的庫添加到路徑,從而可以讓系統找到;
$ sudo gedit /etc/ld.so.conf.d/opencv.conf;
執行此命令后打開的可能是一個空白的文件,不用管,只需要在文件末尾添加
/usr/local/lib;
執行如下命令使得剛才的配置路徑生效
$ sudo ldconfig;
5.驗證
$cd opencv3/samples/cpp/example_cmake;
我們可以看到這個目錄里官方已經給出了一個cmake的example我們可以拿來測試下 按順序執行
$ cmake .
$ make
$ ./opencv_example
即可看到打開了攝像頭,在左上角有一個hello opencv 即表示配置成功
第四 下載並編譯caffe
1.可直接使用Git下載caffe,如果沒有Git,先下載 $ sudo apt-get install git
2.下載caffe到主目錄 $ git clone https://github.com/BVLC/caffe.git
3.生成Makefile.config文件,這里是將caffe目錄下自帶的Makefile.config.example文件
復制一份並更名為Makefile.config,命令如下:
$ cd caffe
$ cp Makefile.config.example Makefile.config;
4.修改Makefile.config文件中的配置
編輯Makefile.config文件
$ sudo gedit Makefile.config(gedit沒有的話用$ sudo spt-get install gedit 進行安裝)
1)設置cpu模式
# cuDNN acceleration switch (uncomment to build with cuDNN).
# USE_CUDNN := 1
# CPU-only switch (uncomment to build without GPU support).
CPU_ONLY := 1;
2)使用opencv3版本
Uncomment if you're using OpenCV 3
OPENCV_VERSION := 3;
3)計算庫選擇
# BLAS choice:
# atlas for ATLAS(default)
# mkl for MKL
# open for OpenBlas
BLAS := atlas
4)注釋掉python2.7 選擇python3.5
# PYTHON_INCLUDE := /usr/include/python2.7 \
# /usr/lib/python2.7/dist-packages/numpy/core/include;
# Uncomment to use Python 3 (default is Python 2)
PYTHON_LIBRARIES := boost_python3 python3.5m
PYTHON_INCLUDE := /usr/include/python3.5m \
/usr/lib/python3/dist-packages/numpy/core/include;
PYTHON_LIB := /usr/lib;
5)# Whatever else you find you need goes here.
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/i386-linux-gnu/hdf5/serial /usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/hdf5/serial;
6) # N.B. both build and distribute dirs are cleared on `make clean`
BUILD_DIR := build
DISTRIBUTE_DIR := distribute
5.修改對c++11的支持
$ sudo gedit makefile;
找到
# Linux ifeq ($(LINUX), 1)
CXXFLAGS += -pthread -fPIC $(COMMON_FLAGS) $(WARNINGS) -std=c++11
LINKFLAGS += -pthread -fPIC $(COMMON_FLAGS) $(WARNINGS) -std=c++11
CXX ?= /usr/bin/g++ GCCVERSION := $(shell $(CXX) -dumpversion | cut -f1,2 -d.)
添加這兩行
CXXFLAGS += -pthread -fPIC $(COMMON_FLAGS) $(WARNINGS) -std=c++11
LINKFLAGS += -pthread -fPIC $(COMMON_FLAGS) $(WARNINGS) -std=c++11
6.建立連接
$ ln -s /usr/local/python3/bin/python3.5 /usr/bin/python3
$ sudo ln -s /usr/lib/x86_64-linux-gnu/libboost_python-py35.so /usr/lib/x86_64-linux-gnu/libboost_python3.so
7.編譯
編譯caffe,make默認單核運算,-j8表示八核,可加快速度,根據自己實際情況修改。
$ make all -j8
$ make test -j8
$ make runtest -j8
5.驗證caffe
$ cd caffe
$ build/tools/caffe
出現命令選項基本上成功了
第六 安裝caffe python3接口
$ sudo apt install python3-pip #安裝pip工具或者($ wget https://bootstrap.pypa.io/get-pip.py $ sudo python3 get-pip.py)
$ sudo apt install python3-numpy #解決后面編譯無法找到numpy錯誤。
$ sudo apt-get install gfortran #安裝依賴文件
$ sudo pip3 install matplotlib#解決后面import caffe報錯
pip3 install python-dateutil --upgrade#解決報錯raise ValueError,"Can't create weekday with n == 0" SyntaxError:invalid syntax
$ cd caffe
$ pip3 install -r python/requirements.txt
$ make pycaffe -j8
增加環境變量;
gedit ~/.bashrc
結尾添加一行 export PYTHONPATH=~/caffe/python:$PYTHONPATH;
驗證
$ python3
>>>import cv2
>>>import caffe
沒報錯說明成功(。♥‿♥。)