ubuntu16.04 caffe(github源碼cpu)+python3.5+opencv3.4.5安裝編譯


系統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

沒報錯說明成功(。♥‿♥。)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM