部署记录 win10 trt yolov4-tiny

目录

  • 目标
  • 1.环境
  • 2.先跑darknet yolov4(win10+cmake3.24.2+vs2019)
    • 2.1 readme
    • 2.2 cmake编译
    • 2.3 VS编译
    • 2.4 darknet.c
  • 3.darknet trt yolov4
    • 3.1 readme
    • 3.2 enazoe yolo-tensorrt
    • 3.3 编译问题记录
  • 4. 加速方案
    • 4.1 OPENCV->NPP编译选项及测试
      • 4.1.1 测试相关preprocess函数替换效果及对比
    • 4.2 最快方案应该是SDK读图后直接将data放到GPU用cuda resize之后给context
  • 5.转换效果

目标

1.JNI(JAVA)调用推理模型dll(C++),dll至少包括三个接口(模型初始化、推理、释放),先用c++自调测试 √
2.TRT及TF双加载模型(参数项)(暂TRT)
3.多模型挂载 √
4.相机SDK调用 (暂不需要)
5.npp替代opencv完成图片preprocess加速 (无必要)

1.环境

已有硬件及环境:RTX2080TI,cuda11.4,VS2019
需要安装环境:opencv(4.5.4),tensorrt(8.2.1.8),相关相机SDK

2.先跑darknet yolov4(win10+cmake3.24.2+vs2019)

2.1 readme

darknet windows部署流程

2.2 cmake编译

cmake不通
参考 – VS2019安装时差组件
不玩cmake了,看起来是要重装cuda
参考 – cudacxx CUDA not found

2.3 VS编译

darknet run v4 参考
cuda 配置参考
部署记录 win10 trt yolov4-tiny_第1张图片
A: tiny也能跑通

2.4 darknet.c

如果要做封装改写的话基于这个文件,对我是没啥用了

3.darknet trt yolov4

3.1 readme

1.基于https://github.com/enazoe/yolo-tensorrt
2.基于tensorrtx yolov4改写

3.2 enazoe yolo-tensorrt

参考 – WIN10安装trt
master branch 没有trt8
trt8 branch 没有v4-tiny
整合了v4-tiny+trt8 百度网盘 提取码:bsh6
不知道为什么要封装这么多层,自己抽出来重构(简写)了一遍
环境:WIN10,Tensorrt8.2.1.8,cuda11.4,cudnn8.5,
基于AlexeyAB/darknet
部署记录 win10 trt yolov4-tiny_第2张图片

3.3 编译问题记录


1._SILENCE_EXPERIMENTAL_FILESYSTEM_DEPRECATION_WARNING 添加到C/C++/预处理器/预处理器定义

2.在附加目录记得加上common和extra文件夹里的.h文件

3.项目右键生成依赖项/生成自定义/cuda选上

4.如果.cu文件没有配置cuda编译器的话 VCXPROJ文件中 该项为None Complier 右键 “xxx.cpp" 源文件→ 属性→ 配置属性→ 常规→ 项类型→ 设置为“CUDA C/C++5.API.h 用于DLL
#ifdef API_EXPORTS

#if defined(_MSC_VER)
#define API __declspec(dllexport) 
#else
#define API __attribute__((visibility("default")))
#endif
……

API_EXPORTS 可直接定义在prop中,在C/C++/预处理器/预处理定义中添加就可以 不需要赋值
__declspec(dllexport) 用于制作dll文件时 主文件会调用该dll的函数//结构体 在该函数//结构体前加上 __declspec(dllexport) 在本项目中 将__declspec(dllexport)定义为API

6. 无法找到cuda_runtime_api.h
先完成3,然后属性/cuda c/c++/Common/additional include dir加上系统cuda include

7. hpp是不能直接成dll的 要拆掉

8. 只有dll没有lib:工程右键->添加->新建项->模块定义文件,工程右键->属性->连接器->输入->模块定义文件

4. 加速方案

4.1 OPENCV->NPP编译选项及测试

试一下NPP和cv的resize函数
NPP不能直接调用,需要在链接库指定下npp*.lib,跟opencv一样
部署记录 win10 trt yolov4-tiny_第3张图片

4.1.1 测试相关preprocess函数替换效果及对比

折腾半天原来只有resize是在cpu里做的 上图就是结果了

4.2 最快方案应该是SDK读图后直接将data放到GPU用cuda resize之后给context

5.转换效果

部署记录 win10 trt yolov4-tiny_第4张图片
部署记录 win10 trt yolov4-tiny_第5张图片
部署记录 win10 trt yolov4-tiny_第6张图片
部署记录 win10 trt yolov4-tiny_第7张图片

你可能感兴趣的:(C++,TensorRT,c++,计算机视觉,开发语言)