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 

//#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 被触发!

在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,接下来的自己尽情发挥吧。

你可能感兴趣的:(Linux,视觉算法)