NVIDIA Jetson AGX Xavier試玩(3)- Caffe篇

2019-03-29
Facebook
Twitter

文、圖/彭宇豪

目前深度學習的框架眾多百家爭鳴,所幸NVIDIA之前的TX1/TX2模組有許多人為它移植框架,這裡介紹常見的Caffe深度學習框架來試玩這台Xavier。以下用步驟式說明詳細。

開始之前請玩家注意,開源資源瞬息萬變,如安裝遇到問題請詳閱錯誤訊息,有時候解答就在訊息中。

先到Caffe官網拜訪一下,這個框架是 Yangqing Jia創建的,目前由 Berkeley AI Research (BAIR)及社群維護著。caffe深度學習框架可以用來快速實現影像分類與偵測。有關Caffe資訊請前往:http://caffe.berkeleyvision.org/

 

下載

到github下載zip或是下git clone指令。網址:https://github.com/BVLC/caffe
將下載檔案放在/home/nvidia。解壓縮後的資料夾更名為caffe

注意:以下操作都必須令caffe原始碼資料夾位在/home/nvidia

安裝相依

在終端機依序輸入下列指令
sudo apt install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler libgflags-dev libgoogle-glog-dev liblmdb-dev python3-pip libfreetype6-dev libpng-dev gfortran

sudo apt install –no-install-recommends libboost-all-dev

sudo apt install libatlas-base-dev

 

將系統Python版本改為3

在終端機中執行下列命令
sudo update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.6 2

複製一組Makefile.config檔案

在終端機中執行下列命令
cd caffe
cp Makefile.config.example Makefile.config

 

修改Makefile.config

用gedit編輯檔案,將下列設定字串的行首井字移除

開啟使用cuDNN

設定opencv版本為3

確認CUDA版本,要將前兩行命令遮蔽

確認Python版本,本範例使用python3.6,因此首先將原python2設定遮蔽

接著將Python3設定字串中的3.5改成3.6

增添include及library路徑,在原路徑字串尾加入新增路徑

編譯

在終端機中執行下列命令
cd caffe
make all

編譯後測試,編譯結果如出現錯誤則須根據錯誤結果將之排除

接著在終端機中執行下列命令
make test
make runtest 

安裝Python所需程式庫,以及編譯Pycaffe 
需要先將caffe/python/requirements.txt內的python-dateutil的那一行改為python-dateutil>=2.0
前往 caffe/python 資料夾,在終端機輸入下列指令安裝所需python程式庫
cd python
for req in $(cat requirements.txt); do sudo pip3 install $req; done
將python-dateutil升級
pip3 install --upgrade python-dateutil
上述指令沒有錯誤發生的話,接著執行編譯pycaffe
cd ..
make pycaffe

增添環境變數,以下指令需要以caffe原始碼資料夾位在/home/nvidia下

 

在終端機中執行下列命令 
export PYTHONPATH=/home/nvidia/caffe/python/:$PYTHONPATH

 

Python程式庫測試

進入Python環境
輸入以下指令按Enter,結果應該要無錯誤
import cv2
import caffe


在Python直譯環境下測試程式庫其結果無錯誤


到目前以上的步驟,可能遇到的問題解法如下
沒有pip則安裝pip3

 

在終端機中執行下列命令
sudo apt install python3-pip<

上列Python程式庫安裝可能會出現scikit-image錯誤,可單獨再安裝一次

在終端機中執行下列命令
pip3 install scikit-image

如果sckit-image發生安裝錯誤,錯誤訊息中可能會提到下列欠缺的程式套件

libfreetype6-dev

libpng12-dev(需要libpng-dev程式套件包)


在終端機中執行下列命令
sudo apt install libfreetype6-dev libpng-dev
再執行一次
pip3 install scikit-image

上述安裝過程有可能發生錯誤,這次說沒有fortran編譯器,於是安裝它

在終端機中執行下列命令
sudo apt install gfortran
再執行一次
pip3 install scikit-image

安裝模型資料

在caffe資料夾下執行
./data/ilsvrc12/get_ilsvrc_aux.sh
接著終端機下執行下列指令取得模型檔
cd /home/nvidia/Downloads
wget  http://dl.caffe.berkeleyvision.org/bvlc_reference_caffenet.caffemodel

下載測試程式

執行下列命令取得辨識程式原始碼
cd /home/nvidia/Downloads
wget 
https://gist.githubusercontent.com/pondahai/558e30bd70330a935a90967dca115644/raw/e975af64cb28030a10a3a7be03869de819d03c0f/my-mod-tegra-cam-caffe.py

 

安裝USB攝影機

執行測試程式

在終端機中執行下列命令,以下指令是同一行
python my-mod-tegra-cam-caffe.py \
--prototxt /home/nvidia/caffe/models/bvlc_reference_caffenet/deploy.prototxt \
--model /home/nvidia/Downloads/bvlc_reference_caffenet.caffemodel \
--labels /home/nvidia/caffe/data/ilsvrc12/synset_words.txt \
--mean /home/nvidia/caffe/data/ilsvrc12/imagenet_mean.binaryproto

執行結果如下影片所示,祝你好玩!

參考資料:
https://devtalk.nvidia.com/default/topic/1044473/caffe-installation-on-xavier/
https://github.com/astorfi/Caffe_Deep_Learning/tree/master/Installation

 

 

彭宇豪是資深的研發工程師。目前在馥林文化出版社工作,平常角色是《MAKE》國際中文版編輯部的電子領域顧問。歡迎前往他的Medium網站閱讀更多文章(或是給他的文章拍拍手)!