vid2player3d

vid2player3d

基于广播视频的物理模拟网球技能学习系统

vid2player3d是一个从广播视频中学习网球技能的物理模拟系统。该项目结合物理模拟和机器学习技术,使用分层控制器架构,包括低级模仿策略、运动嵌入和高级规划策略。系统在IsaacGym环境中实现,能够捕捉真实选手的动作特征,为虚拟体育训练和娱乐应用提供了新的技术方案。

物理模拟网球技能机器学习视频分析SIGGRAPHGithub开源项目

从广播视频中学习物理模拟的网球技能

<strong>张浩天</strong>、袁野、Viktor Makoviychuk、郭云荣、Sanja Fidler、彭学斌、Kayvon Fatahalian

SIGGRAPH 2023 (最佳论文荣誉提名)

论文 | 项目 | 视频

<img src="https://yellow-cdn.veclightyear.com/ab5030c0/01932b2d-0d44-4267-960a-1d485802fd0b.png"/>

注意:当前发布版本提供了分层控制器的实现,包括低级模仿策略、动作嵌入和高级规划策略,以及在IsaacGym中的环境设置。不幸的是,由于许可问题,目前无法提供训练好的模型,因此演示无法运行。

新闻

[2023/11/28] 发布了低级策略的训练代码。

[2023/11/01] 发布了分层控制器的演示代码。

环境设置

1. 下载IsaacGym并创建Python虚拟环境

您可以从官方网站下载IsaacGym预览版4。 然后从这里下载Miniconda3。 通过运行IsaacGym中的create_conda_env_rlgpu.sh创建名为rlgpu的conda虚拟环境,Python3.7或Python3.8均可。 注意,如果在运行IsaacGym时遇到错误ImportError: libpython3.7m.so.1.0: cannot open shared object file: No such file or directory,您可能需要运行以下命令或将其添加到您的.bashrc中。

export LD_LIBRARY_PATH=<您的CONDA路径>envs/rlgpu/lib/

2. 安装依赖项

进入创建的虚拟环境并运行安装脚本。

conda activate rlgpu
bash install.sh

要安装低级策略的额外依赖项,请按照install_embodied_pose.sh中的说明进行操作。

3. 安装smpl_visualizer以可视化结果

克隆Git仓库,然后运行

bash install.sh

4. 下载数据/检查点

数据下载到vid2player3d/data

将动作嵌入和训练策略的检查点下载到vid2player3d/results(目前不可用)。

下载SMPL,首先在这里注册,然后将模型(男性和女性模型)下载到smpl_visualizer/data/smpl,并将文件重命名为SMPL_MALE.pklSMPL_FEMALE.pkl

对于训练低级策略,还需要将smpl模型文件复制到vid2player3d/data/smpl

演示

这些演示需要训练好的模型,目前不可用。

单人模式

在单人模式下,玩家将对来自对面的连续网球做出反应。 以下脚本运行模拟并在线渲染结果。模拟将在300帧后重置。您可以通过将--cfg更改为djokovicnadal来更换玩家。

python vid2player/run.py --cfg federer --rl_device cuda:0 --test --num_envs 1 --episode_length 300 --seed 0 --checkpoint latest --enable_shadow

以下脚本将批量运行模拟并离线渲染结果视频,保存在out/video目录下。您也可以将--record更改为--record_scenepic,这将把结果保存为交互式html文件,存放在out/html目录下。请注意,保存的html文件较大,可能需要几秒钟才能加载。

python vid2player/run.py --cfg federer --rl_device cuda:0 --test --num_envs 8192 --episode_length 300 --seed 0 --checkpoint latest --select_best --enable_shadow --num_rec_frames 300 --num_eg 5 --record --headless

双人对战

在双人对战设置中,两名球员将相互进行网球对抗。 以下脚本运行模拟并在线渲染结果。如果球被漏接或出界,模拟将重置。您可以通过将--cfg更改为nadal_djokovic来切换球员。更多球员设置将很快添加。

python vid2player/run.py --cfg federer_djokovic --rl_device cuda:0 --test --num_envs 2 --episode_length 10000 --seed 0 --checkpoint latest --enable_shadow

以下脚本将批量运行模拟并离线渲染结果视频,保存在out/video目录下。

python vid2player/run.py --cfg federer_djokovic --rl_device cuda:0 --test --num_envs 8192 --episode_length 10000 --seed 0 --checkpoint latest --enable_shadow --headless --num_rec_frames 600 --num_eg 5 --record

训练

低级策略

我们在embodied_pose中提供了训练低级策略的代码。如论文所述,低级策略使用AMASS动作和网球动作分两个阶段进行训练。您可以运行以下脚本执行两阶段训练(假设动作数据可用)。

python embodied_pose/run.py --cfg amass_im --rl_device cuda:0 --headless
python embodied_pose/run.py --cfg djokovic_im --rl_device cuda:0 --headless

convert_amass_isaac.py展示了如何将AMASS动作数据集转换为我们的训练代码可用的格式。

动作嵌入

我们在vid2player/motion_vae中提供了训练动作嵌入的代码(假设动作数据按照Video3DPoseDataset中描述的格式组织)。

高级策略

我们还在vid2player中提供了训练高级策略的代码。如论文所述,我们设计了一个分三个阶段的课程学习。您可以运行以下脚本执行课程训练(假设低级策略和动作嵌入的检查点可用)。

python vid2player/run.py --cfg federer_train_stage_1 --rl_device cuda:0 --headless
python vid2player/run.py --cfg federer_train_stage_2 --rl_device cuda:0 --headless
python vid2player/run.py --cfg federer_train_stage_3 --rl_device cuda:0 --headless

引用

@article{
  zhang2023vid2player3d,
  author = {Zhang, Haotian and Yuan, Ye and Makoviychuk, Viktor and Guo, Yunrong and Fidler, Sanja and Peng, Xue Bin and Fatahalian, Kayvon},
  title = {Learning Physically Simulated Tennis Skills from Broadcast Videos},
  journal = {ACM Trans. Graph.},
  issue_date = {August 2023},
  numpages = {14},
  doi = {10.1145/3592408},
  publisher = {ACM},
  address = {New York, NY, USA},
  keywords = {physics-based character animation, imitation learning, reinforcement learning},
}

参考文献

本仓库基于以下仓库构建:

以下是复现视频标注流程的其他参考:

  • 球员检测和跟踪:Yolo4
  • 2D 姿态关键点检测:ViTPose
  • 3D 姿态估计和网格恢复:HybrIK
  • 2D 足部接触检测
  • 全局根轨迹优化:GLAMR
  • 网球场地线检测

联系方式

如有任何关于本项目的问题,请通过 haotianz@nvidia.com 联系 Haotian Zhang。

编辑推荐精选

TRAE编程

TRAE编程

AI辅助编程,代码自动修复

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
商汤小浣熊

商汤小浣熊

最强AI数据分析助手

小浣熊家族Raccoon,您的AI智能助手,致力于通过先进的人工智能技术,为用户提供高效、便捷的智能服务。无论是日常咨询还是专业问题解答,小浣熊都能以快速、准确的响应满足您的需求,让您的生活更加智能便捷。

imini AI

imini AI

像人一样思考的AI智能体

imini 是一款超级AI智能体,能根据人类指令,自主思考、自主完成、并且交付结果的AI智能体。

Keevx

Keevx

AI数字人视频创作平台

Keevx 一款开箱即用的AI数字人视频创作平台,广泛适用于电商广告、企业培训与社媒宣传,让全球企业与个人创作者无需拍摄剪辑,就能快速生成多语言、高质量的专业视频。

即梦AI

即梦AI

一站式AI创作平台

提供 AI 驱动的图片、视频生成及数字人等功能,助力创意创作

扣子-AI办公

扣子-AI办公

AI办公助手,复杂任务高效处理

AI办公助手,复杂任务高效处理。办公效率低?扣子空间AI助手支持播客生成、PPT制作、网页开发及报告写作,覆盖科研、商业、舆情等领域的专家Agent 7x24小时响应,生活工作无缝切换,提升50%效率!

蛙蛙写作

蛙蛙写作

AI小说写作助手,一站式润色、改写、扩写

蛙蛙写作—国内先进的AI写作平台,涵盖小说、学术、社交媒体等多场景。提供续写、改写、润色等功能,助力创作者高效优化写作流程。界面简洁,功能全面,适合各类写作者提升内容品质和工作效率。

AI辅助写作AI工具蛙蛙写作AI写作工具学术助手办公助手营销助手AI助手
问小白

问小白

全能AI智能助手,随时解答生活与工作的多样问题

问小白,由元石科技研发的AI智能助手,快速准确地解答各种生活和工作问题,包括但不限于搜索、规划和社交互动,帮助用户在日常生活中提高效率,轻松管理个人事务。

热门AI助手AI对话AI工具聊天机器人
Transly

Transly

实时语音翻译/同声传译工具

Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

AI办公办公工具AI工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图热门
下拉加载更多