YOLOv8 Tensorrt Python/C++部署教程

news/2024/7/11 1:20:11 标签: python, YOLO, c++, 计算机视觉, 目标检测

B站教学视频

https://www.bilibili.com/video/BV1Pa4y1N7HS

Github仓库地址

https://github.com/Monday-Leo/YOLOv8_Tensorrt

Introduction

  • 基于Tensorrt加速Yolov8,本项目采用ONNX转Tensorrt方案
  • 支持Windows10Linux
  • 支持Python/C++

YOLOv8_12">YOLOv8

Environment

  • Tensorrt 8.4.3.
  • Cuda 11.6 Cudnn 8.4.1
  • onnx 1.12.0

Quick Start

安装yolov8仓库,并下载官方模型。

pip install ultralytics==8.0.5
pip install onnx==1.12.0
# download offical weights(".pt" file)
https://github.com/ultralytics/assets/releases/download/v0.0.0/yolov8n.pt

使用官方命令导出ONNX模型

yolo mode=export model=yolov8n.pt format=onnx dynamic=False

使用本仓库v8_transform.py转换官方的ONNX模型,会自动生成yolov8n.transd.onnx。

python v8_transform.py yolov8n.onnx

将生成的onnx模型复制到tensorrt/bin文件夹下,使用官方trtexec转化onnx模型。FP32预测删除--fp16参数即可

trtexec --onnx=yolov8n.transd.onnx --saveEngine=yolov8n_fp16.trt --fp16

C++

配置OpencvTensorrt环境,具体可参考https://github.com/Monday-Leo/Yolov5_Tensorrt_Win10

打开本仓库的CMakeLists.txt,修改OpencvTensorrt路径,之后cmake。

#change to your own path
##################################################
set(OpenCV_DIR "E:/opencv/build")  
set(TRT_DIR "E:/TensorRT-8.4.3.1")  
##################################################

预测图片zidane.jpg和模型yolov8n_fp16.trt放入exe文件夹,直接运行程序,没有做warmup预测,首次预测时间不准,想要精确计时请自行修改代码做warmup。想要修改模型路径和图片路径请修改主程序。

int main() {
	std::string img_path = "zidane.jpg";
	std::string model_path = "yolov8n_fp16.trt";
	single_inference(img_path,model_path);
	return 0;
}

Python

在刚才的C++工程中右键yolov8,点击属性,修改为动态链接库

将本仓库的python_trt.py复制到dll文件夹下。

设置模型路径,dll路径和想要预测的图片路径,特别注意模型路径需要加b’’

det = Detector(model_path=b"./yolov8n_fp16.trt",dll_path="./yolov8.dll")  # b'' is needed
img = cv2.imread("./zidane.jpg")

Reference

https://github.com/ultralytics/ultralytics

https://github.com/shouxieai/infer


http://www.niftyadmin.cn/n/260150.html

相关文章

springboot实现excel导入转换成 bean存入数据库:二(注意事项)

即使不做Excelbean也可以在DTO的属性上使用ExcelProperty注解来指定需要转换的属性。ExcelProperty注解有三个参数,分别是value、index和converter。其中,value表示Excel中的列名或列索引;index表示Excel中的列索引;converter表示…

Hive ---- Hive入门

Hive ---- Hive入门 1. 什么是Hive1. Hive简介2. Hive本质 2. Hive架构原理1. 用户接口:Client2. 元数据:Metastore3. 驱动器:Driver4. Hadoop 1. 什么是Hive 1. Hive简介 Hive是由Facebook开源,基于Hadoop的一个数据仓库工具&a…

数据湖Iceberg-存储结构(2)

文章目录 存储结构数据文件 data files表快照 Snapshot清单列表 Manifest list清单文件 Manifest file 数据湖Iceberg-简介(1) 数据湖Iceberg-存储结构(2) 数据湖Iceberg-Hive集成Iceberg(3) 数据湖Iceberg-SparkSQL集成(4) 数据湖Iceberg-FlinkSQL集成(5) 数据湖Iceberg-Flink…

主动式电容笔是什么?苹果平替电容笔性价比高的推荐

苹果Pencil在市场上有需求吗?苹果的原装电容笔,虽然功能强大,但价格却非常的昂贵。当然,你也可以用这个苹果Pencil,不过,如果你不想花大价钱买它,就可以选一支平替的电容笔。就当前的科技水平而…

开放式耳机有什么好处,盘点几款性能不错的开放式耳机

随着人们对生活质量要求的提高,大家在运动的时候都喜欢戴上耳机,享受运动的乐趣。但是传统耳机戴久了之后就会出现耳朵酸痛的情况,这是因为传统耳机佩戴方式是通过空气振动来传递声音,而人在运动时就会伴随着大量的汗水&#xff0…

redhat8配置vsftpd服务

目录 一、匿名访问模式 1.1、ftp服务器端修改配置(配置文件:/etc/vsftpd/vsftpd.conf) 1.2 修改ftp目录的权限 1.3 设置selinux服务对ftp服务的访问规则策略为允许 1.4 防火墙添加ftp服务 1.5 测试 二、本地用户模式 2.1 服务端修改配…

Ubuntu:离线安装docker

简介:在 Ubuntu 上离线安装 Docker 需要事先在有网络连接的设备上下载 Docker 安装包及其依赖项,然后将这些文件传输到目标 Ubuntu 设备上进行安装。 历史攻略: ubuntu卸载docker centos7.6:安装docker 离线安装 Docker 的步骤…

【Python基础-Pandas】dataframe中将两个日期间的数据补全

1. 目的 目前dataframe中的数据如下,每一行数据表示的该日之前的那一周的平均价格指数,比如第一行数据为data_time2023-04-06, price_index132,表示从2023-03-29到2023-04-05之间的7天的价格指数的平均值为132。现在需要将这些间隔的日期中的…