百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT知识 > 正文

yolov7 PyTorch模型转TensorRT

liuian 2025-01-01 21:34 19 浏览

文章目录

  • yolov7 PyTorch模型转TensorRT
    • 1. github开源代码
    • 2. PyTorch模型转ONNX模型
    • 3. ONNX模型转TensorRT模型
      • 3.1 概述
      • 3.2 编译
      • 3.3 运行
    • 4. 推理结果

yolov7 PyTorch模型转TensorRT

1. github开源代码

yolov7 TensorRT推理的开源代码位置在https://github.com/linghu8812/tensorrt_inference/tree/master/project/yolov7,yolov7官方的开源代码位置为https://github.com/WongKinYiu/yolov7,对yolov7 epxort ONNX模型的代码作了少许修改,主要是(1) 在导出ONNX模型时,增加了onnxsim进行模型简化;(2) 在导出ONNX模型时进行了少许修改,可以去掉ONNX模型的ScatterND的op,使得TensorRT可以直接解析ONNX模型。

2. PyTorch模型转ONNX模型

首先通过命令git clone https://github.com/linghu8812/yolov7.gitclone yolov7的代码,通过以下命令生成ONNX文件。--weights 可以指定模型文件路径,--simplify进行ONNX模型简化,--grid使输出为一个tensor,--img-size为输入图片尺寸,--batch-size设置batch size的大小。

python export.py --weights ./weights/yolov7.pt --simplify --grid

对于1280输入的模型,可通过以下命令生成ONNX模型:

python export.py --weights ./weights/yolov7-w6.pt --simplify --grid --img-size 1280

3. ONNX模型转TensorRT模型

3.1 概述

TensorRT模型即TensorRT的推理引擎,代码中通过C++实现。相关配置写在config.yaml文件中,如果存在engine_file的路径,则读取engine_file,否则从onnx_file生成engine_file

void yolov7::LoadEngine() {
    // create and load engine
    std::fstream existEngine;
    existEngine.open(engine_file, std::ios::in);
    if (existEngine) {
        readTrtFile(engine_file, engine);
        assert(engine != nullptr);
    } else {
        onnxToTRTModel(onnx_file, engine_file, engine, BATCH_SIZE);
        assert(engine != nullptr);
    }
}

config.yaml文件可以设置batch size,图像的size,关于anchor的处理已经写到了ONNX模型中,所以处理时只需知道每个检测层的stride和anchor的数量即可,不需要再配置具体的anchor。

yolov7:
    onnx_file:     "../yolov7.onnx"
    engine_file:   "../yolov7.trt"
    labels_file:   "../coco.names"
    BATCH_SIZE:    1
    INPUT_CHANNEL: 3
    IMAGE_WIDTH:   640
    IMAGE_HEIGHT:  640
    obj_threshold: 0.4
    nms_threshold: 0.45
    strides:       [8, 16, 32]
    num_anchors:   [3,  3,  3]

yolov7-w6模型的配置文件如下:

yolov7:
    onnx_file:     "../yolov7-w6.onnx"
    engine_file:   "../yolov7-w6.trt"
    labels_file:   "../coco.names"
    BATCH_SIZE:    1
    INPUT_CHANNEL: 3
    IMAGE_WIDTH:   1280
    IMAGE_HEIGHT:  1280
    obj_threshold: 0.4
    nms_threshold: 0.45
    strides:       [8, 16, 32, 64]
    num_anchors:   [3,  3,  3,  3]

3.2 编译

通过以下命令对项目进行编译,生成yolov7_trt

mkdir build && cd build
cmake ..
make -j

3.3 运行

通过以下命令运行项目,得到推理结果

./yolov7_trt ../config.yaml ../samples

4. 推理结果

推理结果如下图所示:

相关推荐

用python操作excel、word、pdf非常容易,迅速教会你

你会用python操作excel、word、pdf吗?不会也没关系,这篇文章教会你~【文末领取】案例篇幅有限,给大家准备了电子版PDF获取方式:...

不同类型的文本、Word文档、Excel文档和图片将它们转换为PDF格式

要根据不同类型的文本、Word文档、Excel文档和图片将它们转换为PDF格式,你可以使用Python中的不同库来实现。下面是一个示例代码,展示了如何使用不同的库来处理不同类型的文件并将其转换为PDF...

10分钟实现PDF转Word神器!看DeepSeek如何用Python解放打工人

开篇痛点每个被PDF折磨过的职场人都懂——领导发来的扫描件要修改,手动抄到Word需要2小时;网上下载的报告想复制数据,却变成乱码…今天我们用Python+DeepSeek,10分钟打造一个智能转换工...

第12天 | 12天搞定Python,word和pdf

其实,Python除了对excel的支持很nice之外,对word、ppt和pdf也不赖的,上一篇《第12天|12天搞定Python,让excel飞起来》说了excel方面的内容,这一篇补上Py...

用python轻松操作excel、word、pdf吗?这篇文章教会你!拿走不谢

你会用python操作excel、word、pdf吗?不会也没关系,这篇文章教会你~【文末领取】案例篇幅有限,给大家准备了电子版PDF获取方式:...

Python开发打印服务(1)

Python开发打印服务(1)1.需求背景在项目开发中,我们经常会遇到打印预览、打印的需求。比如:我们在开发进销存或者其他系统应用时,经常会按照客户的需求来定制报表等。在Web项目中,实现打印预览...

零代码编程:用ChatGPT将PDF文件的表格批量转为Excel表格

电脑中有几百个PDF文件,文件内容格式一致,每个PDF文件第一页是一个表格。想把这几百个PDF文件里面的表格都提取出来,转为excel表,该怎么办?打开ChatGPT(一定要用GPT4,编程能力很强。...

用python操作excel、word、pdf非常迅速方便,迅速教会你

你会用python操作excel、word、pdf吗?不会也没关系,这篇文章教会你~【文末领取】案例篇幅有限,给大家准备了电子版PDF获取方式:...

PDF转换技巧:如何免费将 PDF 转换为 Excel

随着数字文档的使用不断增加,对高效和值得信赖的文档转换工具的需求也在增加。将PDF文件转换为Excel电子表格(XLS)可能具有挑战性,但这篇文章旨在缓解这些困难。这是带有分步说明的指南。...

PDF转Excel要收费?python几行代码帮你免费搞定(附代码)

写在前面经常在学习或工作中需要从PDF获取一些表格数据,直接用PDF阅读器复制的话,很难复制出来,使用PDF转Excel的软件,又需要收费。这时候,可以使用我们强大的python,几行代码就能把pdf...

python将PDF格式文档转换为excel文档

首先安装pdfplumber库pipinstallpdfplumberopenpyxl然后转换#导入两个模块importpdfplumberimportpandasaspd...

用DEEPSEEK写PDF转为Excel 程序

今天学校发了《2027通用版普通高校拟在山东招生专业(类)选考科目要求》(本科)文件为PDF版要转为化Excel用DEEPSEEK开发过程提问:写一个把PDF内容按着原来格式转化为EXCELL表格电脑...

用DeepSeek+Trae 自己写PDF表格转为EXCEL表格

如何将下面PDF表格转为EXCEL能更好统计在TRAE提问:新建窗口-选择文件夹-写一个PDF转excel电脑程序:样式不变,界面有选择文件,有输出文件,显示进度及页码,开始,暂停,退出,实现所...

Python一行代码实现PDF转Excel

第三方包tabula工具适用于从PDF中提取可复制(非图片格式)的表格数据,并输出表格安装pipinstalltabula-py函数调用df=tabula.read_pdf("PDF文件...

Python教程:python字典zip函数用法 - 学习如何操作字典

知识星球:写代码那些事如果你有收获|欢迎|点赞|关注|转发这里会定期更新|大厂的开发|架构|方案设计这里也会更新|如何摸鱼|抓虾欢迎来到写代码那些事!在Python编程中,字典(Dictionary)...