继 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)

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

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

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

  1. AI「干掉」程序员后,又对艺术家下手了

    几十年前,柯达说出了那句经典的广告语,「你负责按快门,剩下的交给我们」.在未来,AI 兴许也会打起类似的广告,「你什么都不用干,剩下的交给我们」. 人工智能领域缺钱,但这两个月来,他们不缺「好消息」. ...

  2. 为什么要成为「无敌」程序员?

    科技爱好者周刊,阮一峰在其博客上定期发布的栏目,主要收集整理科技类新,可读性蛮强的,老兵哥在闲暇时间会去浏览一番,偶尔还能收获蛮有价值的信息.硅谷著名的风险投资家 Naval,曾经在推特上说了一句被上 ...

  3. 第九十二期:多少程序员注意到了「中台」的背面?

    中台这个词,最近两年特别火,它的爆发源于2015年张勇在阿里发出的内部信中提到的"大中台,小前台"战略.随后吸引了很多人开始"追逐"它.也有很多人开始借着这概念 ...

  4. 夸奖对方代码写的好_不仅会写代码,「得到」程序员还研发了一套“钢铁直男夸人公式”...

    原标题:不仅会写代码,「得到」程序员还研发了一套"钢铁直男夸人公式" 来源:网络 说起程序员,就会想到那句经典的"多喝热水".程序员常常给人一种不擅长聊天的&q ...

  5. 来自「正义」程序员的反击之 star 净网行动

    [回复"1024",送你一个特别推送] 导语:这是来自我们「正义」程序员的反击,正义可能会迟到,但是从来不会缺席. 我记得从7月2号,我在公众号上写了一篇文章<中国内地 Gi ...

  6. 「深度剖析」程序员因为奇葩需求暴打pm,然后被双双开除

    想必大家都听说了,这两天关于中国平安一个产品经理因奇葩需求和程序员爆发肢体冲突的事件在朋友圈被刷屏,更有现场打架视频在技术群里疯传. 在这里先带大家简单文字回顾下事情经过,N次打架视频和截图就不给大家 ...

  7. html如何看数据是不是写死的,程序员常讲的「写死」是什么意思?

    我们在开发软件的过程中对于一些固定不变的参数都会写死,这个时候很多人也许不明白程序员嘴里说的「写死」是什么意思?可以不写死吗?不写死就会增加难度吗?这里吾爱编程为大家介绍一下关于程序员常讲的写死是什么 ...

  8. 新名词|什么是「电源」程序员?

    什么是计算机系统 计算机系统(A computer system) 是由硬件和软件组成的,它们协同工作运行程序.不同的系统可能会有不同实现,但是核心概念是一样的,通用的. 不同的系统有 Microso ...

  9. 35 岁程序员的退路:「有人放弃挣扎撤回老家,有人创业失败退回大厂」

    35岁,真就是程序员职业生涯的「死亡线」吗? 随着「内卷」.「躺平」等词汇出现的频率越来越高,「大龄恐惧症」也越来越多地在技术圈被人讨论,而<2020程序员人才大数据洞察报告>也指出如今程 ...

最新文章

  1. PHP无状态对象,(PHP)基于Token的身份验证中对无状态的理解
  2. 20年研发管理经验谈(五)
  3. java-模拟存放String类型数据的栈
  4. OpenSSL 编程 - RSA 加密解密
  5. 【C#控件详解】对话框类控件(打开文件,保存文件,选择字体和颜色)
  6. 设置访问权限_【新思考教学者思】李世松:不要对经典设置访问权限
  7. [C++11]基于范围的for循环
  8. 霍夫码编码(一种不等长,非前缀编码方式)
  9. php解决与处理网站高并发 大流量访问的方法
  10. jquery设置video的宽度_jquery html5 视频播放控制代码
  11. 【繁琐工作自动化】pandas 处理 excel 文件
  12. Javascript第六章世上最全常用RegExp正则表达式及表单验证源码第七课
  13. C++ string类常用方法
  14. 效率源linux,效率源希捷硬盘修复(4.2版)及程序下载
  15. oracle 白鳝 row cache lock,ROW CACHE LOCK导致数据库CPU高案例分析
  16. 中国自主潜航器AUV—潜龙号
  17. 自己动手写H3C校园网登录客户端(Linux平台版)
  18. python基础------类与对象之间的关系,封装、继承、多态
  19. KDB集群搭建---(kas+krac)
  20. sub html编辑器,目前前端开发必备编辑器有哪几款呢?

热门文章

  1. win10“此电脑”下的几个文件夹怎删除?
  2. 《Web系统与技术》 教学大纲(工程教育认证要求)
  3. LeetCode BST的相关操作
  4. (附源码)springboot学生宿舍管理系统 毕业设计161542
  5. Visual Studio 2019安装中出现的问题(超详细)
  6. Ubuntu18.04+Ros melodic安装cartographer
  7. 基于Python的淘宝行为数据可视化分析
  8. 随笔录—2014.6.12
  9. office 2010 密钥
  10. 抗滑桩初始弹性系数计算_抗滑桩结构设计计算