9

CNN 的平移不变性详解

 3 years ago
source link: https://bbs.cvmart.net/articles/240
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

作者:Hengkai Guo
来源:https://www.zhihu.com/question/301522740/answer/531606623

知乎问题:既然cnn对图像具有平移不变性,那么利用 图像平移(shift)进行数据增强来训练cnn会有效果吗?

该如何解释这个理论?

Hengkai Guo的回答:

这其实是个好问题,网上有很多误导人的观点,让我们来好好分析一下。
首先,解释一下什么是CNN的平移不变性。简单来说,平移不变性(translation invariant)指的是CNN对于同一张图及其平移后的版本,都能输出同样的结果。这对于图像分类(image classification)问题来说肯定是最理想的,因为对于一个物体的平移并不应该改变它的类别。而对于其它问题,比如物体检测(detection)、物体分割(segmentation)来说,这个性质则不应该有,原因是当输入发生平移时,输出也应该相应地进行平移。这种性质又称为平移等价性(translation equivalence)。这两个概念是比较混淆的,但确实是两个不同的东西(敲黑板)。

那么,平移不变性是从哪里来的呢?一般来说,一个CNN的性质,要么是从它本身使用的结构得到的,要么是从它在数据集中学到的参数得到的。前者的简单例子是加了sigmoid层的网络的输出范围自然变成了0到1之间,后者的例子则是CNN在ImageNet上训练之后就有了能分类图像的能力且特征也具有一定的泛化性。

CNN比较常见的层有卷积层、池化层(max或者mean)、全连接层,其中池化层又包括普通池化层和用在全连接层之前的全局池化层(global pooling)。按照市面上最常见的观点,CNN本身结构中卷积+池化就具有平移不变性。本人并不同意这个观点,下面具体分析一下。

先来分析单层的情况。
(1) 卷积层:在信号处理中,卷积(以及相关)的性质包含了平移等价性。对于共享权值的卷积层来说,只在平移量为stride的整数倍时平移等价性才严格成立。而仅仅在卷积核比较均匀而且输入也有很多均匀区域的时候才有比较弱的平移不变性,因为此时微小的移动对于输出改变比较少。

(2) 池化层:普通池化层中,均值池化等价于固定卷积核的卷积层,因此性质也相同;最大值池化也类似,但取最大值的操作使其相对于均值带有更强的平移不变性。全局池化层将整个输入变成1x1大小的输出,忽略了特征的位置信息,当前面的输入具有平移等价性的时候具有比较强的平移不变性。
(3) 全连接层:全连接层这两个性质都没有,因为没有在不同位置共享权值,特征在不同位置对于输出的贡献变化很大。因此,从单层来看,只有全局池化有一定的平移不变性,其它都比较弱甚至没有。

如果把这些层串起来,那么在使用全连接层的时候整个CNN的结构一般不具有平移不变性。就算用了全局池化层,由于前面叠加的多层卷积层的累计效应,最后的平移不变性也很弱,只有当位移是整个网络的降采样倍数的整数倍才存在,概率很低。因此,能用于分类的平移不变性主要来源于参数。因为卷积层的平移等价性,这种平移不变性主要是由最后的全连接层来学习,而对于没有全连接层的网络更难有这种性质。

参数的学习需要数据,由于数据中平移的分布一般都比较不均匀,引入平移的数据增强(augmentation)肯定是必要的。那有人会问,为什么好像没看到有这个增强方式?其实裁切(crop)就是一种平移的数据增强方式,因为不同裁切方式对应的patch之间的变换就是平移。而且这种方式相比于平移更加自然,没有周围的黑边padding,因此更加常用。

总结起来,就是CNN的平移不变性主要是通过数据学习来的,结构只能带来非常弱的平移不变性,而学习又依赖于数据增强中的裁切,裁切相当于一种更好的图像平移。

最后再说点题外话。正是因为池化本身带有弱的平移不变性,且会损失一些信息,在对平移需要等价性的一些任务里(比如检测、分割)会经常用stride为2的卷积层来替代池化层。而在很多分类任务中,为了学习到一些全局特征,常常会在网络的最后使用全局池化或者金字塔池化的方式来消除平移的影响。


---------------------------------分割线---------------------------------------
11.16日更新:

下面的文章实验了三种不同的网络VGG16、ResNet50和InceptionResNetV2在不同变换下的不变性 (主要是平移),并进行了一些简单的分析。下面的图都来自于文章:
file

这幅图是InceptionResNet在不同水平位移下预测的概率变化,可以看出就算只移动一个pixel,最终的输出变化也很剧烈,完全没有所谓的平移不变性。

为了更好的定量研究,作者在随机选取的200张图上衡量平移不变性:
file

左图表示不同图在不同平移下的概率预测,可以看出在很多图像上变化都很大。右图表示不同网络的Jaggedness,值越大表示对变换的不变性越低。从图中可以看出,这三个网络的不变性越来越差,尽管精度越来越高。作者的分析是因为VGG有更多pooling而另外两个网络比较少,同时后面两个网络更深。pooling能增加平移不变性的解释比较有意思,是通过pooling相当于之前feature的线性差值来说明的,类似于传统CV做降采样的时候要先做blur。从这个结果,其实还有一点作者没有分析到,就是只有VGG有全连接层,而另外两个网络没有,这也印证了之前的观点,即全连接层更能学到平移不变性。
file

这个是特征图的可视化,由于越深的层降采样倍数越大,因此平移等价性也越来越差,这和我上面的观点是一致的。下面的定量指标也证明了这一点:
file

同时,作者也分析了ImageNet中特定类别的平移分布,发现平移确实分布比较不均匀:
file

作者也对augmentation进行分析,认为augmentation也很难让一个网络完全具有平移不变性,因为就算单看平移的话,如果降采样倍数是n,就必须对于每个样本有n^2的数量才可以。再加上旋转和尺度变化就更不可能了。

最后作者分析了为什么在没有不变性的情况下精度仍然很高。他们认为是因为测试集的平移分布也和训练集类似,因为拍照的人也有一定的位置bias。作者也测试了在大图上随机放一个小块的原图的分类效果:
file
作者发现原图在大图中占得比例越小,效果越差。但个人观点是这块由于耦合了平移和尺度变化,其实证明不了是平移影响大还是尺度变化影响大,猜测可能尺度更是决定性因素。

---------------------------------参考文献---------------------------------------
[1] Azulay A, Weiss Y. Why do deep convolutional networks generalize so poorly to small image transformations?[J]. arXiv preprint arXiv:1805.12177, 2018.


推荐阅读

NIPS 2018 |谷歌大脑提出 DropBlock 卷积正则化方法,显著改进 CNN 精度
ECCV2018|ShuffleNetV2:轻量级 CNN 网络中的桂冠
极市直播|第 38 期 张钊宁:算力限制下的目标检测实战及思考

微信公众号: 极市平台(ID: extrememart )
每天推送最新CV干货


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK