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

ICCV 2019《Free-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

Gated Convolution相关推荐

  1. Free-Form Image Inpainting with Gated Convolution

    CVPR 2020的一篇文章 解读一下题目: - free form 自由形式 - image inpainting 图像补全 - gated convolution 门控卷积 该文章提出了一个,缺失 ...

  2. (门控卷积实现)DeepFillv2(图像修复):Free-Form Image Inpainting with Gated Convolution,pytroch代码实现

    deepfillv2的动机 ​ 结合了几乎所有的目前先进的图像修复技术,基于部分卷积提出了门控卷积,结合了CA中的注意力机制,根据 Adversarial Edge图像修复中的边缘信息先验提出了用户可 ...

  3. 2019-ICCV-台湾大学-Free-form Video Inpainting with 3D Gated Convolution and Temporal PatchGAN

    高清还原破损视频  BMVC 2019 每个被破损的视频,经过AI还原之后,仿佛从来没有被破坏过一样,完整清晰. 可学习的门控时移模块,Learnable Gated Temporal Shift M ...

  4. Partial convolution Gated convolution

    组会讨论帖 1. 图像修复 图像修复(inpainting),顾名思义,就是将图像中损坏的部分修复起来,是一种图像编辑技术,可以应用在移除物体.修复老照片.图像补全(eg,地震插值)等等. 2. Pa ...

  5. 读书笔记6:Attentive Convolution

    从摘要中就可看出,这篇文章针对的问题是NLP这种RNN很擅长,但是CNN不怎么擅长的问题,据此我们猜想,NLP能用,那应该是时间序列之类的问题都可以用,像视频处理,动作识别也都有希望从中借鉴一二. 摘 ...

  6. 结合深度学习的图像修复怎么实现?

    作者:QZhang 链接:https://www.zhihu.com/question/56801298/answer/155891603 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非 ...

  7. 【深度学习】揭秘2021抖音和快手APP图像修复背后的核心技术,毫无ps痕迹

    作者 | 对白 出品 | 对白的算法屋 编者寄语: 本文看完,相信你会对抖音和快手APP中使用的图像修复技术有一番了解和掌握. 大家好,我是对白. 由于CNN.GAN.Transformer等模型在C ...

  8. TPAMI 2021 | 时间走向二维,基于文本的视频时间定位新方法兼顾速度与精度

    ©作者 | 张宋扬.彭厚文等 来源 | 机器之心 当时间的维度从一维走向二维,时序上的建模方式也需要相应的改变.本文提出了多尺度二维时间图的概念和多尺度二维时域邻近网络(MS-2D-TAN)用于解决视 ...

  9. 仅输入单张图片,就能“看”出物体材质!这篇图形学论文已被SIGGRAPH 2021收录...

     OPPO 日前,计算机图形学顶级国际学术会议ACM SIGGRAPH 2021收录了Highlight-aware Two-stream Network for Single-image SVBRD ...

最新文章

  1. php jquery教程下载,jquery怎么下载和引用
  2. 配置PIM auto-rp
  3. Spring AOP基础—JDK动态代理
  4. TeamToy - 创新团队的效率工具 一个好用的 团队协作软件
  5. 10个我最喜欢问程序员的面试问题
  6. 关于JDK8采坑JCE加密限制版本问题
  7. Python函数声明以及与其他编程语言数据类型的比较
  8. qt 写的tcp客户端程序实现简单的连接接受和发送消息
  9. WinForm上显示gif动画
  10. 独家专访VB100:趋势科技退出缘于新病毒检测失败
  11. 整流五 - PWM整流器无差拍控制 一(重复控制算法)
  12. 【数据分析实例】 7000 条北京的租房数据分析
  13. 存储容量与地址空间的计算
  14. jeecg中高级查询的写法
  15. 言承旭签约尊尼事务所 变木村拓哉师弟攻日本
  16. pythoon_interview_redit
  17. linux内存相关命令汇总
  18. 笔记本做wifi热点
  19. python 调用接口
  20. BADI 构建方法(NEW BADI 实施)

热门文章

  1. 取消hibernate的外键生成
  2. abap oo 语法
  3. 本地也能运行AWS?是的,AWS开始进军混合云领域了
  4. Shell告警系统(需求分析,告警系统主脚本,告警系统配置文件,告警系统监控项目)...
  5. redhat 6.5 yum不能使用之改进
  6. 数易云备开启虚拟机备份新时代
  7. ionic路由(一)
  8. js文件代码未加载或者没有js效果
  9. 玩转Google开源C++单元测试框架Google Test系列
  10. OJ1057: 素数判定(C语言经典列题,判断变量的应用)