Caffe——SSD安裝教程

前言
此篇博文,博主將詳細介紹Jetson TX1如何安裝運行caffe框架。因爲要在開發板上跑ssd的demo,所以就直接clone ssd項目了,反正ssd也是caffe的一個分支,除了ssd特有的層,二者在編譯運行上幾乎一樣。

安裝依賴包
依次安裝以下依賴項,如果不想每一次install都出現yes or no的提示項,可以在命令末尾加上“-y”。

sudo apt-get install build-essential -y #必要的編譯工具依賴
sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler
sudo apt-get install --no-install-recommends libboost-all-dev
sudo apt-get install libatlas-base-dev
sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev
PS:畢竟不是筆記本電腦,下載安裝過程可能極爲緩慢,需要有充足的時間和耐心。

安裝easy_install和pip
pip和easy_install的作用是方便以後安裝python軟件包

下載安裝easy_install
wget --no-check-certificate https://bootstrap.pypa.io/ez_setup.py
也可以使用博主上傳的py文件:ez_setup.py

sudo python ez_setup.py --insecure
下載安裝pip
wget https://bootstrap.pypa.io/get-pip.py
也給出下載地址:get-pip.py

sudo python get-pip.py
安裝python常用庫
sudo apt-get install libblas-dev liblapack-dev libatlas-base-dev gfortran python-numpy
克隆ssd源碼
git clone https://github.com/weiliu89/caffe.git
cd caffe/
git checkout ssd #切換至分支ssd
安裝pycaffe所需依賴包
cd ~/caffe/python
sudo su #使用超級權限
for req in $(cat “requirements.txt”); do pip install -i https://pypi.tuna.tsinghua.edu.cn/simple $req; done
PS:終端輸入Ctrl+Shift+d退出sudo su模式

編譯caffe-ssd
這裏建議先把能改的都改了,最後進行編譯,一次就可以成功,可以節省不少時間。

修改Makefile.config
cd ~/caffe
cp Makefile.config.example Makefile.config
gedit Makefile.config
將 USE_CUDNN := 1 取消註釋
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include 後面打上一個空格 然後添加/usr/include/hdf5/serial
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib 後面打上一個空格,然後添加/usr/lib/aarch64-linux-gnu/hdf5/serial/
說明:第1步的作用是使用cudnn編譯,第2、3步是添加hdf5的路徑,沒有的話會出現找不到hdf5.h的錯誤。

修改Makefile
cd ~/caffe
gedit Makefile
進入文件,修改
NVCCFLAGS += -ccbin=$(CXX) -Xcompiler -fPIC (COMMONFLAGS)NVCCFLAGS+=DFORCEINLINESccbin=(COMMON_FLAGS) 爲 NVCCFLAGS += -D_FORCE_INLINES -ccbin=(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)

說明:修改這一步是爲了避免出現string.h ‘memcy’ was not declared in this scope這樣的錯誤,這種錯誤通常是由於gcc版本太新而導致的。

建立hdf5軟連接
cd /usr/lib/aarch64-linux-gnu
sudo ln libhdf5_serial.so.10.1.0 libhdf5.so
sudo ln libhdf5_serial_hl.so.10.0.2 libhdf5_hl.so
sudo ldconfig #使連接生效
說明:這一步是爲了建立軟連接,避免出現找不到lhdf5_hl和lhdf5的錯誤。

編譯caffe-ssd
cd ~/caffe
make all -j4
make test -j4
make runtest -j4
make pycaffe -j4
make matcaffe -j4 #可選,但要修改其他選項,參看底部文獻
編譯過程中可能會出現nvcc warning: The 'compute_20’and ‘sm_21’ architectures are …這種警告,可以不管,只要編譯過程中不報錯就OK。

cd ~/caffe/python
python
import caffe
上面是在測試Python環境,只要沒報錯,就可以說明編譯成功了。也有可能會出警告:UserWarning: Matplotlib is building the font cache using fc-list. This may take a moment 這種情況也不要緊,可用下面命令消除之:

import matplotlib
matplotlib.use(‘TkAgg’)
PS:make runtest -j4居然運行了一個多小時,已經無力吐槽。。。

測試AlexNet
cd ~/caffe
./build/tools/caffe time --gpu 0 --model ./models/bvlc_alexnet/deploy.prototxt
測試結果爲total time:10687.4ms

運行caffe-ssd
在Jetson TX1上運行ssd的過程和電腦上基本一樣,詳細的步驟可以參考博主的文章:
SSD:Single Shot MultiBox Detector的安裝配置和運行
這裏,仍然簡要說下步驟:

下載使用已有模型
想直接看看ssd效果的話,可以下載作者訓練好的模型:下載地址

得到了一個壓縮包:models_VGGNet_VOC0712_SSD_300x300.tar.gz ,將其解壓,把其中的VGGNet文件夾放到/home/ubuntu/caffe/models/目錄之下。

增加pycaffe環境變量
cd
echo “export PYTHONPATH=/home/ubuntu/caffe/python” >> ~/.profile
source ~/.profile
echo $PYTHONPATH #檢查環境變量的值
如果沒有這一步的話,可能會出現no module named caffe或者no module named caffe-proto這種錯誤。

進行webcam檢測
cd ~/caffe
python examples/ssd/ssd_pascal_webcam.py
過一會應該會出現檢測窗口,但非常不幸的是,開始報錯,說無法打開攝像頭,原因推測是沒有成功調用Jetson TX1內置的CSI攝像頭,方法找到了再補充。

進行video檢測
cd ~/caffe
python examples/ssd/ssd_pascal_video.py
這裏會對內置的演示視頻進行檢測,這次沒有出問題,可以運行成功,我就不放圖了,效果和電腦比較有一定差距,幀率比較低,看以後能不能想辦法加速一下。

PS:在終端鍵入Ctrl+Shift+C可退出程序運行。

進行image檢測
參看博主之前的博文:SSD: Single Shot MultiBox Detector檢測單張圖片

開發板也研究一週了,ssd也還算能跑的通,看來下一步就得訓練自己的數據模型了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章