图片动画化应用中的动作分解方法

前言

最近依据AI的换脸使用十分的火爆,一同也引起了新一轮的网络道德大评论。假定光从技能的视点看,关于视频中的人体动作信息,一般能够经过泰勒打开分化成零阶运动信息与一阶运动信息,如文献[1,2]中说到的,动作的分化能够为图片动画化供给很好的光流信息,而图片动画化是供给换脸技能的一个办法。笔者在本文将会依据[1,2]文献中的内容,对其进行笔记和个人了解的探讨。 如有错误请联系指出,转载请联系作者并注明出处,谢谢


注意:本文仅仅依据[1,2]文献的内容论述思路,为了行文简练,去除了某些细节,如有爱好,请读者自行翻阅对应论文细读。

\Delta 本文使用术语纪要

<1>. 指引视频(Guided Video),驱动视频(Driving Video):指的是给定的用于供给动作信息的视频,该视频负责驱动,引导图片的动态信息,这两个术语在本文中将会视场合混用。

<2>. 静态图(Source Image, Source Frame):需求被驱动的图片,其主体类别一般需求和指引视频中的类别共同,主体身份能够不同。

<3>. 泰勒打开(Taylor Expansion):将杂乱的非线性函数经过打开的办法改换成若干项的线性组合。

<4>. 变形(deformation):指的是经过某些控制点去控制一个图片的某些部位,使得图片像素发生移动或许插值,然后构成必定程度空间上改变。

<5>. 主体(entity):指的是图片或许视频中的活动主体,该主体不必定是人体,也或许是其他任意的物体。这儿要清晰的是本文说到的 主体类别(entity category) 和 主体身份(entity identity),主体身份不同于类别,比方都是人脸,一个张三的人脸,而另一个是李四的人脸。

<6>. 稀少光流图(Sparse Optical Flow Map):表明不同帧之间,稀少的要害点之间的空间改变,是一个向量场。

<7>. 密布光流图(Dense Optical Flow Map):表明不同帧之间,每个像素之间的空间改变,是一个向量场。


从图片动画化说起

咱们知道最近的依据AI的换脸使用十分火爆,也引起了一轮轮关于AI使用的道德大评论,这从旁边面反映了AI技能使用在咱们日常日子的浸透。如Fig 1.1所示,给定一个指引视频,让一张静态图片跟随着该视频表演其间的表情(或许动作),这种技能的首要框架在于需求别离指引视频中的动作信息(motion)和外观信息(appearance),将提取出的动作信息以某种方法增加到静态图上,让静态图到达必定程度的变形(deformation),以到达图片动态化表演特定动作的意图。

图片动画化应用中的动作分解方法

Fig 1.1 换脸的比方。给定一个静态的图片和一段相对应主体类别的(比方相同是人脸)的指引视频,咱们能够让图片跟着视频一同动起来,到达以假乱真的意图。原图出自[10]。

图片动画化应用中的动作分解方法

Fig 1.2 不仅仅是人脸替换,图片动画化能够使用在主体类别共同的其他主体中。原图出自[10]。

这类型的工作能够称之为图片动画化 (image animation),指的是给定一张具有某个主体的静态图(Source Image)(主体不必定是人体,如Fig 1.2所示,不过咱们这儿首要以人体做比方),再给定一个由该主体表演某个动作的视频,一般称之为驱动视频(Driving Video),让静态图跟随着驱动视频的动作“活动”起来。注意到静态图和驱动视频中的主体是同一类型的主体,可是身份或许是不同的,比方都是人脸,可是不是同一个人的人脸。如Fig 1.3所示,给定了一个驱动视频,其主体是一个人脸的表情序列,给定了一个静态图,主体是一个不同身份的人,然后使命希望提取出序列中的动作信息,希望以某种办法增加到静态图上,使得静态图能够经过像素变形的办法,构成具有指定动作,可是主体身份和静态图共同的新的动作序列。

图片动画化应用中的动作分解方法

Fig 1.3 图片动画化的比方。给定一个驱动视频,和若干不同的静态图,从驱动视频中提取出人脸的运动信息,将运动信息以某种办法“增加”到静态图上,以到达让静态图跟随着驱动视频活动起来的意图。

当然,该使命不必定被局限在人脸上,如Fig 1.2所示,事实上,只要输入驱动视频和静态图的主体类别共同,就能够经过某些自监督的办法进行动作信息提取,并且接下来进行动作信息迁移到目标静态图上的操作。

咱们现在已经对图片动画化有了根本的知道,那么从技能上看,这整个使命的难点在于哪儿呢?首要在于以下几点:

  1. 怎样表征运动信息?
  2. 怎样提取驱动视频中的运动信息?
  3. 怎样将提取到的动作信息增加到静态图中,让静态图变形?

一般来说,表征一个主体的运动信息能够经过密布光流图的办法表达,光流(optical flow)[5] 表明的是某个部分运动的速度和方向,简略地能够了解为在时间很短的两个接连帧的某个部分,相对应像素的改变状况。如Fig 1.4所示,假定核算(a)(b)两帧关于蓝色框内的光流,咱们能够得到如同(c)所示的光流图,表征了这个“拔箭”动作的部分运动速度和方向,因而是一个向量场,咱们一般能够用F∈RHW2\mathcal{F} \in \mathbb{R}^{H \times W \times 2}表明,其间的HWH \times W表明的是部分区域的空间标准,维度2表明的是二维空间(x,y)(\Delta x, \Delta y)偏移。假定该部分区域的每一个像素都核算光流图,那么得到的光流图就称之为 密布光流图(Dense Optical Flow Map),如Fig 1.4 (c)所示。密布光流图中的每一个像素对应的向量方向,供给了从一个动作转移到下一个动作所必要的信息,是图片动画化进程中的必需信息。

图片动画化应用中的动作分解方法

Fig 1.4 (a)(b)两张图是接连的两帧,而(c)是对蓝色框区域进行核算得到的光流图,表征了运动的速度和方向。原图出自[4]。

假定能够给出某个运动的密布光流图,那么就能够依据每个像素对应在光流图中的向量方向与巨细对像素进行位移插值后,完成图像的变形的进程。可是,在图片动画化进程中,咱们的输入一般如Fig 1.5所示,其静态图和驱动视频中的某一帧(称之为驱动帧)之间的动作不同很大,并且主体的身份还不必定共同,能确定的只要 一点,便是: 稀少的要害点能够视为是逐一配对的。 如Fig 1.3所示,蓝色点是人体的稀少要害点,一般存在一对一的配对映射(暂时不考虑遮挡),如黄色虚线所示,这种稀少要害点的映射图,咱们称之为 稀少光流图 (Sparse Optical Flow Map)。咱们接下来介绍的文章,都是 **从不同方面考虑从稀少光流图推理出密布光流图,然后指引图片变形的。 **

图片动画化应用中的动作分解方法

Fig 1.5 一般输入的是不同较大的静态图(Source)和驱动视频中的某一帧(Driving Frame),蓝点表明的是稀少的要害点,黄色虚线表明的是对应要害点的配对。

到此为止,咱们之前评论了怎样界说一个动作的运动信息,也便是用密布光流图表明。一同,咱们也分析了一种状况,在实际使命中,很难直接得到密布光流图,因而需求从一对一配对的稀少光流图中参加各种先验知识,推理得到密布光流图。咱们接下来的章节评论怎样增加这个先验知识。

为了以后章节的评论便利,咱们给出图片动画化模型的根本结构,如Fig 1.6所示,需求输入的是驱动视频和静态图,静态图具有和驱动视频相同的主体类别(比方都是人)可是身份能够不同(比方是不同的人),希望生成具有和静态图相同身份和主体,动作和驱动视频共同的视频,一般是提取驱动视频中每帧的动作信息,结合静态图生成希望的视频帧,在拼接成终究的视频输出。

图片动画化应用中的动作分解方法

Fig 1.6 图片动画化的根本框图,其间Monkey-Net是一种图片动画化的模型,能够替换成其他模型。一般只需求输入驱动视频和某张具有相同主体类别的静态图,经过提取驱动视频中每一帧的动作信息,结合静态图就能够生成具有静态图主体身份和类别,并且具有驱动视频同一个动作的“生成视频”。

无监督要害点提取

在继续评论密布光流图提取之前,咱们首先描绘下怎样提取稀少光流信息,也便是稀少的要害点信息,如Fig 1.5所示。当然,关于人体而言,现在已经有许多研讨能够进行人体姿态估量,比方OpenPose [6],AlphaPose [7]等,这些研讨能够提取出相对不错的人体要害点。就人脸这块的要害点提取而言,也有许多不错的研讨[8],能够提取出相对不错的人脸稀少或许密布要害点,如Fig 2.1所示。

图片动画化应用中的动作分解方法

Fig 2.1 人脸要害点提取办法已经日渐成熟,效果已经相当不错了,原图出自[9]。

可是,咱们注意到,为了提取人体或许人脸的要害点,现在的大多数办法都需求依赖于大规模的人体/人脸标注数据集,这个工作量十分大,因而,假定咱们需求对某些非人脸/人体的图片进行图片动画化,比方Fig 2.2所示的动画风格的马,咱们将无法经过监督学习的办法提取出要害点,由于没有现存的关于这类型数据的数据集。为了让图片动画化能够泛化到人体/人脸之外更宽广的使用上,需求提出一种无监督提取特定主体物体要害点的办法。

图片动画化应用中的动作分解方法

Fig 2.2 动画风格的马的图片动画化,现存的研讨并没有关于这类型数据的要害点提取,也没有相关的数据集,因而依赖于监督学习,在这种数据中提取要害点是一件困难的问题。原图出自[10]。

文献[1,2,11]使用了一种无监督的要害点提取办法,这儿简略介绍一下,为之后的章节供给衬托。如Fig 2.3所示,关于输入的单帧RGB图片I∈RHW3\mathbf{I} \in \mathbb{R}^{H \times W \times 3}来说,使用U-net [12]提取出KK个热值图Hk∈[0,1]HW,k∈[1,⋯ ,K]H_k \in [0,1]^{H \times W}, k \in [1,\cdots,K],每kk个热值图表明了第kk个关节点的分布状况。当然,U-net的终究一层需求用softmax层作为激活层,这样解码器的输出才能解说为每个要害点的相信图(confidence map)。

图片动画化应用中的动作分解方法

Fig 2.3 用U-net分别提取静态图和驱动帧的要害点。

可是,咱们还需求从相信图中核算得到要害点的中心方位和关节点的方差1(方差以超像素的视点,表明了对要害点猜测的可靠性),因而用高斯分布去对相信图进行拟合,得到均值和方差。关于每个要害点的相信图Hk∈[0,1]HWH_k \in [0,1]^{H \times W},咱们有:

hk=∑p∈UHk[p]pk=∑p∈UHk[p](p−hk)(p−hk)T(2.1)\begin{aligned} \mathbf{h}_k &= \sum_{p\in\mathcal{U}}H_k[p]p \\ \Sigma_k &= \sum_{p\in\mathcal{U}}H_k[p](p-\mathbf{h}_k)(p-\mathbf{h}_k)^{\mathrm{T}} \end{aligned} \tag{2.1}

其间hk∈R2\mathbf{h}_k \in \mathbb{R}^{2}表明了第kk个要害点的相信图的中心坐标,而k∈R\Sigma_k \in \mathbb{R}则是其方差。U\mathcal{U}表明了图片坐标的集合,而p∈Up\in\mathcal{U}则是遍历了整个相信图。整个进程如Fig 2.4所示,经过式子(2.1),终究需求将相信图更新为以高斯分布表明的方法,如(2.2)所示。

Hk(p)=1exp⁡(−(p−hk)k−1(p−hk))∀p∈U(2.2)H_k(\mathbf{p})=\dfrac{1}{\alpha}\exp(-(\mathbf{p}-\mathbf{h}_k)\Sigma_k^{-1}(\mathbf{p}-\mathbf{h}_k)) \\ \forall p\in\mathcal{U} \tag{2.2}

其间的\alpha为标准化系数。终究得到的相信图如Fig 2.4的右下图所示。

图片动画化应用中的动作分解方法

图片动画化应用中的动作分解方法

Fig 2.4 经过高斯分布拟合,从相信图中核算要害点的中心方位和方差。

至今,咱们描绘了怎样提取要害点,可是这个要害点还没有经过练习,因而其输出仍是随机的,不要忧虑,咱们后续会一步步介绍怎样进行无监督练习。不过这一章节就此为止吧,为了后续章节的便利,咱们先假定咱们的 要害点提取是经过练习的,能够提取出较为完美的要害点

稀少光流图

在引进动作分化的概念之前,咱们先花时间去评论下稀少光流图。如Fig 3.1所示,假定咱们有练习好的要害点检测器,表明为\Delta,那么输入同一个视频中的不同两帧(咱们在后面会解说为什么在练习时分是输入同一个视频的不同两帧),其间用x\mathbf{x}表明静态图,用x′\mathbf{x}^{\prime}表明驱动视频(练习时分是和静态图一样,出自同一个视频)中的其间一帧,那么,检测出的要害点能够表明为:

H=(x)H′=(x′)(3.1)\begin{aligned} H &= \Delta(\mathbf{x}) \\ H^{\prime} &= \Delta(\mathbf{x}^{\prime}) \end{aligned} \tag{3.1}

那么,自然地,这两帧之间的对应要害点的相对改变能够简略地用“代数求差”表明,为:

H=H′−H(3.2)\dot{H} = H^{\prime}-H \tag{3.2}

这儿的H\dot{H}称之为稀少光流图,其表明了稀少要害点在不同帧之间的空间改变,其间每一个要害点的光流表明为hk=[x,y]h_k = [\Delta x, \Delta y]。可知H∈RK2\dot{H} \in \mathbb{R}^{K \times 2},其间KK是要害点的数量。

图片动画化应用中的动作分解方法

Fig 3.1 对要害点进行相减,得到稀少光流图。

可是得到稀少光流图只能知道要害点是怎样位移形变的,咱们该怎样求出要害点周围的像素的位移改变数据呢?

动作分化与泰勒打开

知道了稀少光流图,咱们只知道要害点是怎样改变的,可是对要害点周围的像素的改变却一无所知,咱们终究希望的是经过稀少光流图去推理出密布光流图,如Fig 4.1所示。

图片动画化应用中的动作分解方法

Fig 4.1 经过稀少光流图去生成密布光流图。

为了完成这个进程,咱们需求引进先验假定,而最为直接的先验假定便是动作分化。

零阶动作分化

一种最简略的动作分化假定便是:

每个要害点周围的主体部件是部分刚性的,因而其位移方向和巨细与要害点的相同,咱们称之为动作零阶分化。

这个假定经过Fig 4.2能够得到很好地描绘,咱们经过要害点检测模型能够检测出对应的要害点位移,依据假定,那么周围的身体部分,如橘色点虚线框所示,是呈现刚体改换的,也便是说该区域内的一切和主体有关的部分的像素的位移向量,都和该要害点相同。

图片动画化应用中的动作分解方法

Fig 4.2 要害点周围部件的部分刚体性质:绿色虚线表明的是蓝色要害点周围的主体部件的密布光流,由于假定了要害点周围的刚体性,因而绿色虚线和黄色虚线的巨细方向都相同。

那么现在问题就在于,这儿谈到的每个要害点的“周围区域”到底有多大,才会使得刚体性质的假定建立。所以问题变成去猜测关于每个关节点来说,能使得刚体性质建立的区域了。关于每个要害点,咱们经过神经网络猜测出一个掩膜Mk∈RHWM_k \in \mathbb{R}^{H \times W},那么咱们有:

Fcoarse=∑k=1K+1Mk⊗(hk)(4.1)\mathcal{F}_{\mathrm{coarse}} = \sum_{k=1}^{K+1} M_k \otimes \rho(h_k) \tag{4.1}

其间的(⋅)\rho(\cdot)表明对每个要害点的光流重复HWH \times W次,得到(⋅)∈RHW2\rho(\cdot)\in\mathbb{R}^{H \times W \times 2}的张量,该进程如Fig 4.3所示,当然这儿用箭头的方法表明了光流向量,其实实质上是一个R2\mathbb{R}^2的向量;而⊗\otimes表明逐一元素的相乘。

图片动画化应用中的动作分解方法

Fig 4.3 经过在空间上仿制每个要害点的光流向量,得到了K个光流图,每个光流图都是单个要害点的简略空间仿制。

一般这个掩膜MkM_k经过U-net去进行学习得到,这儿的U-net也便是Fig 4.1中的Dense Motion Network,用符号MM表明,其规划的初衷是能够对某个要害点kk呈现刚体区域进行显著性高亮,如Fig 4.4所示,并且为了考虑相对不变的布景,实际上需求学习出K+1K+1个掩膜,其间一个掩膜用于标识布景,一同也需求([0,0])\rho([0,0])用于表明布景区域不曾呈现位移。

图片动画化应用中的动作分解方法

Fig 4.4 经过用掩膜去提取出每个要害点的具有部分刚体性质的区域。

除了掩膜之外,模块MM相同需求猜测Fresidual\mathcal{F}_{\mathrm{residual}},作为Fcoarse\mathcal{F}_{\mathrm{coarse}}的补充,其规划的初衷是猜测某些非刚体性质的改换,非刚体性质的改换不能经过之前说到的切割主体部分然后进行掩膜的办法得到,因而需求独立出来,经过网络进行猜测。所以咱们有:

F=Fcoarse+Fresidual(4.2)\mathcal{F} = \mathcal{F}_{\mathrm{coarse}}+\mathcal{F}_{\mathrm{residual}} \tag{4.2}

现在Dense Motion Network的框图如Fig 4.5所示,咱们以上论述了该模块的输出,现在考虑这个模块的输入。输入首要有稀少光流图H\dot{H}和静态图x\mathbf{x},可是在整个优化进程中,由于F\mathcal{F}其实是和x′\mathbf{x}^{\prime}对齐的,而输入假定仅仅x\mathbf{x}的信息,那么就或许存在优化进程中的困难,由于究竟存在较大的不同,因而需求显式地先对输入静态图进行必定的变形,能够用双线性采样(Bilinear Sample)[17] 进行,记fw(⋅)f_{w}(\cdot)为双线性采样算符,咱们有:

xk=fw(x,(hk))(4.3)\mathbf{x}_k = f_w(\mathbf{x}, \rho(h_k)) \tag{4.3}

关于双线性采样的详细细节可见[17],双线性采样可显式地完成图片变形,并且是可微分的,式子(4.3)中的x\mathbf{x}便是采样输入input,而(hk)\rho(h_k)便是采样网格grid。其间的xk\mathbf{x}_k是依据(hk)\rho(h_k)只对每个要害点光流进行变形构成的,将H\dot{H}{xk}k=1,⋯ ,K\{\mathbf{x}_k\}_{k=1,\cdots,K}以及x\mathbf{x}在通道轴进行拼接,然后作为U-net的输入。

图片动画化应用中的动作分解方法

Fig 4.5 Dense Motion Network的框图,其输入需求考虑密布光流图的对齐问题。

一阶动作分化

零阶动作分化的假定仍是过于简略了,即便是要害点部分区域也不必定呈现出杰出的刚体性质,在存在柔性衣物的影响下更是如此,因而引进了一阶动作分化的假定,除了引进的根本假定不同之外,模型其他大部分和零阶动作分化相似。在一阶动作分化下,根本假定变成了

每个要害点周围的主体部件是部分仿射改换[13]的,咱们称之为一阶动作分化。

咱们接下来会愈加形象地用图示解说这个假定,在此之前为了和论文[2]保持共同,先界说一些符号。

咱们称静态图为S∈R3HW\mathbf{S} \in \mathbb{R}^{3 \times H \times W},相当于之前谈到的x\mathbf{x};称驱动视频中的某一个驱动帧为D∈R3HW\mathbf{D} \in \mathbb{R}^{3 \times H \times W},相当于之前谈到的x′\mathbf{x}^{\prime}。其间密布光流图F∈RHW2\mathcal{F} \in \mathbb{R}^{H \times W \times 2}用一个改换表明,有TS←D:R2→R2\mathcal{T}_{\mathbf{S} \leftarrow \mathbf{D}}:\mathbb{R}^2 \rightarrow \mathbb{R}^2,表明从驱动帧到静态图的密布像素方位映射,咱们称之为 密布光流映射。和在零阶动作分化章节不同的是,由于驱动帧的主体和静态图的主体或许不同较大(比方人体的穿着办法等),因而导致的不对齐性会影响效果,因而假定存在着一个中间态的笼统参阅帧R\mathbf{R}作为过渡,如Fig 4.6所示,其间咱们称在驱动帧里边的点为zk∈R2z_k \in \mathbb{R}^2,在参阅帧的点为pk∈R2p_k \in \mathbb{R}^2,在静态图的点为wk∈R2w_k \in \mathbb{R}^2, 不难知道有pk=TR←D(zk)p_k = \mathcal{T}_{\mathbf{R} \leftarrow \mathbf{D}}(z_k)。那么此刻,咱们知道密布光流映射能够分化为:

TS←D=TS←R∘TR←D(4.4)\mathcal{T}_{\mathbf{S} \leftarrow \mathbf{D}} = \mathcal{T}_{\mathbf{S} \leftarrow \mathbf{R}} \circ \mathcal{T}_{\mathbf{R} \leftarrow \mathbf{D}} \tag{4.4}

假定假定TR←D\mathcal{T}_{\mathbf{R} \leftarrow \mathbf{D}}在每个要害点部分是双射的,也便是有TR←D=TD←R−1\mathcal{T}_{\mathbf{R} \leftarrow \mathbf{D}} = \mathcal{T}_{\mathbf{D} \leftarrow \mathbf{R}}^{-1},那么此刻式子(4.4)变为:

TS←D=TS←R∘TR←D=TS←R∘TD←R−1(4.5)\mathcal{T}_{\mathbf{S} \leftarrow \mathbf{D}} = \mathcal{T}_{\mathbf{S} \leftarrow \mathbf{R}} \circ \mathcal{T}_{\mathbf{R} \leftarrow \mathbf{D}} = \mathcal{T}_{\mathbf{S} \leftarrow \mathbf{R}} \circ \mathcal{T}_{\mathbf{D} \leftarrow \mathbf{R}}^{-1} \tag{4.5}

咱们发现TS←R,TD←R\mathcal{T}_{\mathbf{S} \leftarrow \mathbf{R}},\mathcal{T}_{\mathbf{D} \leftarrow \mathbf{R}}都存在一个形式,那便是都是从X←R\mathbf{X} \leftarrow \mathbf{R},因而无妨假定有一个映射TX←R\mathcal{T}_{\mathbf{X} \leftarrow \mathbf{R}},其间X\mathbf{X}为任意帧。

图片动画化应用中的动作分解方法

Fig 4.6 将从驱动帧到静态图的映射分化成为了两个阶段,其间经过参阅帧作为传递。

精彩的当地来了!由于该映射是一个函数,因而能够经过泰勒函数打开,关于要害点pkp_k周围范畴pp进行泰勒打开,有:

TX←R(p)=TX←R(pk)+(ddpTX←R(p)∣p=pk)(p−pk)+o(∣∣p−pk∣∣)(4.6)\mathcal{T}_{\mathbf{X} \leftarrow \mathbf{R}}(p) = \mathcal{T}_{\mathbf{X} \leftarrow \mathbf{R}}(p_k)+(\dfrac{\mathrm{d}}{\mathrm{d}p}\mathcal{T}_{\mathbf{X} \leftarrow \mathbf{R}}(p)\bigg |_{p=p_k})(p-p_k)+o(||p-p_k||) \tag{4.6}

其间o(∣∣p−pk∣∣)o(||p-p_k||)为高阶无穷小项,能够忽略,而(ddpTX←R(p)∣p=pk)(p−pk)(\dfrac{\mathrm{d}}{\mathrm{d}p}\mathcal{T}_{\mathbf{X} \leftarrow \mathbf{R}}(p)\bigg |_{p=p_k})(p-p_k)便是一阶近似项,咱们经过这个一阶近似项去估量要害点周围范畴的改换。从式子(4.6)中咱们能够发现,映射TX←R(p)\mathcal{T}_{\mathbf{X} \leftarrow \mathbf{R}}(p)取决于每个要害点以及其对应的Jacobians矩阵[14] 2,有:

TX←R(p)≃{{TX←R(p1),ddpTX←R(p)∣p=p1},⋯ ,{TX←R(pk),ddpTX←R(p)∣p=pk}}(4.7)\mathcal{T}_{\mathbf{X} \leftarrow \mathbf{R}}(p) \simeq \Bigg \{ \Bigg \{ \mathcal{T}_{\mathbf{X} \leftarrow \mathbf{R}}(p_1),\dfrac{\mathrm{d}}{\mathrm{d}p}\mathcal{T}_{\mathbf{X} \leftarrow \mathbf{R}}(p)\bigg |_{p=p_1} \Bigg\}, \cdots, \\ \Bigg \{ \mathcal{T}_{\mathbf{X} \leftarrow \mathbf{R}}(p_k),\dfrac{\mathrm{d}}{\mathrm{d}p}\mathcal{T}_{\mathbf{X} \leftarrow \mathbf{R}}(p)\bigg |_{p=p_k} \Bigg\} \Bigg\} \tag{4.7}

相似地,对式子(4.5)进行泰勒打开(详细推导见[2]的Sup. Mat.),有:

TS←D(z)≈TS←R(pk)+Jk(z−TD←R(pk))(4.8)\mathcal{T}_{\mathbf{S} \leftarrow \mathbf{D}}(z) \approx \mathcal{T}_{\mathbf{S} \leftarrow \mathbf{R}}(p_k)+J_k(z-\mathcal{T}_{\mathbf{D} \leftarrow \mathbf{R}}(p_k)) \tag{4.8}

其间:

Jk=(ddpTS←R(p)∣p=pk)(ddpTD←R(p)∣p=pk)−1(4.9)J_k = \Bigg ( \dfrac{\mathrm{d}}{\mathrm{d}p}\mathcal{T}_{\mathbf{S} \leftarrow \mathbf{R}}(p)\bigg |_{p=p_k} \Bigg) \Bigg ( \dfrac{\mathrm{d}}{\mathrm{d}p}\mathcal{T}_{\mathbf{D} \leftarrow \mathbf{R}}(p)\bigg |_{p=p_k} \Bigg)^{-1} \tag{4.9}

而式子(4.8)中的TS←R(pk),TD←R(pk)\mathcal{T}_{\mathbf{S} \leftarrow \mathbf{R}}(p_k), \mathcal{T}_{\mathbf{D} \leftarrow \mathbf{R}}(p_k)实际上要害点的稀少光流映射,能够用之前在零阶动作分化一章中谈到的无监督要害点提取的办法取得,仅有不同的是,无论是对S\mathbf{S}仍是D\mathbf{D}的每个要害点 kk 猜测都要附带输出四个通道,这些输出是作为对式子(4.9)中的ddpTS←R(p)∣p=pk\dfrac{\mathrm{d}}{\mathrm{d}p}\mathcal{T}_{\mathbf{S} \leftarrow \mathbf{R}}(p)\bigg |_{p=p_k}ddpTD←R(p)∣p=pk\dfrac{\mathrm{d}}{\mathrm{d}p}\mathcal{T}_{\mathbf{D} \leftarrow \mathbf{R}}(p)\bigg |_{p=p_k}系数的估量(详细细节还请移步论文[2])。

这个时分的Jk∈R22J_k \in \mathbb{R}^{2 \times 2}是该映射的Jacobians矩阵,当Jk=IJ_k = \mathbb{I}(其间I\mathbb{I}为单位矩阵)时,此刻退化为零阶动作分化。由于此刻显然有:

TS←D(z)≈TS←R(pk)+z−TD←R(pk)=z−(TD←R(pk)−TS←R(pk))=z−(H′−H)=z−H(4.10)\begin{aligned} \mathcal{T}_{\mathbf{S} \leftarrow \mathbf{D}}(z) &\approx \mathcal{T}_{\mathbf{S} \leftarrow \mathbf{R}}(p_k)+z-\mathcal{T}_{\mathbf{D} \leftarrow \mathbf{R}}(p_k) \\ &= z-(\mathcal{T}_{\mathbf{D} \leftarrow \mathbf{R}}(p_k)-\mathcal{T}_{\mathbf{S} \leftarrow \mathbf{R}}(p_k)) \\ &= z-(H^{\prime}-H) \\ &= z-\dot{H} \end{aligned} \tag{4.10}

其间的H\dot{H}便是式子(3.2)中说到的稀少光流图,因而零阶动作分化的实质便是部分刚性改换。

由此,咱们能够从几许改换上解说动作的一阶分化,由于z′∈R21=z−TD←R(pk)z^{\prime} \in \mathbb{R}^{2 \times 1} = z-\mathcal{T}_{\mathbf{D} \leftarrow \mathbf{R}}(p_k)能够视为是要害点pkp_k周围范畴与要害点之间的位移,这个位移乘上Jacobians矩阵Jk∈R22J_k \in \mathbb{R}^{2 \times 2}便是一阶近似项。无妨假定:

Jk=[J11J12J21J22]z′=[z1,z2]T(4.11)\begin{aligned} J_k &= \left[ \begin{matrix} J_{11} & J_{12} \\ J_{21} & J_{22} \end{matrix} \right] \\ z^{\prime} &= [z_{1},z_{2}]^{\mathrm{T}} \end{aligned} \tag{4.11}

因而考虑到式子(4.8),有:

z1′=J11z1+J12z2z2′=J21z1+J22z2(4.12)\begin{aligned} z_{1}^{\prime} &= J_{11}z_1+J_{12}z_2 \\ z_{2}^{\prime} &= J_{21}z_1+J_{22}z_2 \end{aligned} \tag{4.12}

能够视为是对z′z^{\prime}的旋转,标准放缩和切变(不包括平移,由于没有偏移项,详细可见仿射改换详细界说[15]),因而称之为是 (要害点)部分的仿射改换先验假定便是一阶动作分化的实质

那么整理起来,咱们的整个框图如Fig 4.7所示,和零阶动作分化框图Fig 4.1不同的是,其猜测并且增加了Jacobians矩阵项。

图片动画化应用中的动作分解方法

Fig 4.7 引进了一阶动作分化后的框图,大部分组件功用和零阶动作分化框图相似。

当然,相同咱们需求经过稀少光流映射去估量密布光流映射,因而相同会有Dense Motion网络,这个网络和Fig 4.5相似,会去猜测出掩膜MkM_k,该掩膜的效果和零阶动作分化的效果共同,如Fig 4.4所示。那么有密布光流映射估量TS←D(z)\mathcal{\hat{T}}_{\mathbf{S} \leftarrow \mathbf{D}}(z)

TS←D(z)=M0z+∑k=1KMk(TS←R(pk)+Jk(z−TD←R(pk)))(4.13)\hat{\mathcal{T}}_{\mathbf{S} \leftarrow \mathbf{D}}(z) = M_0z + \sum_{k=1}^{K}M_k (\mathcal{T}_{\mathbf{S} \leftarrow \mathbf{R}}(p_k)+J_k(z-\mathcal{T}_{\mathbf{D} \leftarrow \mathbf{R}}(p_k))) \tag{4.13}

相似地,其间M0M_0是对布景的掩膜。详细该网络的输入就不再赘述了,详细见论文[2]。

需求注意的是,在文章[2]中,作者还用Dense Motion网络学习了一个掩膜OS←D\mathcal{\hat{O}}_{\mathbf{S} \leftarrow \mathbf{D}} ,该掩膜的效果是去猜测被遮挡的部分,该部分不能经过密布光流进行变形得到,需求进行inpainting [16]填充,详细细节不赘述。


总结

在本文,咱们经过引进先验,对动作进行分化,能够从稀少光流图估量出密布光流图,经过将密布光流图输入到变形模型中,能够完成从驱动帧到静态图的转化,这个转化是完成图片动画化的一个重要技能。当然,限于篇幅,还有许多技能点没有谈到,在下个博文,咱们将会介绍对应的变形模型,端到端无监督练习形式和该系列模型的缺陷等。一路不易,敬请期待,谢谢支撑。


Reference

[1]. Siarohin, A., Lathuilire, S., Tulyakov, S., Ricci, E., & Sebe, N. (2019). Animating arbitrary objects via deep motion transfer. In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (pp. 2377-2386).

[2]. Siarohin, A., Lathuilire, S., Tulyakov, S., Ricci, E., & Sebe, N. (2019). First order motion model for image animation. In Advances in Neural Information Processing Systems (pp. 7137-7147).

[3]. blog.csdn.net/LoseInVain/…

[4]. Simonyan, K., & Zisserman, A. (2014). Two-stream convolutional networks for action recognition in videos. In Advances in neural information processing systems (pp. 568-576).

[5]. en.wikipedia.org/wiki/Optica…

[6]. Cao Z , Hidalgo G , Simon T , et al. OpenPose: Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, PP(99):1-1.

[7]. github.com/MVIG-SJTU/A…

[8]. Bulat, Adrian , and G. Tzimiropoulos . “How Far are We from Solving the 2D & 3D Face Alignment Problem? (and a Dataset of 230,000 3D Facial Landmarks).” IEEE International Conference on Computer Vision IEEE Computer Society, 2017.

[9]. github.com/1adrianb/fa…

[10]. github.com/AliaksandrS…

[11]. Jakab, T., Gupta, A., Bilen, H., & Vedaldi, A. (2018). Unsupervised learning of object landmarks through conditional image generation. In Advances in neural information processing systems (pp. 4016-4027).

[12]. Ronneberger, O., Fischer, P., & Brox, T. (2015, October). U-net: Convolutional networks for biomedical image segmentation. In International Conference on Medical image computing and computer-assisted intervention (pp. 234-241). Springer, Cham.

[13]. blog.csdn.net/LoseInVain/…

[14]. en.wikipedia.org/wiki/Jacobi…

[15]. blog.csdn.net/LoseInVain/…

[16]. www.wandb.com/articles/in…

[17]. blog.csdn.net/LoseInVain/…

Footnotes

  1. 这儿选用高斯分布拟合的意图还有一个便是,在无监督练习开始时,其猜测结果是随机的,将其用高斯分布去拟合,才能给后续的优化供给便利。 ↩

  2. Jacobians矩阵[14]能够视为是多元函数的导数,在对多元函数进行泰勒打开时分常见。 ↩