【论文阅读】MoCoGAN: Decomposing Motion and Content for Video Generation

news2024/12/25 14:09:19

MoCoGAN: Decomposing Motion and Content for Video Generation

引用: Tulyakov S, Liu M Y, Yang X, et al. Mocogan: Decomposing motion and content for video generation[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2018: 1526-1535.

论文链接: [1707.04993] MoCoGAN: Decomposing Motion and Content for Video Generation

代码链接:GitHub - sergeytulyakov/mocogan: MoCoGAN: Decomposing Motion and Content for Video Generation

简介

视频中的视觉信号可以分为内容和运动。内容指定了视频中的对象,而运动描述了它们的动态。基于这一先验知识,我们提出了运动和内容分解的生成对抗网络(MoCoGAN)框架用于视频生成。所提出的框架通过将一系列随机向量映射到一系列视频帧来生成视频。每个随机向量由内容部分和运动部分组成。在内容部分保持固定的同时,运动部分被实现为一个随机过程由于短视频剪辑中的内容通常保持不变,因此使用高斯分布对内容空间进行建模,并使用相同的实现来生成视频剪辑中的每一帧。从运动空间采样是通过循环神经网络实现的,在训练期间学习网络参数。为了以无监督的方式学习运动和内容的分解,引入了一种新的对抗性学习方案,利用图像和视频鉴别器。在几个具有挑战性的数据集上进行的广泛实验结果,以及与最先进方法的定性和定量比较,验证了所提出框架的有效性。此外,展示了MoCoGAN允许生成具有相同内容但不同运动的视频,以及具有不同内容但相同运动的视频。

首先,由于视频是执行各种动作的物体视觉信息的时空记录,因此生成模型除了学习物体的外观模型之外,还需要学习物体的合理物理运动模型。如果学习到的物体运动模型不正确,则生成的视频可能包含执行物理上不可能的运动的物体。其次,时间维度带来了巨大的变化。考虑一个人在进行深蹲运动时可以有的速度变化量。每种速度模式都会产生不同的视频,尽管视频中人类的外表是相同的。第三,随着人类进化到对运动敏感,运动伪影特别容易察觉。

我们认为,假设视频剪辑是潜在空间中的一个点,会不必要地增加问题的复杂性,因为具有不同执行速度的相同动作的视频由潜在空间中的不同点表示。此外,这种假设迫使每个生成的视频剪辑具有相同的长度,而真实世界视频剪辑的长度却各不相同。另一种(可能更直观、更有效)的方法是假设图像的潜在空间,并考虑通过遍历潜在空间中的点来生成视频剪辑。不同长度的视频片段对应于不同长度的潜在空间轨迹。

在这里插入图片描述

此外,由于视频是关于执行动作(运动)的对象(内容),因此图像的潜在空间应进一步分解为两个子空间,其中第一个子空间(content subspace)中一个点的偏差导致视频剪辑中的内容变化,第二个子空间(motion subspace)中的偏差导致时间运动。通过这种建模,具有不同执行速度的动作视频只会导致运动空间中轨迹的遍历速度不同。分解运动和内容可以更可控地生成视频过程。通过在固定运动轨迹的同时改变内容表示,我们可以获得不同物体执行相同运动的视频。通过在固定内容表示的同时改变运动轨迹,我们可以获得同一物体执行不同运动的视频,如图 1 所示。

Generative Adversarial Networks

GANs由一个生成器和一个鉴别器组成。生成器的目标是生成类似于真实图像的图像,而鉴别器的目标是将真实图像与生成的图像区分开来。设 x x x 是从图像分布 p X p_X pX中绘制的实数图像, z z z Z I ≡ R d Z_I ≡ R^d ZIRd 中的随机向量。让 G I G_I GI D I D_I DI 成为图像生成器和图像鉴别器。生成器将$ z$ 作为输入并输出一个图像 x ~ = G I ( z ) \tilde { x } = G _ { I } ( z ) x~=GI(z),该图像具有与 x x x 相同的支持。将 G I ( z ) G_I(z) GI(z) 的分布记为 $p_{G_I} $。鉴别器估计从 p X p_X pX 绘制输入图像的概率。理想情况下,如果 x ∼ p X x ∼ p_X xpX ,则 D I ( x ) = 1 D_I(x) = 1 DI(x)=1,如果 x ~ ∼ p ~ G I \tilde { x } \sim \tilde { p } _ { G _ { I } } x~p~GI,则 D I ( x ~ ) = 0 D _ { I } ( \tilde { x } ) = 0 DI(x~)=0 G I G_I GI D I D_I DI 的训练是通过求解:

max ⁡ G I min ⁡ D I F I ( D I , G I ) \max _ { G _ { I } } \min _ { D _ { I } } F _ { I } ( D _ { I } , G _ { I } ) GImaxDIminFI(DI,GI)

F 1 ( D 1 , G 1 ) = E x ∼ p X [ − log ⁡ D I ( x ) ] + E z ∼ p Z [ − log ⁡ ( 1 − D I ( G I ( z ) ) ) ] F _ { 1 } ( D _ { 1 } , G _ { 1 } ) = E _ { x \sim p _ { X } } \left[ - \log D _ { I } ( x ) \right] + E _ { z \sim p _ { Z } } [ - \log ( 1 - D _ { I } ( G _ { I } ( z ) ) ) ] F1(D1,G1)=ExpX[logDI(x)]+EzpZ[log(1DI(GI(z)))]

Goodfellow等[1]表明,如果有足够能力的 D I D_I DI G I G_I GI以及足够的训练迭代, p G I p_{G_I} pGI的分布会收敛到 p X p_X pX。因此,从随机向量输入 z z z 中,网络 G I G_I GI 可以合成类似于从真实分布 p X p_X pX 中绘制的图像。

最近,[2]通过提出视频GAN(VGAN)框架,将GAN框架扩展到视频生成。设 $ v ^ { L } = \left[ x ^ { ( 1 ) } , \ldots , x ^ { ( L ) } \right]$ 是具有$ L 帧的视频剪辑。 V G A N 中的视频生成是通过用基于时空 C N N 的视频生成器和鉴别器 帧的视频剪辑。VGAN中的视频生成是通过用基于时空CNN的视频生成器和鉴别器 帧的视频剪辑。VGAN中的视频生成是通过用基于时空CNN的视频生成器和鉴别器G_{VL}$和$D_{VL}$替换基于CNN的图像生成器和鉴别器GI和DI来实现的。视频生成器 GVL 将随机向量 z ∈ Z V L ≡ R d z \in Z _ { V ^ { L } } \equiv R ^ { d } zZVLRd 映射到固定长度的视频剪辑 v ~ L = [ x ~ ( 1 ) , … , x ~ ( L ) ] = G V L ( z ) \tilde { v } ^ { L } = \left[ \tilde { x } ^ { ( 1 ) } , \ldots , \tilde { x } ^ { ( L ) } \right] = G _ { V^L } ( z ) v~L=[x~(1),,x~(L)]=GVL(z),视频鉴别器 $D_{V^L} $将真实视频剪辑与生成的视频剪辑区分开来。理想情况下,如果从 p V L p_{V^L} pVL 采样 v L v^L vL,则 D V L ( v L ) = 1 D_{V^L}(v^L) = 1 DVL(vL)=1,如果从视频生成器的分布 $p_{G_{V^L}} $采样 v ~ L \tilde{v}^L v~L,则 D V L ( v ~ L ) = 0 D _ { V^L } ( \tilde { v } ^ { L } ) = 0 DVL(v~L)=0。TGAN框架[3]也将随机向量映射到固定长度的片段。不同之处在于,TGAN将表示固定长度视频的随机向量映射到表示视频剪辑中各个帧的固定数量的随机向量,并使用图像生成器进行生成。TGAN训练没有使用普通的GAN框架来最小化Jensen-Shannon散度,而是基于WGAN框架[4],并最小化了推土机距离。

Motion and Content Decomposed GAN

在MoCoGAN中,假设图像在 Z I ≡ R d Z_I≡R^d ZIRd的潜在空间中,其中 z ∈ Z I z∈Z_I zZI的每个点代表一个图像, K K K帧的视频由潜在空间中长度为 K K K的路径表示, [ z ( 1 ) , … , z ( K ) ] \left[ z ^ { ( 1 ) } , \ldots , z ^ { ( K ) } \right] [z(1),,z(K)]。通过采用这种公式,可以通过不同长度的路径生成不同长度的视频。此外,通过在潜在空间中以不同的速度遍历相同的路径,可以生成以不同速度执行的相同动作的视频

进一步假设 Z I Z_I ZI 被分解为内容子空间 $Z_C $和运动子空间 Z M Z_M ZM Z I = Z C × Z M Z_I = Z_C × Z_M ZI=ZC×ZM,其中 $Z_C = R^ d_C , , Z_M = R^ d_M$ , d = d C + d M d = d_C + d_M d=dC+dM内容子空间对视频中与运动无关的外观进行建模,而运动子空间对视频中与运动相关的外观进行建模。例如,在一个人微笑的视频中,内容代表人的身份,而动作代表人的面部肌肉结构的变化。一对人的身份和面部肌肉配置代表了人的面部形象。这些对的序列代表了该人微笑的视频剪辑。通过将人的外表与另一个人的外表交换,可以表示另一个人微笑的视频。

使用高斯分布对内容子空间进行建模: z C ∼ p Z C ≡ N ( z ∣ 0 , I d C ) z _ { C } \sim p _ { Z _ { C } } \equiv N ( z | 0 , I _ { d _ { C } } ) zCpZCN(z∣0,IdC),其中 I d C I_{d_C} IdC 是大小为 d C × d C d_C × d_C dC×dC 的单位矩阵。基于对短视频剪辑中内容基本相同的观察,使用相同的实现 z C z_C zC 在视频剪辑中生成不同的帧。视频剪辑中的运动由运动子空间 Z M Z_M ZM的路径建模。用于生成视频的向量序列表示为:

[ z ( 1 ) , . . . , z ( K ) ] = [ [ z C z M ( 1 ) ] , . . . , [ z C z M ( K ) ] ] [ z ^ { ( 1 ) } , . . . , z ^ { ( K ) } ] = [ \begin{bmatrix} z _ { C } \\ z ^{(1)} _ { M } \end{bmatrix} , . . . , \begin{bmatrix} z _ { C } \\ z _ { M } ^ { ( K ) } \end{bmatrix} ] [z(1),...,z(K)]=[[zCzM(1)],...,[zCzM(K)]]

由于 Z M Z_M ZM 中并非所有路径都对应于物理上合理的运动,因此需要学会生成有效的路径,在MoCoGAN中使用递归神经网络对路径生成过程进行建模

R M R_M RM 为递归神经网络。在每个时间步,它从高斯分布中采样的向量作为输入: ϵ ( k ) ∼ p E ≡ N ( ϵ ∣ 0 , I d E ) ) \epsilon ^ { ( k ) } \sim p _ { E } \equiv N ( \epsilon | 0 , I _ { d_E } )) ϵ(k)pEN(ϵ∣0,IdE) 并输出一个 Z M Z_M ZM 中的向量,用作运动表示。设 R M ( k ) R_M(k) RM(k) 是时间 k k k 处递归神经网络的输出。然后, z M ( k ) = R M ( k ) z^{(k)}_M = R_M(k) zM(k)=RM(k)。直观地说,递归神经网络的功能是将一系列独立且相同分布的随机变量 [ ϵ ( 1 ) , … , ϵ ( K ) ] \left[ \epsilon ^ { ( 1 ) } , \ldots , \epsilon ^ { ( K ) } \right] [ϵ(1),,ϵ(K)] 映射到表示视频中动态的相关随机变量序列 [ R M ( 1 ) , … , R M ( K ) ] \left[ R _ { M } ( 1 ) , \ldots , R _ { M } ( K ) \right] [RM(1),,RM(K)]在每次迭代中注入噪声可模拟每个时间步的未来运动的不确定性。我们使用单层GRU网络实现 R M R_M RM [5]

在这里插入图片描述

MoCoGAN 由 4 个子网络组成,分别是递归神经网络 R M R_M RM、图像生成器 G I G_I GI ,图像鉴别器 D I D_I DI 和视频鉴别器 D V D_V DV D I D_I DI D V D_V DV 都扮演着评判者的角色,对 G I G_I GI R M R_M RM 提出批评。图像鉴别器 $D_I $专门根据单个图像批评 G I G_I GI。它被训练来确定帧是从真实视频剪辑 v v v 还是从 $\tilde { v } 中采样的。另一方面, 中采样的。另一方面, 中采样的。另一方面,D_V$ 根据生成的视频剪辑向 G I G_I GI 提供批评。 D V D_V DV 拍摄固定长度的视频剪辑,例如 T T T 帧,并确定视频剪辑是从真实视频还是从 v ~ \tilde { v } v~中采样的。与基于普通CNN架构的 D I D_I DI不同, D V D_V DV是基于时空CNN架构的。注意到剪辑长度 T T T 是一个超参数,在实验中设置为 16 16 16。还注意到 T T T 可以小于生成的视频长度 K K K。长度为 K K K 的视频可以以滑动窗口方式分成 K − T + 1 K − T + 1 KT+1 个剪辑,每个剪辑都可以输入到 D V D_V DV 中。视频鉴别器 D_V 还评估生成的运动。由于 G I G_I GI 没有运动的概念,因此对运动部分的批评直接指向了递归神经网络 R M R_M RM。理想情况下,仅 D_V 就足以训练 G I G_I GI R M R_M RM,因为 D V D_V DV 提供静态图像外观和视频动态的反馈。然而,使用 D I D_I DI 显着提高了对抗训练的收敛性。这是因为训练 D I D_I DI 更简单,因为它只需要关注静态外观。图 2 显示了 MoCoGAN 框架的可视化表示。

Categorical Dynamics

视频中的动态通常是分类的(例如,离散的动作类别:走路、跑步、跳跃等)。为了对这个分类信号进行建模,用一个分类随机变量 z A z_A zA 来增强 R M R_M RM 的输入,其中每个实现都是一个热向量。保持实现固定,因为短视频中的动作类别保持不变。 R M R_M RM 的输入由下式给出:

[ [ z A ϵ ( 1 ) ] , ⋯   , [ z A ϵ ( K ) ] ] \left[ \left[ \frac { z _ { A } } { \epsilon ^ { ( 1 ) } } \right] , \cdots , \left[ \frac { z _ { A } } { \epsilon ^ { ( K ) } } \right] \right] [[ϵ(1)zA],,[ϵ(K)zA]]

为了将 z A z_A zA与真实动作类别联系起来,采用InfoGAN学习,并将目标函数扩充为 $F_V(D_I, D_V, G_I, R_M)+ λL_I (G_I, Q) $,其中 L I L_I LI 是生成的视频片段与 z A z_A zA 之间互信息的下限, λ λ λ是超参数,实现了辅助分布 Q Q Q(近似于视频片段上动作类别变量条件的分布)通过将 softmax 图层添加到 D V D_V DV 的最后一个要素图层。使用 λ = 1 λ = 1 λ=1。注意到,当标记的训练数据可用时,可以训练 Q Q Q 输出真实输入视频剪辑的类别标签,以进一步提高性能。

实验

使用 ADAM 进行训练,学习率为 0.0002,动量分别为 0.5 和 0.999。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

参考文献

[1] I. Goodfellow, J. Pouget-Abadie, M. Mirza, B. Xu, D. Warde-Farley, S. Ozair, A. Courville, and Y. Bengio. Generative adversarial nets. In Advances in Neural Information Processing Systems (NIPS), 2014. 1, 2, 3.

[2] C. Vondrick, H. Pirsiavash, and A. Torralba. Generating videos with scene dynamics. In Advances in Neural Information Processing Systems (NIPS), 2016. 1, 2, 3, 5, 6.

[3] M. Saito, E. Matsumoto, and S. Saito. Temporal generative adversarial nets with singular value clipping. In IEEE International Conference on Computer Vision (ICCV), 2017. 2, 3, 5, 6.

[4] M. Arjovsky, S. Chintala, and L. Bottou. Wasserstein gan. arXiv preprint arXiv:1701.07875, 2017. 2, 3.

[5] J. Chung, C. Gulcehre, K. Cho, and Y. Bengio. Empirical evaluation of gated recurrent neural networks on sequence modeling. In Advances in Neural Information Processing Systems (NIPS) Workshop, 2014. 4.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1518064.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Java基础】IO流(二)字符集知识

目录 字符集知识 1、GBK字符集 2、Unicode字符集(万国码) 3、乱码 4、Java中编码和解码的方法 字符集知识 字符(Character):在计算机和电信技术中,一个字符是一个单位的字形、类字形单位或符号的基本信…

最详细数据仓库项目实现:从0到1的电商数仓建设(采集部分)

1、数据库和数据仓库的区别: 数据仓库就是data warehouse,数据小卖店,相当于是对数据加工,计算然后对外提供服务,而不是单纯的存储 2、数据流转过程中数据仓库中的数据源部分 数据源部分的数据**不是只同步数据库当…

YOLOv8改进 | 图像去雾 | 特征融合注意网络FFA-Net增强YOLOv8对于模糊图片检测能力(北大和北航联合提出)

一、本文介绍 本文给大家带来的改进机制是由北大和北航联合提出的FFA-net: Feature Fusion Attention Network for Single Image Dehazing图像增强去雾网络,该网络的主要思想是利用特征融合注意力网络(Feature Fusion Attention Network)直接恢复无雾图像,FFA-Net通过特征…

海格里斯HEGERLS托盘搬运机器人四向车引领三维空间集群设备柔性运维

随着市场的不断迅猛发展变化,在物流仓储中,无论是国内还是海外,都对托盘式解决方案需求量很大。顾名思义,托盘式解决方案简单理解就是将产品放置在托盘上进行存储、搬运和拣选。 面对托盘式方案需求,行业中常见的方案是…

Wechaty 企业微信机器人报:return ‘port‘ in address

1.使用的依赖: "file-box": "^1.5.5", "qrcode": "^1.5.3", "install": "^0.13.0", "grpc/grpc-js": "^1.10.1","juzi/wechaty": "^1.0.65", "juzi/wec…

学习使用js获取当前ip地址的方法,使用第三方API获取ip地址

学习使用js获取当前ip地址的方法,使用第三方API获取ip地址 使用 DNS 查询使用第三方 API 使用 DNS 查询 DNS 是一种用于解析主机名为 IP 地址的系统。可以使用 JavaScript DNS 查询来获取本机IP地址。下面是如何使用 JavaScript 进行DNS查询的示例代码。 <p class"loc…

csp模拟题(201604-2,俄罗斯方块模拟下坠)

题目 问题描述 俄罗斯方块是俄罗斯人阿列克谢帕基特诺夫发明的一款休闲游戏。   游戏在一个15行10列的方格图上进行&#xff0c;方格图上的每一个格子可能已经放置了方块&#xff0c;或者没有放置方块。每一轮&#xff0c;都会有一个新的由4个小方块组成的板块从方格图的上方…

智慧城市物联网建设:提升城市管理效率与居民生活品质

目录 一、智慧城市物联网建设的意义 1、提升城市管理效率 2、改善居民生活品质 3、促进城市可持续发展 二、智慧城市物联网建设面临的挑战 1、技术标准与互操作性问题 2、数据安全与隐私保护问题 3、投资与回报平衡问题 三、智慧城市物联网建设的实施策略 1、制定统一…

让数据在业务间高效流转,镜舟科技与NineData完成产品兼容互认

近日&#xff0c;镜舟科技与NineData完成产品兼容测试。在经过联合测试后&#xff0c;镜舟科技旗下产品与NineData云原生智能数据管理平台完全兼容&#xff0c;整体运行高效稳定。 镜舟科技致力于帮助中国企业构建卓越的数据分析系统&#xff0c;打造独具竞争力的“数据护城河”…

【SysBench】Linux 安装 sysbench-1.20

安装目的是为了对 MySQL 8.0.x 、PostgreSQL 进行基准测试。 0、sysbench 简介 sysbench 是一个可编写脚本的多线程基准测试工具&#xff0c;基于 LuaJIT 。 它最常用于数据库基准测试&#xff0c;但也可以 用于创建任意不涉及数据库服务器的复杂工作负载。 sysbench 附带以…

服务注册与发现:Nacos

为什么需要服务注册与发现 假设 mafeng-user 用户微服务部署了多个实例&#xff08;组成集群模式&#xff09;&#xff0c;如下图所示&#xff1a; 会出现以下几个问题&#xff1a; mafeng-order订单微服务发出Http远程调用时&#xff0c;该如何得知mafeng-user实例的IP和端口…

【机器学习智能硬件开发全解】(五)—— 政安晨:嵌入式系统基本素养【总线、地址、指令集、微架构】

在智能硬件领域中&#xff0c;一个核心概念是嵌入式系统&#xff0c;整体结构可以分为以下几个主要组成部分&#xff1a; 控制器&#xff1a;控制器是嵌入式系统的核心&#xff0c;负责处理和执行系统中的各种任务和功能。它通常由中央处理器&#xff08;CPU&#xff09;和相关…

Android studio 性能调试

一、概述 Android studio 的Profiler可用来分析cpu和memory问题&#xff0c;下来进行说明介绍。 二、Android studio CPU调试 从开发模拟器或设备中启动应用程序&#xff1b; 在 Android Studio 中&#xff0c;通过选择View > Tool Windows > Profiler启动分析器。 应…

【NeurIPS】解决离线强化学习中的互模拟缺陷,FaceChain团队联合出品

一、论文 本文介绍被机器学习顶级国际会议NeurIPS 2023接收的论文 "Understanding and Addressing the Pitfalls of Bisimulation-based Representations in Offline Reinforcement Learning"&#xff0c;https://arxiv.org/abs/2310.17139 开源代码 https://gith…

【Python】进阶学习:计算一个人BMI(身体质量指数)指数

【Python】进阶学习&#xff1a;计算一个人BMI&#xff08;身体质量指数&#xff09;指数 &#x1f308; 个人主页&#xff1a;高斯小哥 &#x1f525; 高质量专栏&#xff1a;Matplotlib之旅&#xff1a;零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教…

android seekbar thumb 上添加进度值并居中

环境:android studio 、java 项目需要在进度条的滑块上显示进度值并居中, UI设计图: 代码实现效果图: 浅色模式: 深色模式: 由于一开始没有自定义seekbar, 使用源码Seekar, 滑块要求时带圆角,所以需要设置thumbOffset 使滑条和滑块衔接顺畅。想实现UI效果,需要对文…

Hadoop大数据应用:HDFS 集群节点缩容

目录 一、实验 1.环境 2.HDFS 集群节点缩容 二、问题 1.数据迁移有哪些状态 2.数据迁移失败 一、实验 1.环境 &#xff08;1&#xff09;主机 表1 主机 主机架构软件版本IP备注hadoop NameNode &#xff08;已部署&#xff09; SecondaryNameNode &#xff08;已部署…

为什么手机和电视ip地址不一样

在数字化时代&#xff0c;我们每天都会与各种电子设备打交道&#xff0c;其中最常见的就是手机和电视。当我们连接到互联网时&#xff0c;这些设备都会被分配一个独特的IP地址&#xff0c;用于在网络上进行标识和通信。然而&#xff0c;您可能已经注意到&#xff0c;即使手机和…

【linux线程(二)】线程互斥与线程同步

&#x1f493;博主CSDN主页:杭电码农-NEO&#x1f493;   ⏩专栏分类:Linux从入门到精通⏪   &#x1f69a;代码仓库:NEO的学习日记&#x1f69a;   &#x1f339;关注我&#x1faf5;带你学更多操作系统知识   &#x1f51d;&#x1f51d; Linux线程 1. 前言2. 多线程互…

pip 配置镜像加速安装

在使用pip安装Python第三方库时&#xff0c;默认是使用pip官网的非常慢&#xff0c;可通过配置国内镜像源加速下载速度&#xff0c;以下是如何使用国内镜像源安装Python库的两种常见方式&#xff1a; 临时使用镜像源安装 如果你只是想临时使用某个镜像源安装单个或几个库&…