Image Shape Manipulation from a Single Augmented Training Sample

P r o f i l e \mathbf{Profile} Profile
在这里插入图片描述直接上图好吧,👆,本文要实现的任务:
1️⃣ 只使用一组图像对 ( a ) , ( b ) (a), (b) (a),(b) 作为训练数据,其中称 ( a ) (a) (a) 为元素图像( P r i m i t i v e   I m a g e \mathbf {Primitive~Image} Primitive Image),称 ( b ) (b) (b) 为目标图像( T a r g e t   I m a g e \mathbf{Target~Image} Target Image);
2️⃣ 训练完模型之后,模型具备根据元素图像指定的语义位置、在目标图像上生成对应的外观(或:纹理)的能力;
3️⃣ 因此,对 ( a ) (a) (a) 做修改(这里称之为:形状编辑( S h a p e   M a n i p u l a t i o n \mathbf{Shape~Manipulation} Shape Manipulation),包括形状扭曲、位置移动、增/删形状等操作),🌰,将 ( a ) / ( c ) → ( d ) (a)/(c)\rightarrow(d) (a)/(c)(d),对应生成的目标图像就由 ( b ) (b) (b) 变成 ( e ) (e) (e);最右边一列是一些细节图。

p . s . \mathbf{p.s.} p.s. 本方法最终能够实现的图像编辑任务包括:

  • S h a p e   W a r p i n g \mathbf{Shape~Warping} Shape Warping → 形状变形
  • O b j e c t   R e a r r a n g e m e t n \mathbf{Object~Rearrangemetn} Object Rearrangemetn → 对象重安排
  • O b j e c t   R e m o v a l / A d d i t i o n \mathbf{Object~Removal/Addition} Object Removal/Addition → 对象去除/添加
  • C r e a t i o n   o f   p a i n t e d   a n d   p h o t o r e a l i s t i c   a n i m a t e d   c l i p s \mathbf{Creation~of~painted~and~photorealistic~animated~clips} Creation of painted and photorealistic animated clips → 艺术化或自然的视频片段生成

具体方法局限性见下方分析👇。

📜论文|💾代码

1. Related Works

  • P i x 2 P i x H D \mathbf{Pix2PixHD} Pix2PixHD
  • S i n G A N \mathbf{SinGAN} SinGAN
  • T u i G A N \mathbf{TuiGAN} TuiGAN

2. DeepSIM: Learning Conditional Generators from a Single Image

2.1 主要思想

本文的目的是学习一个条件 G A N GAN GAN,且仅基于一组图像对( P r i m i t i v e ,   T a r g e t \mathbf{Primitive,~Target} Primitive, Target)。其中为了解决训练数据稀缺、防止生成器过拟合,需要对这唯一的训练样本作增强,文中强调了,使用 T P S TPS TPS: Thin-plate-spline 作为图像增强方式是算法成功的关键。

2.2 Augmentations

我们先看看这种 T P S TPS TPS 增强方式,先来个图感受一下:
在这里插入图片描述也就是对图像内容做扭曲,类似于 C a r i G A N s CariGANs CariGANs 中对人脸做扭曲使之结构上更接近于讽刺漫画脸,且使用的技术是一样的。
T P S TPS TPS 的使用需要准备两组点,使之一一对应,每一对点的偏移将带动周围的像素区域发生“起始点指向目标点的方向”扭曲,因此,要解决的问题就只有:如何随机生成这两组点?
1️⃣ 将图像区域划分为等间距的(equispaced)的 3 × 3 3\times3 3×3 的网格,每个格子(的中心)有一个控制点(control points ( i , j ) (i,j) (i,j)
2️⃣ 对每个控制点在水平方向、竖直方向上分别随机偏移(shift)随机数量的像素距离(为了防止变形后的图像质量退化(即局部扭曲得太厉害),严格控制最大偏移幅度不能超过对应图像宽度和高度的 10 % 10\% 10%);
3️⃣ 这样就构造了初始的等间距分布的一组点和随机打乱后的一组点,根据这两组点优化下面的目标函数得到期望的密集形变场 f f f
min ⁡ f ∑ i , j ∥ t ( i , j ) − f ( i , j ) ∥ 2 + λ ∫ ∫ ( f x x 2 + f y y 2 + f x y 2 ) d x d y \min_f \sum_{i,j}\|t(i,j)-f(i,j)\|^2+\lambda \int\int(f_{xx}^2+f_{yy}^2+f_{xy}^2)dxdy fmini,jt(i,j)f(i,j)2+λ(fxx2+fyy2+fxy2)dxdy其中, f x x , f y y , f x y f_{xx}, f_{yy}, f_{xy} fxx,fyy,fxy 分别代表形变场 f f f 上每个点处的二阶导数:公式中第二项希望相邻位置的形变是相似的,即形变场的局部变化平滑性——明确我们要构造的并不是仿射变换那样尽可能处处偏移相等的变换,而是允许局部之间不同、但这种不同(位移的方向大小)是渐变的;因此允许一阶导数非零,但二阶导数趋近于 0 0 0
4️⃣ 这个优化能够被非常非常快地求解,如此,我们能够在线源源不断采样不同的形变场,记这些形变场构成的分布是 Ω \Omega Ω,则 f ∈ Ω f\in \Omega fΩ.

2.2 Model

记训练数据对为: { x ∈ R d x × d y × d p , y ∈ R d x × d y × 3 } \{x\in\mathbb R^{d_x\times d_y\times d_p}, y\in \mathbb R^{d_x \times d_y \times 3}\} {xRdx×dy×dp,yRdx×dy×3}
目标是学习一个生成网络 G : R d x × d y × d p → R d x × d y × 3 G:\mathbb R^{d_x\times d_y\times d_p}\rightarrow \mathbb R^{d_x \times d_y \times 3} G:Rdx×dy×dpRdx×dy×3,其中 d p d_p dp 是根据选择不同的元素图像取不同的值。
因此, G G G 可以是任意的 enc-dec 结构的网络,如 Pix2PixHD

好了,很快来到了目标函数,无非✌个:

  • V G G   P e r c e p t u a l   L o s s VGG~Perceptual~Loss VGG Perceptual Loss
    L r e c ( x , y ; G ) = L p e r c ( G ( x ) , y ) \mathcal L_{rec}(x,y;G)=\mathcal L_{perc}(G(x),y) Lrec(x,y;G)=Lperc(G(x),y)
  • C o n d i t i o n a l   G A N   L o s s Conditional~GAN~Loss Conditional GAN Loss
    L a d v ( x , y ; G , D ) = log ⁡ ( D ( x , y ) ) + log ⁡ ( 1 − D ( x , G ( x ) ) ) \mathcal L_{adv}(x,y;G,D)=\log(D(x,y))+\log(1-D(x,G(x))) Ladv(x,y;G,D)=log(D(x,y))+log(1D(x,G(x)))最终的目标函数是二者的加权和,即 L t o t a l ( x , y ; G , D ) = L r e c + α L a d v ( x , y ; D , G ) \mathcal L_{total}(x,y;G,D)=\mathcal L_{rec}+\alpha\mathcal L_{adv}(x,y;D,G) Ltotal(x,y;G,D)=Lrec+αLadv(x,y;D,G).好,讲完方法,就这?就这!
2.3 Primitive Images

元素图像要求具备的性质有两个:
1️⃣ 能够准确确定期望的输出图像;
2️⃣ 编辑方面足够简单。

常用的两种图像元素表示就有:
1️⃣ 线谱:无法直接指示高级的语义信息,但包含丰富的细节纹理信息;
2️⃣ 分割谱:能够提供高级的语义信息,但缺乏针对生成图像细节上的指导。
3️⃣ 将二者结合!!👈

不妨先看看关于元素图像选择上的消融:
在这里插入图片描述可以发现使用线谱与分割谱的结合能够实现最佳的视觉效果。
当然,在某些场景中,单独使用线谱或者分割谱也是足够的:
在这里插入图片描述往往二者的结合对于处理更复杂的结构效果更好:
在这里插入图片描述

3. Experiments

3.1 对比实验

首先看到本方法与经典有监督的图像翻译方法的比较,其中 M I \mathbf{MI} MI 指的是“multi images”,即基于多图训练的模型:
在这里插入图片描述
量化比较采用的是 L P I P S LPIPS LPIPS S I F I D SIFID SIFID,前者度量的是预测误差,后者度量的是生成图像的真实性,即“FID for Single Image”。这里的 S I A \mathbf{SIA} SIA 指的是“single image + augmented(random crop-and-flip)”.
在  数据集上的比较
在这里插入图片描述

3.2 一些好玩的应用

生成视频片段或者动画!
1️⃣ x → y x\rightarrow y xy 生成自然的视频帧
在这里插入图片描述
2️⃣ x ← y x\leftarrow y xy 生成风格化的视频帧
在这里插入图片描述
反向也就是将目标图像视为条件或者元素,将元素图像视为目标渲染的模态。

4. 写在后面

可以见得,本文的思路十分简明,使用 T P S TPS TPS 对单个样本对作数据增强,训练一个 Pix2PixHD 模型。
最后建议读者们观看两个作者公开的📺视频.
在这里插入图片描述
作者提到本文的不足有以下3点:
1️⃣ 不能生成未见过的对象,如第一组中去掉眼睛无法生成狗的眼睛;
2️⃣ 背景复制的现象,如第二组中添加海龟,周边的背景被附带过来但无法融入原来区域周边的背景(想也是,因为不管怎么变形,海龟只有一只,海龟与海岸的特定区域的特定纹理的相对位置或结构关系都是不变的);
3️⃣ 空白区域的插值现象,如第三组中把猫的鼻子以下区域往下拉伸,这部分多出来的空白就被插值——以重复的模式填充了(这也是必然的,因为 T P S TPS TPS 变形本质上就是插值)。


好辽,赶紧去看代码跑跑看,试试乱七八糟的想法、快速实现验证~

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值