美文网首页
[论文笔记]InstaGAN:Instance-Aware Im

[论文笔记]InstaGAN:Instance-Aware Im

作者: 祁晏晏 | 来源:发表于2020-05-07 18:23 被阅读0次

    我想看InstaGAN,但想看这个得先理解CycleGAN,所以看完CycleGAN我再来

    • 好,我胡汉三看完回来了
      看完发现还要补LSGAN,但因为不影响阅读,补的过程我打算之后再进行

    Abstract

    Image-to-image转换任务在涉及到多目标和形状的巨大改变时经常失败

    本文

    • 融合实例信息,改进多实例转换任务,保持实例的排序不变性。
    • 提出context preserving loss,保留除目标实例外的特征
    • 提出a sequential mini-batch inference/training technique,在GPU内存限制的情况下更好的多目标转换

    Introduction

    介绍背景和贡献。

    贡献主要分为三部分:

    • 提出一个能保证任意数量的实例排序不变性的神经网络结构
    • 提出上下文保护损失函数,既保护背景又能转换目标实例
    • 提出小批量训练技巧,解决GPU内存限制问题的同时,提升少量目标转换的效果

    InstaGAN

    背景介绍

    两个domain间的相互转换,有条件限制(即实例限制),无监督,要求实例和背景和谐。

    Architecture

    image.png

    InstaGAN的结构是基于CycleGAN的(G YX(G XY(x)) ≈ x && G XY(G YX(y)) ≈ y)。不同的是,本文不需要连接成环,使用其中一半即可。

    本文的目标是训练出两个生成器Gxy(由x,a生成y',b')和Gyx(由y,b生成x',a')。为了对抗,还需要两个判别器Dx(判别X,a和X',a'是否在Domain(X * a)中)和Dy。

    对Domain(X * a)中的

    生成方法

    1. 提取图像特征(提取方法:f_GX)

    2. 分别提取每个实例的特征(提取方法:f_GA),有n个实例

    3. 将提取到的实例特征求和,保证其实例的排序不变性

    4. 连接图像特征和实例特征和,送入生成器g_GX,生成图像。输入:

      h_{\mathrm{GX}}(x, \boldsymbol{a})=\left[f_{\mathrm{GX}}(x) ; \sum_{i=1}^{N} f_{\mathrm{GA}}\left(a_{i}\right)\right]

    5. 连接图像特征、实例特征和、每个实例的特征,分别送入生成器g_GA,生成转换后的masks。输入:

      h_{\mathrm{GA}}^{n}(x, \boldsymbol{a})=\left[f_{\mathrm{GX}}(x) ; \sum_{i=1}^{N} f_{\mathrm{GA}}\left(a_{i}\right) ; f_{\mathrm{GA}}\left(a_{n}\right)\right]

    生成这部分有些问题:

    1. 结果图像的生成靠的是g_GX吗?那g_GA存在的意义是什么?

    判别方法

    判别器同样需要对X和a同时编码。同生成方法,判别器的输入为:

    h_{\mathrm{DX}}(x, \boldsymbol{a})=\left[f_{\mathrm{DX}}(x) ; \sum_{i=1}^{N} f_{\mathrm{DA}}\left(a_{i}\right)\right]

    作者表示,连接图像特征和实例特征有利于建立X和a间的联系。

    对于上文提到了f_GX, f_GA, f_DX, f_DA, g_GX, g_GA,采用任意深度网络均可。(这一句话里的细节太多了,前文也没有提到g_GX和g_GA,我也不明白g_GA的意义在哪儿,可能是因为没看完吧)

    损失函数

    损失函数由以下几部分组成。

    • domain loss:输出符合目标domain

      • GAN loss
    • content loss:输出保留原有内容

      • cycle-consistency loss
      • identity mapping loss

      (看到这些loss我就知道我又要补课了)

      • context preserving loss(本文新提出的loss)

        使用输入和输出的分割信息

    接下来进行具体介绍。

    GAN loss

    GAN loss有多种变体。本文使用了LSGAN,在实验中表现出了稳定的好品质

    \mathcal{L}*{\mathrm{LSGAN}}=\left(D*{\mathrm{X}}(x, \boldsymbol{a})-1\right)^{2}+D_{\mathrm{X}}\left(G_{\mathrm{YX}}(y, \boldsymbol{b})\right)^{2}+\left(D_{\mathrm{Y}}(y, \boldsymbol{b})-1\right)^{2}+D_{\mathrm{Y}}\left(G_{\mathrm{XY}}(x, \boldsymbol{a})\right)^{2}

    cycle-consistency loss & identity mapping loss

    \begin{aligned} \mathcal{L}*{\mathrm{cyc}} &=\left\|G*{\mathrm{YX}}\left(G_{\mathrm{XY}}(x, \boldsymbol{a})\right)-(x, \boldsymbol{a})\right\|*{1}+\left\|G*{\mathrm{XY}}\left(G_{\mathrm{YX}}(y, \boldsymbol{b})\right)-(y, \boldsymbol{b})\right\|*{1} \\ \mathcal{L}*{\mathrm{idt}} &=\left\|G_{\mathrm{XY}}(y, \boldsymbol{b})-(y, \boldsymbol{b})\right\|*{1}+\left\|G*{\mathrm{YX}}(x, \boldsymbol{a})-(x, \boldsymbol{a})\right\|_{1} \end{aligned}

    Lcyc利用cycle规则,还挺好理解的

    Lidt不理解,需要补课

    context preserving loss

    \left.\mathcal{L}*{\mathrm{ctx}}=\left\|w\left(\boldsymbol{a}, \boldsymbol{b}^{\prime}\right) \odot\left(x-y^{\prime}\right)\right\|*{1}\right]+\left\|w\left(\boldsymbol{b}, \boldsymbol{a}^{\prime}\right) \odot\left(y-x^{\prime}\right)\right\|_{1}

    整个损失函数

    \mathcal{L}*{\text {InstaGAN }}=\underbrace{\mathcal{L}*{\text {LSGAN }}}*{\text {GAN (domain) loss }}+\underbrace{\lambda*{\text {cyc }} \mathcal{L}*{\text {cyc }}+\lambda*{\text {idt }} \mathcal{L}*{\text {idt }}+\lambda*{\text {ctx }} \mathcal{L}*{\text {ctx }}}*{\text {content loss }}

    Sequential mini-batch translation

    一个在GPU受限情况下使用instaGAN的方法。因为不是我现阶段学习的要点,留在这儿等以后补充。

    相关文章

      网友评论

          本文标题:[论文笔记]InstaGAN:Instance-Aware Im

          本文链接:https://www.haomeiwen.com/subject/hjqzghtx.html