发布时间:2026/9/1 5:14:54
将 PyTorch 训练出的 PySlowFast(.pyth)模型转换为 ONNX 格式 将 PyTorch 训练出的 PySlowFast.pyth模型转换为 ONNX 格式的关键在于模型是双路径Dual-Pathway输入。因此在导出 ONNX 时我们需要构建一个包含两个 TensorSlow 路径和 Fast 路径的元组作为 dummy input虚拟输入。以下是完整的转换代码脚本importtorchimportnumpyasnp# 1. 定义与训练时完全一致的模型结构以标准的 SlowFast R50 为例defload_slowfast_model(checkpoint_path,num_classes10):# 使用 pytorchvideo 快速构建符合 SlowFast 架构的网络modeltorch.hub.load(facebookresearch/pytorchvideo,slowfast_r50,pretrainedFalse)# 修改分类头model.blocks[6].projtorch.nn.Linear(model.blocks[6].proj.in_features,num_classes)# 加载权重checkpointtorch.load(checkpoint_path,map_locationcpu)ifmodel_stateincheckpoint:model.load_state_dict(checkpoint[model_state])else:model.load_state_dict(checkpoint)model.eval()returnmodel# 2. 初始化模型CHECKPOINT_PATHcheckpoints/checkpoint_epoch_00050.pythNUM_CLASSES10# 替换为你的分类数modelload_slowfast_model(CHECKPOINT_PATH,num_classesNUM_CLASSES)# 3. 构造虚拟输入 (Dummy Input)# 假设输入视频为 32 帧采样率/结构对应# Slow 路径: 4 帧, 尺寸 256x256 (BatchSize1, 通道3)# Fast 路径: 32 帧, 尺寸 256x256 (BatchSize1, 通道3)batch_size1channels3height,width256,256dummy_slow_inputtorch.randn(batch_size,channels,4,height,width)dummy_fast_inputtorch.randn(batch_size,channels,32,height,width)# SlowFast 期望的输入是一个包含两个路经 Tensor 的列表或元组dummy_inputs(dummy_slow_input,dummy_fast_input)# 4. 执行 ONNX 导出onnx_output_pathslowfast_model.onnxprint(f正在转换模型并保存至:{onnx_output_path}...)torch.onnx.export(model,argsdummy_inputs,# 传入双路径虚拟输入fonnx_output_path,# 输出的 ONNX 文件路径export_paramsTrue,# 导出训练后的权重参数opset_version12,# 建议使用 opset 11 或 12对视频 3D 算子支持较好do_constant_foldingTrue,# 是否执行常量折叠优化input_names[slow_input,fast_input],# 指定输入节点的名称output_names[output],# 指定输出节点的名称dynamic_axes{# 支持动态 BatchSize可选slow_input:{0:batch_size},fast_input:{0:batch_size},output:{0:batch_size}})print(ONNX 模型转换成功)# 5. 验证 ONNX 模型有效性importonnx onnx_modelonnx.load(onnx_output_path)onnx.checker.check_model(onnx_model)print(ONNX 模型结构检查完毕未发现异常。) 关键踩坑与避雷指南3D 算子不兼容问题SlowFast 内部大量使用了 3D 卷积Conv3d和 3D 池化MaxPool3d。部分旧版本的 ONNX Opset 对其支持不佳。如果导出报错请尝试将opset_version提升至12、13或14。PyTorchVideo 依赖兼容性如果您在导出时遇到类似TracerWarning导致导出失败可以尝试使用官方的原版 PySlowFast 代码库中的slowfast/models/build.py来构建model而非pytorchvideo。推理时如何传参以 ONNX Runtime 为例在后续部署时由于设置了两个输入节点你需要将处理好的 Slow 路径和 Fast 路径 Tensor 分别作为字典的 Key 传给推理器importonnxruntimeasort ort_sessionort.InferenceSession(slowfast_model.onnx)# 准备好你的两个经过预处理的 numpy 数组outputsort_session.run([output],{slow_input:slow_tensor_np,fast_input:fast_tensor_np})

相关新闻

2026/9/1 17:31:03

协议之DASH介绍

DASH:Dynamic Adaptive Streaming over HTTP,基于 HTTP 的动态自适应码流标准,标准号 ISO/IEC 23009-1,由 MPEG 制定,2012 年正式发布。 与 HLS 类似,核心思想是将媒体内容切分为多个小的媒体片段&#xff…

2026/9/1 4:12:10

如何高效使用BiliDownloader:新手快速上手指南

如何高效使用BiliDownloader:新手快速上手指南 【免费下载链接】BiliDownloader BiliDownloader是一款界面精简,操作简单且高速下载的b站下载器 项目地址: https://gitcode.com/gh_mirrors/bi/BiliDownloader BiliDownloader是一款专为B站用户打造…

2026/9/1 18:43:09

pstack验证技能:让AI Agent像真实用户一样验证应用

pstack 这次新增的能力,把“验证”这件事从脚本层提成了“技能层”。过去我们让 Agent 验证应用,要么写死一段测试脚本,要么靠模型现场“自由发挥”,结果经常是:会点、会填,但不知道结果对不对,…

2026/9/1 18:43:09

用Python+Pygame+OpenCV+GPT打造桌面虚拟数字人

简介:本资源是一个基于Python实现的轻量级虚拟数字人直播系统,面向AI初学者、计算机视觉与人机交互方向的学习者及数字内容创作者,解决实时驱动虚拟形象并融合语音交互的核心问题。项目整合OpenCV进行人脸/动作捕捉、Pygame渲染2D虚拟人动画、…

2026/9/1 18:43:09

GLM-5.3-Flash与Qwen3.8-Flash-Next:架构收敛下的推理效率与选型实践

最近一段时间,不少做 Agent 或者 LLM 应用的同学应该都注意到了同一个现象:在 OpenRouter、ccswitch 这类模型聚合平台上,glm-5.3-flash和qwen3.8-flash-next这两个名字出现得越来越频繁。尤其是社区里有人同时放出两个模型的对比截图后&…

2026/9/1 18:43:09

SS9G电力机车0K210次铁路摄影实战:机位选择与追焦参数全解析

当你在广州小北天桥等待一列由“烧酒”牵引的绿皮车底时,那种由远及近的轰鸣声,会让之前所有的等候都变得值得。不过,要拍好这样一趟车,光靠运气是不够的。本文将以广铁广段SS9G型0150号电力机车牵引0K210次列车通过广九线小北天桥…

2026/9/1 18:43:09

基于IP-IQ检测与双闭环控制的并联型有源电力滤波器Simulink仿真

并联型有源电力滤波器(APF)是解决谐波污染的主流电力电子装置,而整个仿真研究的关键难点不在主电路拓扑,而在谐波检测方法和控制策略是否能在Simulink中正确闭环。这次我们看的就是一套围绕“IP-IQ谐波检测 电压电流双闭环控制”…

2026/9/1 18:38:09

无感FOC滑膜观测器源码解析:基于dsPIC33EP的PMSM电机控制

简介:Microchip官方AN1078应用笔记配套源代码,基于dsPIC33EP256MC506数字信号控制器实现永磁同步电机滑膜(SMO)无位置传感器控制,适用于电机控制算法工程师与嵌入式开发者,可直接用于MCLV-2低压电机控制开发…

2026/9/1 16:02:17

vSound小提琴数字处理器实操指南:从接线到演出的完整配置

电小提琴或者原声小提琴插电演出,第一个绕不开的坎就是声音难听。原声琴的共鸣和空气感一旦进了拾音器,出来的往往是一坨干瘪、发尖、带着奇怪塑料味的信号。我当初第一次把琴接上乐队调音台,直接被主唱吐槽"你这声音像在锯钢丝"。…

2026/9/1 8:27:47

传感器接口IC如何攻克生物化学传感的微弱信号难题?

1. 从电极到比特流:为什么生物化学传感必须依赖专用接口IC 做生物化学传感的人都有过类似的经历:明明传感器本身性能很好,信号输出却一塌糊涂——噪声大、漂移明显、重复性差,怎么调都达不到预期。很多时候问题并不在传感器&#…

2026/9/1 7:04:43

STM32F411CEU6多通道ADC采集:扫描模式+DMA实现详解

1. 多通道 ADC 的用武之地把“Multichannel ADC”和“STM32F411CEU6”这两个关键字放在一起,其实就是嵌入式开发里最常遇到的一类需求:用一块不算贵的 MCU,同时采集多路模拟信号。STM32F411CEU6 是 48 引脚的 Cortex-M4F 主控,主频…

2026/9/1 0:00:42

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/1 0:00:42

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/1 0:00:42

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

2026/9/1 0:00:42

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行&#xff0c;Type-C接口算是典型的“看着简单&#xff0c;做起来全坑”的东西。光引脚就24个&#xff0c;高低速信号、电源、控制线全部塞在一个小小的连接器里&#xff0c;如果PCB布局不做规划&#xff0c;打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/1 0:00:42

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/1 0:00:42

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…