【ECCV 201八】Instagram开发姿态转换模型,只需一张照片就能让它跳舞(录像)

原标题:【ECCV
2018】推文(Tweet)(Twitter)开发姿态转换模型,只需一张照片就能让它跳舞(录制)

原题目:用DensePose,教照片里的人学舞蹈,系群众体育鬼畜 | ECCV 201捌

有了 TensorFlow.js,浏览器中也能够实时人体姿势估摸

2018/05/12 · CSS ·
TensorFlow

原来的小说出处:
TensorFlow   译文出处:云水木石   

与谷歌创新意识实验室合作,小编很喜悦地表露揭橥TensorFlow.js版本的PoseNet,那是一种机器学习模型,允许在浏览器中展开实时人体姿势揣摸。您能够访问 尝试一下在线演示。

402com永利1站 1

402com永利1站 2

PoseNet能够运用单姿态或多姿态算法检查评定图像和录制中的人物形象 –
全体来源浏览器。

那么,难题来了,什么是姿态推断?姿态推测是指在图像和摄像中检查测试人物的计算机视觉技术,以便人们得以明确有些人的肘子在图像中出现的职位。必要澄清的是,那项技能并不能识别哪个人在图像中

未有别的与识别身份相关的个人身份音信。该算法仅仅猜测首要肉体难题的职位。

好啊,为啥那是令人欢愉的启幕? 姿态推断有无数用场,从对人体做出反应的交互式安装到压达成实、动画、健身用途等等。大家期待此模型的扶植力量能够刺激越来越多的开发人士和创制商尝试将姿态检验选用到她们自身的项目中。固然许多可选的千姿百态检验系统已经开源,但都亟需专门的硬件和/或相机,以及出色多的系统装置。PoseNet运营在TensorFlow.js上,任何拥有摄像头的PC或手提式有线电话机的人都得以在网络浏览器中体会那种技能。 而且由于大家早就开源了这几个模型,JavaScript开发职员能够用几行代码来利用那一个技能。更要紧的是,那实在能够帮助维护用户隐秘。由于TensorFlow.js上的PoseNet在浏览器中运行,因而任何姿态数据都不会留在用户的总计机上。


402com永利1站 3

栗子 发自 凹非寺

PoseNet入门

PoseNet可用以推测单个姿势或四个姿态,那代表该算法的1个版本只好检查实验图像/录像中的1位,而另三个本子可以检验图像/录像中的三人。为啥会有多个版本?单人姿势检查实验器更加快,更简约,但图像中只好有1个关键性(稍后会深入研商)。大家先探索更便于选拔的单个姿势。

在上层看来,姿势推测产生在多个等级:

  1. 输入揽胜GB图像到卷积神经互连网。
  2. 行使单姿态或多姿态解码算法来解码姿势、构建置信度得分、关键点地方和根源模型输出的关键点置信度得分。

等等,这几个重大词的含义是何等? 让大家想起一下最重要的:

  • 姿势 –
    在最上层看来,PoseNet将赶回一个姿态对象,个中带有每种检查实验到的人选的根本点列表和实例层的置信度分数。

402com永利1站 4

PoseNet重回质量评定到的每一种人的相信度值以及检验到的各类姿势关键点。图片来源于:“Microsoft
Coco:上下文数据集中的通用对象”,。

  • 姿势置信度 –
    那决定了对姿势猜想的完好置信度。它介于0.0和一.0以内。它能够用来掩藏不够显明的架子。
  • 关键点 –
    估量的肉身姿势的壹有的,例如鼻子、右耳、左膝、左脚等。它涵盖地方和首要性点置信度分数。PoseNet如今可检验到下图所示的一8个关键点:

402com永利1站 5

PosNet检查实验的1柒个姿态关键点。

  • 重在点置信度得分 –
    那决定了推断关键点地方精度的置信度。它介于0.0和一.0时期。它能够用来掩藏不够分明的关键点。
  • 关键点地方 – 检查实验到的关键点在原来输入图像中的x和y2维坐标。

倒计时**10**天

402com永利1站 6

第1步:导入TensorFlow.js和PoseNet库

将模型的扑朔迷离抽象化并将功用封装为便于使用的主意,那放面已经做了成都百货上千行事。让我们回看一下怎么布置PoseNet项目标基础知识。

该库能够经过npm安装:

npm install @tensorflow-models/posnet

1
npm install @tensorflow-models/posnet

运用es6模块导入:

import * as posenet from '@tensorflow-models/posenet'; const net =
await posenet.load();

1
2
import * as posenet from '@tensorflow-models/posenet';
const net = await posenet.load();

或通过页面包车型大巴bundle:

<html> <body> <!-- Load TensorFlow.js --> <script
src="; <!-- Load
Posenet --> <script
src="; </script>
<script type="text/javascript"> posenet.load().then(function(net)
{ // posenet model loaded }); </script> </body>
</html>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<html>
  <body>
    <!-- Load TensorFlow.js -->
    <script src="https://unpkg.com/@tensorflow/tfjs"></script>
    <!-- Load Posenet -->
    <script src="https://unpkg.com/@tensorflow-models/posenet">
    </script>
    <script type="text/javascript">
      posenet.load().then(function(net) {
        // posenet model loaded
      });
    </script>
  </body>
</html>

怎么让三个面朝镜头静止不动的小妹,跳起你为她选的跳舞,把360度身姿全面展现?

第2a步:单人姿态推断

402com永利1站 7

行使于图像的单人姿势估总括法示例。图片来自:“Microsoft
Coco:上下文数据集中的通用对象”,。

如前方所说的,单姿态估算算法更简便易行、速度越来越快。它的脍炙人口场景是只有壹个人在输入图像或摄像的中等。缺点是,如若图像中有六个人,那么源于多人的关键点或许会被揣测为是同多少个单1姿势的1有些–
例如,#一的左臂和#贰的右膝由该算法分明为属于同一姿势而恐怕被联合。如若输入图像恐怕包括五人,则应当选择多姿态估总结法。

咱俩来探望单姿态揣度算法的输入:

  • 输入图像成分 –
    包蕴要揣摸图像的html成分,例如video或img标签。主要的是,图像或摄像成分应该是方形的。
  • 图像比例因子 –
    0.2和第11中学间的数字。暗中同意为0.50。在输入到网络以前的缩放图像比例。将此数字设置得较低方可减少图像,以献身精度为代价加火速度。
  • 水平翻转 –
    暗许为false。要是姿势应该水平翻转/镜像。对于暗中认可水平翻转(比如网络摄像头)的摄像,这应当安装为true,那样回去的姿势方向才正确。
  • 出口步幅 –
    必须为32、1陆或八。暗中同意值为1陆。在个中,此参数会影响神经互连网中图层的莫斯中国科学技术大学学和宽窄。在上层看来,它会影响姿态估摸的精度速度。输出步幅值越低精度越高但速度越慢,数值越高速度越快,但精度越低。查看输出步幅对输出品质的熏陶的最佳方式是尝尝接纳那些单姿态猜想的示范: 。

近日让我们看一下单姿态估总括法的输出

  • 含蓄姿势置信度得分和一几个关键点数组的姿势。
  • 各种关键点都包括关键点地方和第贰点置信度分数。同样,全体关键点地方在输入图像空间中都有x和y坐标,并且能够平素照射到图像上。

一下子以此大约的代码块浮现了什么行使单姿态估摸算法:

402com永利1站,const imageScaleFactor = 0.50; const flipHorizontal = false; const
outputStride = 16; const imageElement = document.getElementById('cat');
// load the posenet model const net = await posenet.load(); const pose =
await net.estimateSinglePose(imageElement, scaleFactor, flipHorizontal,
outputStride);

1
2
3
4
5
6
7
const imageScaleFactor = 0.50;
const flipHorizontal = false;
const outputStride = 16;
const imageElement = document.getElementById('cat');
// load the posenet model
const net = await posenet.load();
const pose = await net.estimateSinglePose(imageElement, scaleFactor, flipHorizontal, outputStride);

一个输出姿势的例证如下所示:

{ "score": 0.32371445304906, "keypoints": [ { // nose "position": {
"x": 301.42237830162, "y": 177.69162777066 }, "score": 0.99799561500549
}, { // left eye "position": { "x": 326.05302262306, "y": 122.9596464932
}, "score": 0.99766051769257 }, { // right eye "position": { "x":
258.72196650505, "y": 127.51624706388 }, "score": 0.99926537275314 },
... ] }

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
{
  "score": 0.32371445304906,
  "keypoints": [
    { // nose
      "position": {
        "x": 301.42237830162,
        "y": 177.69162777066
      },
      "score": 0.99799561500549
    },
    { // left eye
      "position": {
        "x": 326.05302262306,
        "y": 122.9596464932
      },
      "score": 0.99766051769257
    },
    { // right eye
      "position": {
        "x": 258.72196650505,
        "y": 127.51624706388
      },
      "score": 0.99926537275314
    },
    ...
  ]
}

来源:ECCV 2018

Facebook团队,把担当感知的三个人姿势识别模型DensePose,与顶住生成纵深生成互连网构成起来。

第一b步:三人态度估量

402com永利1站 8

三个用到于图像的多个人态度估总计法的演示。 图片来源:“Microsoft
Coco:上下文数据集中的通用对象”,

几个人姿势估总计法能够预计图像中的许多架子/人物。它比单姿态算法更复杂并且速度稍慢,但它的独到之处是,假使图片中出现多人,他们检查评定到的关键点不太可能与错误的架子相关联。出于这么些原因,固然使用场景是检查实验单人姿势,该算法也说不定更切合供给。

除此以外,该算法的三个掀起人的性情是性质不受输入图像中人数的熏陶。无论是一八人依旧七位,总计时间都以同壹的。

让我们看看输入

  • 输入图像成分 – 与单姿态推断相同
  • 图像比例因子 – 与单姿态猜想相同
  • 水平翻转 – 与单姿态猜想相同
  • 出口步幅 – 与单姿态估摸相同
  • 最大姿势检查实验 – 整数,私下认可为伍,要检查测试的态度的最大数目。
  • 姿态可靠度阈值 –
    0.0至一.0,默许为0.5。在上层看来,那将决定重临姿势的最低置信度分数。
  • 非最大抑制(NMS)半径 –
    以像素为单位的数字。在上层看来,那决定了回到姿势之间的小小距离。该值暗中认可为20,那对超越四分之二景色来说可能是没有错的。它应该扩展/缩短,以滤除不太可信赖的架子,但唯有在调整姿势置信度分数不够好时选用。

查阅那些参数有何成效的最棒法子是尝尝运用那几个多姿态猜测的言传身教:。

让我们看一下输出

  • 1组姿势数组。
  • 各样姿势包蕴与单人估总括法中一致的新闻。

下边那段不难的代码块显示了怎么着选择多姿态推断算法:

const imageScaleFactor = 0.50; const flipHorizontal = false; const
outputStride = 16; // get up to 5 poses const maxPoseDetections = 5; //
minimum confidence of the root part of a pose const scoreThreshold =
0.5; // minimum distance in pixels between the root parts of poses const
nmsRadius = 20; const imageElement = document.getElementById('cat'); //
load posenet const net = await posenet.load(); const poses = await
net.estimateMultiplePoses( imageElement, imageScaleFactor,
flipHorizontal, outputStride, maxPoseDetections, scoreThreshold,
nmsRadius);

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
const imageScaleFactor = 0.50;
const flipHorizontal = false;
const outputStride = 16;
// get up to 5 poses
const maxPoseDetections = 5;
// minimum confidence of the root part of a pose
const scoreThreshold = 0.5;
// minimum distance in pixels between the root parts of poses
const nmsRadius = 20;
const imageElement = document.getElementById('cat');
// load posenet
const net = await posenet.load();
const poses = await net.estimateMultiplePoses(
  imageElement, imageScaleFactor, flipHorizontal, outputStride,    
  maxPoseDetections, scoreThreshold, nmsRadius);

姿态数组输出的样例如下所示:

// array of poses/persons [ { // pose #1 "score": 0.42985695206067,
"keypoints": [ { // nose "position": { "x": 126.09371757507, "y":
97.861720561981 }, "score": 0.99710708856583 }, ... ] }, { // pose #2
"score": 0.13461434583673, "keypositions": [ { // nose "position": {
"x": 116.58444058895, "y": 99.772533416748 }, "score": 0.9978438615799
}, ... ] }, ... ]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
// array of poses/persons
[
  { // pose #1
    "score": 0.42985695206067,
    "keypoints": [
      { // nose
        "position": {
          "x": 126.09371757507,
          "y": 97.861720561981
         },
        "score": 0.99710708856583
      },
      ...
    ]
  },
  { // pose #2
    "score": 0.13461434583673,
    "keypositions": [
      { // nose
        "position": {
          "x": 116.58444058895,
          "y": 99.772533416748
        },
      "score": 0.9978438615799
      },
      ...
    ]
  },
  ...
]

读到那儿,您就取得了足足的学问精通PoseNet示例。 借使你想打听越来越多关于该模型和实施的技术细节,请阅读原版的书文: ,里面附录了更加多的技术细节。

1 赞 收藏
评论

402com永利1站 9

编辑:肖琴

不管是何人的感人姿势,都能附体到三嫂身上,把他单1的静态,变成丰硕的动态。

【新智元导读】DensePose团队在ECCV
2018公布又第一次全国代表大会作:密集人体姿态转换!那是二个依据DensePose的架子转换系统,仅依照一张输入图像和对象姿势,生成数字人物的卡通效果。

402com永利1站 10

DensePose 是 推特(TWTR.US) 研商员 Natalia
Neverova、Iasonas Kokkinos 和高卢雄鸡 IN凯雷德IA 的 兰德本田CR-Vıza Alp 居尔er
开发的2个让人惊讶的身子实时姿势识别系统,它在 二D 图像和身体3D
模型之间确立映射,最后达成密集人群的实时姿态识别。

那项研商成果,入选了ECCV 2018

具体来说,DensePose 利用深度学习将 2D EscortPG
图像坐标映射到 3D 人体外部,把1人分开成许多 UV 贴图(UV
坐标),然后处理密集坐标,完成动态人物的精鲜明位和态度估量。

理所当然不能够只有DensePose

402com永利1站 11

团队把SMPL多少人态度模型,跟DensePose重组到共同。那样一来,就能够用3个老于世故的表面模型来明白一张图片。

DensePose
模型以及数据集已经开源,传送门:

那项切磋,是用基于表面包车型地铁神经济同盟成,是在闭环里渲染一张图像,生成各样新姿态。

402com永利1站 12

近日,该集体更进一步,发布了根据DensePose 的二个姿势转换系统:Dense Pose Transfer,仅依照一张输入图像和指标姿势,制造出
“数字化身” 的动画效果。

左为源图像,中为源图姿势,右为目的姿势

402com永利1站 13

肖像中人要求学习的舞姿,来自另一人的相片,只怕摄像截图。

在那项工作中,商量者希望仅依靠基于表面(苹果平板-based)的目的表示(object
representations),类似于在图片引擎中央银行使的对象表示,来取得对图像合成进程的更加强把握。

DensePose系统,负责把两张相片涉嫌起来。具体方法是,在三个公共表面UV坐标系
(common 华为平板 coordinates) 里,给两者之间做个映射

商讨者关心的关键是人体。模型建立在近日的 SMPL 模型和 DensePose
系统的根基上,将那多少个类别组合在联名,从而能够用全部的外部模型来说诺优能(Nutrilon)个人的图像。

但如果偏偏依据几何来扭转,又会因为DensePose采集数据不够标准,还有图像里的本身遮挡
(比如肉体被手臂挡住) ,而显得不那么真实。

下边包车型大巴录制体现了越多生成结果:

402com永利1站 14

具体而言,那项技术是经过 GALAXY Tab-based
的神经合成,渲染同壹位的分歧姿势,从而执行图像生成。目的姿势(target
pose)是通过贰个 “pose donor”
的图像表示的,也便是引导图像合成的另一个人。DensePose
系统用于将新的肖像与公私表面坐标相关联,并复制预测的外观。

DensePose提取的质感 (左) vs 修复后的材质 (右)

相关文章

Comment ()
评论是一种美德,说点什么吧,否则我会恨你的。。。