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

立体匹配模型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

相关文章:

  • 硬件电路(24)-NE555振荡电路
  • c++类与对象(一)
  • 成品检验工程师心得总结
  • SQL语句执行顺序
  • 手撕LLM(五):从源码出发,探索多模态VL模型的推理全流程
  • 线性DP:最长上升子序列(子序列可不连续,子数组必须连续)
  • 多态的学习与了解
  • Java【网络原理】(4)HTTP协议
  • 5.1 掌握函数定义与参数传递的奥秘
  • RNN的理解
  • 小刚说C语言刷题——1049 汉译英
  • 1222222
  • Linux 动、静态库的实现
  • 滑动时间窗口实现重试限流
  • 解决模拟器打开小红书设备异常问题
  • SpringBoot入门实战(第一篇:环境准备和项目初始化)
  • 深度可分离卷积与普通卷积的区别及原理
  • 【数据库】事务
  • 深入剖析Java并发编程原理:从底层到实践
  • C++move的作用和原理
  • 赵厚均评《唐诗与唐代园林景观的审美建构研究》|林泉恣探历,风景暂徘徊
  • 2024年境内酒店住宿行业指标同比下滑:酒店行业传统增长模式面临挑战
  • 年轻人能为“老有意思”做点什么
  • 《大风杀》上海首映,白客说拍这戏是从影以来的最大挑战
  • 魔都眼|石库门里看车展,五一来张园体验城市“漫时光”
  • “非思”的思想——探索失语者的思想史