AM5728开发深度学习之安装 caffe-jacinto
AM5728開發(fā)深度學習之安裝 caffe-jacinto——WizNote筆記
要先使用自己訓練的模型,可以使用caffe和Tensorflow,但是使用TI的caffe-jacinto能讓訓練的模型在TI的嵌入式平臺上達到加速的效果,它fork了NVIDIA/caffe,而NVIDIA/caffe則是fork了BLVC/caffe。經(jīng)過測試,安裝了caffe-jacinto,也能跑通caffe給的官方教程代碼Notebook Examples。
官方Repo
官方問題總結(jié)及解決方法
本機環(huán)境如下:
- CUDA 9.0
- cuDNN 7.2.1
- OpenCV 3.1
由于電腦裝了Anaconda3,因此我們分配一個虛擬環(huán)境caffe-jacinto來安裝caffe-jacinto需要的包,這里指定python版本為2.7,因為caffe-jacinto對python2.7支持較好。
conda create -n caffe-jacinto python=2.7 source activate caffe-jacinto1 下載caffe-jacinto庫
git clone https://github.com/tidsp/caffe-jacinto cd caffe-jacinto/ git checkout caffe-0.17配置環(huán)境變量
vim ~/.bashrc # 將下面兩行添加到~/.bashrc中 export PATH=/home/xavier/anaconda3/envs/caffe-jacinto/bin:$PATH export PYTHONPATH=/media/xavier/SSD256/caffe-jacinto/python:$PYTHONPATH source ~/.bashrc2 編輯Makefile.config
取消注釋行WITH_PYTHON_LAYER
取消注釋行USE_CUDNN
3 安裝依賴
cd caffe-jacinto/ source activate caffe-jacinto sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler sudo apt-get install libatlas-base-dev sudo apt-get install libopenblas-dev sudo apt-get install --no-install-recommends libboost-all-dev #沒安裝的話會出現(xiàn)boost庫的相關(guān)錯誤 sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev sudo apt-get install libturbojpeg sudo ln -s /usr/lib/x86_64-linux-gnu/libturbojpeg.so.0.0.0 /usr/lib/x86_64-linux-gnu/libturbojpeg.so # 否則會出現(xiàn)libturbojpeg相關(guān)的錯誤 # 安裝pycaffe需要的依賴包 for req in $(cat python/requirements.txt); do pip install $req; done4 安裝CUDA
5 安裝cuDNN
以上兩步網(wǎng)上教程很多,這里就偷懶省略了,本機電腦裝的CUDA為9.0,cuDNN為7.2.1,可以通過以下命令查看
# cuda 版本 cat /usr/local/cuda/version.txt # cudnn 版本 cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2 # OpenCV版本 pkg-config --modversion opencv6 編譯caffe-jacinto
# 注意這里的~/caffe-jacinto/python/requirements.txt根據(jù)具體的caffe-jacinto安裝目錄而定 for req in $(cat ~/caffe-jacinto/python/requirements.txt); do pip install $req; done make all -j 8 #使用8個線程進行編譯7 測試caffe-jacinto
make test make runtest make pycaffe常見錯誤及解決辦法
1 .build_release/src/caffe/proto/caffe.pb.h:22:35: fatal error: google/protobuf/arena.h: 沒有那個文件或目錄或者.build_release/src/caffe/proto/caffe.pb.h:12:2: error: #error This file was generated by a newer version of protoc which is #error This file was generated by a newer version of protoc which is錯誤
[具體解決方法及描述](https://blog.csdn.net/qq_28256625/article/details/78893707)
這是由于protobuf的版本不對導致的,caffe能正確使用的是protobuf-2.6.1版本,而安裝anaconda后環(huán)境變量改變,默認使用anaconda下的protobuf-3.4.0了。
我們想使用Anaconda,但是Anaconda的protoc的版本太高,我們可以使用以下命令安裝protobuf-2.6.1
假設使用protobuf-2.6.1,用下面命令鎖定protobuf版本
binstar show probcomp/libprotobuf然后使用下面命令安裝
conda install --channel https://conda.anaconda.org/probcomp libprotobuf再次查看哪些路徑有protoc,可以看到路徑/home/xavier/anaconda3/envs/caffe-jacinto/bin/protoc有protoc,并且可以查看到其版本為protobuf-2.6.1
whereis protoc
通過修改~/.bashrc來將/home/xavier/anaconda3/envs/caffe-jacinto/bin/添加到環(huán)境變量
然后make all -j 8即可編譯
2 由于沒有使用OpenCV造成的錯誤
.build_release/lib/libcaffe-nv.so:對‘cv::VideoCapture::set(int, double)’未定義的引用 .build_release/lib/libcaffe-nv.so:對‘cv::VideoWriter::write(cv::Mat const&)’未定義的引用 .build_release/lib/libcaffe-nv.so:對‘cv::VideoCapture::open(cv::String const&)’未定義的引用 .build_release/lib/libcaffe-nv.so:對‘cv::VideoCapture::release()’未定義的引用解決方法
由于我自己電腦之前源碼編譯過OpenCV3.4,這里只需要清除剛剛編譯生成的文件make clean,修改Makefile.config中以下兩行,然后重新編譯即可。
3 /usr/bin/ld: /usr/lib/x86_64-linux-gnu/libturbojpeg.a(libturbojpeg_la-turbojpeg.o): relocation R_X86_64_32 against `.data’ can not be used when making a shared object; recompile with -fPIC /usr/lib/x86_64-linux-gnu/libturbojpeg.a: 無法添加符號: 錯誤的值
解決方法
cd <caffe-jacinto ROOT> make clean source activate caffe-jacinto sudo ln -s /usr/lib/x86_64-linux-gnu/libturbojpeg.so.0.1.0 /usr/lib/x86_64-linux-gnu/libturbojpeg.so4 執(zhí)行make runtest時出現(xiàn)錯誤
這個錯誤的原因不清楚,目前沒有找到解決方法,但是這個錯誤不影響后面的操作,如果有大佬知道怎么解決,煩請在評論中給出方法。
5 OpenCV版本太高,需要轉(zhuǎn)換為OpenCV3.1
5.1 CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
Please set them or make sure they are set and tested correctly in the CMake files:
CUDA_nppi_LIBRARY (ADVANCED)
查看解決方法
6 運行完make pycaffe后,import caffe出現(xiàn)ImportError: /home/user/caffe-master/python/caffe/…/…/build/lib/libcaffe.so.1.0.0-rc3:undefinedsymbol:_ZN2cv8imencodeERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS_11_InputArra ERSt6vectorIhSaIhEERKSB_IiSaIiEE
這是由于使用Anaconda3造成的,我們現(xiàn)在使用系統(tǒng)自帶的python2來重新安裝caffe-jacinto
6.1 切換系統(tǒng)root用戶的Python
sudo update-alternatives --config python然后輸入對應的python2.7版本即可。
6.2 使用conda remove -n caffe-jacinto --all刪除Anaconda創(chuàng)建的caffe-jacinto虛擬環(huán)境。
6.3 再安裝pycaffe需要的依賴包
for req in $(cat python/requirements.txt); do pip2 install $req; done注意:這里的pip改為pip2了,表示重新安裝系統(tǒng)python2所需的pycaffe依賴包
6.4 執(zhí)行make all -j8和make pycafffe即可
6.5 測試import caffe
7 ImportError: No module named skimage
這個簡單,參考博客
8 成功import caffe后,執(zhí)行代碼caffe.set_mode_gpu()出錯Check failed: error == cudaSuccess (30 vs. 0) unknown error
解決辦法:使用sudo python而不是python
總結(jié)
以上是生活随笔為你收集整理的AM5728开发深度学习之安装 caffe-jacinto的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: D触发器实现二分频
- 下一篇: 谁说大象不能跳舞读后感