python使用TensorRT引擎

python使用TensorRT引擎

安装pycuda (注意和自己的python和cuda版本匹配)

F:\Python38\python.exe F:\Python38\Scripts\pip.exe install  pycuda -i http://pypi.douban.com/simple/  --trusted-host pypi.douban.com
pip install  pycuda -i http://pypi.douban.com/simple/  --trusted-host pypi.douban.com

安装tensorrt

在这里插入图片描述

pip install E:\安装文件\Python\cuda\TensorRT-8.4.1.5\python\tensorrt-8.4.1.5-cp38-none-win_amd64.whl

把tensorrt库放到环境变量里

在这里插入图片描述

如果安装了最新版numpy,需要修改bool为bool_

在这里插入图片描述

# import time
# from ultralytics.yolo.engine.model import YOLO
from ultralytics import YOLO
import cv2
if __name__ == '__main__':
    # from ultralytics import YOLO
    # import threading
    # open_train = threading.Thread(target=test_train)
    # open_train.start()
    #
    # print_train = threading.Thread(target=test_predict)
    # print_train.start()
    # 1 加载模型
    # model = YOLO(r'D:\ACC_AI\python_GV_20230722\test_m\GV\weights\best.pt')
    # model = YOLO(r'yolov8s.pt')
    model = YOLO(r'D:\AI_AOI\GV\Python\python_GV_20230725\test_m\GV_S_22.engine')

    # 2 训练模型
    # model.train(data='GV.yaml', epochs=9999, imgsz=450, batch=12, workers=0, project="./test_m", name="GV",
    #             patience=100,
    #             rect=True,        #原图模式,去掉以后就是拼接模式。优先拼接模式训练到不能提升,再用原图模式训练10轮
    #             exist_ok=True)
    #
    img = cv2.imread(r"F:\Python_Dataset\GVIMAGES_Data\josn_20\train\images\20230710175650502_7.jpg")
    res = model.predict(source=img,imgsz=(224,480),device=0)
    print(res)
    # #

    # # 坐标
    # xy_xy = result1.boxes.cpu().numpy().xyxy
    # # 类别
    # cls = result1.boxes.cpu().numpy().cls  # Masks object for segmentation masks outputs
    # # 置信度
    # conf = result1.boxes.cpu().numpy().conf  # Class probabilities for classification outputs
    #
    model.export(format='engine',imgsz=(224,480),dynamic=True,device=0)


支持多图输入的导出

dynamic=True  :表示dynamic axes,即表示可以任意多图输入模型引擎中
model.export(format='engine',dynamic=True,imgsz=(480,224),device=0)
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要在 Python 中推理 TensorRT 模型,您需要使用 TensorRT Python API。TensorRT Python API 是一个 Python 包,它提供了一组用于加载、优化和推理 TensorRT 模型的函数和类。 下面是一些步骤,帮助您在 Python 中推理 TensorRT 模型: 1. 安装 TensorRT Python API:您需要从 NVIDIA 的官方网站下载和安装 TensorRT Python API。请确保您的系统满足 TensorRT Python API 的要求。 2. 加载和优化 TensorRT 模型:使用 TensorRT Python API 的函数和类来加载和优化 TensorRT 模型。您可以使用 TensorRT Python API 的 Builder 类来构建和优化 TensorRT 引擎。 3. 推理 TensorRT 模型:使用 TensorRT Python API 的函数和类来推理 TensorRT 模型。您可以使用 TensorRT Python API 的 Engine 类来执行推理操作。 4. 处理输出:您可以使用 Python 来处理 TensorRT 模型的输出。您可以将 TensorRT 模型的输出转换为 NumPy 数组,并使用 NumPy 函数对其进行处理。 下面是一个简单的示例,展示如何在 Python 中推理 TensorRT 模型: ```python import tensorrt as trt import numpy as np # 加载 TensorRT 模型 TRT_LOGGER = trt.Logger(trt.Logger.WARNING) with open("model.trt", "rb") as f: engine = trt.Runtime(TRT_LOGGER).deserialize_cuda_engine(f.read()) # 创建 TensorRT 推理上下文 context = engine.create_execution_context() # 准备输入数据 input_data = np.random.normal(size=(1, 3, 224, 224)).astype(np.float32) # 执行推理操作 bindings = [None] * engine.num_bindings inputs_idx = [engine.get_binding_index(name) for name in input_names] outputs_idx = [engine.get_binding_index(name) for name in output_names] bindings[inputs_idx[0]] = input_data output_data = np.empty(shape=engine.get_binding_shape(outputs_idx[0]), dtype=np.float32) bindings[outputs_idx[0]] = output_data context.execute_v2(bindings) # 处理输出数据 output_data = output_data.reshape(1, -1) output_data = np.argmax(output_data, axis=1) print(output_data) ``` 在这个示例中,我们首先加载了一个 TensorRT 模型,并创建了一个 TensorRT 推理上下文。然后,我们准备了输入数据,并使用 TensorRT 推理上下文执行了推理操作。最后,我们将输出数据转换为 NumPy 数组,并使用 NumPy 函数对其进行处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值