当前位置:   article > 正文

Gated Convolution

Gated Convolution

 Gated Convolution是对部分卷积网络(Partial Convolutions)《Image Inpainting for Irregular Holes Using Partial Convolutions》的改进

ICCV 2019Free-Form Image Inpainting with Gated Convolution

  • 解决问题:Partial Convolutions中Mask更新的不合理;提出新卷积层(Gated Convolution layer ),通过在所有层的每个空间位置为每个通道提供可学习的动态特征选择机制来解决传统卷积(vanilla convolutions)将所有输入像素视为有效像素的问题的不合理性;提出SN-PatchGAN loss来优化准确性。
  • 适用于:irregular masks、rectangular masks、guidance.
  • 解决办法:提出gated convolution 来解决将所有元素都视为有效像素,通过在所有层的每个空间位置为每个通道提供一个可学习得动态特征选择机制来扩展部分卷积。
  • 贡献:
    • 改进了部分卷积网络《Image Inpainting for Irregular Holes Using Partial Convolutions》的Mask更新过程;
    • 提出了gated convolution 来替代传统的vanilla convolution,解决了vanilla convolution将所有元素均视为有效像素。
    • 提出SN-PatchGAN loss。

Gated Convolution

  • 问题1:为什么传统卷积(vanilla convolutions)不适应于图像修复[free-form]任务问题?
    • 回答一:传统卷积(vanilla convolutions)是将每一个像素都当成有效值去计算的,这个特性适用于分类和检测任务,在这些任务中,输入图像的所有像素都是有效的,以滑动窗口的方式提取局部特征。但是不适用于inpainting任务,因为inpainting任务中hole里面的像素是无效值,因此对hole里面的内容和外面的内容要加以区分,partial conv虽然将里面和外面的内容加以区分了,但是它将含有1个有效值像素的区域与含有9个有效值像素的区域同等对待,这明显是不合理的,gated conv则是使用卷积和sigmoid函数来使得网络去学习这种区分。
    • 回答二:对于输入图像的每个通道的坐标点位置(x,y),都会有相同形态的滤波器(这里指kernel size,非每个滤波器本身的系数)对其进行vanilla conv操作。这对于classificaton和object detection任务是有意义的,因为vanilla conv对每个输入像素使用相同形态但系数不同的滤波器,通过滑窗方式可以有效地提取出图像的local feature。
       然而,对于image inpainting任务,input feature由valid pixels outside holes、invalid pixels in the masked regions(这些像素通常指在shallow layers才有,因为随着层数变深,invalid pixel会逐渐变成valid pixel)或synthesized pixels in the masked regions (deep layers)组成,这会使训练产生ambiguity,导致测试阶段产生visual artifacts,比如color discrepancy,blurriness,obvious edge responses。
    • 总结来说就是:①:对于classificaton和object detection任务对其进行vanilla conv操作是有意义的,因为vanilla conv对每个输入像素使用相同形态但系数不同的滤波器,通过滑窗方式可以有效地提取出图像的local feature。
      ②:对于image inpainting任务这会使训练产生ambiguity,导致测试阶段产生visual artifacts
  •  问题3:partial conv如何解决ambiguity?
    回答:

  • 问题2:部分卷积存(partial conv)在什么不足之处?
    • 答:无论像素多少,只要存在至少一个,就将mask设置为1;没有满足用户的意愿来进行修复(也就是没有使用guidance);部分卷积网络的mask在较深的层逐渐消失,并且消失的规则为只要存在一个像素为有效像素,则设置当前所对应的Mask1。对于此,本文提出了能够自动学习的mask更新规则;所有图像的通道共用相同的mask,这样限制了灵活性。实际上部分卷积可以认为是不可学习的单通道特征hard-gating
    • [补充] 部分卷积的本质:通过Mask和re-normalization来保证卷积操作仅针对有效像素,具体公式如下:

部分卷积公式及Mask更新规则

gated convolution原理结构,如下图

 部分卷积和门控卷积对比

  • 门控卷积不是采用 hard-gating mask的Mask更新规则,而是采用可学习的soft mask更新规则。
  • gated convolution公式如下:

 gated convolution公式形式表示

  • 所提出的gated convolution(门控卷积)学习了每个通道和每个空间位置的动态特征选择机制。有趣的是,中间门控值的可视化显示,它不仅能根据背景、遮罩、草图来选择特征,还能考虑到某些通道的语义分割。即使在深层,门控卷积也会学习在不同的通道中突出显示mask区域和草图信息,以更好地生成修复结果。

Network Architecture

  • 修复网络结构图如下:

修复网络结构图,SN-PatchGAN将在之后Loss章节介绍

这是一个由粗到细两阶段的网络,带有门控卷积。粗糙生成器以RGB图像、掩码图像和可选的用户草图图像作为输入(以增强模型的交互编辑能力),对缺失区域进行粗糙重建。然后,粗填充的图像将被传递到第二个细化生成器网络进行细化。请注意,DeepFill v1中提出的上下文注意(CA)层被用于此细化网络。

对于鉴别器,除了使用PatchGAN之外,作者还对鉴别器的每个标准卷积层使用了谱归一化(SN),以提高训练的稳定性。

  • 网络结构为粗修复网络和精细修复网络(coarse and refinement networks),作者采用了简单的encoder-decoder network,而不是采用了类似 partial convU-net结构(其实这里说的有问题,因为U-net属于encoder-decoder网络,这里的意思应该是没有像partial conv使用U-net结构的skip-connection操作),并且作者发现partial conv中使用的skip connections对于本论文提出的方法并没有帮助。这主要是因为对于Mask区域的中心,这些跳跃连接的输入几乎为零,因此无法将详细的颜色或纹理信息传播到该区域的解码器。对于Hole边界,我们的编码器结构配备了门控卷积,足以产生无缝的结果。
  • 作者将所有的门控卷积替代了传统的卷积。这一做法存在的问题就是引入了额外的参数,为了保持与baseline model相同的效率,作者将模型的宽度缩小了25%,在数量和质量上都没有发现明显的性能下降。
  • 修复网络是端到端训练的,输入的图像可以为任意形状、任意位置(Free-Form Image)的缺失。
  • 修复网络是采用完全卷积的,在推理中支持不同的输入分辨率。本论文的网络输入为 512 × 512 。

 

Loss Functions

  • pectral Normalized Markovian Discriminator(SNPatchGAN)[光谱归一化马尔科夫判别器]
    • 之前提出的修复网络,为了修复带有矩形缺失部分的图片,提出了local GAN(局部GAN)来提升实验的结果。
    • 本论文中考虑的是任意形状、任意位置(Free-Form Image)的缺失的情况,上面的方法便不再适用,借鉴 global and local GANsMarkovianGANsperceptual lossspectral-normalized GANs,作者提出了一个有效的 GAN loss,成为为 SN-PatchGAN。
    • SN-PatchGAN 的输入是修复网络的输出结果和mask channel、sketch channel。

 

    • SN-PatchGAN6个卷积层(卷积核大小为2,步幅为2)堆叠来获得MarkovianPatches特征的统计信息。然后直接将SN-PatchGAN应用到特征图的每一个特征元素,以输入图像的不同位置和不同语义(在不同的通道中表示)的形式表示GANh×w×c个。
    • 值得注意的是,在训练的环境中,输出图中每个神经元的感受野可以覆盖整个输入图像,因此不需要全局判别器 。
    • 作者也采用了最近提出的Spectral normalization来进一步稳定GANs的训练。我们采用SN-GANs中描述的默认Spectral normalizationfast approximation算法。

 Generator的损失函数:

训练模型的损失函数由两个损失项组成,一个是像素级L1重建损失(L1损失),另一个是SN-PatchGAN损失。请注意,用于平衡这两个损耗项的超参数为1:1。生成器的SN-PatchGAN损耗非常简单。它是SN-PatchGAN鉴别器输出的负平均值。实际上,这是铰链损耗,这在许多GAN框架中也很常见。

https://blog.csdn.net/yexiaogu1104/article/details/88293200

https://cloud.tencent.com/developer/article/1759006

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/94021
推荐阅读
相关标签
  

闽ICP备14008679号