Region Normalization 总结

年前读了 Region Normalization for Image Inpainting 这篇文章,当时作者还未上传代码,文章内容也读的云里雾里。现在再深入理解一下文章。

1、文章的重点在 normalization 上面。以前读文章也遇到过各种normalization,但没有系统比较过他们的具体机制,正好作者在Related Work部分专门列出了不同的normalization出处,码一下,再去仔细了解一下这些方法。

2、首先是动机,也就是针对目前存在的问题。
在这里插入图片描述
三张图是三张feature map,1-3分别为unmasked,masked with full-spatial normalization,masked with normalization separately.在计算时,把masked区域值设为255.对三张图像素作简单的均值计算:在这里插入图片描述
μ,σ代表均值和标准差,数字下标代表第几张feature,下标u代表unmasked,m代表masked区域。feature 3 把是否masked区域分开,在计算时也只计算unmasked区域,很容易理解,避免了有效区域的像素值被全黑(255)的区域影响。下图是ReLU和Sigmod两种激活函数下不同处理方法的影响:在这里插入图片描述
不管是均值还是方差,可以看到如果不区分是否masked就进行normalization,得到的结果距真实值有较大偏差。

3、先说网络整体结构。
生成器: 来自于EdgeConnect(EC) (Nazeri et al. 2019),结构如下
在这里插入图片描述
由Encoder、Residual Block、Decoder三部分组成。其中Encoder采用RN-B方法,Residual Block和Decoder采用RN-L方法。两种方法都是区域归一化,前者是基础版,需要输入mask,后者是可学习版,只需要输入feature maps即可。
判别器: 照搬 PatchGAN (Isola et al. 2017; Zhu et al. 2017) 的结构。同时采用了其损失函数,共包括四部分:reconstruction loss,adversarial loss,perceptual loss and style loss。
网络结构和损失函数上并没有创新的地方,将不同的已有的优秀方法拼凑而成。

4、文中创新点的地方:Region Normalization 的定义
对于每一个输入的feature map 其都有四个维度:N,C,H,W。分别代表batch size(批数量),channels(通道数),height(特征图的高),weith(特征宽)。既然是区域(region)归一化,就肯定有不同的区域,作者给出如下表示:
在这里插入图片描述
除了n,c还有H,W,所以每一批次feature maps 根据H,W两个维度来划分成若干块区域。如下图:
在这里插入图片描述
以n,c为索引确定待处理区域。将待处理区域分割为若干子区域。分别对若干region进行normalization然后合并。
对不同region分别进行normalization的操作时相同的:
在这里插入图片描述
就是一个减去均值然后除以标准差的过程。均值和标准差的计算也是传统的方法,只是注意对统一region内像素进行计算。
这儿作者说明此方法其实是对Instance Normalization (IN)方法的一个拓展,当划分的region数量为1时,就是IN方法。我没读过IN方法,码住,去学习一下。 在图像修复领域,就把region数量设为2,一类完好区域,一类masked区域。
5、作者通过两种方式RN-B和RN-L运用RN方法
1)RN-B(Basic Region Normalization)
在这里插入图片描述
此方法根据输入的mask来划分original image 为两个区域(masked/unmasked),具体规则如下:
在这里插入图片描述
就是对于mask像素值为255的地方,判定为masked。将划分出的两个region分别用上述方法进行normalization然后合并得到完整的feature map。但是对于每个通道的feature,就有两组网络参数需要学习,不再是一个通道一组权重和偏差。
2)RN-L(Learnable Region Normalization)
在这里插入图片描述
此方法不再需要手动输入mask来划分region。如上图所示,首先对输入的feature maps进行最大池化和均值池化(对channel axis)获得两个1×H×W的map,原文说 The two pooling operations are able to obtain an efficient feature descriptor (Zagoruyko and Komodakis 2016; Woo et al. 2018) ,这个也列为待看内容。
将得到的两个池化层卷积后施加Sigmod激活函数得到 a spatial response map:
在这里插入图片描述
然后对Msr设置一个t=0.8的阈值来判断是否是masked区域(这儿我没太明白这么做的原理是什么,可能在上面提到的两个池化层操作的文章里面有解释):
在这里插入图片描述
这儿0.8的阈值只在前向传播推断的过程发挥作用,不会影响反向传播中梯度的更新。(这句话的具体效果包括其此操作可能产生的影响我暂且没想明白,需要看代码理解这个地方

在学习γ(scale)和β(shift) 参数时,文中说也是通过卷积操作得到:
在这里插入图片描述
这儿的卷积和上面对两个池化层的卷积需要去看代码来理解。
γ和β在仿射变换的过程中会沿着channel 维度膨胀?

6、总结
这篇文章不长,网络结构是从之前不同方法拼凑而成,创新点在RN这一概念的提出,通过RN-B,RN-L两种形式运用此方法。
文章整体不难理解,一些概念也较易懂,但是在RN-L方法中,现在还是有好多地方不理解,我觉得应该是前期文章读的太少,虽然在这篇文章中作为base但我不知道。文中一些提到的引用应该尽量去看一下。需要做一些后续补充学习的地方暂且黑斜体标注一下。
从上周开始也在尝试跑作者开源的程序,目前初步可运行,但还有很多小bug,慢慢努力解决吧。程序整体不长,结构也较为清晰,我觉得正适合我这种菜鸡入门学习。

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值