Step.1 安裝各種工具
安裝pip3
*Ubuntu 16.04內建python3.5沒有pip
*Ubuntu 16.04內建python3.5沒有pip
sudo apt-get install python3-pip
安裝各種工具
# build-essential, vim, cmake, git, pkg-config sudo apt-get install build-essential vim cmake git pkg-config
安裝亂七八糟的依賴項
# python3 modules (numpy, protobuf, skimage)
sudo pip3 install numpy
sudo pip3 install protobuf
sudo pip3 install skimage
# gflags, glog, lmdb
sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev
# boost
sudo apt-get install libboost-all-dev
# hdf5
sudo apt-get install libhdf5-dev
# protobuf
sudo apt-get install protobuf-compiler libprotobuf-dev
# blas
sudo apt-get install libblas-dev
sudo apt-get install libatlas-base-dev
sudo apt-get install libopenblas-dev
# leveldb
sudo apt-get install libleveldb-dev
# snappy
sudo apt-get install libsnappy-dev
Step.2 安裝opencv3
git clone https://github.com/opencv/opencv cd opencv git checkout 3.4 #一定要切換到3.4版 不然後面編譯python時會出錯 mkdir build #創建build資料夾 cd build #切換到build資料夾 cmake .. #開始編譯 make sudo make install #安裝編譯完的檔案
Step.3 安裝Caffe(CPU版)
這裡是各種坑的開始,開始填坑吧~~!
① 下載神人提供的Caffe
git clone https://github.com/BVLC/caffe
② 切換到caffe目錄,將Makefile.config.example複製並命名為Makefile.config
cd caffe cp Makefile.config.example Makefile.config
③ 修改Makefile.config
*可以使用Ubuntu內建的gedit來開啟以下是要修改的地方:
1.取消對 CPU_ONLY := 1 的註解 (我們是要編譯CPU版)
2.取消對 OPENCV_VERSION := 3 的註解
3.將Python2 改成 Python3(取消Python3的註解,並將Python2註解起來)
4.修改引用文件路徑 (HDF5的路徑問題)
給你複製啦!
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial/ LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/hdf5/serial
④開始編譯
*make後面接-j2 j是job的意思 2使用的執行續數量 依電腦狀況可以增加 當然越多速度越快(小心電腦當機)
*但是make的程序有些是有順序性的 使用多執行續容易出錯 在這裡建議make all使用即可
sudo make all -j2 sudo make test sudo make runtest
從這一步開始就會出現各種編譯錯誤
如果在編譯(make)時出現任何錯誤,一定要先clean掉(執行下面指令)再重新編譯,不然會一直出現同樣的錯誤(很重要!!)
sudo make clean
以下是可能遇到的錯誤及解決方法:
-------【Error 1."libopencv_core.so.3.3: cannot open shared object: …"】-------
解決方式 :
1.在 /etc/ld.so.conf 裡面加入一行 : /usr/local/lib
執行:
sudo gedit /etc/ld.so.conf改成:
2.執行
sudo ldconfig
3.打開 /etc/bash.bashrc 文件
sudo gedit /etc/bash.bashrc
在文件最後加入兩行 :
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig export PKG_CONFIG_PATH
4.執行以下指令重啟設定即可重新編譯
source /etc/bash.bashrc
編譯成功
make all
make test
make runtest
如果都有出現以上畫面,恭喜你!!!
你的Caffa已經成功編譯了,可以開始以用
如果想要使用python接口的話再繼續往下看
Step.4 編譯python接口
① 安裝fortran編輯器(gfrotran)
等等安裝scipy庫時會用到它sudo apt-get install gfortran
② 安裝python接口需要的函式庫
在caffe/python資料夾內會找到一個requirements.txt的文件檔裡面會寫有所有需要的安式庫
可以打開對照著使用pip3安裝
也可以使用以下指令一次性安裝
cd ~/caffe/python for req in $(cat requirements.txt);do sudo pip3 install $req; done
安裝完成後還可以再使用以下指令再確認一次,
sudo pip3 install -r requirements.txt如果安裝成功的會顯示Requirement already satisfied。沒安裝成功的,則會重新安裝
③ 將caffe/python加到環境變數
1.執行sudo ldconfig
2.編輯配置文件~/.bashrc
打開~/.bashrc文件
sudo gedit ~/.bashrc在文件最面添加
export PYTHONPATH=/home/joshua/caffe/python:$PYTHONPATH*這裡的位置是根據caffe的安裝位置,每個人會有所不同
3.執行以下指令使設定生效
source ~/.bashrc*有時候更新設定可能不會生效,可以重開電腦解決
④開始編譯python接口
cd ~/caffe/ sudo make pycaffe編譯完成
⑤驗證python接口
輸入python3進入ptyhon輸入
import caffe如果成功還不能確定安裝完成
再輸入
from caffe import layers as L如果都沒出現錯誤的話,恭喜你!!!
可以開始使用python接口的caffe了!!!
接下來是整理一些編譯pycaffe會遇到的錯誤:
-------【Error1. pip3的bug (步驟②)】-------
這應該是在第②步,安裝python函式庫的時候會遇到的問題
這是一個非常麻煩的bug
可以從錯誤中看到是"/usr/share/python-wheels/pkg_resources-0.0.0-py2.py3-none-any.whl/pkg_resources/__init__.py"這一個檔案出了問題
照理來說只要修改這個檔案就可以修復這個bug
但是麻煩的是他是在系統內的檔案,所以必須使用系統管理員來開啟
而且"/usr/share/python-wheels/pkg_resources-0.0.0-py2.py3-none-any.whl"是個壓縮檔
所以沒辦法在終端機使用指令直接找到裡面的文件
而且"/usr/share/python-wheels/pkg_resources-0.0.0-py2.py3-none-any.whl"是個壓縮檔
所以沒辦法在終端機使用指令直接找到裡面的文件
解決方法如下:
1.輸入以下指令以系統管理員開啟檔案總管
sudo nautilus
2.找到"/usr/share/python-wheels/pkg_resources-0.0.0-py2.py3-none-any.whl"壓縮檔
3.打開壓縮檔並找到"/pkg_resources/__init__.py"檔案
4.開啟"__init__.py"並找到下面紅框的地方
*如果使用gedit的人可以用Ctrl+F,並輸入orig_path來尋找
5.修改程式碼為
#orig_path.sort(key=position_in_sys_path) #module.__path__[:] = [_normalize_cached(p) for p in orig_path] orig_path_t = list(orig_path) orig_path_t.sort(key=position_in_sys_path) module.__path__[:] = [_normalize_cached(p) for p in orig_path_t]*python的縮排是4個空白,在gedit中Tab鍵的預設是8個空白,這裡要注意一下
6.儲存並更新壓縮檔
結束後再重新執行一次步驟②,應該就能夠順利執行了
-------【Error2. /usr/bin/ld: 找不到 -lbppst_python3 (步驟④)】-------
這是在Ubuntu中常見的錯誤,就是找不到對應的lib文件,通常是檔名沒有統一
解決方法就是切換到"/usr/lib/x86_64-linux-gnu/"
並建立一個對應檔名的連接檔案
如下:
cd /usr/lib/x86_64-linux-gnu/ sudo ln -s libboost_python-py35.so libboost_python3.so
建立完再切換回caffe的資料夾並重新編譯即可
-------【Error3. import caffe時出錯 (步驟⑤)】-------
這是ptyhon套件matplotlib出錯輸入以下指令更新套件即可
sudo pip3 install matplotlib --upgrade
-------【Error4. ImportError: cannot import name '_validate_lengths' (步驟⑤)】-------
這個錯誤是因為skimage這個套件需要使用numpy可是由於numpy持續更新使得語法已經改變了
解決方法如下:
1.輸入以下指令開啟skimage套件中的"arraycrop.py"檔案
sudo gedit /usr/local/lib/python3.5/dist-packages/skimage/util/arraycrop.py2.修改Import的方式如下:
from distutils.version import LooseVersion as Version
old_numpy = Version(np.__version__) < Version('1.16')
if old_numpy:
from numpy.lib.arraypad import _validate_lengths
else:
from numpy.lib.arraypad import _as_pairs3.儲存並關閉
參考資料
caffe安裝:
https://blog.csdn.net/g11d111/article/details/78141202 http://darren1231.pixnet.net/blog/post/328046349-setup_caffe https://blog.csdn.net/u010193446/article/details/53259294
OpenCV安裝:
https://www.pyimagesearch.com/2015/07/20/install-opencv-3-0-and-python-3-4-on-ubuntu/
hdf5.h路徑錯誤問題:
https://blog.csdn.net/windows_peng/article/details/53706987 https://blog.csdn.net/MD_learning/article/details/53185992
OpenCV編譯錯誤(cannot open shared object): https://blog.csdn.net/CV_YOU/article/details/77341631
Ubuntu 以root的身分開啟檔案總管:
https://blog.xuite.net/yh96301/blog/247012131-Ubuntu+14.04%E4%BB%A5root%E7%9A%84%E8%BA%AB%E5%88%86%E9%96%8B%E5%95%9F%E6%AA%94%E6%A1%88%E7%B8%BD%E7%AE%A1
pip3 bug修復:
https://stackoverflow.com/questions/47955397/pip3-error-namespacepath-object-has-no-attribute-sort
/usr/bin/ld: cannot find -l**** 解決方法:
https://blog.csdn.net/yingyujianmo/article/details/49634511
skimage bug修復:
https://github.com/scikit-image/scikit-image/pull/3556








