Jetson Nano( 七)Deepstream yolov4

Jetson Nano( 七)deepstream yolov4

文章目录

  • Jetson Nano( 七)deepstream yolov4
    • 软硬件版本
    • 模型转换流程
    • Deepstream 配置
    • 参考

软硬件版本

Jetson Nano 4G
JP 4.4.1
CUDA 10.2
CUDNN 8.0
TensorRT 7.1.3.0
deepstream 5.0

Jetson 上环境库如:tensorflow pycuda torch1.5/1.6 torchvision 0.7等放在了网盘需要的自取:

链接:https://pan.baidu.com/s/163UMVcgapcpo6YDyrgj_Wg
提取码:ldql

deepstream的安装 请参考上篇:
https://blog.csdn.net/djj199301111/article/details/110186640

模型转换流程

Darknet模型 /Pytorch模型 —— ONNX模型 —— TRT模型

  1. 首先准备自己的yolov4模型darknet或者pytorch版本皆可。
  2. 使用https://github.com/Tianxiaomo/pytorch-YOLOv4下脚本转为onnx模型。
    注意:本步骤在开发机上运行
python demo_darknet2onnx.py <cfgFile> <weightFile> <imageFile> <batchSize>
#python ./demo_darknet2onnx.py ./cfg/yolov4.cfg ./cfg/yolov4.weights ./data/dog.jpg 1
python demo_pytorch2onnx.py <weight_file> <image_path> <batch_size> <n_classes> <IN_IMAGE_H> <IN_IMAGE_W>
#python ./demo_pytorch2onnx.py  ./cfg/yolov4.pth ./data/dog.jpg 1 80 416 416
  1. 使用trt命令转为engine模型。
  • 3.1 拷贝onnx模型至nano。
  • 3.2 使用trt转换:
/usr/src/tensorrt/bin/trtexec --onnx=./yolov4_pt.onnx --minShapes=input:1x3x416x416 --optShapes=input:1x3x416x416 --maxShapes=input:1x3x416x416 --workspace=2048 --saveEngine=./yolov4.engine --fp16

以上为本次设置的参数情况;设置大了会报显存不足的情况,有需求的朋友,可以多试几次。
转换过程估计在1-2小时左右

  • 3.3 测试engine模型

使用https://github.com/Tianxiaomo/pytorch-YOLOv4下的demo_trt.py脚本测试:

python demo_trt.py <tensorRT_engine_file> <input_image> <input_H> <input_W>
#

注意

  • Darknet模型 /Pytorch模型 —— ONNX模型 步骤是在开发机上操作的(本人在nano上会内存不足报错)。
  • ONNX模型 —— TRT模型 步骤在nano上运行。
  • 这里batchSize可设置1;设置4或8能提高一些推理速度;由于内存不足,本文中设置都是1。
  • 本文中模型输入尺寸为:416*416。
  • 需要添加虚拟内存否则无法转换成engine。

Deepstream 配置

1.将deepstream_yolov4 拷贝到 /opt/nvidia/deepstream-5.0/sources/
2.配置文件修改:

  • deepstream_app_config_yoloV4.txt

  • 模型路径

  • 标签路径

  • 批次大小

  • 模式格式(FP32 FP16 INT8)

  • 视频路径

  • config_infer_primary_yoloV4.txt

  • 输入尺寸大小

  • 模型路径

  • 标签数量

  • 置信度

3.运行测试

deepstream-app -c deepstream_app_config_yoloV4.txt

Jetson Nano( 七)Deepstream yolov4_第1张图片

App run successful

说明运行成功

参考

https://github.com/NVIDIA-AI-IOT/yolov4_deepstream
https://github.com/Tianxiaomo/pytorch-YOLOv4

你可能感兴趣的:(Jetson,神经网络,深度学习)