点击上方“深度学习技术前沿”,选择“星标”公众号

资源干货,第一时间送达

转载自:机器之心,未经允许不得二次转载

继 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

更多人工智能领域咨询,请扫码关注:

3D模型实现「唱、跳、Rap、篮球」相关推荐

  1. 一个摄像头就能让虚拟人唱跳rap,抖音即可玩

    允中 发自 凹非寺 量子位 | 公众号 QbitAI 全身动作捕捉,现在无需昂贵的动捕设备,只要一个摄像头就能轻松实现. 并且就在抖音上,人人都能上手体验. 上面这段虚拟数字形象跳舞的视频采用了抖音直 ...

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

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

  3. ResNet也能用在3D模型上了,清华「计图」团队新研究已开源

    鱼羊 发自 凹非寺 量子位 报道 | 公众号 QbitAI 用AI处理二维图像,离不开卷积神经网络(CNN)这个地基. 不过,面对三维模型,CNN就没有那么得劲了. 主要原因是,3D模型通常采用网格数 ...

  4. 清华大学胡事民是计算机视觉,ResNet也能用在3D模型上了,清华「计图」团队新研究已开源...

    鱼羊 发自 凹非寺 量子位 报道 | 公众号 QbitAI 用AI处理二维图像,离不开卷积神经网络(CNN)这个地基. 不过,面对三维模型,CNN就没有那么得劲了. 主要原因是,3D模型通常采用网格数 ...

  5. android显示3d模型_使用Unity AR Foundation在增强现实中查看模型

    本文将分享麻省理工学院的教程-使用Unity AR Foundation在增强现实中查看模型. 在本教程中,我们将介绍如何把3D模型导入Unity,并使用Android设备或iOS设备在AR中查看模型 ...

  6. android显示3d模型_Creator3D:太厉害了!3D模型原来可以这样显示在2DUI上

    国庆,中秋收假了,菜鸟在这里给大家道声祝福: 同时可能不少人都已经知道,就在放假前,「Creator3D 1.2.0 正式版」 已经发布.菜鸟后边的自学demo也将全部用1.2.0,大家在打开demo ...

  7. 飞桨火力全开,重磅上线3D模型:PointNet++、PointRCNN!

    11年前的「阿凡达」让少年的我们第一次戴上3D眼镜,声势浩大的瀑布奔流而下,星罗棋布飘浮在空中的群山,无一不体现着对生命的敬意,妥妥的坐稳了2010年北美.海外.中国和全球票房No.1的宝座,「3D」 ...

  8. 史上最全!国内外最新免费3D模型下载网站分享!

    关注柳杉前端公众号,获取更多资料 ❝ 最近在学习three.js,所以找了一些模型库练习,顺便也分享给大家!希望对你有用. ❞ 01 kenney 「地址:https://www.kenney.nl/ ...

  9. 3d模型多怎么优化_高德地图又出逆天黑科技!全国各大城市模型直接获取

    本文转自:公众号"设计气象台" 作者:爱敷面膜的台小妹 高德地图可以做区位分析,想必你应该都知道了. (▲ 高德地图"原配"色系) 但是最近发现,高德地图又新出 ...

  10. 浩辰3D软件入门教程:如何比较3D模型?

    在初始设计.验证.变更.发布.优化等整个产品生命周期内,设计方案会经历无数次的调整.而由此产生的多版本3D模型数据或二维CAD图纸,已经很难凭借肉眼.记忆.经验等人工辨别方式进行精确区分和全面分析. ...

最新文章

  1. CIO成功转型为战略性业务领导者的五个要领
  2. 中国将对人工智能、云计算等行业独角兽IPO即报即审
  3. 关于R语言的一些编程经验
  4. Android 利用方向传感器实现 指南针
  5. WebStorm 2019.3.1安装教程
  6. 我是如何在webpack中使用postcss-px2rem的
  7. JavaScript实现判断整数是否为2的幂isPowerOfTwo算法(附完整源码)
  8. C语言——冒泡排序法
  9. 信息学奥赛一本通(1095:数1的个数)
  10. Primefaces,Spring 4 with JPA(Hibernate 4 / EclipseLink)示例教程
  11. jquery layout学习
  12. Android倒计时案例展示
  13. 车联网发展对汽车经销商的影响
  14. Spring源码下载步骤
  15. GraphPad Prism 中文版 科研绘图工具
  16. 台式计算机关机后自行重启,台式电脑关机后自动重启该怎么解决
  17. 产品经理的主要工作职责
  18. 服务器多网卡多路由策略
  19. JAVA计算机毕业设计智能停车场管理系统Mybatis+源码+数据库+lw文档+系统+调试部署
  20. css3实现border渐变色

热门文章

  1. CentOS怎样添加字体
  2. 虚拟机VMware访问Window共享文件
  3. 疫情下技术人的宅家指南
  4. RFID在图书馆系统管理中的有哪些应用优势?
  5. iOS 自定义导航栏 简单好使用
  6. nadcházející basketbalové boty velkoobchodní další
  7. 蓝牙sbc怎么解决_简单一文,为你详细解析手机蓝牙的音质之谜
  8. k2450 linux 显卡驱动,Debian系统安装NVIDIA驱动支持双显卡切换
  9. Google已将 xxx 标记为恶意程序并阻止安装的解决办法
  10. [转帖]优麒麟和银河麒麟操作系统都出自于天津麒麟信息技术有限公司