HDGAN

介绍CVPR2018论文《PhotographicText-to-ImageSynthesiswithaHierarchically-nestedAdversarialNetwork》,提出一种新模型HDGAN,通过层次嵌套对抗性目标和单流生成器架构,生成高分辨率图像。模型采用多用途对抗性损失和视觉语义相似度度量,提升图像质量和语义一致性。

CVPR 2018 《Photographic Text-to-Image Synthesis with a Hierarchically-nested Adversarial Network》

github


在这里插入图片描述

本文所提出的HDGAN从文章的名字我们也可以看出任务的主要关注点,那就是如何产生高质量或高分辨率的图像。在本文提出之前,比较有名的产生高分辨图像的模型主要是StackGAN和StackGAN++,但是它们只能分两个阶段来进行,第一阶段生成 64 × 64 64 \times 64 64×64的图像,第二阶段生成 256 × 256 256 \times 256 256×256的高分辨率图像,并不是目前常见的end-to-end的风格。因此,作者在本文中提出了一种称为伴随层次嵌套对抗性目标(accompanying hierarchical-nested adversarial objectives),通过规范在不同的中间层生成的低分辨率图像来使得生成器可以捕获复杂的图像信息。另外,提出了一种可扩展的单流生成器架构(extensile single-stream generator architecture)来更好的联合判别器进行训练,从而生成高分辨率的图像。同时为了同时提高语义一致性和图像保真度,采用了一种多用途的对抗性损失(multi-purpose adversarial loss)来鼓励更有效地使用图像和文本信息。最后还提出了一种新的视觉语义相关性度量标准,并在此标准和其他常见的评估标准上进行实验,均取得了不错的效果。

其中层次嵌套对抗性网络的示意图如下所示,它是一种逐步生成不同分辨率图像的架构,在每个中间层都嵌套了一个对应的判别器来区分生成图像的真假和对于描述文本的语义相关性。


在这里插入图片描述

我们可以从下面这张图中看一下HDGAN的架构和之前模型架构的区别。图A表示的就是类似StackGAN的多阶段生成的建构方式,前一阶段的输出作为下阶段的输入,逐步的提高生成图像的分辨率;图B是一个生成器对应对应多个判别器,这样的方式实现了对于生成图像不同方面的关注;图C是逐步训练对称判别器和生成器的架构,同样也是一种对阶段生成的方式;图D表示的就是HDGAN,通过单流的生成器和层次嵌套判别器的架构来实现端到端的训练。


在这里插入图片描述

下面来逐个的看一下作者所提出的几个比较重要的东西

  • Hierarchicalnested adversarial objectives
  • Multipurpose adversarial losses
  • Visual-semantic similarity

Hierarchicalnested adversarial objectives

GAN的目标函数可写为 G ∗ , D ∗ = arg ⁡ min ⁡ G max ⁡ D V ( D , G , Y , z ) = G ∗ , D ∗ = arg ⁡ min ⁡ G max ⁡ D E Y ∼ p  data  [ log ⁡ D ( Y ) ] + E z ∼ p z [ log ⁡ ( 1 − D ( G ( z ) ) ) ] G^{*}, D^{*}=\arg \min _{G} \max _{D} \mathcal{V}(D, G, Y, \boldsymbol{z})=G^{*}, D^{*}=\arg \min _{G} \max _{D}\mathbb{E}_{Y \sim p_{\text { data }}}[\log D(Y)]+\mathbb{E}_{\boldsymbol{z} \sim p_{z}}[\log (1-D(G(\boldsymbol{z})))] G,D=argGminDmaxV(D,G,Y,z)=G,D=argGminDmaxEYp data [logD(Y)]+Ezpz[log(1D(G(z)))]

而本文所提出的层次嵌套结构的生成器 G \mathcal{G} G通过对隐空间中图像的正则化以及使生成器更快的接收到梯度信息,促使生成器更快的生成逼真的图像,同时也助于提高训练过程的稳定性。这里的 G \mathcal{G} G是CNN的架构模型,可表示为 X 1 , … , X s = G ( t , z ) X_{1}, \ldots, X_{s}=\mathcal{G}(t, z) X1,,Xs=G(t,z)其中 t t t表示描述语句的嵌入向量,它由char-RNN的文本编码器训练而得; z z z表示随机噪声向量; X i X_{i} Xi表示不同中间层生成的图像, X s X_{s} Xs是最后生成的高分辨率图像。对于每层生成器的输出,都会有一个对应的判别器进行判别,因此min-max目标函数可写为 G ∗ , D ∗ = arg ⁡ min ⁡ G max ⁡ D V ( G , D , Y , t , z ) \mathcal{G}^{*}, \mathcal{D}^{*}=\arg \min _{\mathcal{G}} \max _{\mathcal{D}} \mathcal{V}(\mathcal{G}, \mathcal{D}, \mathcal{Y}, t, \boldsymbol{z}) G,D=argGminDmaxV(G,D,Y,t,z)其中 D = { D 1 , . . . , D s } \mathcal{D}=\{D_{1},...,D_{s}\} D={D1,...,Ds}表示对应的判别器, Y = { Y 1 , . . . , Y s } \mathcal{Y}=\{Y_{1},...,Y_{s}\} Y={Y1,...,Ys}表示对应的不同分辨率下的真实图像。

低分辨率层的输出主要用于学习语义一致的图像结构(例如对象草图、颜色和背景),随后的高分辨率层的输出用于呈现细粒度的细节。由于是以端到端的方式训练的,低分辨率的输出也可以充分利用来自高分辨率鉴别器的自顶向下的知识。因此这样的架构可以在低分辨率和高分辨率图像的输出中观察到一致的图像结构、颜色和样式。

Multipurpose adversarial losses

这个损失项的提出主要是为了让低分辨率层的判别器关注全局的特征,高分辨率的判别器更专注于局部细粒度的特征,从而提高生成图像的保真度。每个判别器都包含两个分支,其中一个分支是,用于生成一个 R i × R i R_{i} \times R_{i} Ri×Ri概率映射,判断图像的每个局部区域的真假(对应local image loss);另一个分支首先把 512 × 4 × 4 512 \times 4 \times 4 512×4×4的特征图和一个 128 × 4 × 4 128 \times 4 \times 4 128×4×4的文本嵌入向量拼接起来,再做 4 × 4 4 \times 4 4×4的卷积来判断 图像-文本对是真还是假。这样的过程就形成了下图所示的金字塔的形式


在这里插入图片描述

综上,整个模型的目标函数为 V ( G , D , Y , t , z ) = ∑ i = 1 s ( L 2 ( D i ( Y i ) ) + L 2 ( D i ( Y i , t Y ) ) + L 2 ‾ ( D i ( X i ) ) + L 2 ‾ ( D i ( X i , t X i ) ) + L 2 ‾ ( D i ( Y i , t Y ‾ ) ) ) \begin{array}{c}{\mathcal{V}(\mathcal{G}, \mathcal{D}, \mathcal{Y}, t, \boldsymbol{z})=\sum_{i=1}^{s}\left(L_{2}\left(D_{i}\left(Y_{i}\right)\right)+L_{2}\left(D_{i}\left(Y_{i}, \boldsymbol{t}_{Y}\right)\right)+\right.} \\ {\overline{L_{2}}\left(D_{i}\left(X_{i}\right)\right)+\overline{L_{2}}\left(D_{i}\left(X_{i}, \boldsymbol{t}_{X_{i}}\right)\right)+\overline{L_{2}}\left(D_{i}\left(Y_{i}, \boldsymbol{t}_{\overline{Y}}\right)\right) )}\end{array} V(G,D,Y,t,z)=i=1s(L2(Di(Yi))+L2(Di(Yi,tY))+L2(Di(Xi))+L2(Di(Xi,tXi))+L2(Di(Yi,tY)))

visual-sementic similarity

提出的新的度量标准是为了自动化的评估生成图像和描述文本的语义一致性,基本思想是将图像和文本嵌入到同一个向量空间中,通过 c ( x , y ) = x ⋅ y ∥ x ∥ 2 ⋅ ∥ y ∥ 2 c(\boldsymbol{x}, \boldsymbol{y})=\frac{\boldsymbol{x} \cdot \boldsymbol{y}}{\|\boldsymbol{x}\|_{2} \cdot\|\boldsymbol{y}\|_{2}} c(x,y)=x2y2xy来计算一致性,模型通过最小化下面的双向的排名损失来训练模型 ∑ v ∑ t σ ‾ max ⁡ ( 0 , δ − c ( f v ( v ) , f t ( t v ) ) + c ( f v ( v ) , f t ( t v ‾ ) ) ) + ∑ t ∑ v τ ‾ max ⁡ ( 0 , δ − c ( f t ( t ) , f v ( v v ) ) + c ( f t ( t ) , f v ( v t ‾ ) ) ) \begin{array}{l}{\sum_{\boldsymbol{v}} \sum_{t_{\overline{\sigma}}} \max \left(0, \delta-c\left(f_{v}(\boldsymbol{v}), f_{t}\left(\boldsymbol{t}_{v}\right)\right)+c\left(f_{v}(\boldsymbol{v}), f_{t}\left(\boldsymbol{t}_{\overline{v}}\right)\right)\right)+} \\ {\sum_{\boldsymbol{t}} \sum_{\boldsymbol{v}_{\overline{\tau}}} \max \left(0, \delta-c\left(f_{t}(\boldsymbol{t}), f_{v}\left(\boldsymbol{v}_{v}\right)\right)+c\left(f_{t}(\boldsymbol{t}), f_{v}\left(\boldsymbol{v}_{\overline{t}}\right)\right)\right)}\end{array} vtσmax(0,δc(fv(v),ft(tv))+c(fv(v),ft(tv)))+tvτmax(0,δc(ft(t),fv(vv))+c(ft(t),fv(vt)))


关于实验部分可见原论文啦~

DySa1.2.4 SPPF_LSKA模块 在边缘设备上运行深度神经网络时,尤其是像棉花顶芽检测嵌入式网络,平衡模型性能和推理速至关重要,传统卷积神经网络只能捕捉全局信息,虽然注意力机制在全局在捕捉全局信息方面非常有效,但是增加了计算的复杂性和推理时间。为了应对上述问题,选用LSKA模块。LSKA通过将卷积层中的2D卷积核分解为1D卷积核,使其能直接作用于卷积层在增加卷积核大小时导致的计算机和内存占用二次增长问题。LSKA能够很好的捕捉上下文信息,从而更容易获取对象的形状特征并非纹理特征。通过融合SPPF模块与LSKA模块,能够增强传统卷积中在多个尺度聚合特征能力不足的问题。LISKA计算过程如下; Zc=H,WW(2d−1)×1C∗(H,WW(2d−1)×1C∗FC) (1) Zc=H,WW(K/d)×1C∗(H,WW(K/d)×1C∗ZC) (2) AC=W1×1∗ZC (3) FC=FC⨂AC (4) 式中 F∈RC×H×W、C表示特征图的通道数量;H与W分别表示特征图的高和宽;*、⨂为卷积和Hadamard积;d为扩张率。特征图FC前后与大小为(2d-1)、(2d-1)×1的卷积核深度卷积产生初等注意力图Zc,捕获空间信息。为了进一步提取特征,Zc继续与(K/d)×1、(K/d)×1空间扩张生成ZC,协助获取局部空间信息;(K/d)表示向下取整。注意力图Ac与FC进行Hadamard积输出LSKA的结果FC,然后FC会根据Ac的值加权增强特征。 SPPF模块由两个卷积层和最大池化层组成,SPPF模块会将输入特征图的通道数减半,然后进行不同尺度的最大池化,然后将特征图与池化操作拼接,卷积输出结果。将LSKA与SPPF模块整合后,极大的提升了SPPF模块在多尺度上聚合特征的能力,帮助模型更好的识别棉花顶芽。SPPF_LSKA将这段话总结一下
最新发布
12-04
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值