tx2板子安torch、opencv以及安装环境技巧

tx2板子系统为Arm64,与普通的x86系统安装环境时使用的安装包或者是源代码不同,有些软件一般用apy-get以及pip是安装不上的。本文讲述整个TX2板子刷机到安装torch、opencv、tensorflow_gpu、docker如何使用GPU以及板子的一些安装技巧。

tx2板子刷机

在介绍TX2板子刷机之前先了解下板子的规格

首先介绍下jetson Tx2板子

Jetson TX2 模块
它是一台模块化 AI 超级计算机,采用 NVIDIA Pascal™ 架构。更棒的是,它性能强大,但外形小巧,节能高效,非常适合机器人、无人机、智能摄像机和便携医疗设备等智能边缘设备。它支持 Jetson TX1 模块的所有功能,同时可以铸就更大型、更复杂的深度神经网络。

技术规格
tx2板子安torch、opencv以及安装环境技巧_第1张图片
资料来源:NVIDIA JESTSON

刷机的前期准备

刷机之前需要准备一台主机,最好是ubuntu14.04或者是16.04的。同时还需要一条数据线,普通手机数据线就行(不要苹果充电线以及tapc)用于宿主机和TX2网线直连,给出板子的大概示意图。

安装

刷机参考博文
1 进入自带系统
Jetson TX2 自带ubuntu 16.04 系统,首次开机时,进入的是以nvidia用户登录的Ubuntu命令行界面。如果要使用图形化界面,需要安装Nvidia Linux驱动,Nvidia 驱动安装通过输入密码,切换ROOT权限用户(username:nvidia, password:nvidia)。
输入密码后,按照屏幕上的所提示的信息,输入以下命令即可:

cd /home/nvidia/NVIDIA-INSTALLER
./installer.sh

  1. 下载刷机软件

在nvidia官网注册账户并下载对应版本的jectpack(我自己下载的是jetpack3.3)
待 JetPack-L4T-3.3-linux-x64.run 下载完成后,我们先在主目录下创建一个JetPack文件夹,并将其放入该文件夹。
进入该文件夹,更改该文件的权限并运行该文件:
chmod +x ./JetPack-L4T-3.3-linux-x64.run
./JetPack-L4T-3.3-linux-x64.run

下载各种包,包括Ubuntu系统、CUDA8.0、cuDNN6.0、TensorRT2.1、VisionWorks1.6、OpenCV2.4.13等基本常用的工具,如果不需要装,就选中该项,点右上角的Clear Actions。然后进行各种下载及安装操作。参照博文

  1. 刷机完成后配置环境
    刷机完成后就可以正常使用tx2板子,进入系统后需要连接wifi,现在刷机完成后板子上以已经安装好了opencv(3.3),以及cuda(9.0), cudnn。进入系统后安装需要的环境,为了使其下载安装快速一些,更改apt-get的源
    安装vim
    apt-get install vim

     sudo cp /etc/apt/sources.list   /etc/apt/sources.list.back #将现有的源备份
     sudo vim /etc/apt/sources.list #修改
    

将文档中的源替换成下面的内容

	deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-updates main restricted universe multiverse
	deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-updates main restricted universe multiverse
	deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-security main restricted universe multiverse
	deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-security main restricted universe multiverse
	deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-backports main restricted universe multiverse
	deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-backports main restricted universe multiverse
	deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial main universe restricted
	deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial main universe restricted

之后更新源apt-get update apt-get upgrade

tx2板子安装pytorch

pytorch在板子上不能直接用pip进行安装,需要源码安装
首先安装相关的依赖包:

sudo apt-get update
sudo apt-get install -y --no-install-recommends \
      build-essential cmake git \
      libgoogle-glog-dev \
      libgtest-dev \
      libiomp-dev \
      libleveldb-dev \
      liblmdb-dev \
      libopencv-dev \
      libopenmpi-dev \
      libsnappy-dev \
      libprotobuf-dev \
      openmpi-bin \
      openmpi-doc \
      protobuf-compiler \
      python3-dev \
      python3-pip                          
sudo pip3 install future numpy  protobuf typing  hypothesis setuptools
sudo apt-get install -y --no-install-recommends \
  libgflags-dev \
  cmake

在编译之前,我们先开启TX2的最大功率模式,这样可以使我们的编译速度稍微快一些:

sudo nvpmodel -m 0         # 切换工作模式到最大
sudo  ~/jetson_clocks.sh   # 强制开启风扇最大转速 

编译pytorch源码
git clone https://github.com/pytorch/pytorch.git && cd pytorch
# 切换Pytorch版本到1.0.0
git checkout -b v1.0.0 v1.0.0
git submodule update --init --recursive
# 设置最大jobs为1,因为树莓派运行内存有限,如果这个值较大,编译的时候会卡死
export MAX_JOBS=1
# 编译
python3 setup.py build
#生成whl文件
python3 setup.py bdist_wheel
在dist目录下会生成一个whl 文件,用pip3 按照即可

sudo pip3 install torch-1.0.0a0+db5d313-cp35-cp35m-linux_aarch64.whl
sudo pip3 install torchvision

python2安装torch的方式类似编译的时候使用python2 setup.py build python2 setup.py bdist_wheel,安装的时候使用pip2

板子安装tensorflow-gpu

pip install --extra-index-url https://developer.download.nvidia.com/compute/redist/jp33 tensorflow-gpu

板子安装opencv

刷机的时候板子上已经自带有opencv但是安装的opencv版本较低,可以自己重新编译安装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


python2以及Python3的numpy和matplotlib安装

sudo apt-get install python3-dev python3-pip python3-tk
sudo pip3 install numpy
sudo pip3 install matplotlib

安装好依赖后下载opencv3.4.0源代码并进行编译

mkdir -p ~/src
cd ~/src
wget https://github.com/opencv/opencv/archive/3.4.0.zip \
       -O opencv-3.4.0.zip
unzip opencv-3.4.0.zip
### Build opencv (CUDA_ARCH_BIN="6.2" for TX2, or "5.3" for TX1)
cd ~/src/opencv-3.4.0
mkdir build
cd build
# 编译
cmake \
    -D CMAKE_BUILD_TYPE=Release \
    -D CMAKE_INSTALL_PREFIX=/usr \
    -D BUILD_PNG=OFF \
    -D BUILD_TIFF=OFF \
    -D BUILD_TBB=OFF \
    -D BUILD_JPEG=OFF \
    -D BUILD_JASPER=OFF \
    -D BUILD_ZLIB=OFF \
    -D BUILD_EXAMPLES=ON \
    -D BUILD_opencv_java=OFF \
    -D BUILD_opencv_python2=ON \
    -D BUILD_opencv_python3=ON \
    -D ENABLE_PRECOMPILED_HEADERS=OFF \
    -D WITH_OPENCL=OFF \
    -D WITH_OPENMP=OFF \
    -D WITH_FFMPEG=ON \
    -D WITH_GSTREAMER=ON \
    -D WITH_GSTREAMER_0_10=OFF \
    -D WITH_CUDA=ON \
    -D WITH_GTK=ON \
    -D WITH_VTK=OFF \
    -D WITH_TBB=ON \
    -D WITH_1394=OFF \
    -D WITH_OPENEXR=OFF \
    -D CUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda-9.0 \
    -D CUDA_ARCH_BIN=6.2 \
    -D CUDA_ARCH_PTX="" \
    ../
# 安装
sudo make -j8 #-j8是增加8个线程
sudo make install

查看安装的opencv情况

pkg-config opencv --libs #查看linux下的opencv安装库
pkg-config opencv --modversion #查看linux下的opencv安装版本:
sudo find / -iname "*opencv*" #查看linux下的opencv安装路径:

如何安装的opencv在python中调用不了
方法一:
将安装目录opencv-3.4.0下的的build/lib/cv2.so 可能是其他命名的执行文件复制到Python2或者python3的安装包目录下

/usr/local/lib/python3/dist-packages
/usr/local/lib/python2/site-packages

方法二:
直接将安装目录opencv-3.4.0下的的build/lib/cv2.so 可能是其他命名的执行文件复制需要调用cv2的执行代码下即可调用此版本的opencv

tx2板子在docker内使用GPU

一般刷机的时候板子上会安装docker,直接使用即可,但是nvdi-docker是不支持在TX2板子上安装的。
可以使用Tegra-Docker,功能类似于nvidia-docker
github上将代码下载下来(https://github.com/Technica-Corporation/Tegra-Docker)
下载好代码后不需要进行安装,直接进入到/Tegra-Docker/bin目录下看到tx2-docker文件
运行方式为:
bash tx2-docker run -it --------------------------------------

tx2板子上源码安装dlib

根据自己需要的版本下载源码安装
下安装的方式两种
第一种:pip download dlib
解压后直接使用命令:

python3 setup.py install --yes USE_AVX_INSTRUCTIONS --yes DLIB_USE_CUDA

第二种:

git clone https://github.com/davisking/dlib.git
cd dlib
mkdir build
cd build
cmake … -DDLIB_USE_CUDA=1 -DUSE_AVX_INSTRUCTIONS=1
cmake --build .
cd ..
python3.6 setup.py install --yes USE_AVX_INSTRUCTIONS --yes DLIB_USE_CUDA

# python3 setup.py install(自己开发板jetson tx2,系统ubuntu18.0.4,用不了–yes)

板子中的一些安装技巧

  1. 离线安装
    首先download下来之后进行安装
    两种方式download
    pip download ---------- #会将所有的依赖包也download下来
    apt-get download----------------- #只会下载对应的安装包不会将所有的依赖一并下载

一般download下来的软件是whl结尾 或者deb结尾的文件直接pip install *.whl
或者是 dpkg -i *.deb

其他的一些zip文件解压后安装源码的方式安装即可

  1. 版本号不兼容的情况
    首先可以通过pip search ---------- 查看系统能看到的版本号,或者直接去github上搜索对应的软件包查看版本。
    当软件版本与系统不兼容的情况下可以采取降低版本安装

你可能感兴趣的:(功能实现)