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

Jeston + TensorRT + Realsense D435i + ROS noetic + Yolo11 各版本模型目标检测

这个博客用来同步我们的一个开源工程,在 Jeston 设备上实现了 CUDA、TensorRT 的加速推理,利用 Yolo11 模型以及 Realsense D435i 运行了示例,其中的主要难点是编译模型虚拟环境。

  • 开源项目:https://github.com/GaohaoZhou-ops/JestonYoloROS

【Note】:由于该项目中的 ReadMe 写的比较详细,建议直接去阅读项目中的介绍,因为优先同步的是源码中的内容。这篇博客将直接照搬中文版 README-CN.md 文件。


Jeston Yolo ROS

这个包是在 Nvidia Orin 上运行 Yolov11 模型,包含了五个基础功能节点:目标检测、语意分割、图像分类、姿态估计、OBB计算。

以下是这个仓库参考的博客与链接:

  • Ultralytics:https://github.com/ultralytics/ultralytics
  • Ultralytics Nvidia Jetson:https://docs.ultralytics.com/guides/nvidia-jetson/#install-pytorch-and-torchvision_1

【Note】如果你的设备是一台全新的 Nvidia Orin,建议参考下面的博客进行刷机,并且按照 【15. [可选] 安装 Yolo11 与 DeepStream】 章节完成安装,这样可以跳过下面的 【安装并配置 Ultralytics】 章节内容;

  • Nvidia Orin DK 刷机:https://blog.csdn.net/nenchoumi3119/article/details/149779298?spm=1001.2014.3001.5502

建议在你的环境中安装好 conda 以管理 python 虚拟环境。

编译好的模型和部分轮子资源可以通过下面的链接从网盘中:

https://pan.baidu.com/s/1pxzS423gZaWbsfSmpQGrsQ?pwd=24wj

软硬件确认

请先确认你的软硬件配置是否与通过测试的列表一致:

DeviceOSPlatformJetPackCUDAOpenCVROS
Nvidia Orin 64 GB DKUbuntu 20.04Arm645.1.311.4.3154.5.4 with CUDANoetic

Ultralytics 官网中 NVIDIA Jetson AGX Orin Developer Kit (64GB) 章节给出了一个不同模型的性能对照表,该表可以作为检测环境是否配置正确的依据,如果你最终的效果和这张表相差过大,请检查的你的 CUDA 与 TensorRT 是否配置正常:

在这里插入图片描述

通过下面的命令查看当前 CUDA 与 TensorRT 版本:

$ jetson_release

在这里插入图片描述


Step1. 安装并配置 Ultralytics

如果你在此之前没有安装过 Ultralytics 环境,首先应该执行下面的步骤,如果你已经在本地部署了 Ultralytics 环境那么可以跳过这一章节,但需要确保你的环境中 torchtorchvisiononnxruntime 是 GPU 加速的版本,通过下面的命令查看(假设你的conda环境名为 yolo11):

(base) $ conda activate yolo11
(yolo11) $ pip list | grep -E "torch|onnxruntime"
(yolo11) $ python -c "import torch; print(f'CUDA available: {torch.cuda.is_available()}')"

在这里插入图片描述

1.1 拉取源码并安装依赖

使用下面的命令拉取源码:

$ git clone https://github.com/ultralytics/ultralytics.git

使用下面的命令安装依赖库:

$ sudo apt-get install libgstreamer1.0-0 gstreamer1.0-tools gstreamer1.0-plugins-good 
$ sudo apt-get install gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly 
$ sudo apt-get install gstreamer1.0-libav libgstreamer-plugins-base1.0-dev 
$ sudo apt-get install libgstrtspserver-1.0-0 libjansson4 libyaml-cpp-dev

1.2 创建虚拟环境

此处推荐使用 python 3.8 版本的解释器,因为有经过 Nvidia 官方编译带 CUDA 加速的 torch 与 torchvision 轮子可用,其他版本的解释器可能需要自行编译这两个库;

(base) $ conda create -n yolo11 python=3.8 -y
(base) $ conda activate yolo11
(yolo11) $ cd ultralytics

在 ultralytics 目录下使用下面的命令初始化虚拟环境:

(yolo11) $ pip install -e ".[export]" onnxslim
(yolo11) $ pip install opencv-python libffi==3.3

使用下面的命令将被部分库替换成 CUDA 加速的版本:

(yolo11) $ pip uninstall torch torchvision onnxruntim numpy# 安装 numpy
(yolo11) $ pip install numpy==1.23.5# 安装 onnxruntime_gpu
(yolo11) $ wget https://nvidia.box.com/shared/static/zostg6agm00fb6t5uisw51qi6kpcuwzd.whl -O onnxruntime_gpu-1.17.0-cp38-cp38-linux_aarch64.whl
(yolo11) $ pip install onnxruntime_gpu-1.17.0-cp38-cp38-linux_aarch64.whl# 安装 torch
(yolo11) $ pip install https://github.com/ultralytics/assets/releases/download/v0.0.0/torch-2.2.0-cp38-cp38-linux_aarch64.whl# 安装 torchvision
(yolo11) $ pip install https://github.com/ultralytics/assets/releases/download/v0.0.0/torchvision-0.17.2+c1d70fe-cp38-cp38-linux_aarch64.whl

1.3 验证虚拟环境

使用下面的命令验证虚拟环境是否配置成功,你应该看到 CUDA available: True 字段

$ python -c "import torch; print(f'CUDA available: {torch.cuda.is_available()}')"

Step2. 拉取工程源码并编译

2.1 拉取源码

首先进入你的 ROS 工作空间,这里假设为 detect_ws

$ cd detect_ws/src
$ git clone --recursive https://github.com/GaohaoZhou-ops/JestonYoloROS.git

2.2 修改 realsense-ros 源码

为了能充分利用 OpenCV-CUDA 的加速潜能,需要对 realsense-ros 中的部分源码进行修改:

$ cd detect_ws/src/JestonYoloROS/realsense-ros
$ git checkout ros1-legacy
$ cd realsense2_camera

打开 CMakeLists.txt 文件并添加以下内容:

find_package(OpenCV REQUIRED)               # 添加 OpenCV 依赖
find_package(catkin REQUIRED COMPONENTSmessage_generationnav_msgsroscppsensor_msgsstd_msgsstd_srvsnodeletcv_bridgeimage_transporttfddynamic_reconfigurediagnostic_updaterOpenCV REQUIRED                         # 添加 OpenCV 依赖)...set(CMAKE_NO_SYSTEM_FROM_IMPORTED true)
include_directories(include${realsense2_INCLUDE_DIR}${catkin_INCLUDE_DIRS}${OpenCV_INCLUDE_DIRS}                  # 添加 OpenCV 头文件路径)...target_link_libraries(${PROJECT_NAME}${realsense2_LIBRARY}${catkin_LIBRARIES}${CMAKE_THREAD_LIBS_INIT}${OpenCV_LIBRARIES}                     # 添加 OpenCV 连接库)

2.3 编译工程

在编译工程前需要确保 conda 环境已经退出并回到你的工程目录下:

(base) $ conda deactivate
$ cd detect_ws$ catkin_make...
[ 86%] Built target yolo_detect_generate_messages_cpp
[ 80%] Built target yolo_detect_generate_messages_nodejs
[ 89%] Built target yolo_detect_generate_messages_py
[ 95%] Built target yolo_detect_generate_messages_eus
[100%] Built target realsense2_camera
[100%] Built target yolo_detect_generate_messages

2.4 添加脚本权限

使用下面的命令为工程中的 python 脚本添加可执行权限:

$ cd detect_ws
$ chmod +x src/yolo_detect/scripts/*

Step3. 获取模型

这里提供了两种方式获取适配 Jeston 设备平台的模型,你可以通过网盘下载可以就地编译,但推荐使用第二种就地编译方法,因为这样可以发挥出硬件加速的最佳性能。

3.1 [快速] 网盘下载

打开下面的链接找到你对应设备的模型,当前仅支持 Jeston AGX Orin 64 GB DK 硬件,后期会逐步添加 Jeston 其他平台的模型文件:

https://pan.baidu.com/s/1pxzS423gZaWbsfSmpQGrsQ?pwd=24wj

在这里插入图片描述

3.2 [推荐] 下载并编译模型

进入到你的 Ultralytics 安装目录下新建一个名为 download.py 的脚本并添加下面的内容,假设你想要下载的模型为 yolo11l-obb,有关 Yolo 模型更多的分支版本可以查看官方 Github 文档:

  • Yolo 模型分支版本:https://github.com/ultralytics/ultralytics?tab=readme-ov-file#-models

【Note】:代码中 sys.path.append('/usr/lib/python3.8/dist-packages/') 不可以省略,否则会运行报错**

from ultralytics import YOLO
import sys
sys.path.append('/usr/lib/python3.8/dist-packages/')import timemodel = YOLO("yolo11l-obb.pt")          # 修改此处与模型名对应
model.export(format="engine")  
trt_model = YOLO("yolo11l-obb.engine")  # 修改此处与模型名对应
results = trt_model("https://ultralytics.com/images/bus.jpg")

3.3 移动模型

下载好后将模型文件移动到 yolo_detect/models 目录下,如下所示:

(base) orin@ubuntu:~/detect_ws/src/yolo_detect$ tree
...
├── models
│   ├── yolo11l.engine      # 下载好的模型
│   ├── yolo11l.onnx
│   └── yolo11l.pt
├── msg
...

Step4. 运行示例

在运行所有示例之前首先启动 Realsense 相机:

$ cd detect_ws
$ source devel/setup.bash 
$ roslaunch realsense2_camera rs_rgbd.launch 

4.1 目标检测

$ conda activate yolo11
$ cd detect_ws
$ source devel/setup.bash 
$ roslaunch yolo_detect 2d_detect.launch

在这里插入图片描述

4.2 目标分割

$ conda activate yolo11
$ cd detect_ws
$ source devel/setup.bash 
$ roslaunch yolo_detect 2d_segmentation.launch

在这里插入图片描述

4.3 OBB

$ conda activate yolo11
$ cd detect_ws
$ source devel/setup.bash 
$ roslaunch yolo_detect 2d_obb.launch

在这里插入图片描述

4.4 图像分类

$ conda activate yolo11
$ cd detect_ws
$ source devel/setup.bash 
$ roslaunch yolo_detect 2d_classification.launch

在这里插入图片描述

4.5 姿态估计

$ conda activate yolo11
$ cd detect_ws
$ source devel/setup.bash 
$ roslaunch yolo_detect 2d_pose_estimate.launch

在这里插入图片描述


可能遇到的问题与解决方案

以下是你在应用该工程过程中可能遇到的问题以及对应的解决方案。

http://www.lryc.cn/news/610417.html

相关文章:

  • Flink CDC 介绍
  • Field and wave electromagnetics 复习
  • 正点原子阿波罗STM32F429IGT6移植zephyr rtos(四)---在独立的应用工程里使用MPU6050
  • 【Java】一篇详解HashMap的扩容机制!!
  • SparkSQL—sequence 函数用法详解
  • 四、Linux 的实用操作
  • wpf Image 转 90 度
  • 华为OD机考2025C卷 - 分配土地 (Java Python JS C++ C )
  • 复合机器人抓取精度怎么测量?
  • Tableau筛选器所有值与总和的差异:同一度量,两重世界
  • 【教学类-52-17】20250803动物数独_空格尽量分散_只有一半关卡数(N宫格通用版3-10宫格)0图、1图、2图、6图、有答案、无答案 组合版24套
  • 内网有人下载导致网速很慢怎么找出来?
  • Vue3核心语法进阶(生命周期)
  • MySQL InnoDB 表数据结构存储方式详解
  • 川翔云电脑:引领开启算力无边界时代
  • 数学 理论
  • 哪些企业需要私有化部署?有没有推荐的私有化im
  • 段落注入(Passage Injection):让RAG系统在噪声中保持清醒的推理能力
  • [Shell编程] 零基础入门 Shell 编程:从概念到第一个脚本
  • 【RH124知识点问答题】第8章 监控和管理 Linux 进程
  • Linux 磁盘管理详解:分区、格式化与挂载全流程指南
  • 内联函数:提升效率的空间换时间艺术
  • C++面试题及详细答案100道( 01-10 )
  • mongodb源代码分析创建db流程分析
  • 【论文阅读】ACE: Explaining cluster from an adversarial perspective
  • Makefile文件写法模板
  • 数据与模型优化随机森林回归进行天气预测
  • CLM陆面过程模式实践技术应用
  • 攻防世界-Mobile-easyjni
  • 8.高斯混合模型