Pytorch利用TensorRT在NVIDIA Jetson Nano上加速

之前做了个项目,就是在Jetson Nano上做实时图像分割。输入是一个HDMI的采集卡,输出是显示器。用pytorch做了个分割模型在上面直接跑。Pytorch用的1.3,具体环境配置略过。

经过代码赤果果的搬运之后,发现inference需要70ms,加上数据采集/数据前处理和后处理和图像显示花120ms。而且原始图像和处理过的图像之间误差了1.5s以上。

首先,我们把inference的cost降下来,首先我们改成TensorRT实现。用pip3 list查找了一下,官方给的系统默认装了TensorRT 5。看了TensorRT的sample,感觉要死了,还要重新把模型撸一遍,我不答应。GitHub看看有没有人写了torch2trt。果真还有,https://github.com/NVIDIA-AI-IOT/torch2trt,里面的readme写的好人性化,我好稀罕。根据它的Setup提示安装好了。接下来根据他的说明改几行代码就OK了

from torch2trt import *
import torch
from torchvision.models import *

device = torch.device("cuda" if torch.cuda.is_available() else "cpu")

#随便加个模型,加载好参数
model_org = resnet18(pretrained=True)
model_org.to(device)
model_org.eval() #这步需要

test1 = torch.rand(1,3,224,224).to(device)

#一定要设max_workspace_size,否则会报空间不足的错误
#fp16_mode精度高一些,int8_mode精度不太好,但是速度快
model = torch2trt(model_org, [test1], fp16_mode=True, max_workspace_size=100)
model.eval()

#第一次推断耗时较长
test2 = model(test1.cuda())

...

上面调的代码跟它的说明有些不全的地方,我在注释里面都写了。fp16的推断耗时降低到30ms,int8的推断降低到25ms。但是我不在乎这5ms。但是采集的延时依旧没有降低,还是卡在1s多。究竟是怎么回事呢?

就是怎样的我也不知道了,反正根据网友的解决办法采集2次就能大大降低延时,即:

import cv2

cap = cv2.VideoCapture(0)

while True:
    ret, frame = cap.read()
    ret, frame = cap.read()

我猜估计是总线被占了

  • 2
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 11
    评论
### 回答1: 要在Jetson Nano上部署YoloX,您可以按照以下步骤进行操作: 1. 安装JetPack SDK:JetPack SDK是NVIDIA Jetson平台的软件开发工具包,包括操作系统、CUDA、TensorRT等必要组件。您可以从NVIDIA官网下载并安装适用于Jetson Nano的JetPack SDK。 2. 安装PyTorch:YoloX是基于PyTorch框架实现的,因此您需要在Jetson Nano上安装PyTorch。您可以使用pip命令安装PyTorch,也可以从源代码编译安装。 3. 下载YoloX代码:您可以从YoloX的GitHub仓库下载源代码,并将其复制到Jetson Nano上。 4. 下载预训练模型:YoloX需要使用预训练模型进行目标检测。您可以从YoloX的GitHub仓库下载预训练模型,并将其复制到Jetson Nano上。 5. 运行YoloX:在Jetson Nano上运行YoloX,您需要使用Python脚本调用YoloX的API,并传入相应的参数。您可以参考YoloX的文档和示例代码进行操作。 需要注意的是,由于Jetson Nano的计算资源有限,可能会影响YoloX的性能。您可以通过调整模型参数、使用更高效的算法等方式来优化YoloX的性能。 ### 回答2: Jetson Nano是一款小型、低功耗的人工智能计算机,而YOLOX则是一种基于目标检测的模型,用于实时识别图像中的对象。在Jetson Nano上部署YOLOX可以让我们使用这个强大的小型计算机进行高效的目标检测。 首先,我们需要准备Jetson Nano开发板和一台电脑。在电脑上,我们需要进行一些准备工作,包括安装JetPack和配置SSH远程连接。JetPack是一种能够在Jetson Nano上安装所需软件的软件包,其中包括CUDA、cuDNN等开发工具,这些工具可以支持将YOLOX部署到Jetson Nano上。SSH远程连接可以使我们在Jetson Nano上直接使用电脑的命令行。 接下来,我们需要下载YOLOX的源代码,并进行配置和编译。具体来说,我们需要安装Python3、Numpy、Pillow、torch、opencv-python等软件包,并将其与Jetson Nano的架构匹配。这些工具可以使我们更加方便地进行模型训练和推理。 然后,我们需要选择适合我们的数据集并进行训练。这里我们可以使用COCO数据集或其他开源数据集进行训练。在训练过程中,我们需要进行超参数的调整和优化,以达到最佳的目标检测效果。 最后,在经过训练的YOLOX模型上运行推理,并确定模型在不同场景下的准确率。为了实现实时目标检测,我们可以使用OpenCV库将摄像头的实时图像输入到YOLOX模型中,以检测图像中的对象。 总之,在Jetson Nano上部署YOLOX需要执行一系列复杂的步骤,包括软件安装、数据集训练和模型推理。我们需要耐心和精力投入,才能最终实现高效的目标检测。 ### 回答3: Jetson Nano是针对边缘计算开发的一款小型计算机,而YoloX是一种新型的目标检测算法,可以在低功耗设备上快速识别目标。在Jetson Nano上部署YoloX可以让我们在嵌入式设备上实现实时目标检测,非常有用。 部署YoloX的过程相对复杂,但是我们可以按照下面的步骤逐步实现: 1. 安装JetPack 4.4+: JetPack是NVIDIA官方提供的一套软件开发工具包,其中包含了CUDA、cuDNN等深度学习库。首先需要下载并安装 JetPack 4.4+,具体安装步骤可以参考官网提示。 2. 安装OpenCV:在Jetson Nano上运行YoloX需要使用OpenCV库,下载之后进行安装,安装命令如下: ``` sudo apt-get update sudo apt-get install build-essential cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev sudo apt-get install libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev libv4l-dev ``` 3. 下载并编译YoloX源码:从 GitHub 下载 YoloX 源码,然后进行编译。编译命令如下: ``` git clone https://github.com/Megvii-BaseDetection/YOLOX.git cd YOLOX sudo apt-get install python3-pip pip3 install Cython numpy sudo apt-get install ninja-build python3 setup.py build develop ``` 注:为了编译 YoloX 代码,您需要一张 NVIDIA GPU 卡,并配置好 CUDA 和 cuDNN。 4. 下载预训练的模型权重:在进行模型训练之前,需要准备一个已经训练好的模型权重。您可以从 YoloX 官方仓库 处下载预训练的权重,或是使用自己的数据集训练出自己的模型权重。 5. 测试模型:在部署完成后,我们可以使用 YoloX 官方提供的测试脚本来测试模型,具体的测试命令如下: ``` python tools/demo.py image -n yolox-s-416 --path assets/dog.jpg --conf 0.25 --nms 0.45 ``` 这个脚本将会加载预训练的 yolox-s 模型,然后使用一张测试图片(dog.jpg)进行测试,并将结果保存到 output 文件夹下。 总结: 在这篇文章中,我们介绍了在Jetson Nano上部署YoloX的过程及方法,从安装基本的JetPack到编译源代码,再到下载预训练模型,最后通过测试脚本检验模型的准确性。这个过程可能比较繁琐,需要好好的理解和操作。随着AI的深入应用,我们相信越来越多的开发者、技术爱好者们会对边缘计算的优化、应用上有更多的发现和深入研究。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值