Skip to content

在NVIDIA Jetson AGX Xavier上进行边缘部署,基于TensorRT加速,使用yolov5 v6.0仓库进行处理

Notifications You must be signed in to change notification settings

WitBlue6/-TensorRT-

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

基于TensorRT加速的智能遥感图像处理系统

本仓库基于NVIDIA Jetson AGX Xavier实现基于TensorRT加速的远程遥感图像处理边缘部署。

实验中使用MacBook Air M4作为上位机,将遥感图像通过websocket发送至Jetson开发板,Jetson AGX Xavier作为边缘设备,使用TensorRT进行模型推理,将处理后的图像通过websocket发送回上位机。

效果展示

视频链接

【嵌入式第二次大作业-智能遥感图像处理系统】 https://www.bilibili.com/video/BV1xDMAzsEp8

主界面

image

加速效果

由原来平均1200ms处理一张图片加速到40ms以内
image

Agent智能代理

image

1.运行仓库代码

1.1 网络连接

要实现两个设备时间数据互传,首先要保证两台设备之间能够ping通

代码使用端口号为8765,请确保防火墙允许该端口号的通信!!!

1.2 代码运行

打开终端,输入以下命令下载仓库:

# 克隆仓库
git clone 

# 进入目录
cd yourrepository

1.2.1 上位机

项目中 transfer 目录包含上位机所有代码。

安装依赖

# 进入目录
cd ./transfer

# 安装依赖
pip install -r requirements.txt

修改ip地址

安装完依赖后,首先修改代码中ip地址为自己主机与jetson开发板的ip地址。

if __name__ == "__main__":
    # 示例配置,根据需要修改
    my_ip = "10.194.151.116"  # 上位机
    my_port = 8765
    server_uri = "ws://10.171.103.229:8765"  # jetson开发板

指定大模型API

运行大模型需要指定环境变量

vim .env
# 写入你自己的大模型API
GPT_BASE_URL=YOUR_BASE_URL
GPT_API_KEY=YOUR_API_KEY

或者手动指定,需要删除代码中 load_env(".env")

export GPT_BASE_URL=YOUR_BASE_URL
export GPT_API_KEY=YOUR_API_KEY

运行代码

python main.py

大模型默认索引目录为./datas,如要修改,请修改user_read_file、user_list_file、user_load_image中的base_path

1.2.2 开发板

开发板Jetpack系统版本为 4.6.5 ,支持最高Python版本为 3.6.9

安装依赖
# 进入目录
cd ./receive

# 安装依赖
pip install -r requirements.txt

修改ip地址

同理修改代码中ip地址

if __name__ == "__main__":
    transfer = RealTimeImageTransfer(
        "10.171.103.229",  # jetson
        8765,
        "ws://10.194.128.156:8765",  # 上位机
        './build/yolov5s-best.engine' # 引擎文件地址
    )
    transfer.run()

修改引擎文件(.pt文件)地址

请保证引擎文件地址或.pt文件路径正确!!!,不正确请修改

# 运行引擎文件
vim run_engine.py
# 修改第457行
'./build/yolov5s-best.engine'

# 运行.pt文件
vim run_yolo.py
# 修改第63行
img_process, detection_info = detect_image(img, weights="best.pt", device="0")

运行代码

# 请先在代码中配置.engine文件(或.pt文件)的路径,并保证网络通畅
# 运行未加速的yolov5处理
python run_yolo.py

# 运行TensorRT加速的yolov5处理
python run_engine.py

2.低版本Jetson平台部署TensorRT指南

由于Jetson平台的版本较低,我们无法直接使用Yolov8库中自带的TensorRT。因此,我们需要手动部署TensorRT。

2.1 资源准备

假设你已经拥有使用 yolov5-v6.0 训练得到 .pt 权重文件(例如:yolov5s.pt

# 克隆 YOLOv5 官方仓库 (v6.0 分支)
git clone -b v5.0 https://github.com/ultralytics/yolov5.git

#具体训练步骤参考git官方步骤,通过训练后可以得到后续所需.pt格式文件。

# 根据提供的requirements.txt即可
pip install -r requirements.txt

2.2 部署步骤

2.2.1 克隆代码仓库

# 克隆 TensorRTX 转换工具 (适配 YOLOv5-v6.0)(本文件夹中的yolov5)
git clone -b yolov5-v5.0 https://github.com/wang-xinyu/tensorrtx.git

2.2.2 生成.wts文件

# 进入 tensorrtx/yolov5 目录
cd tensorrtx/yolov5

# 运行转换脚本 (需指定你的 .pt 文件路径)
python gen_wts.py -w /path/to/your/yolov5s.pt -o best.wts

2.2.3 生成引擎文件

# 在 tensorrtx/yolov5 下创建 build 目录
mkdir build && cd build

# 复制上一步生成的 .wts 文件到 build 目录
cp ../best.wts .

# 编译项目
cmake .. && make

# 生成引擎文件 (耗时约 5-20 分钟)
sudo ./yolov5 -s best.wts yolov5s.engine s

2.2.4 使用.engine查看加速效果

# 使用Jetson开发板运行
cd ./receive

# 请先配置好引擎文件的路径,同时确保上位机和板子的ip正确

python run_engine.py

2.2.5 使用.pt查看未加速对比

python run_yolo.py

About

在NVIDIA Jetson AGX Xavier上进行边缘部署,基于TensorRT加速,使用yolov5 v6.0仓库进行处理

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published