今日应用
今日话题
实践教程|旋转目标检测模型-TensorRT 部署(C++)
重点标签 C++部署、旋转目标检测、TensorRT、模型转换、GGHL框架
文章摘要
1. TensorRT安装:选择TensorRT8,支持deb、tar、rpm安装方式。本文以Ubuntu 22.04系统、CUDA 11.6版本为例,采用tar方式安装。参考Nvidia官方文档,配置CUDA和TensorRT环境变量,编译TensorRT并测试安装是否成功。
2. 模型的中间表达转换:GGHL框架采用YoloV3架构,包括DarkNet、FPN+PANet、解耦头等。从release下载权重文件,转换为ONNX等中间表达方式。使用onnxsim简化算子,Netron可视化网络结构。涉及三个FPN输出和Concat输出,剔除前三个输出头。
3. C++部署实现:介绍C++部署流程,包括Builder Phase和Runtime Phase。使用Nvidia官方samplelogger类,定义GGHLONNX类负责TensorRT两个阶段。Builder用来优化模型并产生Engine,NetworkDefinition定义模型输入输出,BuilderConfig优化模型。Runtime阶段包括反序列化创建引擎、创建执行context、填充输入缓存、调用enqueue()或execute()函数运行接口。
4. 后处理:8点的NMS参考DOTA Devkit实现,也可使用Opencv旋转框NMS。OBBDet.h为后处理主要头文件,传入传出参数使用引用和指针分配。流程与runtime一致,具体实现见代码。
5. 使用TensorRT版本GGHL:准备cmake和必要package,CUDA和OpenCV参考其他流程。生成可执行文件后,指定图片进行推理。速度测试包括FP-16 load image、FP-16+nms、FP-16 inference等。
本文提供了旋转目标检测模型C++部署的详细步骤和代码,选择GGHL框架,支持不同参数表征方法,后处理可互相转换。安装TensorRT,转换模型中间表达,实现C++部署和后处理。欢迎讨论问题,公众号后台回复“数据集”获取深度学习资源整理。
文章来源
原文地址: 点我阅读全文
原文作者: 极市平台