1. 程式人生 > >校園實戰Nvidia jetson tx1 用caffe實現camera_object_identification

校園實戰Nvidia jetson tx1 用caffe實現camera_object_identification

校園實戰Nvidia jetson tx1 實現tegra_multimedia_api/samples/11_camera_object_identification

  1. tx1配置
  2. opencv3.1.0的安裝
  3. caffe的安裝
  4. tegra_multimedia_api/samples/11_camera_object_identification的實現

先上個圖最後的結果圖,幀率下面是目標可能性以及目標的類別,感覺實在不準=。=

1.tx1配置

網上教程很多,這裡只強調一點,用Jetpack3.0刷tx1的時候,一定要在非校園網環境下,否則就會像我一樣耽誤了3天總會有安裝包破損,最後去同學家裡幾個小時就搞定了,也沒有換源。。還有就是儘量看老外的視訊教程,如果看國內的教程一定要弄明白執行的命令的具體作用,切忌看到一個命令就複製貼上。。裝好系統後用下面的命令安裝火狐瀏覽器
$ sudo apt-get install firefox
設定CPU and GPU clocks為最大:
$ sudo ./jetson_clocks.sh

2.opencv3.1.0的安裝

一開始我直接裝caffe的,是按照tegra_multimedia_api/samples/11_camera_object_identification的README檔案來做的,但是過程中報了有關opencv庫的錯,執行
pkg-config --modversion opencv
發現opencv的版本是2.4.13,查了一下好像有些相容問題,於是著手裝3.1.0版本,漫漫長征開始了。。也可以先直接進行第3步安裝caffe,跟我一樣裝不下去再回來進行這一步。此處參考https://docs.opencv.org/3.2.0/d6/d15/tutorial_building_tegra_cuda.html

1、把tx1 Home 目錄裡的samples、cuda-L4T、幾個安裝包都移到16 GB Volume等其他位置,給後面要裝的東西騰出空間
2、解除安裝opencv2.4.13
3、下載opencv3.1.0

$ git clone https://github.com/opencv/opencv.git
完成後會在home自動建立opencv資料夾
$ cd opencv
$ git checkout -b v3.1.0 3.1.0
$ git cherry-pick 10896
(如果詢問要不要執行,就輸入 git commit -m “My message” 意思是按我說的執行)
$ git cherry pick cdb9c
$ git cherry-pick 24dbb

輸入 cd 返回home目錄
$ git clone https://github.com/opencv/opencv_extra.git
完成後會在home自動建立opencv_extra資料夾
$ cd opencv_extra
$ git checkout -b v3.1.0 3.1.0

4、安裝依賴包
返回home目錄
$ sudo apt-add-repository universe
$ sudo apt-get update
(校園網下報錯可以用手機開熱點。。)
$ sudo apt-get install
libglew-dev
libtiff5-dev
zlib1g-dev
libjpeg-dev
libpng12-dev
libjasper-dev
libavcodec-dev
libavformat-dev
libavutil-dev
libpostproc-dev
libswscale-dev
libeigen3-dev
libtbb-dev
libgtk2.0-dev
pkg-config

$ sudo apt-get install python-dev python-numpy python-py python-pytest
安裝完以上依賴包,在home目錄下建一個build資料夾,在build裡面開始裝opencv
$ mkdir build
$ cd build
$ cmake
-DCMAKE_BUILD_TYPE=Release
-DCMAKE_INSTALL_PREFIX=/usr
-DBUILD_PNG=OFF
-DBUILD_TIFF=OFF
-DBUILD_TBB=OFF
-DBUILD_JPEG=OFF
-DBUILD_JASPER=OFF
-DBUILD_ZLIB=OFF
-DBUILD_EXAMPLES=ON
-DBUILD_opencv_java=OFF
-DBUILD_opencv_python2=ON
-DBUILD_opencv_python3=OFF
-DENABLE_PRECOMPILED_HEADERS=OFF
-DWITH_OPENCL=OFF
-DWITH_OPENMP=OFF
-DWITH_FFMPEG=ON
-DWITH_GSTREAMER=OFF
-DWITH_GSTREAMER_0_10=OFF
-DWITH_CUDA=ON
-DWITH_GTK=ON
-DWITH_VTK=OFF
-DWITH_TBB=ON
-DWITH_1394=OFF
-DWITH_OPENEXR=OFF
-DCUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda-8.0
-DCUDA_ARCH_BIN=5.3
-DCUDA_ARCH_PTX=""
-DINSTALL_C_EXAMPLES=ON
-DINSTALL_TESTS=OFF
-DOPENCV_TEST_DATA_PATH=…/opencv_extra/testdata
…/opencv

然後就可以make了
$ make -j4
然後測試一下
$ make test
(說實話我記得test的時候我報錯了,然後沒管繼續往下走還是裝好了。。)
$ make install
至此,opencv3.1.0就裝好了,注意build、opencv、opencv_extra都是相關資料夾。
pkg-config --modversion opencv
應該能看到opencv版本是3.1.0了

3.caffe的安裝

只想說最後是看老外的教程才搞定的https://www.jetsonhacks.com/2016/09/18/caffe-deep-learning-framework-64-bit-nvidia-jetson-tx1/

返回home目錄
$ git clone https://github.com/jetsonhacks/installCaffeTX1.git
cd installCaffeTX1
sudo ./installCaffe.sh
(花費了很長時間,如果幾個小時後在進行test的時候卡住不動,直接ctrl+c退出來不影響,可以用
$ tools/caffe time --model=models/bvlc_alexnet/deploy.prototxt --gpu=0
進行測試,比如博主自己。。)
發現前饋網路大概78ms就可以跑一次,還是蠻快
下面的工作就很簡單啦

4.tegra_multimedia_api/samples/11_camera_object_identification的實現

因為tegra_multimedia_api/samples/11_camera_object_identification的README檔案用的目錄是Home/Work/caffe/caffe-master,所以記得改目錄或者新建這樣的資料夾把東西都拷進去。博主比較懶,就直接改的目錄。
參考https://blog.csdn.net/yhaolpz/article/details/71375762
cd caffe
cp Makefile.config.example Makefile.config
用gedit修改Makefile.config檔案
sudo gedit Makefile.config
1、取消USE_CUDNN := 1的註釋;(去掉前面的”#”符號)
2、將
#OPENCV_VERSION := 3
修改為:
OPENCV_VERSION := 3
3、將
#WITH_PYTHON_LAYER := 1
修改為
WITH_PYTHON_LAYER := 1
4、
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
最後
$ make -j4

然後同樣用gedit開啟確定/tegra_multimedia_api/samples/11_camera_object_identification/opencv_consumer_lib裡的makefile的路徑
CUDA_DIR:=/usr/local/cuda
CAFFE_DIR:=$HOME/caffe

$ make

最後按照READMD的檔案指示
sudo pip install pyyaml
cd ~/caffe/caffe-master
./scripts/download_model_binary.py models/bvlc_reference_caffenet/
./data/ilsvrc12/get_ilsvrc_aux.sh

sudo vim ~/.bashrc
export TEGRA_ARMABI=aarch64-linux-gnu
export DISPLAY=:0
export LD_LIBRARY_PATH=$HOME/caffe/build/lib:/usr/local/cuda/lib64
source ~/.bashrc

cd ~/tegra_multimedia_api/samples/11_camera_object_identification
make -j4
cd ~/tegra_multimedia_api/samples/11_camera_object_identification

最後執行
./camera_caffe -width 1920 -height 1080
-lib opencv_consumer_lib/libopencv_consumer.so
-model $HOME/caffe/caffe-master/models/bvlc_reference_caffenet/deploy.prototxt
-trained $HOME/caffe/caffe-master/models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel
-mean $HOME/caffe/caffe-master/data/ilsvrc12/imagenet_mean.binaryproto
-label $HOME/caffe/caffe-master/data/ilsvrc12/synset_words.txt
就可以看到開篇的影象啦。
最後貼個標籤:北理工ASDG-UAV 趙小偉~