jetson nano 运行 yolov5 ( tensorRT 加速, FPS>25)

jetson nano 运行 yolov5 (FPS>25)

导读

这篇文章基于jetson nano,但同样适用于jetson系列其他产品。首先确保你的jetson上已经安装好了deepstream,由于deepstream官方没有支持yolov5的插件(lib库),所以我们需要使用第三方的lib库来构建yolov5的trt引擎,deepstream官方的nvinfer插件会根据我们的配置文件导入yolov5的lib库。
请确保已经按照官方文档安装好deepstream。
lib库链接:https://github.com/marcoslucianops/DeepStream-Yolo

开始

1. 下载源码

随便建个目录,运行下面代码下载 yolov5 deepstream trt引擎lib库

$ git clone https://github.com/marcoslucianops/DeepStream-Yolo

2. 生成 yolov5的配置文件(cfg和wts文件)

为了使用tensorRT加速yolov5,我们需要tensorRT直接可以读取的engine文件,或者通过cfg以及wts文件来构建engine,这里我们使用第二种方法,因为上面的源码中提供了从pt文件到cft以及wts文件转换的脚本。

2.1 另找一台主机,参考下面的链接,下载并配置好yolov5的pytorch环境:

ultralytics/yolov5: YOLOv5 🚀 in PyTorch > ONNX > CoreML > TFLite (github.com)

2.2 在jetson上,进入 DeepStream-Yolo/utils 目录,把 gen_wts_yoloV5.py 拷贝到上一步下载好的yolov5 工程根目录,参考我的目录结构:
在这里插入图片描述

2.3 在上述目录中,下载 yolov5n.pt 模型文件

# 参考这个脚本下载,或者直接去github上下载
$ wget https://github.com/ultralytics/yolov5/releases/download/v6.1/yolov5n.pt

由于jetson nano的性能关系,这里我们只测试运行yolov5n

2.3 生成 cfg 和 wts

$ python3 gen_wts_yoloV5.py -w yolov5n.pt

生成后,目录中会出现两个文件,yolov5n.cfg 以及 yolov5n.wts
在这里插入图片描述

2.4 把 yolov5n.cfg 和 yolov5n.wts 放到jetson nano的DeepStream-Yolo文件夹中,参考:
在这里插入图片描述
至此,所有文件已经准备完毕,我们修改好DeepStream的yolov5配置文件后,就可以编译运行了。

2. 修改deepstream配置文件

回到 jetson nano 的DeepStream-Yolo 文件夹,需要注意两个配置文件:

1) deepstream_app_config.txt // deepstream-app 配置文件
2) config_infer_primary_yoloV5.txt // yolov5 trt引擎插件配置文件

第一个文件是给DeepStream SDK官方样例APP deepstream-app 看的,主要作用是告诉 deepstream-app 我们需要哪些组件来构建我们的pipeline,第二个文件的作用是用来配置 yolov5 的tensorRT 引擎插件的,里面指定了yolov5网络的一些配置参数以及生成engine需要的配置文件路径等。

修改第一个文件 deepstream_app_config.txt,让它使用 yolov5的配置文件:

# 省略...

[primary-gie]
enable=1
gpu-id=0
gie-unique-id=1
nvbuf-memory-type=0
config-file=config_infer_primary_yoloV5.txt # 修改这里
# 省略 ...

这里参考下面注释,修改第二个配置文件 – config_infer_primary_yoloV5.txt

[property]
# 省略 ...
**model-engine-file=model_b2_gpu0_fp16.engine** # 修改 fp32->fp16
batch-size=2 # batch-size 改为2,速度会快一些
# 省略...
**network-mode=2 #** 修改为 2, 强制使用fp16推理
# 省略 ...

注意:FPS与输入图像大小,batch-size,interval等参数有关,需要根据实际应用优化,这里我们直接把infer的batch-size改为2,模型的推理速度就会有明显提升

3. 编译运行

进入 DeepStream-Yolo 文件夹,运行下面的命令编译并运行

$ cd nvdsinfer_custom_impl_Yolo/
$ CUDA_VER=10.2 make #根据你的CUDA版本修改10.2数字部分
$ cd .. 

# 运行
$ deepstream-app -c deepstream_app_config.txt

在这里插入图片描述

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
青葱年少的头像青葱年少普通用户
上一篇 2023年2月26日 上午11:08
下一篇 2023年2月26日 上午11:09

相关推荐