Jetson AGX Orin 下TensorRT-Alpha模型部署及YOLOv8 C++部署

1、系统环境:

Jetpack5.1.2、CUDA11.4、Cudnn8.6.0、Tensorrt8.5.2、OpenCV4.5

主要参考链接:Jetson Xavier NX 下 yolov8 tensorrt模型部署(Jetpack5.1.2、CUDA11.4、Cudnn8.6.0、Tensorrt8.5.2)_yolov8在jetson上部署-CSDN博客

2、TensorRT-Alpha模型下载

下载链接:GitHub - FeiYull/TensorRT-Alpha: 🔥🔥🔥TensorRT for YOLOv8、YOLOv8-Pose、YOLOv8-Seg、YOLOv8-Cls、YOLOv7、YOLOv6、YOLOv5、YOLONAS......🚀🚀🚀CUDA IS ALL YOU NEED.🍎🍎🍎

3、TensorRT-Alpha模型部署:(yolov8为例)

设置TensorRT根目录(安装目录)路径:

git clone https://github.com/FeiYull/tensorrt-alpha
cd tensorrt-alpha/cmake
vim common.cmake。
# 把common.cmake文件第20行中的TensorRT_ROOT修改成您的TensorRT安装目录。例如改成如下:
# set(TensorRT_ROOT /home/feiyull/TensorRT-8.4.2.4)

其中Jetson板子中的tensorrt默认路径为/usr/src/tensorrt

4、Yolov8 C++模型部署(参考官网):

a、转为onnx模型

step1 # install yolov8
conda create -n yolov8 python==3.8 -y # for Linux

step2 # 
conda activate yolov8
pip install ultralytics==8.0.5
pip install onnx==1.12.0
pip install onnx-simplifier==0.4.8

step3 #切换到ultralytics包目录
cd home/nvidia/miniforge-pypy3/envs/yolov8/lib/python3.8/site-packages/ultralytics

step4 # download offical weights(".pt" file)
https://github.com/ultralytics/assets/releases/download/v0.0.0/yolov8s.pt

step5 #创建转换脚本:yolo.py 具体内容如下:
from ultralytics import YOLO
# Load the YOLOv8 model
model = YOLO('yolov8s.pt')
# Export the model to ONNX format
model.export(format='onnx')  # creates 'yolov8s.onnx'
# Load the exported ONNX model
onnx_model = YOLO('yolov8s.onnx')
# Run inference
results = onnx_model('https://ultralytics.com/images/bus.jpg')

# ultralytics包使用参考链接 https://docs.ultralytics.com/zh/integrations/onnx/#common-usage-of-onnx


step6 #执行脚本 在当前目录下获得onnx文件
python3 yolo.py


# 或者直接下载onnx模型,https://share.weiyun.com/3T3mZKBm

b、使用tensorrt转换onnx文件为trt文件

#将上一步导出的onnx文件放在刚才在开发板上git的tensorrt-alpha/data/yolov8文件夹下

$ cd /tensorrt-alpha/data/yolov8

#声明使用到的tensorrt路径
$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/src/tensorrt

$ /usr/src/tensorrt/bin/trtexec   --onnx=yolov8s.onnx  --saveEngine=yolov8s.trt  --minShapes=images:1x3x640x640 --optShapes=images:2x3x640x640 --maxShapes=images:4x3x640x64

5、cmake

$ cd tensorrt-alpha/yolov8
$ mkdir build
$ cd build
$ cmake ..
$ make -j10

这是由于tensorrt版本过高导致,tensorrt8.4版本可能不会出现以上错误。
我板子上使用的是tensorrt8.5.2,这个版本tensorrt下的sampleOptions.cpp文件中未定义splitToStringVec函数会出现以上错误。所以需要进行以下修改
首先进入到/usr/src/tensorrt/samples/common文件夹下,打开终端,执行如下命令

$ sudo vim sampleUtils.h

Esc + i 插入

Esc + shift + wq 保存退出

在第77行可以看到关于splitToStringVec函数的一个声明,但并未定义,所以将它注释掉,如下所示:

// std::vector<std::string> splitToStringVec(std::string const& option, char separator);

之后保存退出(Esc + shift: + wq),打开sampleOptions.cpp文件,将splitToStringVec函数的定义添加在这

$ sudo vim sampleOptions.cpp

#在文件的38行,也就是namespace中添加如下代码

std::vector<std::string> splitToStringVec(const std::string& option, char separator)
{
    std::vector<std::string> options;

    for (size_t start = 0; start < option.length();)
    {
        size_t separatorIndex = option.find(separator, start);
        if (separatorIndex == std::string::npos)
        {
            separatorIndex = option.length();
        }
        options.emplace_back(option.substr(start, separatorIndex - start));
        start = separatorIndex + 1;
    }

    return options;
}

之后保存退出,再一次编译,就成功啦。

6、Run

## 640
# infer image
./app_yolov8  --model=../../data/yolov8/yolov8s.trt --size=640 --batch_size=1  --img=../../data/6406407.jpg   --show --savePath=../

# infer video
./app_yolov8  --model=../../data/yolov8/yolov8s.trt     --size=640 --batch_size=2  --video=../../data/people.mp4  --show

# infer camera
./app_yolov8  --model=../../data/yolov8/yolov8s.trt     --size=640 --batch_size=2  --cam_id=0  --show

  • 32
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
要在NVIDIA Jetson AGX Orin部署YOLOv8,您需要按照以下步骤进行操作: 1. 首先,您需要从GitHub上克隆YOLOv5的代码库。使用以下命令在终端中执行克隆操作: ``` git clone -b v4.0 https://github.com/ultralytics/yolov5.git ``` 2. 进入克隆的目录: ``` cd yolov5 ``` 3. 接下来,您需要下载并准备YOLOv8所需的权重文件。您可以从YOLOv5的发布页面上找到这些权重文件。 4. 将权重文件放入`yolov5/weights`目录中。 5. 然后,您可以使用以下命令运行YOLOv8的推理: ``` python3 detect.py --weights weights/yolov8.weights --source <输入源> --conf <置信度阈值> ``` 其中,`<输入源>`是您要检测的图像或视频的路径,`<置信度阈值>`是过滤边界框的置信度阈值。 请注意,以上步骤是基于YOLOv5的部署方法。如果您需要使用YOLOv8而不是YOLOv5,请确保您已获得相应的YOLOv8权重文件,并将其放置在适当的目录中。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Jeston AGX Orin安装Pytorch1.11.0+torchvision0.12.0](https://blog.csdn.net/beautifulback/article/details/125717717)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [jeston nano镜像_YOLOv5+MobileNet.rar](https://download.csdn.net/download/python_yjys/77527616)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [Nvidia jetson agx部署yolov5,并测试](https://blog.csdn.net/weixin_43008635/article/details/129596150)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值