Jetson tx2 配置Yolov3與deep-sort環境的具體步驟

首先明確的一點是,tx2是arm內核並自帶cuda9.0,至於cudnn的版本也需要得知,用cat /usr/include/cudnn.h | grep CUDNN_MAJOR -A 2 進行查看,tx2自帶的cudnn版本爲7。

一、安裝opencv(python)

在python3中需要用到opencv 3.4.0 在 python3.5中的安裝,檢查是否成功的方法是用python3.5輸入import cv2,不報錯則成功,或者直接在 /usr/local/lib/python3.5/dist-packages中可以找到cv2.so。

安裝方法爲:

1.刪除原有opencv庫並安裝其它所依賴的庫

sudo apt-get purge libopencv*

sudo apt-get purge python-numpy

sudo apt autoremove

sudo apt-get update

sudo apt-get dist-upgrade

sudo apt-get install --only-upgrade g++-5 cpp-5 gcc-5

sudo apt-get install build-essential make cmake cmake-curses-gui g++ libavformat-dev libavutil-dev libswscale-dev libv4l-dev libeigen3-dev libglew-dev libgtk2.0-dev

sudo apt-get install libdc1394-22-dev libxine2-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev

sudo apt-get install libjpeg8-dev libjpeg-turbo8-dev libtiff5-dev libjasper-dev libpng12-dev libavcodec-dev

sudo apt-get install libxvidcore-dev libx264-dev libgtk-3-dev libatlas-base-dev gfortran

sudo apt-get install libopenblas-dev liblapack-dev liblapacke-dev

sudo apt-get install qt5-default

sudo apt-get install python3-dev python3-pip python3-tk

sudo pip3 install numpy

sudo pip3 install matplotlib

 如果matplotlib版本過高,則下載低版本。 

sudo vim /usr/local/cuda/include/cuda_gl_interop.h

cd /usr/lib/aarch64-linux-gnu/

sudo ln -sf tegra/libGL.so libGL.so

將該頭文件中的62-68行改爲:

/#if defined(__arm__) || defined(__aarch64__)

//#ifndef GL_VERSION

//#error Please include the appropriate gl headers before

including cuda_gl_interop.h

//#endif

//#else #include <GL/gl.h>

//#endif

2.下載opencv3.4.0源碼

用git clone 或者 wget的方式經常會有early EOF的錯誤,推薦直接下zip或者tar。

https://github.com/opencv/opencv/releases/tag/3.4.0

3.編譯opencv

在cmake時加如下編譯選項,否則無法得到opencv-python庫。

cmake -D CMAKE_BUILD_TYPE=RELEASE \

CMAKE_INSTALL_PREFIX=/usr/local \

-D WITH_CUDA=ON \

-D CUDA_ARCH_BIN="6.2" \

-D CUDA_ARCH_PTX="" \

-D WITH_CUBLAS=ON \

-D ENABLE_FAST_MATH=ON \

-D CUDA_FAST_MATH=ON \

-D ENABLE_NEON=ON \

-D WITH_LIBV4L=ON \

-D BUILD_TESTS=OFF \

-D BUILD_PERF_TESTS=OFF \

-D WITH_QT=ON \

-D WITH_OPENGL=ON \

-D PYTHON_DEFAULT_EXECUTABLE=/usr/bin/python3 \

-D BUILD_opencv_python3=ON \

-D BUILD_opencv_python2=OFF \

-D INSTALL_C_EXAMPLES=ON \

-D INSTALL_PYTHON_EXAMPLES=ON \

-D BUILD_EXAMPLES=OFF \

-D PYTHON3_EXCUTABLE=/usr/bin/python3\

-D PYTHON3_INCLUDE_DIR=/usr/include/python3.5m \

-D PYTHON3_LIBRARY=/usr/lib/aarch_64-linux-gnu/libpython3.5m.so \

-D PYTHON_NUMPY_PATH=/usr/local/lib/python3.5/dist-packages ..

也就是說,在cmake輸出的打印中的python選項,一定要看到:

-- Python 3: 
-- Interpreter: /usr/bin/python3 (ver 3.5.2) 
-- Libraries: /usr/lib/aarch64-linux-gnu/libpython3.5m.so (ver 3.5.2) 
-- numpy: /usr/local/lib/python3.5/dist-packages/numpy/core/include (ver 1.14.0) 
-- packages path: lib/python3.5/dist-packages -- 
-- Python (for build): /usr/bin/python2.7

這樣纔會按照我們希望的路徑安裝。

如果想要使用opencv所自帶的一些算法,如tracking等,需要下載opencv_contrib包,必須要下載源碼,用pip安裝不了!下載完畢後在cmake選項後加入-D OPEN_EXTRA_MODULE=...(opencv_contrib)/modules,這樣便一併進行了編譯。

在 with_qt的編譯時,出現了“please include the appropriate gl headers before including cuda_gl_interop.h"的問題時,需要將/usr/local/cuda-9.0/targets/aarch64-linux/include/cuda_gl_interop.h 中第65行開始的#endif註釋掉,使#include <GL/gl.h>被觸發!

在make install完成後,需要將以下的庫文件鏈接到/usr/local/lib/python3.5/dist-packages中,這個命令在此文件路徑下觸發。

sudo ln -s /home/ubuntu/opencv-3.4.0/build/lib/python3/cv2.cpython-35m-aarch64-linux-gnu.so cv2.so

這樣便可以通過opencv-python是否安裝成功的測試。

Ps:某些tx2在安裝完成後打開videocapture可能會出現問題,此時用cv2.CAP_GSTREAMER代替!!

二、安裝keras與tensorflow

yolo有多種形式可供使用,如果單純使用darknet進行識別則只需要下載其c語言的源碼並編譯運行,在這裏需要使用keras搭建yolov3網絡框架,因此不必下載yolo源碼。

1.tensorflow

根據github博主的readme,yolo需要tensorflow1.4.0,但是實測1.5~1.6也可以使用,先下載其他依賴:

sudo apt-get install zip unzip autoconf automake libtool curl zlib1g-dev maven -y

sudo apt-get install python-numpy swig python-dev python-pip python-wheel -y

安裝java:

注意如果使用apt-get安裝會遭遇Package oracle-java8-installer is not available此類錯誤,因此需要在Oracle官網下載jdk1.8安裝包並解壓。

cd /usr/lib

sudo mkdir jdk

sudo mv jdk1.8.0_241 /usr/lib/jdk/jdk1.8

export JAVA_HOME=/usr/lib/jdk/jdk1.8

export JRE_HOME=${JAVA_HOME}/jre

export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib

export PATH=.:${JAVA_HOME}/bin:$PATH

source ~/.bashrc

最後用java -version查看安裝是否成功。

安裝bazel:

https://github.com/bazelbuild/bazel/tags?after=0.15.0在官方網站直接下載0.9.0版本,並執行compile.sh即可。

https://github.com/peterlee0127/tensorflow-nvJetson/releases

我們在上述地址下載已編譯好的tensorflow的wheel,注意選擇python3.5的版本,接下來直接用pip3安裝該輪子即可。

測試tensorflow是否成功安裝的方法是在python3中import tensorflow as tf;print(tf.__version__),有輸出則成功。

2.keras

sudo apt-get install python3-scipy

sudo apt-get install libblas-dev liblapack-dev

sudo pt-get install gfortran

pip3 install keras==2.2.5

至此環境部署完畢,以上的工作我將寫成腳本形式便於一鍵安裝。

最終使用版本爲tensorflow1.6.0-rc1,keras2.2.5。

三、下載yolov3-deepsort源碼

1.首先感謝博主Qidian213的勞動成果,在https://github.com/Qidian213/deep_sort_yolov3.git上下載代碼,並在yolo官網上下載權重文件,由於tx2上無法實時運行yolov3網絡,因此只需要下載yolov3-tiny.weights文件。

2.將權重文件加載到keras中:python convert.py yolov3.cfg yolov3-tiny.weights model_data/yolo.h5

3.運行demo.py,接下來的自己盡情發揮吧。

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