window10+TensorRT-8.2.5.1+yolov5 v6.2 c++部署

news2025/1/12 1:51:49

一、准备工具

1.1、visual studio下载安装

参考:vs2019社区版下载教程(详细)_Redamancy_06的博客-CSDN博客_vs2019社区版

1.2、显卡驱动+cuda+cudnn安装

参考:win10系统+3060显卡驱动+cuda11.5+cudnn8.3安装_Bubble_water的博客-CSDN博客

一定要安装好visual studio软件之后再安装cuda(或者重装cuda),并且选择visual studio integration,否则后期配置会出现麻烦还需要自己复制一些东西去解决问题

1.3、tensorrt安装

参考:有道云笔记

1.4、cmake下载安装

cmake版本3.25.1,可以根据自己的情况选择安装自己需要的版本

官方网址:

https://cmake.org/download

下载地址:

https://github.com/Kitware/CMake/releases/download/v3.25.1/cmake-3.25.1-windows-x86_64.msihttps://github.com/Kitware/CMake/releases/download/v3.25.1/cmake-3.25.1-windows-x86_64.msi

 

 

 

 

 

 1.5、opencv下载:

自己源码编译,参考:win10+vs2017+opencv4.0.1+opencv_contrib-4.0.1详细教程_Bubble_water的博客-CSDN博客

或者直接下载官方编译好的文件,按照自己需要的版本下载:

Releases · opencv/opencv · GitHub
 

二、yolov5和tensorrtx源码下载
2.1、将下载下来的yolov5和tensorrtx仓库切换到6.2版本
yolov5仓库:https://github.com/ultralytics/yolov5,将其下载下来

将https://github.com/tronkko/dirent源码下载下来,cmakelist.txt里面会需要这个文件

切换到v6.2tag:

git checkout v6.2

如下图所示:

 2.2、tensorrtx仓库:https://github.com/wang-xinyu/tensorrtx,将其下载下来

切换到yolov5-v6.2tag:

git checkout yolov5-v6.2

如下图所示:

 四、cmake编译工程

4.1、修改tensorrtx\yolov5\CMakeLists.txt里面的内容如下:

cmake_minimum_required(VERSION 2.6)

project(yolov5) #1
set(OpenCV_DIR "E:\\workspace\\dll\\opencv4\\build")  #2
set(OpenCV_INCLUDE_DIRS ${OpenCV_DIR}\\include) #3
set(OpenCV_LIB_DIRS ${OpenCV_DIR}\\x64\\vc16\\lib) #4
set(OpenCV_Debug_LIBS "opencv_world454d.lib") #5
set(OpenCV_Release_LIBS "opencv_world454.lib") #6
set(TRT_DIR "E:\\workspace\\dll\\tensorrt\\TensorRT-8.2.5.1\\TensorRT-8.2.5.1")  #7
set(TRT_INCLUDE_DIRS ${TRT_DIR}\\include) #8
set(TRT_LIB_DIRS ${TRT_DIR}\\lib) #9
set(Dirent_INCLUDE_DIRS "E:\\yolov5\\dirent\\include") #10

add_definitions(-std=c++11)
add_definitions(-DAPI_EXPORTS)

option(CUDA_USE_STATIC_CUDA_RUNTIME OFF)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_BUILD_TYPE Debug)

set(THREADS_PREFER_PTHREAD_FLAG ON)
find_package(Threads)

# setup CUDA
find_package(CUDA REQUIRED)
message(STATUS "    libraries: ${CUDA_LIBRARIES}")
message(STATUS "    include path: ${CUDA_INCLUDE_DIRS}")

include_directories(${CUDA_INCLUDE_DIRS})

####
enable_language(CUDA)  # add this line, then no need to setup cuda path in vs
####
include_directories(${PROJECT_SOURCE_DIR}/include) #11
include_directories(${TRT_INCLUDE_DIRS}) #12
link_directories(${TRT_LIB_DIRS}) #13
include_directories(${OpenCV_INCLUDE_DIRS}) #14
link_directories(${OpenCV_LIB_DIRS}) #15
include_directories(${Dirent_INCLUDE_DIRS}) #16


# -D_MWAITXINTRIN_H_INCLUDED for solving error: identifier "__builtin_ia32_mwaitx" is undefined
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall -Ofast -D_MWAITXINTRIN_H_INCLUDED")

# setup opencv
find_package(OpenCV QUIET
    NO_MODULE
    NO_DEFAULT_PATH
    NO_CMAKE_PATH
    NO_CMAKE_ENVIRONMENT_PATH
    NO_SYSTEM_ENVIRONMENT_PATH
    NO_CMAKE_PACKAGE_REGISTRY
    NO_CMAKE_BUILDS_PATH
    NO_CMAKE_SYSTEM_PATH
    NO_CMAKE_SYSTEM_PACKAGE_REGISTRY
)

message(STATUS "OpenCV library status:")
message(STATUS "    version: ${OpenCV_VERSION}")
message(STATUS "    lib path: ${OpenCV_LIB_DIRS}")
message(STATUS "    Debug libraries: ${OpenCV_Debug_LIBS}")
message(STATUS "    Release libraries: ${OpenCV_Release_LIBS}")
message(STATUS "    include path: ${OpenCV_INCLUDE_DIRS}")



#add_executable(yolov5 ${PROJECT_SOURCE_DIR}/yolov5.cpp ${PROJECT_SOURCE_DIR}/common.hpp ${PROJECT_SOURCE_DIR}/yololayer.cu ${PROJECT_SOURCE_DIR}/yololayer.h)   #17

add_executable(yolov5 ${PROJECT_SOURCE_DIR}/yolov5.cpp ${PROJECT_SOURCE_DIR}/yololayer.cu ${PROJECT_SOURCE_DIR}/yololayer.h ${PROJECT_SOURCE_DIR}/preprocess.cu ${PROJECT_SOURCE_DIR}/preprocess.h)   #4  ${PROJECT_SOURCE_DIR}/preprocess.cu ${PROJECT_SOURCE_DIR}/preprocess.h  这是后来加的用于解决错误2,下面也有说明

target_link_libraries(yolov5 "nvinfer" "nvinfer_plugin") #18
target_link_libraries(yolov5 debug ${OpenCV_Debug_LIBS}) #19
target_link_libraries(yolov5 optimized ${OpenCV_Release_LIBS}) #20
target_link_libraries(yolov5 ${CUDA_LIBRARIES}) #21
target_link_libraries(yolov5 Threads::Threads)  

4.2、cmake运行

 选择自己的vs编译器版本和系统版本

 

 

 

 

 

 将tensorrtx\yolov5\gen_wts.py复制到https://github.com/ultralytics/yolov5训练源码文件夹下面

运行

#python gen_wts.py文件路径 -w pt权重文件路径

python gen_wts.py -w yolov5s.pt

运行结果如下:

 打开自己刚才build下面的Release文件夹,运行

需要将opencv_world454.dll放到Release文件夹下面,将wts序列化保持成tensorrt的engine格式

命令如下:

 ./yolov5.exe -s "E:\yolov5\yolov5\yolov5s.wts" yolov5s.engine s

 检测测试,说明成功了。接下来就是自己根据自己的情况进行封装程序了

 

 

 参考:

  • tensorrtx/run_on_windows.md at master · wang-xinyu/tensorrtx · GitHub
  • Tensorrtx+yolov5+windows10+vs2015+cuda11.1关键问题及步骤记录_如雾如电的博客-CSDN博客
  • windows上配置TensorRT yolov5 -6.0部署 tensorrtx视频流推理_野马AS的博客-CSDN博客
  • win10 tensorrtx yolov5使用方法_三毛的二哥的博客-CSDN博客_tensorrtx yolov5
  • win10 使用TensorRT部署 yolov5-v4.0(C++)_SongpingWang的博客-CSDN博客_yolov5 4.0
  • 【TensorRT】记一次使用C++接口TensorRT部署yolov5 v6.1模型的过程-pudn.com
  • Win10—YOLOv5实战+TensorRT部署+VS2019编译(小白教程~易懂易上手)---超详细_畅想未来2020的博客-CSDN博客_win yolo5编译
  • windows上配置TensorRT yolov5 -6.1部署 tensorrtx视频流推理-CFANZ编程社区
  • yolov5部署之七步完成tensorRT模型推理加速_Christo3的博客-CSDN博客_yolov5 tensorrt
  • YoloV5在tensorRT上加速(Windows)(C++)(webcam)_点PY的博客-CSDN博客_yolov5中webcam是什么

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/76347.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

手写Spring3(Bean构造函数的类实例化策略)

文章目录目标项目结构一、代码实现1、新增getBean接口2、定义实例化策略接口3、JDK 实例化4、Cglib 实例化5、创建策略调用二、测试1、准备2、测试用例3、测试结果目标 上一篇文章,我们实例化对象,是通过无参的构造方式生成 所以今天是解决包含参数的构…

docker镜像的导入导出,并发布到服务器上

比如我本地的vue项目,先打包编译为一个镜像: docker build -t cvport . 不会编译的可以看我这篇文章:使用docker构建vue项目并成功运行在本地和线上_1024小神的博客-CSDN博客 开始将镜像保存为一个tar文件: docker save -o cvp…

基于java+springmvc+mybatis+jsp+mysql的高校学术交流平台

项目介绍 高校学术交流平台是基于java编程语言,mysql数据库,ssm框架,idea开发工具开发,本系统有管理员和用户两个角色,其中用户可以注册登陆系统,查看校园资讯,学术交流帖子,发布帖…

Akka 学习(五)消息传递的方式

目录一 消息传递方式1.1 消息不可变1.2 ASK消息模式1.3 Tell消息模式1.4 Forward消息模式1.4 Pipe消息模式有4种核心的Actor消息模式:Tell、Ask、Forward和Pipe。一 消息传递方式 在这里,将从Actor之间发送消息的角度来介绍所有关于消息传递的概念。 ● …

【多线程(六)】并发工具类的基本使用、ConcurrentHashMap1.7版本及1.8版本底层原理分析

文章目录6.并发工具类6.1 并发工具类-Hashtable6.2 并发工具类-ConcurrentHashMap基本使用6.3 并发工具类-ConcurrentHashMap1.7原理6.4 并发工具类-ConcurrentHashMap1.8原理6.5 并发工具类-CountDownLatch6.6并发工具类-Semaphore总结6.并发工具类 6.1 并发工具类-Hashtable…

一文看懂MySQL中order by排序语句的原理

order by 是怎么工作的? 表定义 CREATE TABLE t1 ( id int(11) NOT NULL, city varchar(16) NOT NULL, name varchar(16) NOT NULL, age int(11) NOT NULL, addr varchar(128) DEFAULT NULL, PRIMARY KEY (id), KEY city (city)) ENGINEInnoDB;SQL语句可以…

零基础入门JavaWeb——Vue的生命周期

一、概念 在编程领域,生命周期是一个很常见的概念。一个对象从创建、初始化、工作、释放、清理和销毁,会经历很多环节的演变。 二、Vue对象的生命周期 三、生命周期钩子函数 Vue允许在特定的生命周期环节中通过钩子函数加入我们的代码。 3.1 示例代码…

基于双向LSTM模型进行电力需求预测(Matlab代码实现)

💥💥💥💞💞💞欢迎来到本博客❤️❤️❤️💥💥💥 🎉作者研究:🏅🏅🏅主要研究方向是电力系统和智能算法、机器学…

尚硅谷笔记——求和案例纯react版、redux精简版

家人们天气冷啦注意保暖呀,不要像我一样因为冷而不想起床学习,冬日里也不能放弃训练 看了两遍尚硅谷的redux课程,把reduc案例代码重新敲了一次为了加深印象还是写个播客把,强烈推荐大家看尚硅谷课太细致啦 redux 是什么&#x…

即将到来的2023,国内元宇宙开始“割”企业了?

元宇宙爆火一年后,UTONMOS即将成为全球化全部实现ERC-721协议NFT链上垂直游戏价值生态的系统平台,旨在通过利用自身所拥有的各类头部资源和游戏化打造内容层的融合,建立一个元气满满的元宇宙Web3.0平台。 通过数字藏品技术的应用&#xff0c…

Flask框架

Flask一 前言二 快速使用三 内置配置变量四 配置文件的写法五 路由六 cbv写法6.1 快速使用6.2 cbv加装饰器6.3 as_view的执行流程6.4 as_view的name参数6.5 继承View写cbv七 模板语法7.1 渲染变量7.2 变量的循环7.3 逻辑判断一 前言 Flask是一个基于Python开发并且依赖jinja2模…

Fluent中模型设置和数据的复用

1 背景 在实际工程中,必然存在利用仿真比较各类设计方案优劣的场景。 对于复杂模型,逐个设置各个设计方案的仿真模型并从头开始计算结果,既易错也耗时。因此需要通过模型设置和数据的复用,达到防错和提高工作效率。 2 模型设置复…

基于Docker做MySQL主从搭建与Django的读写分离

目录 基于Docker做MySQL主从搭建 django读写分离 基于Docker做MySQL主从搭建 主从的作用:写数据数据时使用主库,从库只用来读数据,这样做能够减少数据库压力,主从搭建可以一主一从,也可以是一主多从。 mysql主从配…

肝2022世界杯,怒写企业级镜像私仓Docker+Harbor实践

2022-12-09 揭幕2022卡塔尔世界杯4强角逐的第一天,越来越精彩了 同时记录程序猿的成长~ 1.背景 由于期望搭建一个企业级CICD的环境,开始尝试常规的gitlabjenkinsk8sdocker harborspringboot开始练手 其中版本如下: 1.gitlab: GitLab Com…

天权信安catf1ag网络安全联合公开赛---wp

文章目录misc简单隐写十位马WebhistoryCrypto疑惑ezrsapasswdre遗失的物品misc 简单隐写 丢进kali binwalk 分离一下 得到一个加密的压缩包 内含flag.txt 使用jphs无密码得到一个txt 得到password:catf1agcatf1agcatf1ag 解压压缩包得到一串字符串 dbug1bh{KQit_x1o_Z0v_…

threejs官方demo学习(2):相机

webgl_camera 不知道是哪里写的有问题,最终的效果,跟官方案例有比较大的差距。不过可以学到的知识点挺多的。 知识点 CameraHelper 相机辅助对象,用于模拟相机视锥体 // 创建透视相机 cameraPerspective new THREE.PerspectiveCamera(5…

二叉树路径和(c#)

问题描述 给定一个二叉树的根和一个整数值,如果二叉树中有根节点到叶子节点的路径上节点值的和等于给定的整数值,则返回真,否则返回假。 叶子节点:没有孩子的节点。 示例 示例1 Input: root [5,4,8,11,null,13,4,7,2,null,null,null,1], t…

两个List<Integer>在相同的值比较返回值为false的问题解析

写在前面:今天刷LeetCode的时候发现一个测试用例始终过不去&#xff0c;代码出问题处大概表述如下: List<Integer> a new ArrayList<>(); a.add(300); List<Integer> b new ArrayList<>(); b.add(300); if(a.get(0) b.get(0)){ 代码块B } else{ 代…

[生成 pdf 详解]

目录 前言: pom需要的依赖: 测试类: 效果: 生成表格PDF: 其他复杂的格式就去研究那个 如何生成吧 测试类代码: 前言: 摸鱼来的 pom需要的依赖: <dependency><groupId>com.itextpdf</groupId><artifactId>itextpdf</artifactId><vers…

【计算机毕业设计】76.垃圾分类系统源码

一、系统截图&#xff08;需要演示视频可以私聊&#xff09; 摘 要 随着现在网络的快速发展&#xff0c;网上管理系统也逐渐快速发展起来&#xff0c;网上管理模式很快融入到了许多国有企业的之中&#xff0c;随之就产生了“垃圾分类系统”&#xff0c;这样就让垃圾分类系统更…