yolov8+tensorRT 基础教程笔记

yolov8+tensorRT 基础教程笔记
【大佬绕行,手下留情】

搭建环境

查看本地nvcc --version
个人如下:【最好在搭建和训练前找到合适自己的环境cuda cudnn torch torchvision :注意版本对应问题!CUDNN、CUDA、Torch、Torchvision等!否则…掉头发】
先明确自己硬件显卡支持的cuda,在查询tensorRt对应版本,确定cudnn版本。
可参考https://zhuanlan.zhihu.com/p/438939299
cuda版本查询
https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html#title-new-features

tensorRt版本下载
https://developer.nvidia.com/nvidia-tensorrt-8x-download

TensorRT-8.2.5.1.Windows10.x86_64.cuda-10.2.cudnn8.2
链接:https://pan.baidu.com/s/1RDmb9VpSI4RDQTqYDkXF3A
提取码:1e50

cudnn版本下载
https://developer.nvidia.com/rdp/cudnn-archive

cudnn-10.2-windows10-x64-v8.2.4.15
链接:https://pan.baidu.com/s/1–sPUraX_5QzxD4vHmtrRg
提取码:cddh

问题1:tensort7.0 不支持双线性插值
https://github.com/NVIDIA/TensorRT/issues/284
在这里插入图片描述

问题2:tensor–cunda–cuda 不匹配 是tensorRT6引起
在这里插入图片描述

TensorRT-7.0.0.11.Windows10.x86_64.cuda-10.2.cudnn7.6
链接:https://pan.baidu.com/s/12EuuYSEWHYtb-oSWu9x6NQ
提取码:nj9v
cudnn-10.2-windows10-x64-v7.6.5.32
链接:https://pan.baidu.com/s/1fThjDuDQXFYLqqRWVmg6Bw
提取码:g5xv
cuda_10.2.89_441.22_win10
链接:https://pan.baidu.com/s/1cn37wa6AnUcvwY6QjN8aaw
提取码:2avh

pip install torch1.8.1+cu102 torchvision0.9.1+cu102 torchaudio==0.8.1 -f https://download.pytorch.org/whl/torch_stable.html

安装完成后,源码克隆:
git clone https://github.com/ultralytics/ultralytics.git
一键安装
cd ultralytics
pip install -e .
数据准备【为YOLOv7和YOLOv5一致,采用如下结构,用labelimg做标签工具】
ultralytics/data
新建三个子文件夹和三个文件;
在这里插入图片描述在这里插入图片描述images 下包含 train、val 文件夹,存储 图片信息
在这里插入图片描述labels 下包含 train、val 文件夹,存储对应图片的标注信息
在这里插入图片描述在这里插入图片描述test_images 下包含测试数据集
*.yaml是数据加载配置文件
在这里插入图片描述准备—开始训练
下面~符合的相对路径修改成个人的绝对路径
1.打开终端,进入虚拟环境,进入yolov8的文件夹,
2.在~/ultralytics下新建的 weights (文件路径:~/ultralytics/weights),存放https://github.com/ultralytics/assets/releases下载好的规格的模型文件。
3.进入对应虚拟环境,cd yolov8文件夹,在终端输入命令开始训练
yolo task=detect mode=train model=weights/yolov8s.pt data=data/blob.yaml batch=1 epochs=150 imgsz=640 workers=16 device=0

在这里插入图片描述在这里插入图片描述

在这里插入图片描述在这里插入图片描述

设置多卡同时训练:yolov8的多卡训练 device='0,1,2,3’即可

yolo task=detect mode=train model=weights/yolov8s.pt data=data/blob.yaml batch=1 epochs=150 imgsz=640 workers=16 device=0,1,2,3
在这里插入图片描述训练结果如图,后面会使用存储路径

模型查看
在这里插入图片描述

模型验证
在终端输入如下命令,即可完成对验证数据的评估。
yolo task=detect mode=val model=~/train5/weights/best.pt data=data/fall.yaml device=0
在这里插入图片描述模型预测

使用如下命令,即可完成对新数据的预测,source需要指定为自己的图像路径
yolo task=detect mode=predict model=runs/detect/train3/weights/best.pt source=data/images device=0
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述模型导出
yolo task=detect mode=export model=~/train5/weights/best.pt format=onnx

2 onnx转为tensorrt的engine模型
2.1 官方代码提供了直接生成engine的方法,不推荐,因为绑定电脑环境,生成的engine同当前生成时电脑环境有关的,部署服务器上,如果环境不一致,则提前生成的engine不能用。故仅生成onnx模型,然后通过tensorrt的api进行模型转换。
参考 yolov8-instance-seg-tensorrt ;但是指针不释放???
附一个自己用的makelists
cmake_minimum_required(VERSION 3.0)
project(yolov8_seg)
add_definitions(-std=c++11)
option(CUDA_USE_STATIC_CUDA_RUNTIME OFF)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_BUILD_TYPE Release)
include_directories(${PROJECT_SOURCE_DIR})

find_package(OpenCV)
include_directories(${OpenCV_INCLUDE_DIRS})

set(CUDA_DIR “C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v10.1”)
set(CUDNN_DIR “E:/firefoxDown/cudnn-10.2-windows10-x64-v7.6.5.32/cuda”)
#set(TENSORRT_DIR “E:/E/TensorRT-6.0.1.5.Windows10.x86_64.cuda-10.1.cudnn7.6/TensorRT-6.0.1.5”)
set(TENSORRT_DIR “E:/firefoxDown/TensorRT-7.0.0.11.Windows10.x86_64.cuda-10.2.cudnn7.6/TensorRT-7.0.0.11”)

include_directories(
${CUDA_DIR}/include
${TENSORRT_DIR}/include
${CUDNN_DIR}/include
)

#protobuf的lib目录一定要比tensorRT目录前面,因为tensorRTlib下带有protobuf的so文件# 这可能带来错误
link_directories(
${TENSORRT_DIR}/lib
${CUDA_DIR}/lib/x64
${CUDNN_DIR}/lib/x64
)

find_package(CUDA REQUIRED)
message(STATUS " libraries: ${CUDA_LIBRARIES}")
message(STATUS " include path: C U D A I N C L U D E D I R S " ) i n c l u d e d i r e c t o r i e s ( {CUDA_INCLUDE_DIRS}") include_directories( CUDAINCLUDEDIRS")includedirectories({CUDA_INCLUDE_DIRS})
enable_language(CUDA)

add_executable(onnx2trt ${PROJECT_SOURCE_DIR}/main1_onnx2trt.cpp)
target_link_libraries(onnx2trt nvinfer)
target_link_libraries(onnx2trt nvonnxparser)
target_link_libraries(onnx2trt cudart)
target_link_libraries(onnx2trt ${OpenCV_LIBS})
add_executable(trt_infer ${PROJECT_SOURCE_DIR}/main2_trt_infer.cpp)
target_link_libraries(trt_infer nvinfer)
target_link_libraries(trt_infer nvonnxparser)
target_link_libraries(trt_infer cudart)
target_link_libraries(trt_infer nvinfer_plugin)
target_link_libraries(trt_infer ${OpenCV_LIBS})
add_definitions(-O2 -pthread)

2.2处理速度
参考wangxinyu大佬的tensorrtx项目中的yolov5-7.0的后处理方式。

  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值