yolov8 dll 编译

news/2024/9/25 16:15:42/

1. 每次用yolo v8 都要用python ,对于我这种写软件的太不方便了,下面尝试编译dll 调用, 我已经有做好的模型.best.pt

参考视频方法:

yolov8 TensorRT C++ 部署_哔哩哔哩_bilibili

【yolov8】tensorrt部署保姆级教程,c++版_哔哩哔哩_bilibili

需要工具:

1.vs2019
2.tensorRt 8.0+

3.opencv 4.0+


TensorRt的链接: GitHub - wang-xinyu/tensorrtx: Implementation of popular deep learning networks with TensorRT network definition API

TensorRt官方下载

https://developer.nvidia.com/nvidia-tensorrt-8x-download


opencv 我之前就已经编译好了 , 自行编译

cmake list:

cmake_minimum_required(VERSION 3.10)

project(yolov8)

add_definitions(-std=c++11)
add_definitions(-DAPI_EXPORTS)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_BUILD_TYPE Debug)

set(CMAKE_CUDA_COMPILER C:\\Program Files\\NVIDIA GPU Computing Toolkit\\CUDA\\v11.3\\bin\\nvcc)
enable_language(CUDA)

include_directories(${PROJECT_SOURCE_DIR}/include)
include_directories(${PROJECT_SOURCE_DIR}/plugin)

# include and link dirs of cuda and tensorrt, you need adapt them if yours are different
if (CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64")
  message("embed_platform on")
  include_directories(C:\\Program Files\\NVIDIA GPU Computing Toolkit\\CUDA\\v11.3\\include)
  link_directories(C:\\Program Files\\NVIDIA GPU Computing Toolkit\\CUDA\\v11.3\\lib\\x64)
else()
  message("embed_platform off")
  # cuda
  include_directories(C:\\Program Files\\NVIDIA GPU Computing Toolkit\\CUDA\\v11.3\\include)
  link_directories(C:\\Program Files\\NVIDIA GPU Computing Toolkit\\CUDA\\v11.3\\lib\\x64)

  # tensorrt
  include_directories(C:\\Program Files\\NVIDIA GPU Computing Toolkit\\CUDA\\v11.3\\include)
  link_directories(C:\\Program Files\\NVIDIA GPU Computing Toolkit\\CUDA\\v11.3\\lib)
#  include_directories(/home/lindsay/TensorRT-7.2.3.4/include)
#  link_directories(/home/lindsay/TensorRT-7.2.3.4/lib)


endif()

add_library(myplugins SHARED ${PROJECT_SOURCE_DIR}/plugin/yololayer.cu)
target_link_libraries(myplugins nvinfer cudart)

find_package(OpenCV)
include_directories(${OpenCV_INCLUDE_DIRS})


file(GLOB_RECURSE SRCS ${PROJECT_SOURCE_DIR}/src/*.cpp ${PROJECT_SOURCE_DIR}/src/*.cu)
add_executable(yolov8_det ${PROJECT_SOURCE_DIR}/yolov8_det.cpp ${SRCS})

target_link_libraries(yolov8_det nvinfer)
target_link_libraries(yolov8_det cudart)
target_link_libraries(yolov8_det myplugins)
target_link_libraries(yolov8_det ${OpenCV_LIBS})

add_executable(yolov8_seg ${PROJECT_SOURCE_DIR}/yolov8_seg.cpp ${SRCS})
target_link_libraries(yolov8_seg nvinfer cudart myplugins ${OpenCV_LIBS})

开始编译 cmake

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.3\extras\visual_studio_integration\MSBuildExtensions

这下面所有文件复制到

C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\MSBuild\Microsoft\VC\v160\BuildCustomizations

弄完之后记得重启电脑

buld完了之后把engin.props 和 opencv.props 还有 tensor8.5.3.1 添加进C++的VS项目里面

报错:

1.转.pt 文件的时候No module named 'ultralytics.yolo'

解决:pip install ultralytics==8.0.100

2. cuda_utils.h 报错不存在

myplugins 文件属性添加

3.报错direct.h 不存在,用everything查找全盘,发现yolov9里面有个direct.h,直接移植到cuda的include目录就可以了

4.threadIdx、blockDim、blockIdx未定义标识符
这时直接运行程序看看是否可以运行,能运行就不用管不能运行加头文件 #include <device_launch_parameters.h>

5 .atomicAdd未定义标识符,同上,当不能运行时加头文件 #include <sm_20_atomic_funct>


http://www.ppmy.cn/news/1439626.html

相关文章

深入理解Java消息中间件-Apache Kafka

在数字化时代&#xff0c;数据如同血液一样流动于现代应用的每一个角落。如何高效、可靠地处理这些数据流&#xff0c;成为了构建响应式、可扩展和弹性系统的关键挑战。作为一名专业的Java技术架构师和作家&#xff0c;我将深入分析Apache Kafka这一广泛使用的Java消息中间件解…

[C++学习记录]---实现写文件和读文件

前言 C中写文件和读文件基本原理。都是通过文件流对象来实现的&#xff0c;可以通过适当的打开模式来控制文件的读写行为。 正文 01-写文件 具体代码解释如下&#xff1a; 包含头文件&#xff1a; 首先需要包含 <fstream> 头文件&#xff0c;这个头文件包含了对…

docker制作zookeeper镜像

制作 Zookeeper 镜像的步骤通常包括以下几个主要步骤&#xff1a; 准备 Dockerfile&#xff1a;编写 Dockerfile 文件&#xff0c;定义如何构建 Zookeeper 镜像。 构建镜像&#xff1a;使用 Dockerfile 构建 Zookeeper 镜像。 运行容器&#xff1a;运行基于构建的镜像创建的容…

mybatis-plus 基本使用

1. 引入依赖 首先&#xff0c;pom.xml 中添加MyBatis-Plus的依赖 <!-- Maven中的依赖示例 --> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>版本</versi…

Android Glide 获取动图的第一帧

一、说明 Glide 可以加载 2 种动图&#xff0c;一种是 Gif 图&#xff0c;另一种是 Webp 动图。 有时候我们需要获取动图的第一帧&#xff0c;并以封面的形式显示&#xff0c;那该怎样获取呢&#xff1f; 二、获取 Webp 第一帧 我这儿的 Webp 显示用到了一个三方库&#xf…

商城数据库88张表结构(十二)

DDL 45.商城信息表 CREATE TABLE wang_messages (id int(11) NOT NULL AUTO_INCREMENT COMMENT 自增id,msgType tinyint(4) NOT NULL DEFAULT 0 COMMENT 消息类型(0:后台手工发送的消息 1:系统自动发的消息),sendUserid int(11) NOT NULL DEFAULT 0 COMMENT 发送者id,receiveU…

Ubuntu 24.04 LTS (Noble Numbat) 正式版发布

Ubuntu 24.04 LTS (Noble Numbat) 正式版发布 Canonical 的第 10 个长期支持版本在性能工程、企业安全和开发人员体验方面树立了新标准 请访问原文链接&#xff1a;Ubuntu 24.04 LTS (Noble Numbat) 正式版发布&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。…

“PowerInfer:消费级GPU上的高效大语言模型推理引擎“

PowerInfer是由上海交通大学IPADS实验室开发的一个高效大语言模型&#xff08;LLM&#xff09;推理引擎&#xff0c;专为个人电脑&#xff08;PC&#xff09;上的消费者级GPU设计。它通过利用LLM推理中的高局部性&#xff0c;实现了快速且资源消耗低的模型推理&#xff0c;这一…