U-GAT-IT:基于GAN的新型无监督图像转换

Unsupervised Generative Attentional Networks with Adaptive Layer-Instance Normalization for Image-to-Image Translation

  1. 图像转换的应用场景:图像分割、图像修复、图像着色、图像风格变化、图像场景变化
  2. 图像翻译是GAN铺开应用的第一步,跨模态间的转化,文本到图像,文本到视频、语音到视频等,这种端到端,实现一个分布到另一个分布转换的过程,GAN可以发挥作用。
  3. 引入注意力机制,这里采用全局和平均池化下的类激活图即class activation map简称CAM实现。产生注意力图后,再加上自适应图层实例归一化,AdaLIN,作用是帮助注意力引导模型灵活控制形状和纹理的变化量。

U-GAT-IT的优点

  1. 提出新的无监督图像到图像转换方法,具有新的注意力模块和新的归一化函数AdaLIN。
  2. 注意力模块通过基于辅助分类器获得的注意力图,区分源域和目标域。帮助模型知道在何处进行密集转换。
  3. AdaLIN帮助注意力引导模型灵活控制形状和纹理的变化量,增强模型鲁棒性。

模型结构

  1. 模型分为两个部分:生成器和判别器
  2. 生成器和判别器的结构几乎相同,生成器多了一点:就是AdaLIN和Decoder部分。

生成器

  1. 首先是对输入端的图像下采样
  2. 配合残差块增强图像特征提取
  3. 注意力模块
  4. 对注意力模块通过AdaLIN引导下残差块
  5. 最后通过上采样得到转换后的图形

判别器相对于生成器而言,就是将解码过程换成判别输出

类激活图CAM

  1. 结构图如下
    U-GAT-IT:基于GAN的新型无监督图像转换_第1张图片
  2. 对于上面结构图的解析,从下至上的传递过程:
  3. 第一步:图像经过下采样和残差块输出Encoder Feature map。
  4. 第二步:Encoder Feature map经过全局平均池化和全局最大池化后输出依托通道数的特征向量。
  5. 第三步:创建可学习参数weight
  6. 第四步:经过全连接层压缩到Bx1维。结构图中的B表示BatchSize,对于图像转换,BatchSize=1
  7. 对于Encoder Feature map的每一个通道,赋予一个权重,这个权重决定了这一通道对应特征的重要性。这样就实现了feature map下的注意力机制
  8. 经过全连接层后得到的Bx1维。在平均池化和最大池化后做concat以后,送入分类,做源域和目标域的分类判断。这是个无监督过程,仅仅知道的是源域和目标域。
  9. 当生成器可以很好的区分出源域和目标域输入时,那么在注意力机制下,模型可以知道在何处可以进行密集转化。
  10. 将平均池化和最大池化得到的注意力图做concat,经过一层卷积层还原为输入通道数,送入到AdaLIN下自适应归一化。

AdaLIN就是instance normalization和layer normalization的结合。AdaLIN的前提要保证通道之间不相关。因为它仅仅对图像map做归一化。

判别器

  1. 判别器的设计由全局判别器和局部判别器组成。区别仅仅在于全局判别器对输入图像有更深层次的特征压缩。
  2. 在判别器中也加入了CAM类激活图,虽然在判别器下的CAM不做域的分类,但是加入注意力机制对于判断图像真伪是有利的。注意力图通过关注目标域中的真实图像和和伪图像之间的差异来帮助微调。

利用GAN实现图像到图像转换的损失函数是有限个:

  1. GAN的对抗损失
  2. 循环一致性损失
  3. 身份损失(相同域之间不希望进行转化)
  4. CAM损失(生成器中对图像域分类,希望源域和目标域可以尽可能分开,这部分利用交叉熵损失)
在判别器上,也对真假图像的CAM类激活图进行了对抗损失优化,是为了在注意力图上进一步区分真假图像
作者公布的源码如果大家尝试运行可能会参数爆内存,这里的罪魁祸首发生在计算自适应图层实例归一化下的 MLP 直接从卷积展平送到全连接层中参数过大,大致计算一下,从 1×64×64×256 直接展平的尺寸是 1×1048576 再进行全连接操作,这个计算量是很大的,为了减小计算量,可以在这一步先对 map 进行 global average pooling 再进行全连接操作。

你可能感兴趣的:(计算机视觉)