当前位置: 首页 > news >正文

TenstoRT加速YOLOv11——python端加速

前言

        本文介绍python语言下使用TenstoRT加速YOLOv11推理
        如果你是新手,请结合TenstoRT加速YOLOv11——安装CUND和CUDNN-CSDN博客

一.下载TensorRT

下载地址:   TensorRT 10.x Download | NVIDIA Developer


 注意支持的CUDA版本,要对应
下载之后解压

二.将TenstoRT配置到YOLOv11环境中

点开python文件夹

注意这里cp-310代表python的版本3.10,你要看看自己yolo环境中的python版本。

我们复制过来将文件
cd到文件夹下进行下载

没有报错就安装好了

import torch
from ultralytics import YOLO# 1. 加载 YOLOv11 的 pt 模型
model = YOLO(r"D:\yolov5-project\11YOLO\ultralytics-main\yolo11n.pt")  # 你的权重文件路径# 2. 导出成 ONNX 格式
model.export(format="engine",       # 导出为 ONNXopset=12,            # ONNX opset 版本(12 或更高)dynamic=True,        # 动态输入尺寸simplify=True        # 尝试简化 ONNX 图)print("✅ YOLOv11 已成功导出为 ONNX 文件!")

这段代码是pt文件转为tensorrt所需的engine文件,填入pt文件,生成的engine文件会与pt文件在一个路径下。

将权重放入检测的代码就可以推理啦。

import cv2
import os
from ultralytics import YOLO# 加载 YOLOv8 模型
model = YOLO(r'E:\tenstort\11YOLO\yolo11n.engine')  # 请根据需要选择不同的模型# 输入图片、视频文件或摄像头
input_source = r"0" # 输入图片路径、视频路径,或0(摄像头)# 指定保存结果的文件夹
output_folder = r"D:\yolov5-project\11YOLO\runs\detect"
os.makedirs(output_folder, exist_ok=True)# 判断输入源类型:图片、视频、摄像头
if input_source.lower().endswith(('.jpg', '.jpeg', '.png', '.bmp', '.tiff')):# 输入是图片image = cv2.imread(input_source)results = model(image)# 绘制结果annotated_frame = results[0].plot()  # 绘制检测框output_image_path = os.path.join(output_folder, "result_imag e.jpg")cv2.imwrite(output_image_path, annotated_frame)  # 保存检测结果# 显示结果cv2.imshow('YOLOv11 Detection', annotated_frame)cv2.waitKey(0)cv2.destroyAllWindows()elif input_source.isdigit() or input_source == "0":# 输入是摄像头(0为默认摄像头)cap = cv2.VideoCapture(0)  # 使用摄像头while cap.isOpened():ret, frame = cap.read()if not ret:break# 使用模型进行推理results = model(frame)# 绘制结果annotated_frame = results[0].plot()  # 绘制检测框# 显示结果cv2.imshow('YOLOv11 Detection', annotated_frame)# 按 'q' 键退出if cv2.waitKey(1) & 0xFF == ord('q'):break# 释放资源cap.release()cv2.destroyAllWindows()else:# 输入是视频文件cap = cv2.VideoCapture(input_source)video_name = os.path.basename(input_source).split('.')[0]output_video_path = os.path.join(output_folder, f"{video_name}_result.mp4")# 获取视频的宽度、高度和帧率fps = cap.get(cv2.CAP_PROP_FPS)width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))# 设置视频编写器fourcc = cv2.VideoWriter_fourcc(*'mp4v')  # 使用mp4格式out = cv2.VideoWriter(output_video_path, fourcc, fps, (width, height))while cap.isOpened():ret, frame = cap.read()if not ret:break# 使用模型进行推理results = model(frame)# 绘制结果annotated_frame = results[0].plot()  # 绘制检测框# 写入处理后的帧到输出视频out.write(annotated_frame)# 显示结果cv2.imshow('YOLOv11 Detection', annotated_frame)# 按 'q' 键退出if cv2.waitKey(1) & 0xFF == ord('q'):break# 释放资源cap.release()out.release()cv2.destroyAllWindows()# 输出保存路径
print(f"Results saved to: {output_folder}")


 

http://www.dtcms.com/a/392827.html

相关文章:

  • 探索LiveTalking:开启实时数字人交互新时代
  • 【开题答辩全过程】以 Javaweb的火花流浪动物救助系统设计与实现为例,包含答辩的问题和答案
  • 链家二手房数据爬虫与预测项目 Python 线性回归 Scrapy+Django+Echarts 机器学习 大数据✅
  • Heptagon: 一项Scade工具的学术版原型
  • 师徒对决!阿森纳战曼城伤病情况 预计两队共11人缺席
  • 第37篇:AI伦理:偏见、公平性与负责任的人工智能
  • ubuntu18.04 编译VTK
  • ES6 新增特性
  • Pycharm中切换虚拟环境
  • 人工智能训练师
  • 【Linux】权限管理
  • C++哈希进阶:位图与布隆过滤器+海量信息处理
  • 林曦词典|无痛学习法
  • 树莓派CM4显示测序合集
  • python创建虚拟环境相关命令
  • 如何用AI把博客文章,“洗”成一篇学术论文?
  • 应用密码学课程复习汇总2——古典密码学
  • 应用密码学课程复习汇总1——课程导入
  • PyTorch 中 AlexNet 的构建与核心技术解析
  • 一文读懂:三防手机的定义、特性与使用场景
  • EG800G-CN不联网不定位
  • sqzb_alldsd——板子
  • Windows 快速检测 Docker / WSL2 安装环境脚本(附 GUI 版本)
  • Redis最佳实践——电商应用的性能监控与告警体系设计详解
  • 【C++】C++11(二)
  • 如何解决 pip install 安装报错 ModuleNotFoundError: No module named ‘selenium’ 问题
  • 实测美团LongCat-Flash:当大模型装上“速度引擎”,能否改写智能体战局?
  • unicode ascii utf-8的区别
  • Rust_2025:阶段1:day6.1 collect补充 ,迭代器补充 ,闭包,Hashmap搜索指定值的个数,合并迭代器
  • ESP32- 项目应用2 音乐播放器之音响驱动 #2