3D模型学会了「唱、跳、Rap、篮球」,程序员们全沉迷「鸡你太美」

2023-11-13

继 B 站之后,GitHub 网友也开始沉迷「鸡你太美」,让 3D 姿态也学会了「唱、跳、Rap、篮球」,而且动作准确度和连贯性似乎一点也不输练习时长两年半的练习生。

看了这段 demo 之后,网友戏称,「你的律师函已经在路上了」。

这段「看到停不下来」的 demo 来自一位用户名为「zh-plus」的 GitHub 网友。他用 CVPR 2019 接收论文中的一项技术实现了这种效果。

实现地址:

https://github.com/zh-plus/video-to-pose3D

这项技术是 3D 人体姿态预测的一种,项目作者利用该技术从原版视频中预测出了人物的 3D 姿态,无需昂贵的拍摄设备,也不需要在人物身体的关键点上贴标签。

该技术的论文作者是来自苏黎世联邦理工学院、Facebook 和谷歌大脑的团队,相关论文《3D human pose estimation in video with temporal convolutions and semi-supervised training》发表在 2019 年的 CVPR 会议上。

在该论文中,研究者提出了一个用于 3D 人体姿态预测的全卷积模型,只需基于 2D 的关键点执行时间卷积,就可以对视频中的人体实现精准的 3D 姿态预测。

此外,他们还介绍了一种简单、高效的半监督训练方法——反向投影(back-projection),可以利用没有标注的视频数据。具体步骤可以概括为:为没有标签的视频预测 2D 关键点→预测 3D 姿态→将其反向投影到输入的 2D 关键点上。

在有监督的情况下,这个全卷积模型在 Human3.6M 数据集上将误差降低了 11%,在 HumanEva-I 数据集上也实现了很大的改进。在标注数据稀缺的半监督情况下,这种反向投影的方法也优于之前的 SOTA 结果。

论文地址:

https://arxiv.org/abs/1811.11742

当然,除了唱、跳、Rap 和篮球,你也可以自己动手做出各种「专业选手」的 3D 模型。

拳击。

打篮球。

优雅的「冰场公主」。

模型概括

研究者提出的这一方法聚焦于视频中的 3D 人体姿态预测。他们以 SOTA 方法为基础,将问题定义为 2D 关键点检测和 3D 姿势估计。虽然把问题分开可以降低任务的难度,但由于多个 3D 姿态可以映射到一个 2D 关键点上,因此处理起来依然是模糊的。

之前的研究通过利用循环神经网络(RNN)建模时间信息来处理这种模棱两可的问题,但卷积网络在建模任务中的时间信息方面已经非常成功。卷积模型支持多帧的并行处理,而这是循环网络所做不到的。

在这项研究工作中,研究者提出了一个全卷积架构(fully convolutional architecture)。该架构可以在 2D 关键点上执行时间卷积,以实现精准的视频 3D 姿态预测,如下图 1 所示。

图 1:研究者提出的时间卷积模型以 2D 关键点序列(下)为输入,生成 3D 姿态预测(上)。

这一方法兼容所有 2D 关键点检测器,并且可以通过扩大卷积来高效处理大型语境。与依赖 RNN 的方法相比,该模型非常准确、简洁和高效,在计算复杂度和参数量上都是如此。

有了这种准确、高效的架构,研究者将目光转向缺乏标注数据的领域,引入了一个利用无标注视频数据进行半监督训练的新范式。

缺乏标注数据的领域对于需要大量标记训练数据的神经网络模型尤其具有挑战性,而收集用于 3D 人体姿态估计的标记需要昂贵的动作捕捉设置和冗长的记录 session。

本文研究者所提方法的灵感来自于无监督机器翻译的循环一致性(cycle consistency),在此过程中,中间语言和原语言之间的双向翻译应接近于恒等函数。

具体来说,研究者先使用 2D 关键点检测器来预测一个无标签视频的 2D 关键点,然后预测 3D 姿态,最后将其映射回 2D 空间。

与单帧基线相比,该模型可以利用时间来解决模糊问题并减少抖动/噪声。与现有的 SOTA 方法相比,该方法在监督和半监督设置下都超越了之前表现最好的模型。研究者提出的监督模型优于其他模型,即使后者利用额外的标记数据进行训练。

3D 姿态预测的实现

现在,就让我们动动手指,将视频中的人物一键转为 3D 姿态。

你可以同时指定「--evaluate」和「--render」来渲染视频。这个脚本会生成一个可视化的效果,包含三个可视窗口:2D 关键点输入、3D 重建和 3D ground truth。注意,当你指定视频时,2D 检测仍然会通过既定参数从数据集中加载。你既可以选择正确的视频,也可以可视化未标注的视频,这样的话 ground truth 就不会显示了。

下面是一份可视化相关的命令行参数列表:

  • --viz-subject: 渲染对象, e.g. S1;

  • --viz-action: 渲染动作, e.g. Walking 或者 Walking 1;

  • --viz-camera: 要渲染的摄像机, 对于 Human3.6M 来说从 0 到 3,对于 HumanEva 来说从 0 到 2。默认值: 0;

  • --viz-video: 需要呈现的 2D 视频路径。如果指定,该脚本将在视频顶部呈现骨架叠加。如果未指定,则将呈现黑色背景(但仍将显示 2D 检测);

  • --viz-skip: 跳过指定视频的前 N 帧(在 HumanEva 时有意义)默认值:0;

  • --viz-output: 输出文件名 ( .mp4 或者.gif 格式);

  • --viz-bitrate: 设置 MP4 视频的比特率。默认值: 3000;

  • --viz-no-ground-truth: 默认情况下,视频包含三个可视图层:2D 动作输入,3D 重建和 3Dground truth。这里的意思是删除最后一个;

  • --viz-limit: 仅渲染前 N 帧。默认情况下,将渲染所有帧;

  • --viz-downsample: 按指定因子对视频进行下采样,即降低帧频。例如,如果设置为 2,则帧速率从 50 FPS 降低到 25 FPS。默认值:1(不进行下采样);

  • --viz-size: 输出分辨率乘数。较高=较大图像。默认值:5;

  • --viz-export: 将 3D 节点坐标(在摄影空间中)导出到指定的 NumPy 存档。

示例 1:

python run.py -k cpn_ft_h36m_dbb -arc 3,3,3,3,3 -c checkpoint --evaluate pretrained_h36m_cpn.bin --render --viz-subject S11 --viz-action Walking --viz-camera 0 --viz-video "/path/to/videos/S11/Videos/Walking.54138969.mp4" --viz-output output.gif --viz-size 3 --viz-downsample 2 --viz-limit 60

从摄像头 0 中生成 Walking(走路)的可视化图,并将前几帧(first frames)输出到帧率为 25 FPS 的 GIF 动画中。如果你删除--viz-video 参数,则人体动作线条将呈现在空白背景上。

Human3.6M 数据集上的可视化效果图可以立即实现,但 HumanEva 数据集上的可视化相对较为困难,因为必须对输入的原始视频进行手动分割。此外,无效帧和软件同步也使可视化变得更复杂。尽管如此,通过选取验证序列中的数据块 0 以及利用--viz-skip 丢弃前几帧,你依然可以获得良好的可视化效果。

如果想要了解可以跳过的帧数,请查看 data/prepare_data_humaneva.py 上的 sync_data。

示例 2:

python run.py -d humaneva15 -k detectron_pt_coco -str Train/S1,Train/S2,Train/S3 -ste Validate/S1,Validate/S2,Validate/S3 -c checkpoint --evaluate pretrained_humaneva15_detectron.bin  --render --viz-subject Validate/S2 --viz-action "Walking 1 chunk0" --viz-camera 0 --viz-output output_he.gif --viz-size 3 --viz-downsample 2 --viz-video "/path/to/videos/S2/Walking_1_(C1).avi" --viz-skip 115 --viz-limit 60

未标注视频的可视化更加容易,因为这些视频不需要与 ground truth 保持一致。在这种情况下,即使对于 HumanEva 数据集而言,可视化也是可以立即实现的。

示例 3:

python run.py -d humaneva15 -k detectron_pt_coco -str Train/S1,Train/S2,Train/S3 -ste Validate/S1,Validate/S2,Validate/S3 -c checkpoint --evaluate pretrained_humaneva15_detectron.bin  --render --viz-subject Unlabeled/S4 --viz-action "Box 2" --viz-camera 0 --viz-output output_he.gif --viz-size 3 --viz-downsample 2 --viz-video "/path/to/videos/S4/Box_2_(C1).avi" --viz-limit 60

更多实现细节可以参见该论文的 GitHub 项目。

项目地址:

https://github.com/facebookresearch/VideoPose3D

来源丨机器之心(almosthuman2014)

如果大家喜欢这些的话,欢迎加入数据类交流群学习、讨论:

有什么问题,狗哥都在这里等你哦!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

3D模型学会了「唱、跳、Rap、篮球」,程序员们全沉迷「鸡你太美」 的相关文章

  • Linux添加PYTHONPATH方法以及3种修改环境变量方法

    方法一 用于当前终端 export PATH PATH lt 你的要加入的路径 gt 上面的方法只适用于当前终端 一旦当前终端关闭或在另一个终端中 则无效 方法二 用于当前用户 在用户主目录下有一个 bashrc 隐藏文件 可以在此文件中加
  • python数据结构:栈(匹配花括号、尖括号、圆括号、方括号)

    利用数据结构中的栈实现检查花括号 尖括号 圆括号 方括号是否匹配 相比较网上其他的方法 这种自定义类及函数的方法使用起来更加自动化 class StackNode object 初始化结点 def init self self data N
  • unity3d实现LOL中的相机控制功能

    using UnityEngine using System Collections public class CameraController MonoBehaviour private int SightDistancespeed 15
  • ovirt-node和ovirt-engine相连遇到的问题解决办法

    1 Host 192 168 70 7 does not comply with the cluster Default emulated machines The Hosts emulated machines are
  • CentOS7下安装配置Docker

    本文目录 step1 Docker下载安装 step2 设置docker 启动docker step3 docker基本操作 开启docker 查找镜像 拉取镜像 构建镜像 创建脚本文件 创建Dockerfile 构建 运行 step4 D
  • csdn积分获取攻略

    下载积分攻略 1 个人设置里进行手机绑定CSDN账户 奖励50分 右上角设置 账户安全 手机绑定 2 完成任务送若干分积分 http task csdn net 3 上传有效资源获取积分 上传非法 广告资源用户 将被扣除一定积分 严重者封号
  • 联想拯救者R9000P恢复原厂自带的win11系统

    之前重装win10之后 再想换回win11折腾了很久 现将方法分享出来 以便后面有相同需求的人可以较快的解决问题 文中无过程图片 因为我已经弄好了 不懂的地方可以私信或者评论 需要的东西 原厂自带系统 来自百度网盘超级会员V1的分享 hi
  • maven配置多个国内镜像

    一打开 打开maven的settings xml文件 二配置 在约190行下添加如下代码
  • Python报错:NameError: name ‘plt‘ is not defined

    加入以下一行代码即可 导入pyplot并将其命名为plt import matplotlib pyplot as plt
  • 论文阅读:SCDNET: A novel convolutional network for semantic change detection in high resolution optical

    SCDNET 一种用于高分辨率光学遥感图像变化检测网络 变化检测 新的网络架构 SCD的局限性 提出的SCDNET架构 网络结构 多尺度空洞卷积模块 注意力机制 LOSS函数 实验 结论 变化检测 变化检测 Change Detection
  • 双数组TRIE树原理

    原文名称 An Efficient Digital Search Algorithm by Using a Double Array Structure 作者 JUN ICHI AOE 译文 使用双数组结构的一个高效的Digital Sea
  • 【QT】简单易学的QT安装教程

    对于在Windows系统上安装QT 经常会出现各种各样的错误 从不知选择版本到安装好后也无法使用 实属让人头疼 经过多次试错 找到了简单易学的QT方式 同时也会说明其中需要注意的点 一 QT安装和新建QT文件 https download
  • 接口测试流程、测试点和测试工具

    一 什么情况下开展接口测试 1 项目处于开发阶段 前后端联调接口是否请求的通 2 有接口需求文档 开发已完成联调 可以转测 功能测试展开之前 3 版本上线前 进行整体回归测试 查看接口是否有异常 如404等 对准备上线的版本进行抓包 查看服
  • SignalR前后端进行通信时,出现了内存泄露

    在做此需求之前 需要知道 1 当前wafer功能已经用canvas实现了 2 die指的是图片中每一个小格子 3 当前正在工作的die用黄色进行高亮 已经工作过的die用灰色表示 4 几台基本每秒工作3个die wafer图片 最近在做一个
  • 【Linux】基础IO -- 软硬链接

    前言 上篇Linux的文章 我们学习到了文件系统中 对磁盘文件的管理 而本篇文章 我们要以文件系统的基础知识 了解软硬链接 话不多说 马上开始今天的学习 文章目录 前言 一 软链接 1 软链接的语法 2 软链接的本质 3 软链接的应用 二
  • axios vue 加载效果动画_vue+elementUI+axios实现的全局loading加载动画

    在项目中 很多时候都需要loading加载动画来缓解用户的焦虑等待 比如说 我打开了一个页面 而这个页面有很多接口请求 但浏览器的请求并发数就那么几个 再加上如果网速不行的话 那么这时候 用户很可能就会纠结自己到底该不该留下来继续等待呢 所
  • VC编程获取MSN口令的代码

    MSN Messenger uses Windows Credential UI credui dll on WinXP 2003 Password Storage mechanism differs in these OSes so th
  • 微服务的终极杀器SpringCloudAlibaba组件精讲

    一 微服务 1 1 微服务简介 In short the microservice architectural style is an approach to developing a single application as a sui
  • 02_jQuery与Ajax

    jquery jquery的作用 他是js的库 处理html 事件 实现动画效果 方便的为网站提供AJAX交互 命名格式 ji 体积大 用于学习和debug使用 min js 压缩的文件 体积小 用于线上环境使用 使用方法 必须先在页面文件
  • 五种开源协议的比较(BSD,Apache,GPL,LGPL,MIT)

    五种开源协议的比较 BSD Apache GPL LGPL MIT 本篇博客比较了常见的5种开源协议的异同 大家在为自己的代码选择协议的时候可以参考 现今存在的开源协议很多 而经过Open Source Initiative组织通过批准的开

随机推荐

  • 标准C读BMP图象的一个小代码

    include
  • TCP/IP UDP广播无法发送或接收

    TCP IP UDP广播无法发送或者接收数据 在看 TCP IP 网络编程 这本书的时候 看到广播那一节 跟着书上写代码 怎么写都不行 广播就是没法发送 接收 发送端一直在发送数据 接收端就是没有反应 对了好几遍源码 没有问题 实在是愁人
  • 深入浅出理解Paxos算法

    Paxos算法是莱斯利 兰伯特 英语 Leslie Lamport LaTeX中的 La 于1990年提出的一种基于消息传递且具有高度容错特性的一致性算法 Paxos算法一开始非常难以理解 但是一旦理解其实也并不难 之所以难理解其实是因为作
  • 远程服务器无密登入设置

    现在还在输密码进入服务器的话 如果频次高的话 显得就很浪费时间 实际上可以通过无密登陆服务器 只需要设置好ssh就可以 这样只要你打开你电脑的终端不管是Mac OS还是Linux输入ssh root 远程服务器IP 这个命令就会自动登陆到远
  • 如何保障数仓数据质量?

    有赞数据报表中心为商家提供了丰富的数据指标 包括30 页面 100 数据报表以及400 不同类型的数据指标 它们帮助商家更合理 科学地运营店铺 同时也直接提供分析决策方法供商家使用 并且 每天在跑的底层任务和涉及的数据表已经达到千级别 面对
  • 【Python 1-10】Python手把手教程之——一篇讲透if语句以及if语句的特殊用法

    作者 弗拉德 来源 弗拉德 公众号 fulade me if 简单示例 假设你有一个汽车列表 并想将其中每辆汽车的名称打印出来 对于大多数汽车 都应以首字母大写的方式打印其名称 但对于汽车名 bmw 应以全大写的方式打印 下面的代码遍历一个
  • 技术至简-7:2G/3G/4G/5G基站系统中混合调制的技术框架

    2G 3G 4G 5G基站系统并非采用单一的调制技术 是数字调制和模拟调制的综合 是QAM调制与IQ调制的综合 是幅度调制与相位调制的综合 1 调制模型 在此模型中 包含了三种调制 1 数字基带调制 PSK QAM调制 2 模拟基带调制 I
  • Git日常问题: 什么是LFS?及其错误解决办法

    文章目录 Git LFS 错误 Git LFS 解决办法 Git LFS 错误 本地已经存在一个git仓库 想将其推送到一个远程仓库 结果遇到了git lfs错误 打印如下 git remote rename origin old orig
  • 解决DCNv2在Linux上安装失败的问题

    项目场景 今天同学安装 DCN Deformable Convolutional Networks 可变形卷积网络 v2的 PyTorch 版本时遇到了很多问题 弄了将近一天也没解决 于是求助笔者帮忙解决 这里记录一下成功的解决方案 问题描
  • MATLAB算法实战应用案例精讲-【回归算法】XGBoost算法(附Java、Python和R语言代码)

    目录 前言 xgboost面试过程中几个高频问题 1 xgboost如何处理缺失值
  • 什么是JDBC?并写出JDBC的开发流程。

    JDBC Java DataBase Connectivity 直译为 java数据库连接 实际上jdbc是java中的一套和数据库交互的api application program interface 应用程序编程接口 因为java程序
  • 【uni-app】修改原生导航栏文字和文字样式

    修改文字 uni setNavigationBarTitle 这是修改后的导航栏文字 title 首页 修改文字颜色以及导航栏背景色 uni setNavigationBarColor frontColor ffffff 文字颜色 back
  • SystemVerilog-$cast详解

    cast在子类与父类之间的复制 1 子类cast给父类 cast father cls child cls 之前有提到 cast是将两个类型强制转换 cast A B 将B强制类型转换给A 应用在类上 就是句柄的强制赋值操作 那么在子类和父
  • Global Illumination_Screen-Space Directional Occlusion(SSDO)

    之前我们了解过AO SSAO HBAO 可参照之前文章Vulkan SSAO 屏幕空间环境光遮蔽 DirectX11进阶9 AO SSAO Particle System GPU Global Illumination Horizon Ba
  • 常用椭圆曲线介绍

    chat gpt生成 对应python的miracl core python库 ED系列 一 ED25519 ED25519使用的椭圆曲线是Curve25519 它是一种高效且安全的椭圆曲线 由Daniel J Bernstein等人设计
  • 游戏渲染技术:前向渲染 vs 延迟渲染 vs Forward+渲染(二)

    GTA5 2 前向渲染 前向渲染是三个光照技术中最简单的 也是游戏图形渲染中最常见的技术 出于这个原因 也是光照计算最昂贵的技术 它不允许在场景中出现大量的动态光源 大部分使用前向渲染的图形引擎会采用一些技术来模拟场景中大量的光源的情况 例
  • 区间预测

    区间预测 MATLAB实现QRCNN BiLSTM卷积双向长短期记忆神经网络分位数回归时间序列区间预测 目录 区间预测 MATLAB实现QRCNN BiLSTM卷积双向长短期记忆神经网络分位数回归时间序列区间预测 效果一览 基本介绍 模型描
  • php比较两个二维数组是否相同,多维数组

    欢迎加入 新群号码 99640845 几天前跟同事讨论一个很有趣的问题 一直想写下来结果总没有时间 今天终于有时间了 如题 php如何比较两个二维数组是否相同 这个问题我在群里也问了很多人 大多数就是遍历了 有的人遍历一次 有的人遍历两次
  • 微信Banner广告位置设置

    在微信中banner广告的调用 并没有在微信官方文档中解释得比较明白 也没有简单明了的示例 所以我们在这里讨论一下banner广告的实现 微信中的banner广告的位置属性只有 left top 意味着只有左对齐和上对齐 而且 微信中的这个
  • 3D模型学会了「唱、跳、Rap、篮球」,程序员们全沉迷「鸡你太美」

    继 B 站之后 GitHub 网友也开始沉迷 鸡你太美 让 3D 姿态也学会了 唱 跳 Rap 篮球 而且动作准确度和连贯性似乎一点也不输练习时长两年半的练习生 看了这段 demo 之后 网友戏称 你的律师函已经在路上了 这段 看到停不下来