Jetson AGX Xavier刷机+安装opencv+使用TensorRT加速推理yolo全过程+心路历程

    为了完成导师交代的任务,卑微的打工人开始了没有停息的斗争。尽管没有人阻碍你划水摸鱼,但是问题一天不解决,自由就一天也不会来到。

    我 向 往 自 由 !!!!!!!!!!

    通往自由的道路就是在Xavier上加速yolo的推理。至于你用什么办法,剪枝还是量化,用哪个网络,tiny不tiny,没人管,也没人在乎。

    涉世未深的我哪里知道通往自由的道路哪条最短,于是只能一样样试。

    Xavier是arm架构,这引发了许多原本没有的问题。我们依次来解决。文章主要给第一次操作的朋友避免走弯路用。

    器材准备:一台全新的AGX Xavier,一台装了虚拟机的笔记本,网线一根。

一、刷机

    网上有许多刷机的教程,其流程大抵相似:从nvidia官网上把sdkmanager的包下载下来,然后dpkg -i安装一下,然后命令行sdkmanager,接下来手动操作。这其中你网速快慢,nvidia要不要注册个账号,都只是影响你的速度而已,并无大的坑。已有的内容我不再重复。我只说那些文章中没有说的。

(1)网络

    我第一次刷机是在家里,慢的令人窒息的网速令刷机的速度慢如蜗牛,实际上我们知道当一个数无限接近于0那就可以理解为是0。于是我当然想到了给宽带升个级,一顿央求父亲大人母亲大人之后宽带终于升级到了千兆,于是我愉快地打开了sdknamger,期待地看着进度条。
    它还是不动!!!而且step 1到step 2有时候都能卡死。。。
    挂vpn!它进度条还是不动啊不动!!!
    中间过程略去不说...反正后来回了学校,用区区百兆的教育网,分分钟进度条就刷刷地涨。。。
    结论:    在学校用教育网刷机。可能学校跟Nvidia有什么合作吧,谁知道呢。

(2)虚拟机内存

    我当时在VMware中创建了60G的虚拟机内存,心想这怎么着也够了。没想到装完ubuntu之后就只剩二十多个G了,而刷机的镜像要求约莫32g内存,所以最好预留40g以上。
可能性一:你还没有创建虚拟机:创建一个100g的虚拟机并安装ubuntu系统。
可能性二:你已经创建了虚拟机,但内存不够用:
    千万不需要通过传统linux的方法去扩展硬盘!不是说不可以,而是说没必要。传统的方法是先创建物理卷,然后变成卷组,然后逻辑卷,然后逻辑卷组BALABALA...中间出了点差错的话你就忙吧。ubuntu用户就用ubuntu的方法啊喂。

    方案:1.虚拟机关机,删除快照,点击编辑虚拟机设置,点击扩展磁盘容量。

    2. sudo apt-get install gparted
        gparted
        确保新空间未上锁。如果之前通过命令行操作使得新空间成为了别的状态(物理卷等),则需按原路返回,删除分区,直至gparted显示未加锁。
    3.使用较为不错的智商手动操作合并磁盘空间。

(3)按部就班完成刷机。其中step 3 我使用的是手动模式,没有想象的那么烦,按照网上已有的教程就可以了。刷完机后,你的xavier中就应该已经有TensorRT了+cuda+cudnn了。
教程:https://zhuanlan.zhihu.com/p/98807348
           

### 在 Jetson AGX Xavier 上优化 YOLOv11 运行速度和性能 #### 使用 TensorRT 加速模型推理 为了提升 YOLOv11 在 Jetson AGX Xavier 平台上的运行效率,可以利用 NVIDIA 提供的 TensorRT 工具包进行模型优化。TensorRT 是一款专门用于高性能深度学习推理的 SDK,能够显著减少模型推理时间并降低功耗。 通过将预训练好的 PyTorch 或 ONNX 格式的 YOLOv11 模型转换成 TensorRT 可执行文件(`.engine`),可以在硬件层面上充分利用 GPU 资源,从而获得更快的速度表现[^1]。 ```bash # 安装必要的依赖库 sudo apt-get install python3-pip libopencv-dev pip3 install numpy opencv-python onnx onnxruntime tensorrt ``` #### 部署环境配置 确保开发环境中已正确安装 OpenCV 和其他所需软件包。对于特定版本兼容性的考虑,建议参照官方文档或社区经验来进行设置。此外,还需要下载对应的 TensorRT 库以及 cuDNN 支持以保障后续操作顺利开展[^2]。 #### 构建高效的 C++ 推理程序 编写基于 C++ 的应用程序来加载经过 TensorRT 优化后的引擎文件,并完成图像输入处理、前向传播计算及结果解析等工作流程。下面给出一段简单的代码框架作为参考: ```cpp #include <NvInfer.h> // ...省略部分头文件... int main() { // 初始化 Logger 对象 nvinfer1::ILogger* logger = new MyLogger(); // 创建 Runtime 实例读取 .engine 文件 nvinfer1::IRuntime* runtime = nvinfer1::createInferRuntime(*logger); std::ifstream engineFile("yolov11.engine", std::ios::binary | std::ios::ate); size_t fsize = engineFile.tellg(); char *buffer = new char[fsize]; engineFile.seekg(0, std::ios::beg).read(buffer, fsize); nvinfer1::ICudaEngine* engine = runtime->deserializeCudaEngine(buffer, fsize, nullptr); // 执行推理... } ``` #### 性能调优技巧 - **量化感知训练**:如果原始模型支持 INT8 计算,则可以通过量化方式进一步压缩模型大小并加快预测过程。 - **批处理机制**:适当增加 batch size 参数有助于提高吞吐量,但需注意内存占用情况。 - **多线程并发控制**:合理分配 CPU/GPU 资源给不同任务流,避免资源竞争造成的瓶颈现象。
评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值