Real-time-GesRec
Real-time-GesRec 是一个基于 PyTorch 开发的开源项目,专注于实现视频流中的实时手部手势识别与分类。它支持在 EgoGesture、NvGesture 等多个主流数据集上进行模型的训练、微调及测试。
针对动态手势识别中“起止时间不确定”、“需避免重复识别”以及“设备算力受限”三大难题,Real-time-GesRec 提出了一种高效的双层架构:首先利用轻量级卷积神经网络(CNN)作为检测器定位手势,随后通过深度 CNN 进行分类。该项目创新性地引入滑动窗口机制,使原本适用于离线处理的模型能够高效在线运行,并采用 Levenshtein 距离作为评估指标,以更全面地衡量检测准确率。其核心分类模型在深度模态下曾达到业界领先的离线识别精度。
该工具非常适合计算机视觉领域的研究人员、AI 开发者以及需要部署实时交互功能的应用工程师使用。无论是进行学术算法验证,还是开发体感控制、人机交互等实际应用,Real-time-GesRec 都提供了包括 ResNet-10、ResNeXt-101 在内的多种预训练模型和完整代码库,帮助用户快速构建低延迟、高精度的手势识别系统。
使用场景
某智能座舱开发团队正在为新款电动汽车构建一套无需触摸的方向盘控制系统,旨在让驾驶员通过简单的手势即可调节音量或切换导航。
没有 Real-time-GesRec 时
- 响应严重滞后:传统静态图像识别方案无法理解连续动作的时间维度,导致系统必须在手势完全结束后才能开始分析,造成明显的操作延迟。
- 误触与重复执行:缺乏有效的时序检测机制,系统难以判断手势的起止边界,常常将同一个挥手动作识别为多次指令,或把无意的手部移动误判为命令。
- 资源占用过高:为了追求精度强行部署大型 3D 模型,导致车载嵌入式芯片内存爆满、功耗激增,甚至影响车辆其他核心功能的运行稳定性。
- 开发周期漫长:团队需从零搭建复杂的滑动窗口逻辑并手动标注海量视频帧,难以在有限的项目周期内完成模型训练与调优。
使用 Real-time-GesRec 后
- 毫秒级实时反馈:利用其基于滑动窗口的层级架构,Real-time-GesRec 能在手势进行过程中即时捕捉特征,实现了接近“零延迟”的在线分类与响应。
- 精准单次触发:内置的检测器与分类器协同工作,结合 Levenshtein 距离评估优化,确保每个动态手势仅被准确识别一次,彻底杜绝了误触和重复指令。
- 高效资源利用:通过轻量级的 ResNet-10 检测网络配合高效的 3D CNN 分类器,该工具在保持高精度的同时大幅降低了显存占用和算力需求,完美适配车规级芯片。
- 快速落地部署:直接复用官方提供的在 EgoGesture 和 NvGesture 数据集上预训练的模型,团队省去了繁琐的数据预处理环节,将算法集成时间缩短了数周。
Real-time-GesRec 通过平衡时序感知能力与计算效率,成功将高难度的动态手势识别转化为可落地的实时交互体验。
运行环境要求
- 未说明
需要 NVIDIA GPU (命令中包含 cuda80),具体显存大小未说明,建议 CUDA 8.0+
未说明

快速开始
基于3D CNN的实时手势识别
本文提供了文章使用卷积神经网络进行实时手势检测与分类和资源高效的3D卷积神经网络的PyTorch实现,包含代码及预训练模型。
图:架构的实时仿真展示了来自EgoGesture数据集的输入视频(左侧)以及每种手势的实时(在线)分类得分(右侧),其中每个类别以不同颜色标注。
星标历史
该代码涵盖了在EgoGesture和nvGesture数据集上的训练、微调及测试。
请注意,代码目前仅包含ResNet-10、ResNetL-10、ResneXt-101和C3D v1,其他版本可轻松添加。
摘要
从视频流中实时识别动态手势是一项极具挑战性的任务,原因在于:(i) 视频中手势的起始与结束时间并无明确标记;(ii) 已执行的手势应仅被识别一次;(iii) 整体架构的设计需兼顾内存与功耗限制。在本工作中,我们提出了一种分层结构,通过滑动窗口方法使离线运行的卷积神经网络(CNN)架构能够高效地在线运作。所提出的架构由两个模型组成:(1) 一个用于检测手势的轻量级CNN架构;(2) 一个用于对检测到的手势进行分类的深度CNN。为评估检测到的手势是否仅被激活一次,我们建议使用Levenshtein距离作为评估指标,因为它可以同时衡量误分类、多次检测和漏检等问题。我们在两个公开可用的数据集——EgoGesture和NVIDIA动态手势数据集——上对我们的架构进行了评估,这两个数据集均要求对手势的时序性检测与分类。作为分类器的ResNeXt-101模型,在EgoGesture和NVIDIA基准测试中,分别达到了94.04%和83.82%的离线分类准确率。在实时检测与分类方面,我们实现了显著的早期检测,同时性能接近离线运行水平。本工作中使用的代码及预训练模型已公开提供。
需求
conda install pytorch torchvision cuda80 -c soumith
- Python 3
预训练模型
Pretrained_models_v1 (1.08GB):在论文中表现最佳的模型
Pretrained_RGB_models_for_det_and_clf (371MB)(Google Drive) Pretrained_RGB_models_for_det_and_clf (371MB)(百度网盘) -密码:p1va
Pretrained_models_v2 (15.2GB):包含论文中所有模型,并采用高效的3D-CNN架构
准备工作
EgoGesture
按照官方网站下载视频。
我们将使用数据集提供方提供的提取图像。
使用
utils/ego_prepare.py生成n_frames文件
n_frames格式如下:“文件夹路径” “类别索引” “起始帧” “结束帧”
mkdir annotation_EgoGesture
python utils/ego_prepare.py training trainlistall.txt all
python utils/ego_prepare.py training trainlistall_but_None.txt all_but_None
python utils/ego_prepare.py training trainlistbinary.txt binary
python utils/ego_prepare.py validation vallistall.txt all
python utils/ego_prepare.py validation vallistall_but_None.txt all_but_None
python utils/ego_prepare.py validation vallistbinary.txt binary
python utils/ego_prepare.py testing testlistall.txt all
python utils/ego_prepare.py testing testlistall_but_None.txt all_but_None
python utils/ego_prepare.py testing testlistbinary.txt binary
- 使用
utils/egogesture_json.py生成类似ActivityNet格式的JSON标注文件
python utils/egogesture_json.py 'annotation_EgoGesture' all
python utils/egogesture_json.py 'annotation_EgoGesture' all_but_None
python utils/egogesture_json.py 'annotation_EgoGesture' binary
nvGesture
- 按照官方网站下载视频。
- 使用
utils/nv_prepare.py生成n_frames文件
n_frames格式如下:“文件夹路径” “类别索引” “起始帧” “结束帧”
mkdir annotation_nvGesture
python utils/nv_prepare.py training trainlistall.txt all
python utils/nv_prepare.py training trainlistall_but_None.txt all_but_None
python utils/nv_prepare.py training trainlistbinary.txt binary
python utils/nv_prepare.py validation vallistall.txt all
python utils/nv_prepare.py validation vallistall_but_None.txt all_but_None
python utils/nv_prepare.py validation vallistbinary.txt binary
- 使用
utils/nv_json.py生成类似ActivityNet格式的JSON标注文件
python utils/nv_json.py 'annotation_nvGesture' all
python utils/nv_json.py 'annotation_nvGesture' all_but_None
python utils/nv_json.py 'annotation_nvGesture' binary
Jester
- 按照官方网站下载视频。
- n_frames和类别索引文件已在annotation_Jester/{'classInd.txt', 'trainlist01.txt', 'vallist01.txt'}中提供。
n_frames格式如下:“文件夹路径” “类别索引” “起始帧” “结束帧”
- 使用
utils/jester_json.py生成类似ActivityNet格式的JSON标注文件
python utils/jester_json.py 'annotation_Jester'
运行代码
- 离线测试(offline_test.py)和训练(main.py)
bash run_offline.sh
- 在线测试
bash run_online.sh
引用
如果您使用此代码或预训练模型,请引用以下文章:
@article{kopuklu_real-time_2019,
title = {基于卷积神经网络的实时手势检测与分类},
url = {http://arxiv.org/abs/1901.10323},
author = {Köpüklü, Okan 和 Gunduz, Ahmet 和 Kose, Neslihan 和 Rigoll, Gerhard},
year={2019}
}
@article{kopuklu2020online,
title={包含效率分析的在线动态手势识别},
author={K{\"o}p{\"u}kl{\"u}, Okan 和 Gunduz, Ahmet 和 Kose, Neslihan 和 Rigoll, Gerhard},
journal={IEEE 生物特征、行为与身份科学汇刊},
volume={2},
number={2},
pages={85--97},
year={2020},
publisher={IEEE}
}
致谢
我们感谢 Kensho Hara 发布了他的 代码库,我们的工作正是建立在其基础上。
常见问题
相似工具推荐
openclaw
OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
everything-claude-code
everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
gemini-cli
gemini-cli 是一款由谷歌推出的开源 AI 命令行工具,它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言,它提供了一条从输入提示词到获取模型响应的最短路径,无需切换窗口即可享受智能辅助。 这款工具主要解决了开发过程中频繁上下文切换的痛点,让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用,还是执行复杂的 Git 操作,gemini-cli 都能通过自然语言指令高效处理。 它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口,具备出色的逻辑推理能力;内置 Google 搜索、文件操作及 Shell 命令执行等实用工具;更独特的是,它支持 MCP(模型上下文协议),允许用户灵活扩展自定义集成,连接如图像生成等外部能力。此外,个人谷歌账号即可享受免费的额度支持,且项目基于 Apache 2.0 协议完全开源,是提升终端工作效率的理想助手。
markitdown
MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具,专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片(含 OCR)、音频(含语音转录)、HTML 乃至 YouTube 链接等多种格式的解析,能够精准提取文档中的标题、列表、表格和链接等关键结构信息。 在人工智能应用日益普及的今天,大语言模型(LLM)虽擅长处理文本,却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点,它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式,成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外,它还提供了 MCP(模型上下文协议)服务器,可无缝集成到 Claude Desktop 等 LLM 应用中。 这款工具特别适合开发者、数据科学家及 AI 研究人员使用,尤其是那些需要构建文档检索增强生成(RAG)系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性,但其核心优势在于为机器
