美文网首页深度学习-推荐系统-CV-NLP
InstaGAN:Instance-Aware Image To

InstaGAN:Instance-Aware Image To

作者: Mordekaiser | 来源:发表于2019-01-05 16:22 被阅读94次

    论文:InstaGAN
    代码:Github

    做了什么?

    现有无监督Image-Image translation的缺点:

    • 涉及多目标的时候,转换效果不佳
    • 物体外形变化比较大的时候,转换效果不佳


      多目标示例图

    以上图为例,多个绵阳迁移到长颈鹿就是一个多目标,且形状变化较大的例子。作者提出的InstaGAN就在一定程度上解决了上述问题。

    怎么做的?

    基于上述问题,作者提出了InstaGAN。考虑图像转换中多个目标的Instance information(比如分割的masks)。使得完成属性迁移的同时,背景保持不变。背景保持不变通过引入context preserving loss来鼓励网络去学习一个目标示例的之外的一个恒等映射。此外,作者提出一种sequential mini-batch的方法以处理生成多个instance时内存不足的问题,同时也提升了生成效果。

    总结说来,作者的贡献包括三方面:

    • 提出了一个多属性图像翻译的网络结构,且属性之间的顺序是任意的
    • 提出了context preserving loss来鼓励网络去学习一个目标示例的之外的一个恒等映射
    • 提出一种sequential mini-batch的方法顺序生成mini-batchs的属性,而不是在整个数据集上做一次。

    具体方法

    整个模型基于CycleGAN,这两年基于CycleGAN的工作一大堆(基本上就是应用到不同领域,并加个约束)。不了解的可以看博客CycleGAN

    网络框架图

    相比于CycleGAN,就是对生成器添加了目标的masks,并且判别器也加了masks。这样可以使得生成的判别器除了能鉴别是否是目标域的数据之外,还可以鉴别其形状(避免出现像上面cycleGAN的结果里面把长劲鹿脖子弄变形的情况)。

    三点主要工作

    多属性图像翻译的网络结构,属性之间顺序任意

    测试阶段:

    • 上图中间original image通过f_{cx}提取特征
    • original masks通过f_{GA}提取特征,不同的mask代表不同的object。注意上图的Add操作,这个使得不同的mask之间存在时序不变性。
    • 将mask的特征和original image的特征进行级联并重构

    训练阶段:

    • 除了上述步骤之外,还需要利用g_{GA}对masks的特征转换成目标域的mask。
    • 判别器需要对重构后的图像,以及masks判断其一致性。

    context preserving loss

    这个比较简单,其实就是把加一个约束,保证masks之外的信息保持不变(下式中的L_{ctx}项)。整个loss如下:

    loss

    值得注意的是,上述目标域的mask生成没有使用监督信息,而是使用cycle consistency来约束目标域的mask,这样可以使得生成的mask更加鲁棒,比如处理一些遮挡的情况。

    sequential mini-batch

    当mask增加时,由于h_{GA}的存在,所需显存也是成倍增长,因此这里使用sequential的方法,其实就是渐进迭代的方法。具体看下图:

    sequential mini batch

    把mask分开,一个个生成就好了。但是这里要注意,通常小的mask放到后面效果会更好。因为迭代进行的话,每次生成的图片都会被改变,后面如果是大mask,很容易把前面生成的小mask跟淹没掉。

    所以,使用这种办法,一定程度上破坏了object mask之间的时序不变性,如果GPU显存足够,就不要用这种方法了。

    相关文章

      网友评论

        本文标题:InstaGAN:Instance-Aware Image To

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