这里主要介绍两篇ECCV2018的论文,都是关于神经网络层中的normalization归一化的。
目录
《Group Normalization》【ECCV2018】
方法
代码
实验
《Two at Once: Enhancing Learning and Generalization Capacities via IBN-Net》【ECCV2018】
摘要
Instance-Batch Normalization Networks
Variants of IBN block
实验
Conclusions
作者:Yuxin Wu and Kaiming He(吴育昕和何恺明)——FAIR(Facebook AI Research)
会议:European Conference on Computer Vision (ECCV), 2018 (Oral). Best Paper Honorable Mention
Kaiming He个人主页:http://kaiminghe.com/
论文链接https://arxiv.org/abs/1803.08494
代码链接https://github.com/facebookresearch/Detectron/blob/master/projects/GN
PPThttp://kaiminghe.com/eccv18gn/group_norm_yuxinwu.pdf
现有的batch normalization(BN)的问题:批大小减小时误差会显著提升,大批量才能保证精度,但是大批量对内存要求太高。
BN 要求有足够大的批量才能工作。小批量会导致批量统计数据的估算不准确,并且减少 BN 的批量大小会显著增加模型误差。如上面这个图所示,批大小从32降到2时,ResNet50在ImageNet上的分类错误率显著增大。在批大小为 2 时,GN 比 BN 对应的误差低 10.6%。对于常规的批量规格,GN 与 BN 表现相当(差距为 0.5%)。
上面的图展示了四种归一化方法,蓝色的块表示用这些像素计算均值和方差,然后对它们进行归一化。
对所有的归一化方法,计算形式都是减均值再除以方差:
Si的集合不一样,就是不同的归一化方法,Figure2里面描述得很清楚,用式子表示如下:
和BN原文里的一样,BN、LN和IN都还要学习scale和shift两个参数,提高网络的学习能力:
而对于群组归一化来说, 归一化的数据需要在同一个批次,而且要在同一个群组(channel方向)
这里的G指的是群组的个数。
上面的图和表显示的是四种归一化方法的比较,用的批大小是32,这个批大小已经可以让BN有很好的性能。随着迭代次数的增加,四种归一化方法的训练误差都逐渐减小,但是GN和BN减小得最快,它们的训练误差是相当的,甚至GN在训练集上的误差更小。而在验证集上,随着迭代次数增加,四种方法的误差也都逐渐减小,GN和BN的验证误差最小,两者也基本相当,最后GN比BN的验证误差大了0.5%。
Figure5的左右两幅图分别是BN和GN在批大小变化时的分类错误率曲线,可以看到BN对批大小的选择十分敏感,批大小减小时,分类错误率显著增加;但是GN对批大小不敏感,无论批大小是多少,它的错误率都差不多。批大小越小,BN和GN之间的性能差异越明显。
Table3左边是固定每个群组的通道数,改变群组个数的实验结果;右边是固定群组个数,改变每个群组的通道数的实验结果。
作者:Xingang Pan, Ping Luo, Jianping Shi, and Xiaoou Tang
论文链接https://arxiv.org/pdf/1807.09441.pdf
代码链接https://github.com/XingangPan/IBN-Net
这篇文章中的方法在伯克利主办的WAD 2018 Challenge中获得了Drivable Area track(可行驶区域跟踪)赛道的冠军,mIoU 达到 86.18%。
由于数据集众多,现有的CNN结构基本上只适用于某一个domain或者task,本文提出了IBN-Net,实现在不finetuning的情况下跨数据集。
本文有三个主要贡献:
Cityscapes和GTA5是两个相似的数据集,它们有非常相似的类别和场景结构,但是一个是真实的,一个是虚拟的,存在外观上的差异。假设在Cityscapes上预训练了一个模型,如果要把它用到GTA5这个数据集上,就需要在GTA5上进行微调,但是微调之后的模型再用于原来的数据集中效果又会不好。虽然现在已经有许多方法来实现神经网络的空间不变性,如max pooling, deformable convolution,它们可以实现角度、尺度等空间不变性,但是仍然不能实现外观不变性。上面图d)中,风格转换网络AdaIN表明,IN可以过滤掉图像中复杂的外观差异。
Batch Normalization(BN)多用在图像识别等高层(high-level)视觉任务中,Instance Normalization (IN)则多用在风格转换等低层(low-level)视觉任务中。在现有的研究中,还没有揭示出它们各自的特点及其相互结合的影响。虽然现在已经有IBN-Net表明,以适当的方式组合它们可以提高学习能力和泛化能力。
IBN-Net继承了网络不同深度下特征散度的统计特点,在浅层保留IN和BN特征,在高层保留BN特征。
横轴是feature map的编号,纵轴是特征散度。在基于BN的网络中,对外观不同(imagenet和莫奈风格)而内容一致的图像,它们的特征差异随着层数的增加而降低;而对类别(内容)不同、外观类似的图像,它们的特征差异随着层数的增加而越来越显著。由外观差异引起的特征散度主要集中在神经网络的浅层,而由内容差异引起的特征散度主要集中在深层,也存在于浅层。
基于Fig.2,作者提出在BN中引入IN的两个原则:
1)为了不减少深层特征的识别能力,不在CNNs的深层添加IN;
2)在浅层保留部分BN来保留内容信息。
一个ResNet有4组残差块,只在前三组残差快中添加IN,最后一组残差块中不添加IN。对于每一个残差块,有下面几种方式在其中添加IN:
其中IBN-a模块的设计,有三点原因:
1)何恺明的论文(IBN-Net论文参考文献[9])证明了,在residual的模块中,一个clean identity path对于网络优化的重要性(一定要是h(x) = x为好),所以IN加到residual path而不是identity path中;
2)IN放在第一个norm层,而不是最后一个,是为了防止residual path和identity path的结果不对齐 ;
3) 来自上面两个原则中的第二条,保留一部分BN来保留内容信息。
除了上面两种IBN block,还有几种变形形式,如下:
IBN-c是64个通道分别做一次IN和一次BN,然后把它们连接起来,排列成128个通道;
IBN-d是 256个通道分成两部分,其中128个通道做IN,另外128个通道保持原样,再把它们连接成256个通道。
Table1,只用 ImageNet训练,但是validation set做了颜色、亮度、对比度、风格转换(风格转换是用CycleGAN实现的)。IBN-Net的top1/top5错误率比原始的ResNet50要低,括号里面是相对于origin那一行高的部分。
Table2,将IBN-Net应用到各种分类网络中的效果。original是原论文中的结果,re-implementation是作者复现的结果,IBN-Net-a是按照IBN-a加入IN的结果,括号里面是错误率相对于re-implementation减小的部分。
下面是计算两个feature map的特征散度的式子: