Jetson Nano学习记录

Jetson Nano学习记录

一、入手开箱、烧系统

https://blog.csdn.net/symuamua/article/details/105543195

关于屏幕:

  • 我测试过,如果使用HDMI接口对接外接屏,那么这块外接屏需要支持HDMI,不能使用转接线(VGA 转 HDMI这种)

烧系统

·jetson系统可以采用官方系统,简单学习建议使用16GB高速SD卡,如果搞大的建议64GB,我刚开始也不是很懂采用了官方镜像

·系统镜像:
·刷机工具:
·后来发现最好在烧系统前格式化SD卡一下,即 SD Card formatter(官网推荐)
·不过我在GitHub上找到一些别人刷好的镜像可以直接使用
repo链接:
度盘链接:
刷完SD卡后需要注意的是: 这边会出现一个看似异常但是正常不过的情况,就是会产生很多个盘符(加密的那种),很容易会让人以为那里出错了,实际上是对的

二、组装,基本入门配置

1、安装网卡:

(1)注意事项:

·需要注意的是,除却拆除两边的螺丝之外,拆的同时还需要将两边卡扣稍稍掰出来(和安装笔记本内存一样,其上面这部是核心板,国内有FPGA厂家专门做jetson的载板,)图片:
·拆完底部是这样的,可以看到有个网卡的接口,中间提供了一个螺丝用于固定(可以使用m.2的SSD)

2、基本入门设置

(1)功率设置

    # 查询功率模式
    sudo nvpmodel -q
    # 切换至满功率状态
    sudo nvpmodel -m1
    #切换至5W状态
    sudo nvpmodel -m0

· 运行脚本,运行高频模式并自动打开风扇FAN(匹配当前功率的模式)
    sudo jetson_clocks
    sudo jetson_clocks --show

(2)交换空间设置:默认是6G(多出6G的空间)也可以自行设置:

链接:https://github.com/JetsonHacksNano/installSwapfile/blob/master/autoMount.sh

 # 运行命令
 ./installSwapfile.sh

运行权限不够:

chmod 777 installSwapfile.sh

三、安装并检查基本环境

·有关于Jetson Nano 中sources.list中的圆更换成国内源的问题

·我经过一圈调查,确实隔壁有很多换源的教程,就跟普通的Ubuntu换源一样的做法,但是我看到了有位大佬的教程,提到Nano的Ubuntu架构不同,于是说慎重换源
·我测试了一下,发现确实不同,假如换成清华园(或者中科大)和原生的源是不同的,在upgrade的时候就可以看出端倪,所以为保证之后不再出什么幺蛾子,我在短暂尝试后,换回原来的源。
sudo su		#给权限
# input pwd
apt-get update
apt-get full-upgrade

1、检查自带插件

(1)CUDA

Nano中自带了Cuda cudnn,省去了我们再去官网下载的时间,但是部分还需要再稍微配置下

   		sudo gedit  ~/.bashrc	#熟悉vim的,也可以gedit=>vim
   		# 添加
   		export CUDA_HOME=/usr/local/cuda-10.0
   		export LD_LIBRARY_PATH=/usr/local/cuda-10.0/lib64:$LD_LIBRARY_PATH
   		export PATH=/usr/local/cuda-10.0/bin:$PATH

保存退出,然后source ~/.bashrc一下,刷新配置

此时输入nvcc -V查看版本

(2)opencv

用命令检查版本pkg-config opencv --modversion

四、安装Pytorch对应的版本

难点:要理解对应的python3的管理,如果实在不会看命令行可以采用可视化界面:

Jetson nano的包又是特别一点的,于是去官网找教程

wget https://nvidia.box.com/shared/static/ncgzus5o23uck9i5oth2n8n06k340l6k.whl -O torch-1.4.0-cp36-cp36m-linux_aarch64.whl
sudo apt-get install python3-pip libopenblas-base
pip3 install Cython
pip3 install numpy torch-1.4.0-cp36-cp36m-linux_aarch64.whl

·和其他官网一样,几条指令就可以搞定了,但是事情并没有这么简单,当我开始下载1.4的时候发现,连接不上去.于是明白需要某些的方式来访问下载,于是我使用win下载下来(万能的迅雷),然后再传到Nano里面,当然在下载的同时先装23两步
·后续补上链接:
sudo apt-get install python3-pip libopenblas-base
pip3 install Cython
最后进入torch-1.4.0-cp36-cp36m-linux_aarch64.whl的目录安装torch1.4pip3 install numpy torch-1.4.0-cp36-cp36m-linux_aarch64.whl
python3

import torch
print(torch.__version__)
隔壁说这个问题是numpy的问题,跟新一下就可以了,于是我更新到1.18
pip3 show numpy
pip3 install --upgrade numpy
这里有个protobuf报错,看着是版本太低了不匹配,其实和这里关系不大(暂时),但是遇到了顺便就更新一下
pip3 install --upgrade protobuf

五、Pytorch-YOLOv3原生模型测试

·在torch1.4 版本下训练出的一个模型,正好用于测试Nano的环境安装是否正确

·首先准备好测试程序、模型、测试数据

·这些东东在本地是跑过的,是可以跑,就是速度堪忧,此次测试的目的主要是看环境能否跑,而来看看原生(不是tensorRT的情况下)的速度

·所谓原生,是基于:原生git地址这个仓库未TensorRT的模型

先贴下基本结构

参考链接:https://blog.csdn.net/symuamua/article/details/104343364

六、一些错误记录:

1、Segmentation fault (core dumped)——系统重新烧制,运行python3.6发生错误

后来我发现,并不是所有py文件都无法运行(一般的是可以的),这就说明,可能是那里包装错了,或者漏装,或者是个假包
既然着手排查,就从第一行开始,然后直接报错,这就不得不让我猜想,导包问题!?!,因为文件是验证过的,本地可用
后来我偶然间做了个测试:

链接:https://blog.csdn.net/symuamua/article/details/104420876

https://github.com/dusty-nv/jetson-inference/issues/587

(学会使用github里的issues,看不懂英文尽量使用翻译软件,)


# 下载torchvision
git clone -b v0.5.0 https://github.com/pytorch/vision torchvision
 
# 安装torchvision
cd torchvision
sudo python3 setup.py install

# 也可以直接pip3 install .....

2、调研错误 ‘tensorrt.tensorrt.ActivationType’ has no attribute ‘LEAKY_RELU’

https://blog.csdn.net/symuamua/article/details/104457170

我发现,想要给我的Jetson Nano 更新TensorRT版本,就必须直接更新整体的Jetpack,目前最新Jetpack4.3是包含tensorRT6.0

而改变Jetpack版本,根据官网说法,有两种方法

第一种是直接重烧4.3的系统:就是下载最新镜像,然后重新装一遍系统
第二种是用NVIDIA 的SDK Manager刷Jetpack版本:推荐这位博主刷机教程,虽然我没成功
第三种,我是没有尝试过的,思路是直接从github上源码编译,有可能可以,因为我在那篇文档里面瞟到tensorrt7.0似乎支持Jetson Nano这种aarch的系统架构
另外,附上Jetpack 4.3的镜像(如果选择自己下,迅雷可能会快一些):

链接:https://pan.baidu.com/s/1qiXhP-6xFLyRwBIIWa0zCg 
提取码:6brj 
复制这段内容后打开百度网盘手机App,操作更方便哦

七、pytorch YOLOv3 直转tensorRT 的测试

1、原来思路:

八、pytorch 直转tensorRT的模型序列化

九、安装deepstream 4.0 解决: libgstrtspserver-1.0.so.0: No such file or directory

主要是为了获取视频硬解码,先装上,后续研究

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NTI0tOBD-1642742487547)(C:\Users\Fate\Pictures\Camera Roll\20200310233139946.png)]

对应版本

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-F7pgPAbo-1642742487549)(C:\Users\Fate\Pictures\Camera Roll\20200310233643297.png)]

环境:

  • 机器:Jetson Nano
  • 系统:Jetpack 4.3的ubuntu 18.04(tensorRT6.0)

进入解压后的文件

cd deepstream_sdk_v4.0.2_jetson
sudo tar -xvpf binaries.tbz2 -C / #在opt安装
./install.sh

验证:

在解压的文件中有一个samples文件夹,里面有例子, 我们只要运行成功里面的例子那就代表我们这个deepstream十有八九是成了
我们就随便找一个运行,命令如下,找到samples/configs/deepstream-app下的任意一个配置文件运行
deepstream-app -c samples/configs/deepstream-app/source4_1080p_dec_infer-resnet_tracker_sgie_tiled_display_int8.txt

但是可能会出现这种错误 libgstrtspserver-1.0.so.0没有,也就是找不到,或者没装
deepstream-app: error while loading shared libraries: libgstrtspserver-1.0.so.0: cannot open shared object file: No such file or directory

这个是由于我们没有装依赖导致的,我找来一些依赖,可能有些本身自带了(Jetson自带的gstreamer来着),不过不是什么大事

sudo apt install \
    libssl1.0.0 \
    libgstreamer1.0-0 \
    gstreamer1.0-tools \
    gstreamer1.0-plugins-good \
    gstreamer1.0-plugins-bad \
    gstreamer1.0-plugins-ugly \
    gstreamer1.0-libav \
    libgstrtspserver-1.0-0 \
    libjansson4

这个可能需要在cache中看看,有时候需要删除一下cache

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8Vd1Qpht-1642742487549)(C:\Users\Fate\Pictures\Camera Roll\20200311000727473.png)]

rm ~/.cache/gstreamer-1.0/**catchname**

换到本机,同样的命令:会有如下所示,这条命令还会有图片,但不管什么命令最后只要有App run successful即可

ModuleNotFoundError: No module named ‘common’

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6BFWgIMP-1642742487550)(C:\Users\Fate\Pictures\Camera Roll\20200313224117531.png)]

则解决方案为修改sys路径,这里又有相对路径与绝对路径两种,对于VScode,还是绝对路径比较安心

https://blog.csdn.net/symuamua/article/details/104851554

关于torch2trt报错:AttributeError: ‘Tensor’ object has no attribute '_trt’的一种可能性

十、Pytorch的YOLOv3 spp 模型中关于tensorRT+ 矩形推理问题的解决过程

文章目录
背景说明
最终效果
实现过程
矩形推理在整体流程中的位置
图形数据输入处理
推理输出接收
总结
git地址

背景说明:

模型是YOLOv3 spp

框架是Pytorch
由于我的Nano上GPU计算资源不够,所以我们急需减少模型计算量,在剪枝与量化+转tensorRT后从500ms达到了85ms每张,但依然达不到要求,于是想到了矩形推理。

最终效果

在256x416的视频中实现50-55ms 处理一张图片的成绩,换算成FPS 在 20左右(YOLOv3 Spp)

https://blog.csdn.net/symuamua/article/details/105423655

十一、安装Dlib以及一个demo

Dlib介绍

参考;https://blog.csdn.net/tanmx219/article/details/85883934

Nano 安装过程

代码:https://gist.githubusercontent.com/ageitgey/84943a12dd0d9f54e90f824b94e4c2a9/raw/906b921481a0f18ddf1fcbb1e8a45d58fbde3b5e/doorbell_camera.py

参考:https://blog.csdn.net/symuamua/article/details/105937124

虽然说是极限优化,实际上还没到极限,还有一丁点的上升空间——数据加载部分,读取本地视频我还是采用的OpenCV,所以显得慢了点,如果加上确实应该可以到19FPS(没有显示的时候的成绩)

https://github.com/ch98road/YOLOV3_Tensorrt_Rectangular_Inference

杂记

om/ageitgey/84943a12dd0d9f54e90f824b94e4c2a9/raw/906b921481a0f18ddf1fcbb1e8a45d58fbde3b5e/doorbell_camera.py

参考:https://blog.csdn.net/symuamua/article/details/105937124

虽然说是极限优化,实际上还没到极限,还有一丁点的上升空间——数据加载部分,读取本地视频我还是采用的OpenCV,所以显得慢了点,如果加上确实应该可以到19FPS(没有显示的时候的成绩)

https://github.com/ch98road/YOLOV3_Tensorrt_Rectangular_Inference

杂记

https://github.com/eriklindernoren/PyTorch-YOLOv3

你可能感兴趣的:(学习,ubuntu,linux)