Jetson Nano零基础入门(附CSI摄像头目标检测实战部署)

Jetson Nano简介

Jetson Nano是NVIDIA推出的高性能边缘端部署小型计算设备,其中包含了一块128核Maxwell架构的GPU,虽然并不是最新架构,但是由于只是用于嵌入式开发,需要考虑经济成本。因此,Nano的算力并不高,主要用于 轻量级/实时 网络的推理,暂时无法完成模型训练等计算密集任务。

 

 操作步骤概览

1、根据官方教程使用VMware烧录emmc引导

2、利用读卡器向SD卡烧录操作系统(Ubuntu 18.04)

3、外接HDMI显示器开机(密码nvidia)并扩展内存

4、修改国内镜像源

5、安装python3-pip并更新软件安装包

6、根据jetpack到paddleinference官网下载对应的C++/Python预测库

7、安装相关的库(numpy、opencv、faiss等)

8、将训练好的模型导出为静态图

9、编写前后处理代码和推理逻辑,实现端侧部署

首先,需要进行emmc引导和TF卡烧录过程,这部分在官方提供的视频教程(套件自带视频资料)有详细讲解,按步操作即可,并无难度。

组装

本次使用的是Jetson Nano B01套件,完成上面操作系统烧录之后插入TF卡,并进行简单的组装,如下图所示:

然后,上电开机,接入HDMI显示器。为了让风扇运转可以使用,打开终端输入如下指令:

$ sudo sh -c 'echo 150 > /sys/devices/pwm-fan/target_pwm'

其中,'150' 可以是0~255任意整数,越大风扇转速越高。

测试摄像头

CSI摄像头连接方式如下图所示:

连接好后测试摄像头是否正常:

$ ls /dev/video*

运行结果为 /dev/video0说明安装成功!

然后运行以下摄像头测试代码:

## test_video.py
import cv2

cap = cv2.VideoCapture("nvarguscamerasrc \
    !video/x-raw(memory:NVMM), width=640, height=480, format=NV12, framerate=30/1\
    !nvvidconv flip-method=0 ! videoconvert ! video/x-raw, format=BGR ! appsink")

while True:
    sucess, img=cap.read()
    cv2.imshow("capture", img)
    k=cv2.waitKey(1)
    if k == 27:
        cv2.destroyAllWindows()
        break
    elif k==ord("s"):
        cv2.imwrite("video.jpg",img)
        cv2.destroyAllWindows()
        break
cap.release()

SSH连接

  • 为了开发方便,可以在上位机(Windows主机)使用SSH远程连接jetson nano,需要注意的是上位机和下位机需要在同一局域网内才可以连接。

  • 为了进行SSH远程连接,首先要在jetson nano上修改配置文件/etc/ssh/sshd_config允许SSH登录,具体来说,需要添加PermitRootLogin yes,可参考此博文

  • 配置密码:

passwd nvidia

然后输入密码即可(开机密码也会随之修改!!)

  • 配置完成后可使用Mobaxterm进行SSH连接,输入jetson nano的IP地址,端口号默认为22,用户名为nvidia,密码自己设置即可,连接成功后如下图所示:

配置软件环境

  • 更换国内源,用以下命令打开文件(建议先拷贝一份再修改)
sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup
sudo gedit /etc/apt/sources.list
  • 使用如下内容替换文件内容(对应Ubuntu 18.04)
deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse

  • 然后更新安装pip
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install python3-pip
pip3 install --upgrade pip

注意: 执行sudo apt-get update的时候有时会出现E: Unable to lock directory /var/lib/apt/lists,此时在命令行执行以下指令即可:

sudo fuser -vki /var/lib/apt/lists/lock

然后重新执行sudo apt-get update

执行sudo apt-get upgrade由于网络问题可能很慢,容易出错,一定耐心等待,否则,无法安装python3-pip或者其他软件。

这里有个小问题记录一下,我在我的jetsonanno上安装python3-dev会报错,按照很多教程都无法解决。但是不安装也暂时没啥问题 。

  • 更新pip源
sudo mkdir .pip
cd .pip
sudo touch pip.conf
sudo gedit pip.conf

然后输入以下内容,保存关闭

[global]
timeout = 6000
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
trusted-host = https://pypi.tuna.tsinghua.edu.cn

接下来安装深度学习框架,这里选择Paddle,因为使用Paddle很多软件环境已经配置好了比较方便一些。

  • 输入如下命令查看jetpack版本:

$ cat /etc/nv_tegra_release

得到jetpack版本为4.6.1,Python的预装版本为3.6.9,在PaddleInference官网下载nano,jetpack 4.6.1,python3.6对应的paddlepaddle,然后利用Mobaxterm上传到jetson nano即可。

$ pip3 install paddlepaddle_gpu-2.3.0-cp36-cp36m-linux_aarch64.whl

如果安装报错可能是网络不稳定,可以重试一下!

配置CUDA

首先打开配置文件

$ sudo gedit ~/.bashrc

在文件末尾添加以下路径:

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

运行

$ source ~/.bashrc

查看cuda版本:

$ nvcc -V

开发桌面端应用

安装PyQt5

  • 由于官方镜像中PyQt5使用的gtk不适配,需要输入以下命令
$ sudo apt-get build-dep qt5-default
$ sudo apt install libcanberra-gtk-module
$ sudo apt install qt5-style-plugins 
$ echo "export QT_QPA_PLATFORMTHEME=gtk2" >> ~/.profile
  • 下载之后链接到Python3中:
ln -s /usr/lib/python3/dist-packages/PyQt5/ ~/.virtualenvs/xxx/lib/python3.x/site-packages/

ln -s /usr/lib/python3/dist-packages/sip* ~/.virtualenvs/xxx/lib/python3.x/site-packages/
  • 进入python3终端输入,不报错就成功了:
>>> import PyQt5
>>>

应用开发

利用pyqt5搭建界面,实现功能包括测试摄像头、录制视频、推理图片/文件夹、推理视频、实时推理,逐个功能实现,最终界面如下图所示:

Illegal instruction(core dumped)问题解决

  • 这个是Python脚本运行时,导入依赖库可能出现异常退出进程,解决方式参考这篇博客

1.终端运行

sudo gedit ~/.bashrc

2.末尾添加如下内容,保存并关闭:

export OPENBLAS_CORETYPE=ARMV8

3.终端运行

source ~/.bashrc

总结

由于端侧性能有限,为了防止出现卡帧,采用每两帧推理一次,相邻两帧使用第一帧的推理结果,在视觉上不会有差异,但是fps可以提高一倍。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_易安_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值