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

立体匹配模型RAFT-Stereo的onnx导出与trt使用指南

这里写目录标题

  • 如何将 RAFT-Stereo 模型导出为 ONNX 格式
    • 转化为静态的模型:
    • 转化为动态的模型:
  • reference

通过将 RAFT-Stereo 模型转换为 ONNX 格式,我们能够在不同的推理引擎和硬件平台上高效地部署和运行该模型,而无需依赖原始的 PyTorch 环境。这为在实际应用中使用 RAFT-Stereo 算法提供了极大的灵活性,尤其是在需要考虑性能优化和跨平台兼容性的场景中。

接下来,我们将详细讲解以下几个方面:

  1. 如何将 RAFT-Stereo 模型导出为 ONNX 格式
  2. 如何在 Python 环境中使用导出的 ONNX 模型进行推理
  3. 如何导出trt模型

如何将 RAFT-Stereo 模型导出为 ONNX 格式

环境设置:

tensorrt= 10
pytorch=1.13.1
cuda=11.6
vs2019

在导出onnx之前,看一下推理的代码:

def forward(self, image1, image2, iters=12, flow_init=None, test_mode=False):""" 估计一对帧之间的光流 """# 将图像归一化到 [-1, 1] 范围image1 = (2 * (image1 / 255.0) - 1.0).contiguous()image2 = (2 * (image2 / 255.0) - 1.0).contiguous()# 运行上下文网络with autocast(enabled=self.args.mixed_precision):# 根据是否使用共享骨干网络选择不同的处理方式if self.args.shared_backbone:*cnet_list, x = self.cnet(torch.cat((image1, image2), dim=0), dual_inp=True, num_layers=self.args.n_gru_layers)fmap1, fmap2 = self.conv2(x).split(dim=0, split_size=x.shape[0]//2)else:cnet_list = self.cnet(image1, num_layers=self.args.n_gru_layers)fmap1, fmap2 = self.fnet([image1, image2])# 处理上下文网络的输出net_list = [torch.tanh(x[0]) for x in cnet_list]inp_list = [torch.relu(x[1]) for x in cnet_list]# 预先计算GRU的卷积层,以提高效率inp_list = [list(conv(i).split(split_size=conv.out_channels//3, dim=1)) for i,conv in zip(inp_list, self.context_zqr_convs)]# 选择相关性实现方法if self.args.corr_implementation == "reg": # 默认方法corr_block = CorrBlock1Dfmap1, fmap2 = fmap1.float(), fmap2.float()elif self.args.corr_implementation == "alt": # 更节省内存的方法corr_block = PytorchAlternateCorrBlock1Dfmap1, fmap2 = fmap1.float(), fmap2.float()elif self.args.corr_implementation == "reg_cuda": # 更快的reg版本corr_block = CorrBlockFast1Delif self.args.corr_implementation == "alt_cuda": # 更快的alt版本corr_block = AlternateCorrBlock# 创建相关性函数corr_fn = corr_block(fmap1, fmap2, radius=self.args.corr_radius, num_levels=self.args.corr_levels)# 初始化光流coords0, coords1 = self.initialize_flow(net_list[0])if flow_init is not None:coords
http://www.xdnf.cn/news/734.html

相关文章:

  • 实战指南:封装Faster-Whisper为FastAPI接口并实现高并发处理-附整合包
  • 数据通信学习笔记之OSPF其他内容2
  • 读书笔记--MySQL索引
  • MQTT协议容错协议容错机制设计与实现
  • 京东百亿补贴杀入外卖市场:一场关乎即时零售未来的攻防战
  • 5G网络切片:精准分配资源,提升网络效率的关键技术
  • 测试环境凌晨2点负载偏高, 2点到7点 IO 读偏高问题定位
  • ASP.NET Core 最小 API:极简开发,高效构建(上)
  • DEA-Net:基于细节增强卷积和内容引导注意力的单图像去雾
  • 51c大模型~合集119
  • SpringBoot入门实战(第一篇:环境准备和项目初始化)
  • C语言求执行次数
  • 【算法笔记】如何优雅的进行字符串操作
  • 【英语语法】词法---形容词
  • 关于编译树莓派内核系统的总结
  • STM32基础教程——串口收发
  • 基于尚硅谷FreeRTOS视频笔记——11—RTOS获取源码及源码简介
  • 开发环境解决浏览器层面跨域问题
  • [Scade One] Swan 图形化建模技术的形式化文法
  • 如何快速的搭建可用的付费网盘站点,实现盈利:新版网盘系统源码,全新构架,局部新颖,功能齐全,可自用可运营,可正常用于生产,2025年搭建付费网盘系统首选!
  • python绘制正态分布和t分布图形
  • Spring 事务管理核心机制与传播行为应用
  • Keil MDK 编译问题:function “HAL_IncTick“ declared implicitly
  • 牛客java练习题
  • OpenCV 图像调整指南
  • CSS 预处理器:Sass 升级版本 浅学
  • Edge Impulse 训练openMV分类模型(字母+数字)
  • AnimateCC基础教学:制作一个打地鼠简化版
  • 第37讲|AI+农业气象建模:预测极端天气对农业的影响
  • Linux 动、静态库的实现