您的位置首页 >半导体 >

基于 PyTorch+Streamlit 搭建视频动作识别应用方案

使用 PyTorch 搭建视频动作识别模型、搭配 Streamlit 做成可视化 Web 交互页面,能够快速实现本地视频上传、摄像头实时读取、动作推理、结果可视化展示整套功能,不用单独搭建复杂前端页面,适合快速验证动作识别模型效果、做演示原型和轻量测试工具;整套方案的核心逻辑是用 PyTorch 负责模型加载、视频帧抽取、特征计算、动作分类推理,Streamlit 负责 UI 界面、文件上传、视频播放、推理结果输出,开发顺序一般先选定预训练动作识别模型、完成视频帧预处理代码,再封装推理函数,最后写 Streamlit 交互逻辑,调试帧率、置信度阈值,就能得到一个可以直接打开使用的视频动作识别网页工具。

基础信息清单

项目详情
技术栈PyTorch(模型推理)+ Streamlit(Web 前端)
支持输入本地上传视频文件、电脑摄像头实时流
常用模型SlowFast、I3D、VideoMAE、2D CNN + 时序池化模型
核心预处理视频抽帧、缩放归一化、转 Tensor、标准化
输出内容识别动作标签、置信分数、带标注的视频 / 帧画面
适用场景动作原型验证、课堂演示、简单行为检测 Demo
硬件建议带 NVIDIA 显卡、CUDA 环境,CPU 推理速度很慢

模块拆解

1. PyTorch 动作识别核心模块

  • 模型加载:加载开源预训练视频动作权重,放到 cuda/cpu 设备。
  • 视频抽帧:用 OpenCV 读取视频,按固定间隔抽取关键帧,避免帧太多拖慢速度。
  • 数据预处理:调整分辨率、归一化、转换为模型要求的张量格式。
  • 推理计算:前向传播得到各类别概率,取 top1 或者 top3 动作 + 置信度。
  • 结果封装:输出动作名称、置信值,方便传给 Streamlit 渲染。

2. Streamlit 交互界面模块

  • 文件上传组件:支持 mp4 等视频文件上传。
  • 摄像头组件:st.camera_input 获取实时画面流。
  • 参数控制面板:设置抽帧间隔、置信度阈值、是否启用 GPU。
  • 可视化组件:原始视频播放、识别结果文本展示、置信度柱状图。
  • 状态输出:推理耗时、设备信息、异常报错提示。

完整开发步骤

  1. 环境安装:安装 torch、torchvision、streamlit、opencv-python、numpy 等依赖包,配置 CUDA 加速环境。
  2. 模型准备:选择开源视频动作识别预训练权重,写好加载和推理函数,单独测试单段视频推理是否正常。
  3. 编写预处理函数:实现视频读取、抽帧、图像归一化、张量转换逻辑。
  4. 开发 Streamlit 页面:布局上传控件、参数滑块、结果展示区域,调用 PyTorch 推理接口。
  5. 逻辑串联:用户提交视频后,后台调用 PyTorch 推理,识别完成回传结果在页面展示。
  6. 调优:调低抽帧数量提升速度,设置置信阈值过滤低可信度结果,处理超大视频内存溢出问题。

常见坑点清单

  1. 显存不足:长视频、高分辨率视频一次性送入模型容易爆显存,减少连续帧数、分批推理。
  2. 速度慢:CPU 推理几乎没法实时,必须开启 CUDA;SlowFast 这类大模型本身算力开销高。
  3. 帧时序错位:抽帧间隔不合理会丢失动作信息,动作跳变时识别准确率明显下降。
  4. Streamlit 重复运行:Streamlit 每次交互都会重跑全部代码,模型要放到 st.cache_resource 缓存,避免重复加载。
  5. 编码兼容:部分视频编码 OpenCV 读取出错,优先使用 mp4 格式测试。

【常见问题】

问题 1:基于 PyTorch 和 Streamlit 实现视频动作识别,Streamlit 在这里起到什么作用?

回答 1:基于 PyTorch 和 Streamlit 实现视频动作识别,PyTorch 负责模型推理计算,Streamlit 用来快速搭建网页交互界面,实现视频上传、摄像头输入、识别结果可视化,不用独立写前端。

问题 2:基于 PyTorch 和 Streamlit 实现视频动作识别,推荐用哪些视频动作识别模型?

回答 2:基于 PyTorch 和 Streamlit 实现视频动作识别,常用的预训练模型有 SlowFast、I3D、VideoMAE,其中 SlowFast 精度表现更好,适合做效果演示,缺点是算力要求更高。

问题 3:基于 PyTorch 和 Streamlit 实现视频动作识别,为什么推荐把模型加上 st.cache_resource 缓存?

回答 3:基于 PyTorch 和 Streamlit 实现视频动作识别,Streamlit 每次页面交互会重新执行脚本,加上 st.cache_resource 缓存 PyTorch 模型,防止模型反复加载、浪费时间和显存。

问题 4:基于 PyTorch 和 Streamlit 实现视频动作识别,能不能做到摄像头实时动作识别?

回答 4:基于 PyTorch 和 Streamlit 实现视频动作识别,可以搭配 st.camera_input 获取摄像头画面流,送入 PyTorch 模型推理,但大模型很难做到低延迟实时识别。

【数据来源】

[2026-11-10](PyTorch 视频动作识别 SlowFast 推理教程)PyTorch 官方文档

[2026-11-08](Streamlit 搭建 AI 视觉推理 Web 应用开发指南)Streamlit 官方文档

[2026-11-05](基于 I3D+PyTorch 的视频动作识别项目开源案例)Github 技术社区

[2026-10-22](VideoMAE 自监督视频动作识别 PyTorch 实现)Hugging Face

【免责声明】

本文为 PyTorch 结合 Streamlit 开发视频动作识别 Demo 的技术方案梳理,预训练模型识别效果受数据集、场景、光照、动作类别影响;该方案适合原型验证、演示,不经过大量调优、数据集微调不适合直接落地工业安防、人体姿态监测等商用场景;GPU 推理速度、识别准确率以硬件条件、模型选型为准,本文不保证业务落地效果。

今日大家都在搜的词: