尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
PaddleVideo + YOWO 实现实时摄像头视频检测的完整代码示例
在 PaddleVideo 中YOWO 模型主要用于时空动作定位Spatio-Temporal Action Detection。由于 YOWO 需要同时输入一段连续的帧序列如 16 帧来进行时空特征提取因此实现实时摄像头检测的核心在于构建滑动窗口Sliding Window机制。以下是结合 PaddleVideo 官方推理逻辑与 OpenCV 实时流处理的完整代码示例。这段代码展示了如何在内存中维护帧队列并逐窗口进行推理importcv2importnumpyasnpimportpaddlefrompaddlevideo.configsimportget_cfgfrompaddlevideo.modelingimportbuild_model# 1. 配置与模型初始化 # 加载 YOWO 的配置文件请根据实际路径修改cfgget_cfg(configs/detection/yowo/yowo.yaml)# 构建模型并加载预训练权重modelbuild_model(cfg.MODEL)model_statepaddle.load(cfg.MODEL.pretrained)model.set_state_dict(model_state)model.eval()# 视频处理相关参数WINDOW_SIZE16# YOWO 通常需要的连续帧数STEP_SIZE4# 滑动窗口的步长每次滑过几帧用于降低计算量THRESHOLD0.5# 动作置信度阈值# 2. 视频流读取与滑动窗口构建 capcv2.VideoCapture(0)# 0 代表默认摄像头ifnotcap.isOpened():raiseRuntimeError(❌ 无法打开摄像头)frame_buffer[]# 内存中的帧队列frame_count0print( 开始实时动作检测按 ESC 键退出...)whileTrue:ret,framecap.read()ifnotret:print(❌ 无法读取摄像头画面)break# 预处理将 BGR 转换为 RGB 并 resize 到模型输入尺寸 (如 224x224)# 注意实际推理前还需要进行 Normalize 和 Transpose (HWC - CHW)# 这里为展示核心逻辑省略了完整的预处理 pipelinergb_framecv2.cvtColor(frame,cv2.COLOR_BGR2RGB)resized_framecv2.resize(rgb_frame,(224,224))frame_buffer.append(resized_frame)frame_count1# 当帧队列达到窗口大小且满足步长条件时触发一次推理iflen(frame_buffer)WINDOW_SIZEandframe_count%STEP_SIZE0:# 取出当前窗口的 16 帧组成 Batch Tensor: [1, T, C, H, W]clipnp.array(frame_buffer[-WINDOW_SIZE:])clip_tensorpaddle.to_tensor(clip).transpose([3,0,1,2]).unsqueeze(0)# 模型前向推理withpaddle.no_grad():outputsmodel(clip_tensor)# 解析输出假设输出包含 boxes, scores, labels# 具体的解析方式需参考 PaddleVideo YOWO 的官方后处理代码boxes,scores,labelsoutputs# 在原始帧上绘制检测框取窗口内的最新一帧进行绘制display_frameframe.copy()forbox,score,labelinzip(boxes,scores,labels):ifscoreTHRESHOLD:x1,y1,x2,y2map(int,box)cv2.rectangle(display_frame,(x1,y1),(x2,y2),(0,255,0),2)cv2.putText(display_frame,f{label}:{score:.2f},(x1,y1-10),cv2.FONT_HERSHEY_SIMPLEX,0.5,(0,255,0),2)# 实时显示cv2.imshow(YOWO Real-time Action Detection,display_frame)# 滑动窗口弹出最旧的帧保持内存占用稳定frame_bufferframe_buffer[STEP_SIZE:]else:# 未达到推理条件时仅显示实时画面cv2.imshow(YOWO Real-time Action Detection,frame)# 按 ESC 退出ifcv2.waitKey(1)0xFF27:break# 3. 释放资源 cap.release()cv2.destroyAllWindows() 核心工程要点说明内存管理代码中通过frame_buffer frame_buffer[STEP_SIZE:]实现了滑动窗口的滑动确保内存中始终只保留少量帧避免了显存/内存溢出。性能优化通过设置STEP_SIZE 4模型并不是每帧都推理而是每隔 4 帧推理一次。这在保证动作检测连续性的同时将计算开销降低了约 75%。数据预处理在实际工程中frame_buffer中存储的应该是经过完整预处理Resize、Normalize、ToTensor后的 NumPy 数组或 Tensor以加快推理时的组装速度。你可以将此代码作为基础模板根据你实际使用的 PaddleVideo 版本的 API 接口如数据预处理和后处理的具体函数进行微调即可快速跑通实时动作检测 Demo。
RELATED

相关推荐

STM32与G6D-ASI继电器实现智能直流负载管理

STM32与G6D-ASI继电器实现智能直流负载管理

1. 项目背景与核心需求在工业自动化和电力电子领域,直流负载管理一直是系统设计的关键挑战。传统方案通常采用机械继电器或简单的MOSFET开关,存在响应速度慢、功耗高、缺乏智能保护等痛点。我们团队最近在新能源充电桩项目中,就遇到了大电流切…

📅 2026/9/8 13:33:25
基于TPIS1S1385与PIC18LF46K42的智能感应系统设计

基于TPIS1S1385与PIC18LF46K42的智能感应系统设计

1. 项目概述:基于TPIS1S1385与PIC18LF46K42的智能感应系统在智能家居和工业自动化领域,精确的存在感应与运动检测技术正成为关键的人机交互接口。TPIS1S1385作为一款高性能红外热释电传感器,配合PIC18LF46K42微控制器的强大处理能力&#xff…

📅 2026/8/22 20:14:06
Java国密SM2算法实战:BouncyCastle 1.66+版本集成与避坑指南

Java国密SM2算法实战:BouncyCastle 1.66+版本集成与避坑指南

1. 项目概述最近在做一个需要对接金融、政务类系统的项目,对方明确要求使用国密算法进行数据交换和签名验签。作为Java开发者,第一反应就是去找BouncyCastle这个老牌的安全提供者库。本以为是个简单的依赖引入和API调用,结果一脚踩进了版本依…

📅 2026/9/12 2:16:51
MORE NEWS

更多资讯

📰

Java线程基础与线程池实战:从生命周期到虚拟线程的并发编程指南

线程这东西,说难不难,说简单也真不简单。前阵子帮一个朋友排查线上服务卡顿的问题,日志里全是线程堆积的报错,最后定位到是他们业务代码里创建了一大批“野线程”没有统一管理。这种问题在面试里属于“线程基础”范畴,…

📰

Claude Code 2.1 智能体操作系统:用 Markdown 与 YAML 定义 Agent 工作流

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

第255篇_搬家公司服务与价格对比采集

【Python爬虫实战】第255篇:四家搬家平台到底哪家便宜——搬家公司计费规则多平台对比抓取实战 所属专栏:【Python爬虫实战】从零到企业级爬虫工程师(CSDN 付费专栏) 本篇篇目:第 255 篇(垂直本地生活服务数据采集专场 第 6 篇) 难度等级:中高级,核心在多源数据的口径…

📰

Deep-Live-Cam本地部署实战指南:一张照片实时换脸的全链路调优

1. 为什么“一张照片换脸”在本地跑通比想象中更难? 最近两周,我连续被三位做知识付费的朋友拉进紧急求助群——他们想给自己的直播课加个“虚拟形象出镜”功能,要求不高:用一张正脸证件照,实时驱动面部表情&#xff0…

📰

动态思维链剪枝(Dynamic CoT Pruning):基于不确定性评估的自适应思考深度控制

动态思维链剪枝(Dynamic CoT Pruning):基于不确定性评估的自适应思考深度控制在大语言模型(LLM)开启深度思考(Reasoning / Chain-of-Thought, CoT)模式时,模型会在输出最终答案前生成…

📰

STM32串口DMA+IDLE中断+状态机解析SBUS协议完整方案

搞飞控、做遥控车、玩航模接收机的人,基本都绕不开SBUS这一关。我之前在STM32F103C8T6上写过一个SBUS接收模块,后来移植到F407上跑四轴姿态解算,代码几乎没动。这套方案的思路很明确:DMA循环接收负责把串口字节流一个不漏地收进缓…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬