首先明确的一点是,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,接下来的自己尽情发挥吧。