Jetson TX1 開發教程(3)--安裝運行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

PS.如果以上都兩個包都很難安裝上,也沒關係。不過,至少要安裝python-pip,使用如下命令:sudo apt-get install python-pip

安裝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
  1. USE_CUDNN := 1 取消註釋
  2. INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include 後面打上一個空格 然後添加/usr/include/hdf5/serial
  3. LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib 後面打上一個空格,然後添加/usr/lib/aarch64-linux-gnu/hdf5/serial/
  4. CUDA_ARCH := 後面加一句-gencode arch=compute_53,code=sm_53,最好同時刪除sm_35以下以及sm_53以上的條目

說明:第1步的作用是使用cudnn編譯,第2、3步是添加hdf5的路徑,這個路徑和x86的PC是不一樣的,沒有的話會出現找不到hdf5.h的錯誤,第4步是爲了匹配TX1的GPU計算能力,因爲查到其計算能力爲5.3,加上之後使得GPU加速發揮得更好。

如有需要,可參考博主的配置文件:Makefile.config for SSD

修改Makefile

$ cd ~/caffe
$ gedit Makefile

進入文件,修改
NVCCFLAGS += -ccbin=$(CXX) -Xcompiler -fPIC $(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的錯誤。

make caffe-ssd

$ cd ~/caffe
$ make all -j4
$ make test -j4
$ make runtest -j4 # 如果能運行demo,make test & runtest非必須 
$ make pycaffe -j4 
$ make matcaffe -j4 # 可選,但要修改其他選項,參看底部文獻

PS.編譯過程中可能會出現nvcc warning: The 'compute_20'and 'sm_21' architectures are ......這種警告,原因是TX1的計算能力是5.3,管不到2.0的情況,可以在Makefile.config中刪除“compute_20”所在條目;也可能會提示找不到openblas庫,那就繼續安裝openblas:sudo apt-get install libopenblas-dev,然後重新編譯。

$ cd ~/caffe/python
$ python
$ import caffe

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

$ 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:$PYTHONPATH" >> ~/.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攝像頭接口不支持這種程序調用,沒辦法,只得外接USB攝像頭來看演示效果。首先在.profile文件中添加環境變量export LD_PRELOAD=/usr/lib/aarch64-linux-gnu/libv4l/v4l1compat.so,然後在py文件中修改”webcam_id”爲1即可。

進行video檢測

$ cd ~/caffe
$ python examples/ssd/ssd_pascal_video.py

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

PS.esc鍵可以退出窗口,在終端鍵入Ctrl+Shift+c可強制退出。

進行image檢測

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

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

參考文獻:
http://blog.csdn.net/g0m3e/article/details/51420565

發佈了34 篇原創文章 · 獲贊 360 · 訪問量 73萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章