Jetson nano系统烧录及pytorch环境配置

前言

因为目前业务方向逐渐偏向硬件嵌入部署,所以最近搞了一个jetson nano和rk3399的板子来上手,之前没搞过硬件开发板,刚开始配置的时候遇到了很多坑,写篇博客记录一下过程。

Jetson Nano 是一款小型,功能强大的单板计算机,配备了1.4 GHz四核ARM A57 CPU,128核Nvidia Maxwell GPU和4 GB RAM。它具有四个USB A型端口,包括一个USB 3.0端口,用于视频输出的HDMI和DisplayPort端口以及一个千兆位以太网连接器。板载CSI摄像头插槽,也可以通过USB连接摄像头。

此外,微型USB端口用于将其连接到电源,但也可以使用桶形连接器,该桶形连接器可与可选的大功率电源配合使用,该大功率电源可提供4安培的电流来执行更繁重的任务,CPU的顶部配有散热器,但如果要执行需要大量散热的处理器密集型任务,则可以在水槽顶部安装一个可选风扇。

一、jetson nano配件

介绍一下nano的必备套件:

  1. 开发板;
  2. 电源线;
  3. SD卡(用于烧录系统);
  4. SD卡读卡器(插上电脑烧录系统);

选配套件:

  1. 散热风扇(开发板散热);
  2. HDMI线(用于连接显示屏调试);
  3. WIFI模块(连接wifi);
  4. 高清摄像头(用于视觉任务);
  5. 网线(联网);
  6. 显示屏(界面调试)。

可根据自己需求进行选配购买,如果怕麻烦也可以选择全套套餐,当然会贵一些。

二、烧录ubuntu系统

2.1 系统镜像下载

Jetson Nano刷系统的方式直接把镜像写入SD文件即可。首先去官网下载最新的镜像,我的板子是b01 4G版本,所以下载了这个,整个文件6G多,很考验网速,建议将下载链接复制到迅雷中下载:
Jetson nano系统烧录及pytorch环境配置_第1张图片

2.4 格式化SD卡

使用SD Card Formatter格式化SD卡
Jetson nano系统烧录及pytorch环境配置_第2张图片

2.3 使用官方推荐的Etcher写入系统

镜像选择刚才下载的好的镜像文件即可,盘符现在刚才格式化后的SD卡即可,然后点击Flash,等待差不多半个钟。Etcher官方链接:https://www.balena.io/etcher/
Jetson nano系统烧录及pytorch环境配置_第3张图片
烧录完成后取出SD卡,插到板子上,接通电源开机,,插上鼠标键盘,连接HDMI线和显示屏。进去后大概会看到以下界面,系统会给出相应配置引导,自行配置即可,包括用户名和语言、时区等等:
Jetson nano系统烧录及pytorch环境配置_第4张图片
最后登录系统,进到如下界面,系统烧录就大功告成了。

Jetson nano系统烧录及pytorch环境配置_第5张图片
这时候可以插入网线,或者带有wifi模块的可以连接无线网络,通过右上角设置-网络-有线连接(无线连接)查看本机IP地址,用于在其他电脑上ssh连接调试。
Jetson nano系统烧录及pytorch环境配置_第6张图片
在本地局域网的电脑上打开终端,使用SSH连接jetson nano,连接上之后就可以摆脱屏幕调试了:

ssh <name>@192.168.233.135

三、cuda组件检查

系统安装完成后需要检查安装的组件,因为网上说更新源会有很多问题,所以我这里就先不更新,直接使用默认的源安装更新,输入以下命令,linux小白可以看下这篇文章的介绍:

sudo apt-get update
sudo apt-get full-upgrade

过程比较漫长,慢慢等待即可,一般不会出什么问题。

jetson-nano的系统镜像中已经自带了cuda、cudnn、TensorRT等组件

  1. 检查CUDA组件

最新版的nano系统安装的是cuda10.2版本,如果直接运行nvcc -V的话是不会成功的,还需要把cuda的路径写入到环境变量里面。运行以下命令编辑环境变量:

sudo vim  ~/.bashrc

光标划到最底下,按i进入编辑模式,将下面命令添加上去:

export CUDA_HOME=/usr/local/cuda-10.2
export LD_LIBRARY_PATH=/usr/local/cuda-10.2/lib64:$LD_LIBRARY_PATH
export PATH=/usr/local/cuda-10.2/bin:$PATH

最后按Esc退出编辑,按 :qw 保存退出。如果是遇到权限问题无法保存的话,需要su 到root用户执行。最后再source一下这个文件:

source ~/.bashrc

这时候运行nvcc -V后就会显示版本信息了:
在这里插入图片描述
2. 检查cdDNN
通过官方提供的例子验证cuDNN:

cd /usr/src/cudnn_samples_v8/mnistCUDNN   #进入例子目录
sudo make     #编译一下例子
sudo chmod a+x mnistCUDNN # 为可执行文件添加执行权限
./mnistCUDNN # 执行

最后结果会输出例子的预测结果:
Jetson nano系统烧录及pytorch环境配置_第7张图片

四、pytorch环境安装

终于到了本文的重点,首先需要安装pip:

sudo apt-get install python3-pip python3-dev

安装后pip是9.01版本,需要把它升级到最新版,升级后pip版本为20.3.2

python3 -m pip install --upgrade pip  #升级pip

升级后运行pip -V成功后显示

root@cai-desktop:/# pip -V
pip 20.3.2 from /usr/local/lib/python3.6/dist-packages/pip (python 3.6)

安装pytorch环境:需要下载jetson nano对应的torch-aarch64包(之前我一直以为直接用linux下的whl离线包安装即可,下了大半天结果不支持),这里安装的是torch1.6版本,建议直接下载whl,然后再进行安装。

在命令行依次执行,这里的whl包使用了aarch64区别于linux版本的包:

sudo apt-get install python3-pip libopenblas-base libopenmpi-dev 
pip3 install Cython
pip3 install torch-1.6.0a0+b31f58d-cp36-cp36m-linux_aarch64.whl

安装完后,进行验证,在终端中输入:
Jetson nano系统烧录及pytorch环境配置_第8张图片
可以看到torch已经安装完成,但是还需要安装对应的torchvivision 0.7.0的包,这里的0.7.0是torch1.6对应的版本。

sudo apt-get install libjpeg-dev zlib1g-dev
git clone --branch v0.7.0 https://github.com/pytorch/vision torchvision   
#这行命令是将源代码下载到了用户目录下的torchvision,如果torchvision已经存在,需要删除,如果提示permission denied
#命令行使用sudo su 进入管理员模式,  执行 rm -r torchvision ,或者也可以自行查找更安全的删除方法

cd torchvision   

#进入用户目录下的torchvision,执行源代码编译工作,需要一定的时间,大概十多分钟

sudo python3 setup.py install
cd ../  # attempting to load torchvision from build dir will result in import error
pip3 install 'pillow<7' # always needed for Python 2.7, not needed torchvision v0.5.0+ with Python 3.6

但是编译的时候遇到一个很头疼的问题,在网上找了大半天终于找到解决的方法了,这里给个链接:
Jetson nano系统烧录及pytorch环境配置_第9张图片
解决方法:vi setup.py文件,修改如下:
if has ffmpeg 改为if False即可
Jetson nano系统烧录及pytorch环境配置_第10张图片

安装完成后,进行验证,在终端中输入python3,进入3.6.9的环境,依次验证:

>>> import torch
>>> print(torch.__version__)
# 输出 1.6.0
>>> print('CUDA available: ' + str(torch.cuda.is_available()))
>>> print('cuDNN version: ' + str(torch.backends.cudnn.version()))
>>> a = torch.cuda.FloatTensor(2).zero_()
>>> print('Tensor a = ' + str(a))
>>> b = torch.randn(2).cuda()
>>> print('Tensor b = ' + str(b))
>>> c = a + b
>>> print('Tensor c = ' + str(c))
>>>> import torchvision
>>> print(torchvision.__version__)
# 输出 0.7.0

安装常见的深度学习库

sudo apt-get install python3-scipy
sudo apt-get install python3-pandas
sudo apt-get install python3-sklearn
sudo apt-get install python3-matplotlib

opencv环境编译:

  1. 安装步骤参考这篇文章:Jetson nano编译安装OpenCV4.1.1和OpenCV_contirb-4.1.1
  2. 报错处理参考这篇:在jetson nano中配opencv环境(python通用)

特别记录一下编译opencv遇到最头疼的问题:
Jetson nano系统烧录及pytorch环境配置_第11张图片

困扰了一整天,后来在opencv的issues里找到了答案
Jetson nano系统烧录及pytorch环境配置_第12张图片
Jetson nano系统烧录及pytorch环境配置_第13张图片
意思就是把/build/samples/gpu/CMakeFiles/example_gpu_surf_keypoint_matcher.dir/link.txt修改一下,在CMakeFiles/example_gpu_surf_keypoint_matcher.dir/surf_keypoint_matcher.cpp.o后添加

../build/modules/xfeatures2d/CMakeFiles/opencv_xfeatures2d.dir/src/surf.cuda.cpp.o ../build/modules/xfeatures2d/CMakeFiles/cuda_compile_1.dir/src/cuda/cuda_compile_1_generated_surf.cu.o

这两行信息,…/为你自己的build路径前缀。修改后保存,再次编译,大功告成!!
Jetson nano系统烧录及pytorch环境配置_第14张图片

卸载旧版opencv,安装新版

# 卸载
cd opencv-4.1.1/build
sudo make uninstall
cd ..
sudo rm -r build

sudo rm -r /usr/local/include/opencv2 /usr/local/include/opencv

cd /usr
sudo find . -name "*opencv*" | xargs sudo rm -rf


# 安装
unzip 4.3.1.zip
cd opencv-4.3.1
mkdir build && cd build
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
make
sudo make install

先写到这里,后面补一些细节和文件百度云链接

———————————————————————————————————————
参考文章:

  1. Jetson Nano安装pytorch
  2. xavier NX上安装pytorch
  3. 安装pytorch

你可能感兴趣的:(笔记,深度学习,ubuntu)