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编程神器IDE

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

AI工具TraeAI IDE协作生产力转型热门
问小白

问小白

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

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

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

Transly

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

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

讯飞智文

讯飞智文

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

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

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

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

热门AI开发模型训练AI工具讯飞星火大模型智能问答内容创作多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

热门AI辅助写作AI工具讯飞绘文内容运营AI创作个性化文章多平台分发AI助手
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

openai-agents-python

openai-agents-python

OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。

openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。

下拉加载更多