【深入思考】卷积网络(CNN)的平移不变性

  在这个Vision Transformer睥睨天下的时代,CNN一时式微,作为计算机视觉领域的前任霸主,少不得被拿来对比。相信大家在看论文的时候,会发现引言里面常常会阐述ViT与CNN各自的优势,对于ViT来说,那自然是全局关系的建模,而对于CNN来说,归纳偏差、平移不变性亦是常见的字眼。看的多了,不禁多想了一分,CNN的平移不变性究竟为何?于是乎在下收集了一些资料结合自己的理解总结,特此记录以便回顾。
【深入思考】卷积网络(CNN)的平移不变性_第1张图片
  图片文字来自论文: https://arxiv.org/abs/2201.10728

一、众说纷纭的平移不变性

1.宏观理解:平移不变与平移等变

(https://zhangting2020.github.io/2018/05/30/Transform-Invariance/)
  如果将CNN看做一个完整的系统,平移不变意味着无论输入图像中的目标如何变化,系统应给出相同的输出响应。对于分类任务来说,这一点是可能满足的。例如,当图像中一只鸟的位置发生平移,网络预测类别还是鸟,那么CNN是具有平移不变的。但是对于分割任务来说,网络的输出是Mask,那么鸟的位置移动时,如果分割准确,那么Mask上的位置也会相应改变,从宏观上来说,这就成了平移等变。
  在下觉得,若CNN能看作系统,ViT也同样可以呀,其输出将会如CNN一样随着输入改变,显然若从宏观上理解,那么只要分类正确、分割准确,那么大家都具有平移不变/平移等变的特性。

2.半宏观理解:平移不变丢失

(https://www.cnblogs.com/PythonLearner/p/13358401.html)
  如果我们从宏观角度退一步看,若对于分类任务不以最终的label为输出结果,而是以输出probability为准,对于一张目标有平移的图像,其预测的probability会和原图一样么,这种近似苛刻的要求看起来又似乎是合理的。有论文(https://arxiv.org/abs/1904.11486)做了这样的实验,结果如下图所示,即使是很小的移动也会带来预测probability的剧烈震荡。这便令人往probability之前联想,莫不是特征提取的时候,目标移动给特征层造成了某些影响么?
【深入思考】卷积网络(CNN)的平移不变性_第2张图片
  从特征提取的角度直观的思考,卷积操作的局部特征提取,会使得原目标在左上角时,特征层的目标特征在左上角,原目标在右下角时,特征层的目标特征在右下角。但众所周知,卷积层越深,特征提取越抽象,其特征的平移不变还可以继续保持下去么?有论文表示(https://arxiv.org/abs/1805.12177),并没有哦。作者测试了VGG16、ResNet50和DenseNet201对于平移的特征提取响应,发现CNN对表示平移不变有一定的限度,即早期特征层的确如所想一般,能够保留平移后目标在特征图上的位置信息,然而当进入更深层的卷积层之后,这样的性质便消失了。即便是如VGG16,随着目标的移动,抽象特征的模式也并不是原始目标的简单平移,但似乎保留了这一特定图像的全局总和。另外两个网络对于不同的平移则产生了极为不同的特征响应,那么,平移不变性如何渐渐的就丢失了呢?
【深入思考】卷积网络(CNN)的平移不变性_第3张图片

3.微观理解:池化操作

  要从本质上理解现象,还得从最基本的操作单元着手。
  池化是CNN中一个非常常见的操作,有最大池化和平均池化。有些理解认为池化可以提供平移不变,例如,最大池化返回感受野中的最大值,若这个最大值发生了移动,但还是存在于这个感受野中,那么最大池化层还是会输出相同的最大值。乍一看这个解释似乎比较合理,但是细细思量,这种情况存在,但是条件非常苛刻,首先移动的距离要小,一两个像素吧,因为滑动窗口就很小,不能给最大值滑出去了,还有就是移动之后不能给该感受野带来新的最大值,不然,输出就不是原来的最大值了。如“00110011”的一维信号,以k=2,s=2的最大池化计算结果为“0101”,若将信号左移一个单位变为“01100110”,则输出结果为“1111”,显然这是非平移不变的。
  这么想的话,应当只有全局池化才会带来平移不变,不管你怎么移动,总归还在这幅图像里面,我都按照整个特征视野计算。
  从另一个角度看,CNN中不乏下采样操作,大部分下采样操作由s=2的池化或者卷积完成。但了解数字信号处理的就会发现,CNN中简单粗暴的下采样是不满足奈奎斯特采样定理的,这将带来锯齿问题并使得CNN丢失平移等变性,因此也有不少研究将抗混叠技术应用于CNN(https://arxiv.org/abs/1904.11486)。

二、CNN不是平移不变的,但可以学?

  于是乎,在下目前大概认为CNN并不是平移不变的了,前些日子看了这篇论文(https://arxiv.org/abs/2110.05861),其中提到了两个误区:

1.不变性与等变性的混淆(invariance and equivariance)

  用公式来描述为:
    Invariance(不变性):F(X) = F[Shift(X)]
    Equivariance(等变性):Shift[F(X)] = F[Shift(X)]
  卷积运算是平移等变的,这意味着对输入的变换会转移到输出,如下图所示,这种变换与平移不变是不一致的,平移不变是不同的输入映射到相同的输出。因此,CNN中的卷积并不能保证不变性。此外,在卷积层中,通过后续的降采样(池化和跨步操作)会丢失完美的等变性,故总的来说,大多数CNN在结构上既不是平移不变的,也不是完美平移等变的。
【深入思考】卷积网络(CNN)的平移不变性_第4张图片

2.训练过的平移不变性与在线的平移不变性混淆(trained and online)

  Trained invariance:在一个已训练过的位置正确分类一个类中没有见过的实例的能力。例如,一个经过训练来识别整个视野中狗的实例的网络能够在多个位置上识别出一只狗的新图像,通俗点就是学了所有的位置金毛狗,就可以识别某个位置上的二哈。这种训练实际上是很常见的,因为有数据增强。
  Online invariance:学习在一个位置识别一个物体,就可以在多个其他位置识别该物体,这与人类的表现一致。

  这篇论文主要证明了即使在大多数情况下,CNN在结构上并不是平移不变的,但他们可以通过提取视觉环境(数据集)的潜在特征来学习平移不变。这里可学习的平移不变是指Online invariance。Online invariance的获得条件是什么呢?是在整个画面训练但不平移画面中的目标?在画面的大部分区域平移目标可以对未经训练过的区域提供不变性么?完全平移数据集中一个类可会得到对所有类的平移不变性?欲窥机密,详见论文。

总结陈词

  记录到这里,不禁感叹一声,世间多纷扰,所谓CNN有没有平移不变性也是各自的视角与理解不一样罢了,在网络结构千变万化的阶段,时而发现还有一些奇奇妙妙的思考点,也算是康庄大道上的繁花点点。或许当积木成为磁铁时,又高又稳会变得更容易。

你可能感兴趣的:(深度学习,cnn,计算机视觉)