DeepStream5.0系列之yolov5使用

点击查看系列文章目录

0 背景

之前介绍了在 deepstream 中使用 yolov3、yolov4 的方法,现在已经有 yolov5 了,在性能上有了很大的提升,本文对 deepstream 中使用 yolov5 的方法做一介绍

测试环境: Ubuntu 18.04, CUDA 10.2, T4, jetpack4.4

软件版本:yolov5:3.0,3.1

项目地址:https://github.com/DanaHan/Yolov5-in-Deepstream-5.0

1 安装流程

1.1 创建 conda 环境

Tips:如果是在 jetson 设备上,可以不用创建 conda 虚拟环境

conda create -n yolov5 python=3.6

1.2 下载源码

mkdir deepstream_yolov5
cd deepstream_yolov5
git clone https://github.com/DanaHan/Yolov5-in-Deepstream-5.0.git
git clone https://github.com/wang-xinyu/tensorrtx.git
git clone https://github.com/ultralytics/yolov5.git

1.3 安装环境

注意:这块实测 3.0 版本和 3.1 版本的没有问题,最新的 4.0 版本可能会有检测框问题

cd yolov5
git checkout v3.1 #切换到3.1版本
pip install scikit-build
pip install -r requirements.txt

2 模型准备

2.1 下载预训练模型

yolov5 界面下载预训练模型(3.1版本模型),这里我们以 YOLOv5x 为例介绍

下载好模型后放到 yolov5/weights 目录下

2.2 生成 engine

cd yolov5
cp ../tensorrtx/yolov5/gen_wts.py ./

修改 gen_wts.py 中的模型名称,需要根据自己用的模型做对应修改,主要是第8行和第11行

import torch
import struct
from utils.torch_utils import select_device

# Initialize
device = select_device('cpu')
# Load model
model = torch.load('weights/yolov5x.pt', map_location=device)['model'].float()  # load to FP32
model.to(device).eval()

f = open('yolov5x.wts', 'w')
f.write('{}\n'.format(len(model.state_dict().keys())))
for k, v in model.state_dict().items():
    vr = v.reshape(-1).cpu().numpy()
    f.write('{} {} '.format(k, len(vr)))
    for vv in vr:
        f.write(' ')
        f.write(struct.pack('>f',float(vv)).hex())
    f.write('\n')

运行后会在本地生成 yolov5x.wts 文件,然后拷贝到 Yolov5-in-Deepstream-5.0 文件夹中

cp yolov5x.wts ../Yolov5-in-Deepstream-5.0
cd ../Yolov5-in-Deepstream-5.0

修改 yolov5.cpp 文件,将 NET 宏改成自己对应的模型

#define NET x  // s m l x

然后编译

mkdir build
cd build
cmake ..
make
sudo ./yolov5 -s

运行后会生成 yolov5x.engine 和 libmyplugin.so 文件,首先检查下engine运行结果是否正确

创建测试图片

mkdir ../samples
# 网上下载两张 coco 数据集图片
sudo ./yolov5 -d  ../samples

输出如下

[11/02/2020-15:08:27] [W] [TRT] Current optimization profile is: 0. Please ensure there are no enqueued operations pending in this context prior to switching profiles
9ms
8ms

并且可以在build目录下生成检测结果图片,格式是_name.jpg,打开图片可以看到检测框正常

验证完毕后,将生成的模型和动态库拷贝到 deepstream 目录中

cp yolov5x.engine ../Deepstream\ 5.0/
cp libmyplugins.so ../Deepstream\ 5.0/

3 deepstream部署

在 Deepstream 5.0/nvdsinfer_custom_impl_Yolo 目录中运行 make 编译,生成 libnvdsinfer_custom_impl_Yolo.so 文件

返回上一级,修改 config_infer_primary_yoloV5.txt 文件,总共有以下几处需要修改

  • model-engine-file=yolov5s.engine --> model-engine-file=yolov5x.engine
  • custom-lib-path=objectDetector_Yolo_V5/nvdsinfer_custom_impl_Yolo/libnvdsinfer_custom_impl_Yolo.so --> custom-lib-path=nvdsinfer_custom_impl_Yolo/libnvdsinfer_custom_impl_Yolo.so

原工程中缺少 labels.txt 文件,把 coco 数据集的 80 类 labels 拷贝过来即可

然后根据自己的需求,修改 deepstream_app_config_yoloV5.txt 即可

然后载入定制化的动态库,并运行即可

LD_PRELOAD=./libmyplugins.so deepstream-app -c deepstream_app_config_yoloV5.txt

会重新生成 engine 文件,并且运行结果如下

注意,engine 文件要在 Yolov5-in-Deepstream-5.0 工程中生成,在 tensorrtx 工程中生成 engine 再导过来运行会出现一大堆框,如下

 

已标记关键词 清除标记
<p> <span style="font-size:18px;color:#E53333;"><strong><span style="color:#000000;">课程演示环境:Ubuntu</span><br /> <br /> <span style="color:#000000;">需要学习Windows系统YOLOv4的同学请前往《Windows版YOLOv4目标检测实战:训练自己的数据集》,课程链接https://edu.csdn.net/course/detail/28748</span><br /> <br /> YOLOv4</strong></span><span style="font-size:18px;color:#E53333;"><strong>来了!速度和精度双提升!</strong></span> </p> <p> <span style="font-size:16px;"> </span> </p> <p> <span style="font-size:16px;">与</span><span style="font-size:16px;"> YOLOv3 </span><span style="font-size:16px;">相比,新版本的</span><span style="font-size:16px;"> AP(精度) </span><span style="font-size:16px;">和</span><span style="font-size:16px;"> FPS </span><span style="font-size:16px;">(每秒帧率)分别提高了</span><span style="font-size:16px;"> 10% </span><span style="font-size:16px;">和</span><span style="font-size:16px;"> 12%</span><span style="font-size:16px;">。</span><span></span> </p> <p> <span style="font-size:16px;"> </span> </p> <p> <span style="font-size:16px;">YOLO系列是基于深度学习的端到端实时目标检测方法。本课程将手把手地教大家使用</span><span style="font-size:16px;">labelImg</span><span style="font-size:16px;">标注和使用</span><span style="font-size:16px;">YOLOv4</span><span style="font-size:16px;">训练自己的数据集。课程实战分为两个项目:单目标检测(足球目标检测)和多目标检测(足球和梅西同时检测)。</span><span></span> </p> <p> <span style="font-size:16px;"> </span> </p> <p> <span style="font-size:16px;">本课程的</span><span style="font-size:16px;">YOLOv4</span><span style="font-size:16px;">使用</span><span style="font-size:16px;">AlexAB/darknet</span><span style="font-size:16px;">,在</span><span style="font-size:16px;">Ubuntu</span><span style="font-size:16px;">系统上做项目演示。包括:安装</span><span style="font-size:16px;">YOLOv4、</span><span style="font-size:16px;">标注自己的数据集、整理自己的数据集、修改配置文件、训练自己的数据集、测试训练出的网络模型、性能统计</span><span style="font-size:16px;">(mAP</span><span style="font-size:16px;">计算和画出</span><span style="font-size:16px;">PR</span><span style="font-size:16px;">曲线</span><span style="font-size:16px;">)</span><span style="font-size:16px;">和先验框聚类分析。还将介绍改善</span><span style="font-size:16px;">YOLOv4</span><span style="font-size:16px;">目标训练性能的技巧。</span><span></span> </p> <p> <span style="font-size:16px;"> </span> </p> <p> <span style="font-size:16px;">除本课程《</span><span style="font-size:16px;">YOLOv4</span><span style="font-size:16px;">目标检测实战:训练自己的数据集》外,本人将推出有关</span><span style="font-size:16px;">YOLOv4</span><span style="font-size:16px;">目标检测的系列课程。请持续关注该系列的其它视频课程,包括:</span><span></span> </p> <p> <span style="font-size:16px;">《</span><span style="font-size:16px;">YOLOv4</span><span style="font-size:16px;">目标检测实战:人脸口罩佩戴识别》</span><br /> <span style="font-size:16px;">《</span><span style="font-size:16px;">YOLOv4</span><span style="font-size:16px;">目标检测实战:中国交通标志识别》</span><br /> <span style="font-size:16px;">《</span><span style="font-size:16px;">YOLOv4</span><span style="font-size:16px;">目标检测:原理与源码解析》</span> </p> <p> <br /> </p> <p> <span style="font-size:16px;"><br /> </span> </p> <p> <span style="font-size:16px;"><img src="https://img-bss.csdn.net/202004260858382698.jpg" alt="" /><br /> </span> </p> <p> <span style="font-size:16px;"><br /> </span> </p> <p> <span style="font-size:16px;"><img src="https://img-bss.csdn.net/202004260858535136.jpg" alt="" /><br /> </span> </p> <p> <span style="font-size:16px;"><img src="https://img-bss.csdn.net/202004260859074920.jpg" alt="" /><br /> </span> </p> <p> <span></span> </p> <p> <span></span> </p>
相关推荐
©️2020 CSDN 皮肤主题: 游动-白 设计师:白松林 返回首页