Jetson TX2刷机及模型调用

一、刷机

刚买回来的TX2装的是纯净的Ubantu 16.04的系统,需要刷机,用到ubuntu系统的主机,HDMI显示屏等
Jetson TX2 自带ubuntu 16.04 系统,首次开机时,进入的是以nvidia用户登录的Ubuntu命令行界面。如果要使用图形化界面,需要安装Nvidia Linux驱动,Nvidia 驱动安装通过sudo su 输入密码:nvidia,切换root权限用户。

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

1、下载SDKmanager https://developer.nvidia.com/nvidia-sdk-manager, 安装在一台有Ubuntu的X86架构的电脑(或用VMware)。

直接运行命令:

$ sudo apt install ./sdkmanager-[version].[build#].deb

打开后用英伟达开发账户登录。按照步骤点击,我当时用的是JetPack 4.2.3工具。没有选host主机安装(尝试了几次勾选了host主机的,但是到安装host的oencv时候都是Install Error,导致刷机失败,于是干脆只搞TARGET COMPONENTS,千恩万谢成功烧写进去了)。由于没有换源下载过程中很艰难,总是断,需要不断的重新下载或开始。下载安装完毕后,会提示你让用USB连接电脑, 选择手动安装,并点击flash,然后恢复TX2到Recovery模式

恢复模式操作如下:①按下并松开TX2的POWER键S4;
②按下并保持FORCE RECOVERY键S3;
③在此期间按下并松开RESET键S1;
④等待2秒后松开FORCE RECOVERY键S3。
(如果没成功,第④步松开的时间稍微长点,重新来)

在Flash期间可以看到连接板子的显示屏突然亮了( 主机和JetSon TX2 都连接到同一台能够上网的路由器上), 可以给TX2 设置账号和密码作为这个系统的账号和密码。设置时间地区等基础设置。成功之后,在原来的host主机这头输入刚刚给TX2设置的账号和密码,两者连接。在慢慢等待,最后完成。

二、 pycharm安装

(https://blog.csdn.net/zt1091574181/article/details/88899668)
1、下载pycharm社区版
https://www.jetbrains.com/pycharm/download/#section=linux
2、解压
buntu可以直接使用右键解压
cd到bin文件夹,运行./pycharm.sh
3、出现问题是缺少JDK环境。
Solution:这个问题需要安装JDK环境

$ apt-cache search openjdk
$ sudo apt-get install openjdk-8-jdk

等待安装结束:

$ java -version // 查看安装结果

4、配置环境:

$ which javac //查找javac可执行文件
$ file /usr/bin/javac // 查看链接目标
$ file /etc/alternatives/javac // 查看链接目标
$ file /usr/lib/jvm/java-8-openjdk-arm64/bin/javac

$ sudo gedit ~/.bashrc,将下面的代码粘贴到最后
$ export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-arm64
$ export JRE_HOME=${JAVA_HOME}/jre
$ export CLASSPATH=:${JAVA_HOME}/lib:${JRE_HOME}/lib
$ export PATH=${JAVA_HOME}/bin:$PATH
$ source ~/.bashrc,刷新环境就可以了
 安装JDK之后,就可以顺利的安装Pycharm了

三、安装必要的包

1、安装pip3

$ sudo apt-get update
$ sudo apt-get install python3-pip

2、安装numpy

$ sudo pip3 install numpy

3、安装Tensorflow(https://docs.nvidia.com/deeplearning/frameworks/install-tf-jetson-platform/index.html 官网给出的教程)
①由于我想安装指定版本的tensorflow(1.14.0),所以使用命令:

$ sudo pip3 install --extra-index-url https://developer.download.nvidia.com/compute/redist/jp/v$JP_VERSION tensorflow-gpu==$TF_VERSION+nv$NV_VERSION

其中:JP_VERSION:例如 42 for JetPack 4.2.2 or 33 for JetPack 3.3.1.
TF_VERSION:TensorFlow的版本如1.13.1
NV_VERSION: TensorFlow的 NVIDIA container版本,如19.01
sudo pip3 install --extra-index-url https://developer.download.nvidia.com/compute/redist/jp/v42 tensorflow-gpu==1.14.0+nv19.7或者https://developer.download.nvidia.com/compute/redist/jp/v42/tensorflow-gpu/tensorflow_gpu-1.14.0+nv19.7-cp36-cp36m-linux_aarch64.whl)
Jetson TX2刷机及模型调用_第1张图片
②打开https://developer.nvidia.com/embedded/downloads#?search=tensorflow 直接下载如下图所示的whl文件
Jetson TX2刷机及模型调用_第2张图片
然后用命令:

$ pip3 install tensorflow_gpu-1.14.0+nv19.7-cp36-cp36m-linux_aarch64.whl --user

③安装依赖:(https://blog.csdn.net/weixin_43842032/article/details/88753724)

$ sudo apt-get install libhdf5-serial-dev hdf5-tools(如果使用国内源会报错)
$ sudo apt-get install zlib1g-dev zip libjpeg8-dev libhdf5-dev
#关于h5py库安装失败,报以下错误h5py fatal error: #hdf5.h: No such file
#h5py fatal error: hdf5.h: No such file(https://www.jianshu.com/p/0475220781e3)
执行:
$ sudo apt install libhdf5-dev

四、更换opencv3.4.0

(https://www.cnblogs.com/gezhuangzhuang/p/11621777.html
https://blog.csdn.net/long19960208/article/details/88180035)
1、板子上直接烧写进的opencv版本是3.3.1的,需要首先清理旧的opencv包

$ sudo apt-get purge libopencv*

2、删除其他未使用的apt包

$ sudo apt autoremove

3、将所有已安装的apt软件包升级到最新版本(可选做)

$ sudo apt-get update
$ sudo apt-get dist-upgrade

4、将gcc apt包更新到最新版本(强烈推荐)

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

5、基于jetson安装opencv依赖项

$ 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

6、为gstreamer安装依赖项

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

7、安装其他依赖项

$ sudo apt-get install libjpeg8-dev libjpeg-turbo8-dev libtiff5-dev \
                      libpng-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

8、安装QT5的依赖项等

$ sudo apt-get install qt5-default

9、安装python3依赖项:

$ sudo apt-get install python3-dev python3-tk
$ sudo pip3 install matplotlib
$ sudo pip3 install scipy

10、在下载和编译opencv-3.4.0之前,需要先进行一些修改

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

cuda_gl_interop.h的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

(https://www.cnblogs.com/gezhuangzhuang/p/11621777.html 这篇博客上说 修改 /usr/local/cuda/include/cuda_gl_interop.h 并修复libGL.so的符号链接,没有这样做,修改之后反倒提示我libGL.so有问题)
11、接下来,下载opencv-3.4.0源代码,cmake并编译

$ 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/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 BUILD_EXAMPLES=OFF \
-D WITH_QT=ON -D WITH_OPENGL=ON ..
$ make -j4
$ sudo make install

③opencv编译遇到错误:

./bin: error while loading shared libraries: libopencv_highgui.so.3.2:
cannot open

solution:https://blog.csdn.net/cv_you/article/details/77341631opencv的库路径没有设置好
用gedit打开/etc/ld.so.conf
如:sudo gedit /etc/ld.so.conf,在文件中加上一行 /usr/loacal/lib,/user/loacal是opencv安装路径 就是makefile中指定的安装路径

再运行sudo ldconfig,
修改bash.bashrc文件,sudo gedit /etc/bash.bashrc
在文件末尾加入:

PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig 
export PKG_CONFIG_PATH

然后source /etc/bash.bashrc
可以正常运行了

五、安装pytorch

https://devtalk.nvidia.com/default/topic/1049071/jetson-nano/pytorch-for-jetson-nano/

$ wget https://nvidia.box.com/shared/static/phqe92v26cbhqjohwtvxorrwnmrnfx1o.whl -O torch-1.3.0-cp36-cp36m-linux_aarch64.whl
$ sudo pip3 install torch-1.3.0-cp36-cp36m-linux_aarch64.whl

安装torchvison

$ sudo apt-get install libjpeg-dev zlib1g-dev
$ git clone --branch v0.3.0 https://github.com/pytorch/vision torchvision # see below for version of torchvision to download
$ cd torchvision
$ sudo python setup.py install
$ cd ../ # attempting to load torchvision from build dir will result in import error

六、更换TX2源

https://blog.csdn.net/c2a2o2/article/details/85477040
在终端输入: sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak #为防止误操作后无法恢复,先备份原文件sources.list
sudo vim /etc/apt/sources.list #打开sources.list,将原来的内容使用”#”符号全部注释掉,然后在文件结尾出添加中国科学技术大学或清华的源
将文件改为国内源(注意修改之前先将原文件备份),还有一点要注意,换源需要换ARM的源,不要换成了pc平台的软件源。

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

sudo apt-get update就可以了。博客上说会打印出错误,幸运的是我的没有出现。

七、在TX2上运行yolov3的demo

(https://blog.csdn.net/housz77/article/details/103160639)
1、

$ git clone https://github.com/AlexeyAB/darknet.git
$ cd darknet-master

2、修改Makefile

$ gedit Makefile
GPU=1 #是否需要用GPU

CUDNN=1 #是否需要用CUDNN,这是NVIDIA做的一些优化,就是一些库文件,优化一些常用的矩阵操作

OPENCV=1 #是否需要用OPENCV,如果不使能程序执行完毕后不会自动弹出照片,且不能使用网络摄像头

OPENMP=1 #CPU的多线程

ARCH = -gencode arch=compute_53,code=[sm_53,compute_53]\
       -gencode arch=compute_62,code=[sm_62,compute_62]
       
# ARCH= -gencode arch=compute_30,code=sm_30\
#        -gencode arch=compute_35,code=sm_35\
#        -gencode arch=compute_50,code=[sm_50,compute_50]\
#        -gencode arch=compute_52,code=[sm_52,compute_52]
...

3、

$ make -j4

4、

$ wget https://pjreddie.com/media/files/yolov3.weights
$ wget https://pjreddie.com/media/files/yolov3-tiny.weights

5、使用yolov3测试:

$ ./darknet detect cfg/yolov3.cfg yolov3.weights data/dog.jpg


6、测试摄像头:

$ ./darknet detector demo cfg/coco.data cfg/yolov3.cfg yolov3.weights -c 1

$ ./darknet detector demo cfg/coco.data cfg/yolov3-tiny.cfg yolov3-tiny.weights -c 1

八、Tensorrt加速

(https://github.com/dusty-nv/jetson-inference/blob/master/docs/building-repo-2.md)
1、安装编译

$ sudo apt-get update
$ git clone --recursive https://github.com/dusty-nv/jetson-inference
$ cd jetson-inference
$ mkdir build
$ cd build
$ cmake ../
$ make
$ sudo make install

$ sudo ldconfig

在这个流程期间会有下载预训练模型和pytorch的步骤,我觉得浪费时间和板子空间,可以选择后面需要的时候再单独安装。(后面运行Model Downloader tool (download-models.sh) ,但是这个下载真的是巨慢,单独复制网址出来也打不开,可以用镜像https://github.com/dusty-nv/jetson-inference/releases)

2、运行object detection demo
①C++

$ ./detectnet-console --network=ssd-mobilenet-v2 images/cat_1.jpg output_cat_1.jpg

Jetson TX2刷机及模型调用_第3张图片

$ ./detectnet-camera --network=ssd-mobilenet-v2 --camera=/dev/video1 --width=640 --height=480

Jetson TX2刷机及模型调用_第4张图片
Jetson TX2刷机及模型调用_第5张图片
②python

$ ./detectnet-console.py --network=ssd-mobilenet-v2 images/cat_0.jpg output_cat_0.jpg

$./detectnet-camera.py --network=ssd-mobilenet-v2 --camera=/dev/video1 --width=640 --height=480

Jetson TX2刷机及模型调用_第6张图片
Jetson TX2刷机及模型调用_第7张图片

你可能感兴趣的:(深度学习)