寫在開頭:目前python3版本的pycaffe仍然屬於不穩定版本,有很多未知因素,所以還是非常建議使用python2.7編譯pycaffe。
1.python3
centos預設不自帶python3,在此處安裝python3環節中強烈建議使用因為據google結果顯示,其他版本最後編譯pycaffe時無法正確匯入,會提示protobuf錯誤,詳情參考caffe的issue(和protobuf的issue(同時安裝miniconda3時注意請務必將lib資料夾路徑配置在ld_library_path
環境變數或者~/.bash_profile中,加入/etc/ld.so.config可能導致開機無法啟動。
2.編譯opencv3.1.0
2.1 刪除cmake對python2版本的檢測(可選)
在cmake/opencvdetectpython.cmake
檔案的如下一段話:
find_python(2.7
"$" python2_library python2_include_dir
python2interp_found python2_executable python2_version_string
python2_version_major python2_version_minor python2libs_found
python2libs_version_string python2_libraries python2_library
python2_debug_libraries python2_library_debug python2_include_path
python2_include_dir python2_include_dir2 python2_packages_path
python2_numpy_include_dirs python2_numpy_version)
其實對本段的刪除並不是必須的,但是在我編譯時如果不刪除就不能正確的檢測到python3.5的相關資訊。
2.2 編譯
cmake -dwith_cuda
=off -dpython_executable
=/usr/local/miniconda3/bin/python -d python_library=/usr/local/miniconda3/lib/libpython3.5m.so -d python_numpy_include_dirs=/usr/local/miniconda3/lib/python3.5/site-packages/numpy/core/include -d python_include_dir=/usr/local/miniconda3/include/python3.5m -d build_tests=off -d cmake_build_type=release -d cmake_install_prefix=/usr/local
-d build_docs=off -dpython_packages_path
=/usr/lib/miniconda3/site-packages
. make && sudo make install
注意點1:在執行cmake命令時一定要注意,python3一定要出現在opencv modules– to be built一欄中。並注意檢查python 3的interpreter,libraries,numpy等資訊。
注意點2:然後經過make之後就可以在lib資料夾下面發現python3資料夾,裡面有乙個可以被import的so檔案。如果make install不能將該so正確的放入到python3的site-package目錄中時就自行放入就好了。
3. 編譯boost-python3
之前在ubuntu編譯時都不需要這個步驟的,但是在centos上編譯到pycaffe最後一步時總是提示-lboost-python3.so不存在,而且沒有找到現成的rpm可以直接裝,就自己編吧,反正很快。
wget
tar -jxvf boost_1_61_0.tar.bz2 && cd boost_1_61_0
./bootstrap.sh --
with
-python
=/usr/local/python3.5/bin/python3 --prefix=/usr/local/boost
./b2 stage threading=multi link
=shared
sudo ./b2 install threading=multi link
=shared
然後可以看到 libboost-python3.so出現在了/usr/local/boost/lib目錄,記得加到ld.so.conf中就ok了。
4.編譯protobuf
參照
cpu_only
:= 1
opencv_version
:= 3
blas
:= open #這裡我自己編譯的openblas,編譯特別簡單就不說了
blas_include
:= /usr/lib64/openblas/include
blas_lib
:= /usr/lib64/openblas/lib
#如果沒有之前編譯的boost庫,則最後會提示missing -lboost_python3
python_libraries
:= boost_python3 python3.5m
python_include
:= /usr/local
/miniconda3/include
/python3.5m \
/usr
/local/miniconda3/lib/python3.5/site-packages/numpy/core/include
python_lib
:= /usr/local
/miniconda3/lib
with_python_layer
:= 1
include_dirs
:= $(
python_include) /usr/local/include /usr/lib64/openblas/include
library_dirs
:= $(
python_lib) /usr/local/lib /usr/lib /usr/lib64/openblas/lib /usr/local/boost/lib /usr/local/lib
最後執行make all && make pycaffe 即可。
總結:
本篇文章寫於2023年9月29日,採用master分支最近release candidate 3**編譯完成,最後能成功import caffe.但是當使用predict函式時遇到以下問題未解決:
file "/usr/local/miniconda3/lib/python3.5/site-packages/caffe/classifier.py", line
89, in predict
out = self.forward_all(**)
file "/usr/local/miniconda3/lib/python3.5/site-packages/caffe/pycaffe.py", line
175, in _net_forward_all
for batch in self._batch(kwargs):
file "/usr/local/miniconda3/lib/python3.5/site-packages/caffe/pycaffe.py", line
259, in _net_batch
num = len(blobs.itervalues().next())
attributeerror: 'dict' object has no attribute 'itervalues'
因為dict的itervalues方法在python3中被移除,儘管caffe官方一直在努力保持python3的相容,但暫時不夠完美,期待完美相容python3的**。 CentOS編譯安裝Python3
最近想學一下一門新的高階語言,無意中看到用python仿aiphago的github專案,就決定是他了。aiphago的git傳送門 python官網 在系統選擇,也挑了乙個困難路線,裝在linux的系統,centos裡。也就不廢話了,下面正題。鍵入以下命令 yum install y openss...
centos編譯安裝python3
1.修改網絡卡配置檔案 vim etc sysconfig network script ifcfg eth0注 修改完之後,不要service network restart 重啟 reboot 2.開機後 ping www.baidu.com如果成功進行下一步,否則重複步驟1 5.上傳完之後 在...
CentOS編譯安裝Python3
最近想學一下一門新的高階語言,無意中看到用python仿aiphago的github專案,就決定是他了。aiphago的git傳送門 python官網 在系統選擇,也挑了乙個困難路線,裝在linux的系統,centos裡。也就不廢話了,下面正題。鍵入以下命令 yum install y openss...