yoloV4+deepstream部署

yoloV4+deepstream部署

overview

  • 单检测器+跟踪器部署

模型转换(darknet–>onnx–>TensorRT)

转为onnx模型可以在本地或tx2上进行;转tensorRT模型只能在目标设备上转换

本地模型转换

需要准备pytorch和onnx。pytorch版本:

  • Pytorch 1.4.0 for TensorRT 7.0 and higher
  • Pytorch 1.5.0 and 1.6.0 for TensorRT 7.1.2 and higher
  • pip install onnxruntime

  1. git clone 转换代码
    git clone https://gitee.com/Mr_xiaolong/pytorch-YOLOv4.git

    git clone https://github.com/Tianxiaomo/pytorch-YOLOv4.git

  2. darknet模型转onnx:将模型权重及配置文件放入文件夹内,执行
    python demo_darknet2onnx.py yolov4-tiny-416.cfg yolov4-tiny-416.weights data/dog.jpg -1
    模型转换

    生成Onnx模型及demo图像
    生成onnx

  3. onnxz转TensorRT模型。将上一步得到的模型移动到tensorRT路径下
    sudo mv yolov4_-1_3_416_416_dynamic.onnx /usr/src/tensorrt/bin
    执行模型转换命令:
    sudo ./trtexec --onnx=yolov4_-1_3_416_416_dynamic.onnx \ --minShapes=input:1x3x416x416 --optShapes=input:4x3x416x416 --maxShapes=input:8x3x416x416 \ --workspace=2048 --saveEngine=yolov4_-1_3_416_416_dynamic.engine --fp16
    请添加图片描述
    请添加图片描述

Tx2模型转换(不推荐,需要额外安装pytorch,onnxruntime)
  1. git clone 转换代码
    git clone https://gitee.com/Mr_xiaolong/pytorch-YOLOv4.git

    git clone https://github.com/Tianxiaomo/pytorch-YOLOv4.git
  2. darknet模型转onnx:将模型权重及配置文件放入文件夹内(此处模型由本机放入Document文件夹中),执行
    python demo_darknet2onnx.py yolov4-tiny-416.cfg yolov4-tiny-416.weights data/dog.jpg -1
    keypoint:
    a. 模型输入尺寸可选320 * 320, 416 * 416, 512 * 512 或 608 * 608等,可以根据帧率/精度进行动态调整,但需要满足以下要求:
    height = 320 + 96 * n, n in {0, 1, 2, 3, …}
    width = 320 + 96 * m, m in {0, 1, 2, 3, …}
    b. 为了方便调整参数进行测试,这里转换为动态模型(batchsize可以在范围内进行调整)
    模型转换参考地址

模型部署

  1. 下载NVIDIA官方提供的YOLOV4代码。这里官方提供了两种部署方式,可以直接运行生成的tensorRT模型,也可以结合deepstream框架进行部署。
    git clone https://github.com/NVIDIA-AI-IOT/yolov4_deepstream.git
    将其中的deepstream_yolov4文件夹复制到/opt/nvidia/deepstream/deepstream/sources路径下(在此目录下clone代码)

  2. 将转换好的模型移动到此文件夹
    sudo mv yolov4_-1_3_416_416_dynamic.engine /opt/nvidia/deepstream/deepstream/sources/deepstream_yolov4/

  3. 编译 nvdsparsebbox_Yolo.cpp :
    编译
    sudo make CUDA_VER=10.2
    若编译失败或有类别数(默认类别数为80)修改,
    需重新编译,执行清理,然后重新编译。
    sudo make clean CUDA_VER=10.2
    sudo make CUDA_VER=10.2

  4. 更新配置文件
    在config_infer_primary_yoloV4.txt中更新模型路径,标签等信息:
    在这里插入图片描述

    在deepstream_app_config_yoloV4.txt中更新以下信息,属性介绍
    a. [tiled-display] 显示设置,多路视频输出时设置展示行列数、图像分辨率

    b. [source] 设置输入源,多路输入通过 source%d来实现。demo中仅给了1-3的Type,这里设置 tpye=4为rtsp输入。其余属性设置(跳帧等)参照属性介绍。

    c. [sink]设置输出方式及端口(rtsp)

    d. [streammux]设置批处理的batch-size大小,是否作为实时输入

    e. [primary-gie]设置推理模块所用模型及标签,batch-size大小与[streammux]保持一致可以有最佳性能。

    f. [tracker]设置跟踪所用的动态链接库。可以根据性能\精度表现进平衡
    请添加图片描述

  5. 运行‘deepstream-app -c deepstream_app_config_yoloV4.txt’
    在这里插入图片描述
    在这里插入图片描述

相关问题解决方案

  1. GStreamer pipeline相关问题,清理缓存即可:
    rm ${HOME}/.cache/gstreamer-1.0/registry.aarch64.bin

参考资料

  1. 调优相关说明
  2. 多模型部署triton
  3. deepstream镜像运行及部署
  4. 获取和设置Bounding Box
  5. 结构体参考文档

deepstream源文件路径

  1. /opt/nvidia/deepstream/deepstream/sources/apps/sample_apps/deepstream-app
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值