Jetson Nano部署实现(一)——Yolov5目标检测-Jetson Nano部署

目录

1.烧录系统镜像

1.1 下载系统镜像

1.2 格式化 SD 卡

1.3 使用 Etcher 写入镜像

1.4 使用SD卡开机

2.远程登录工具

2.1 安装和使用远程登录工具PuTTY

(1)下载和安装PuTTY

(2) 确定自己开发板的 IP 地址

(3)使用PuTTY远程登录Nano开发板

2.2 安装和使用远程文件传输软件WinSCP

2.3 VNC 远程桌面控制(可用可不用 我这里没有用到)

(1) 安装 vino

(2) Enable VNC 服务

(3) 设置 VNC

(4) 重启机器,验证是否设置 vnc 成功。

(5) 设置开机自启动 VNC Server

(6) 连接 VNC Server

3.安装和测试DeepStream

3.1 Install Dependencies

3.2 Install the DeepStream SDK

3.3 DeepStream测试(未进行测试)

4.下载调试yolov5项目(computer!)

5.生成wts文件(computer!)

5.1 克隆tensorrtx

5.2 生成yolov5s.wts文件

6 生成yolov5s.engine文件(Nano!)

(每次修改参数后都需要重新生成engine)

6.1 克隆tensorrtx

6.2  编译tensorrtx/yolov5

6.3 copy文件'yolov5s.wts' 文件到tensorrtx/yolov5/build目录下

6.4 生成yolov5s.engine

7 使用DeepStream部署yolov5s

7.1 拷贝yolov5 deepstream文件

7.2 拷贝yolov5.engine

7.3 编译

8 部署测试

8.1 测试视频文件推理

8.2 USB摄像头视频测试

8.3 CSI摄像头视频测试


1.烧录系统镜像

1.1 下载系统镜像

英伟达官方下载地址 :https://developer.nvidia.com/embedded/downloads

下载系统镜像JetPack 4.5.1(注意有4GB和2GB两个版本,根据Jetson Nano的型号选择相应的版本),这里我是4G的镜像。 

1.2 格式化 SD 卡

下载SD Card Formatter软件并安装,使用 SD Card Formatter 格式化 SD 卡。

下载地址:https://www.sdcard.org/downloads/formatter/sd-memory-card-formatter-for-windows-download/

1.3 使用 Etcher 写入镜像

下载Etcher软件并安装 ,下载地址:https://www.balena.io/etcher/

使用Etcher软件写入镜像,大概30分钟,镜像写入完成。单击Flash from file选中镜像压缩包。

1.4 使用SD卡开机

烧写完成后,将 SD 卡插入 Jetson Nano, 开机,完成一些设置,如时区、语言、输入法等。

2.远程登录工具

2.1 安装和使用远程登录工具PuTTY

(1)下载和安装PuTTY

下载地址:https://www.chiark.greenend.org.uk/~sgtatham/putty/

单击Next

选择自己的位置,单击next

单击Install

(2) 确定自己开发板的 IP 地址

在安装系统中,在界面通过 ctr+Alt+T 打开命令提示符,输入:ifconfig 找到对应的有线网卡 eth0 的 IP地址。eg.我的IP地址为:192.168.1.109

(3)使用PuTTY远程登录Nano开发板

打开 PuTTY , 输入IP地址和端口号(IP:192.168.1.109 端口号默认22),默认开启 ssh 服务,单击Open;输入用户名和密码后进入终端模式。

2.2 安装和使用远程文件传输软件WinSCP

WinSCP 是一个 Windows 环境下使用的 SSH 的开源图形化 SFTP 客户端,同时支持 SCP 协议。

它的主要功能是在本地与远程计算机间安全地复制文件,并且可以直接编辑文件。方便在 windows 和 linux 两个不同的系统之间传输文件。

下载地址: https://winscp.net/

下载安装步骤如下:

单击我接受

自定义安装位置,单击下一步

选择自己的安装位置

一路傻瓜式操作到最后一步~单击安装,即可完成。

主机名为ip地址:192.168.1.109,端口号默认22,用户名和密码为班子设置的用户名和密码,eg.用户名:ciwei

2.3 VNC 远程桌面控制(可用可不用 我这里没有用到)

(1) 安装 vino

利用PuTTY, 在Nano上执行:

sudo apt update

sudo apt install vino

(2) Enable VNC 服务

执行

sudo ln -s ../vino-server.service /usr/lib/systemd/user/graphical-

session.target.wants

配置 VNC server,执行

gsettings set org.gnome.Vino prompt-enabled  false

gsettings set org.gnome.Vino require-encryption  false

编辑 org.gnome.Vino.gschema.xml文件,执行

sudo vi  /usr/share/glib-2.0/schemas/org.gnome.Vino.gschema.xml

文件最后添加

<key name='enabled' type='b'>

<summary>Enable remote access to the desktop</summary>

<description>

If true, allows remote access to the desktop via the RFB protocol. Users on remote machines may then connect to thedesktop using a VNC viewer.

</description>

<default>false</default>

</key>

设置为 Gnome 编译模式

sudo glib-compile-schemas /usr/share/glib-2.0/schemas

(3) 设置 VNC

登陆密码('thepassword' 修改为自己的密码)

gsettings set org.gnome.Vino authentication-methods "['vnc']"

gsettings set org.gnome.Vino vnc-password $(echo -n 'thepassword'|base64)

(4) 重启机器,验证是否设置 vnc 成功。

sudo reboot

(5) 设置开机自启动 VNC Server

上述方式属于手动启动,每次都需要手动启动会比较麻烦,下面会设置开机自启动的形式。

VNC 服务器只有在您本地登录到 Jetson Nano之后才可用。如果希望 VNC 自动可用,可使用系统设置应用程序来启用自动登录。

gsettings set org.gnome.Vino enabled true

mkdir -p ~/.config/autostart

vi ~/.config/autostart/vino-server.desktop

将下面的内容添加到该文件中,保存并退出。

[Desktop Entry]

Type=Application

Name=Vino VNC server

Exec=/usr/lib/vino/vino-server

NoDisplay=true

(6) 连接 VNC Server

使用 vnc viewer 软件进行 VNC 连接,首先需要查询 IP 地址; 输入 IP 地址后点击 OK,双击对应的VNC 用户输入密码,最后进入到 VNC 界面。

3.安装和测试DeepStream

3.1 Install Dependencies

在nano板子上的命令行,执行以下命令,安装需要的软件包:

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=2.11-1(这一步第一次安装失败)

3.2 Install the DeepStream SDK

Using the DeepStream tar package

1.下载 DeepStream 5.1 Jetson tar package deepstream_sdk_v5.1.0_jetson.tbz2, 并用winscp拖到 Jetson Nano。

2.输入以下命令以提取并安装DeepStream SDK:

sudo tar -xvf deepstream_sdk_v5.1.0_jetson.tbz2 -C /

cd /opt/nvidia/deepstream/deepstream-5.1

sudo ./install.sh

sudo ldconfig

3.3 DeepStream测试(未进行测试)

执行命令:(编辑文件prebuild.sh,注释掉除yolov3-tiny的语句)

cd /opt/nvidia/deepstream/deepstream-5.1/sources/objectDetector_Yolo

执行命令:(下载yolov3-tiny.cfg和yolov3-tiny.weights)

./prebuild.sh

执行命令:

deepstream-app -c deepstream_app_config_yoloV3_tiny.txt

4.下载调试yolov5项目(computer!)

可参照本人前几篇博客下载调试~步骤如下:

1.安装Anaconda和Pycharm 并下载yolov5代码

2.安装所需库:(pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt)

3.将权重文件yolov5s.pt/yolov5m.pt/yolov5l.pt/yolov5x.pt放置在weights文件夹下

4.训练自己的数据集

另:这里我用的yolov5s第四版,用之前的版本在生成yolov5.engine时会报错。

5.生成wts文件(computer!)

5.1 克隆tensorrtx

git clone https://github.com/wang-xinyu/tensorrtx.git

克隆失败的话直接去上述网址下载。

5.2 生成yolov5s.wts文件

将文件tensorrtx/yolov5/gen_wts.py 复制到自己的yolov5文件夹下,同时将自己的best.pt也复制到主文件夹下。

修改gen_wts.py为:

确保yolov5s.pt and yolov5s.wts在gen_wts.py下,cd 进入yolov5文件夹下 执行:

python gen_wts.py

 'yolov5s.wts' 生成

6 生成yolov5s.engine文件(Nano!)

(每次修改参数后都需要重新生成engine)

6.1 克隆tensorrtx

克隆tensorrtx文件夹至nano板子上。

6.2  编译tensorrtx/yolov5

修改yolov5文件夹下yololayer.h ,默认类别数80改为1。

cd  进入tensorrtx/yolov5 ,执行以下代码。(确保yolov5.cpp is s)

mkdir build

cd build

cmake ..

make

注意: by default, yolov5 script generate model with batch size = 1, FP16 mode and s model.(我使用的S网络,不需要修改)

#define USE_FP16 // comment out this if want to use FP32

#define DEVICE 0 // GPU id

#define NMS_THRESH 0.4

#define CONF_THRESH 0.5

#define BATCH_SIZE 1

#define NET s // s m l x

如果你需要改变上述默认参数,可在编译前修改文件 yolov5.cpp,还可改变yololayer.h中的参数。

static constexpr int CLASS_NUM = 80;

static constexpr int INPUT_H = 608;

static constexpr int INPUT_W = 608;

6.3 copy文件'yolov5s.wts' 文件到tensorrtx/yolov5/build目录下

6.4 生成yolov5s.engine

输入以下命令执行:

sudo ./yolov5 -s yolov5s.wts yolov5s.engine s

sudo ./yolov5 -d yolov5s.engine ../samples

7 使用DeepStream部署yolov5s

7.1 拷贝yolov5 deepstream文件

拷贝yolov5.zip(这里是他们给出的官方yolov5)到/opt/nvidia/deepstream/deepstream-5.1/sources/,然后解压文件。

sudo chmod -R 777 /opt/nvidia/deepstream/deepstream-5.1/sources/

cd /opt/nvidia/deepstream/deepstream-5.1/sources/

unzip yolov5.zip

7.2 拷贝yolov5.engine

cp    /home/ciwei(改为自己的用户名)/tensorrtx/yolov5/build/yolov5s.engine     /opt/nvidia/deepstream/deepstream-5.1/sources/yolov5

备注:yolov5 deepstream文件yolov5.zip的来源:https://github.com/marcoslucianops/DeepStream-Yolo

修改文件夹DeepStream-Yolo/external/yolov5/nvdsinfer_custom_impl_Yolo下的文件yololayer.h和yololayer.cu使其可以在YOLOv5 V4.0上工作

7.3 编译

针对自己的数据集,修改config_infer_primary.txt中的参数,以及类别名称文件labels.txt。

num-detected-classes=80

labels修改为:fire

修改后执行:

cd /opt/nvidia/deepstream/deepstream-5.1/sources/yolov5

CUDA_VER=10.2 make -C nvdsinfer_custom_impl_Yolo

samples下有测试图片,可以用来测试:

另.如要改变NMS_THRESH, 编辑文件nvdsinfer_custom_impl_Yolo/nvdsparsebbox_Yolo.cpp并重新编译。(不需修改 默认)

#define kNMS_THRESH 0.45

如要改变CONF_THRESH, 编辑文件config_infer_primary.txt。(不需修改 默认)

[class-attrs-all]

pre-cluster-threshold=0.25

8 部署测试

8.1 测试视频文件推理

cd /opt/nvidia/deepstream/deepstream-5.1/sources/yolov5

deepstream-app -c deepstream_app_config.txt

默认视频的路径在deepstream_app_config.txt文档中,打开查看或修改,路径如下:

8.2 USB摄像头视频测试

摄像头检测指令:

ls /dev/video*(简单)

v4l2-ctl --list-devices(完整指令)

v4l2-ctl --device=/dev/video0 --list-formats-ext(细致指令)

v4l2-ctl --device=/dev/video1 --list-formats-ext

安装v4l-utils工具:

sudo apt install v4l-utils

YOLOv5 USB摄像头视频测试命令:

deepstream-app -c source1_usb_dec_infer_yolov5.txt

8.3 CSI摄像头视频测试

deepstream-app -c source1_csi_dec_infer_yolov5.txt





 

  • 11
    点赞
  • 88
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 12
    评论
YOLOv5是一种目标检测深度学习算法,它在推理速度和精度上都有较好的性能。要在Jetson Nano上部署YOLOv5目标检测,可以按照以下步骤进行操作: 1. 首先,需要将训练好的YOLOv5s权重文件转换为wts文件格式。然后,使用build工具将wts文件转换为TensorRT的engine文件。这样就可以对输入的Tensors进行加速处理并得到推理的输出结果。\[2\] 2. 在Jetson Nano上部署YOLOv5目标检测,还需要修改文件夹DeepStream-Yolo/external/yolov5/nvdsinfer_custom_impl_Yolo下的文件yololayer.h和yololayer.cu,以使其可以在YOLOv5 V4.0上正常工作。\[3\] 通过以上步骤,你就可以在Jetson Nano上成功部署YOLOv5目标检测算法了。希望对你有所帮助! #### 引用[.reference_title] - *1* *2* [Jetson Nano 部署(1):YOLOv5 目标检测实战介绍](https://blog.csdn.net/weixin_38346042/article/details/126399006)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Jetson Nano部署实现(一)——Yolov5目标检测-Jetson Nano部署](https://blog.csdn.net/qq_40305597/article/details/117320573)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

是刺猬吖

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

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

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

打赏作者

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

抵扣说明:

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

余额充值