当前位置: 首页 > article >正文

CNN中的平移不变性和平移等变性

1. 平移等变性

数学上函数的等变性定义如下:

也就是给定一张图像,平移后卷积的结果卷积后再平移的结果是相同的

 2. 平移不变性

如果某个属性在任何平移下都不会改变,那么它就是平移不变的。考虑上面的图像。 即使像素值发生了位移,我们也可以在两幅图像中识别出一位女性。 一个图像分类器应该预测两个图像的标签“女人”。 分类器的输出不应该受到目标位置的影响。 因此,分类器函数的输出是平移不变的。

具体来说:

 在上图中,虽然input发生了小小的改变(shift),但由于maxpool的存在,转换与未转换的输出都是相同的。

3 CNN的平移等变与平移不变的实现方式

卷积神经网络的平移等变是通过卷积层获得的。 如果将CNNs的输入图像向右平移一定像素值,则卷积层生成的特征图也会按相同的位移和方向移动。

而考虑分类任务重的 CNNs ,无论平移位移只要仍使得物体在图像边界内,分类结果都是一样的。这就是CNNs的平移不变性。 平移不变性是通过池化层在 CNNs 中获得的。 池化操作通常应用于由前面的卷积层和非线性激活函数生成的特征图。 池化是用具有代表性的统计数据(通常是最大值或平均值)替换邻域中的特征。 因此,忽略了原始特征的位置。

而CNNs 对于旋转、缩放和仿射变换不具有等变和不变性。 因此,使用数据增强技术能够很大程度上使 CNNs 对包含这类几何变换数据的表现更加稳定。

4. 平移不变真的一直存在吗? 

如果我们从宏观角度退一步看,若对于分类任务不以最终的label为输出结果,而是以输出probability为准,对于一张目标有平移的图像,其预测的probability会和原图一样么,这种近似苛刻的要求看起来又似乎是合理的。有论文(https://arxiv.org/abs/1904.11486)做了这样的实验,结果如下图所示,即使是很小的移动也会带来预测probability的剧烈震荡。这便令人往probability之前联想,莫不是特征提取的时候,目标移动给特征层造成了某些影响么?

   从特征提取的角度直观的思考,卷积操作的局部特征提取,会使得原目标在左上角时,特征层的目标特征在左上角,原目标在右下角时,特征层的目标特征在右下角。但众所周知,卷积层越深,特征提取越抽象,其特征的平移不变还可以继续保持下去么?有论文表示(https://arxiv.org/abs/1805.12177),并没有。作者测试了VGG16、ResNet50和DenseNet201对于平移的特征提取响应,发现CNN对表示平移不变有一定的限度,即早期特征层的确如所想一般,能够保留平移后目标在特征图上的位置信息,然而当进入更深层的卷积层之后,这样的性质便消失了。即便是如VGG16,随着目标的移动,抽象特征的模式也并不是原始目标的简单平移,但似乎保留了这一特定图像的全局总和。另外两个网络对于不同的平移则产生了极为不同的特征响应

平移不变性如何渐渐的就丢失了呢?

要从本质上理解现象,还得从最基本的操作单元着手。
  池化是CNN中一个非常常见的操作,有最大池化和平均池化。有些理解认为池化可以提供平移不变,例如,最大池化返回感受野中的最大值,若这个最大值发生了移动,但还是存在于这个感受野中,那么最大池化层还是会输出相同的最大值。乍一看这个解释似乎比较合理,但是细细思量,这种情况存在,但是条件非常苛刻,首先移动的距离要小,一两个像素吧,因为滑动窗口就很小,不能给最大值滑出去了,还有就是移动之后不能给该感受野带来新的最大值,不然,输出就不是原来的最大值了。
        如“00110011”的一维信号,以k=2,s=2的最大池化计算结果为“0101”,若将信号左移一个单位变为“01100110”,则输出结果为“1111”,显然这是非平移不变的。

  这么想的话,应当只有全局池化才会带来平移不变,不管你怎么移动,总归还在这幅图像里面,我都按照整个特征视野计算。
  从另一个角度看,CNN中不乏下采样操作,大部分下采样操作由s=2的池化或者卷积完成。但了解数字信号处理的就会发现,CNN中简单粗暴的下采样是不满足奈奎斯特采样定理的,这将带来锯齿问题并使得CNN丢失平移等变性,因此也有不少研究将抗混叠技术应用于CNN


http://www.kler.cn/news/334689.html

相关文章:

  • 影刀RPA:Excel内容填充指令
  • SpringBoot技术栈在校园资料分享平台中的应用
  • ARM assembly: Lesson 10
  • GitHub flow工作流
  • 【S32K3 RTD MCAL 篇1】 K344 KEY 控制 EMIOS PWM
  • ElasticSearch 备考 -- Snapshot Restore
  • 如何通过资产配置优化投资组合——金融市场中的长期策略
  • jenkins配置eureka、nacos发布优雅上下线服务
  • harbor https配置
  • 指针(6)
  • Golang | Leetcode Golang题解之第457题环形数组是否存在循环
  • GPG error golang 1.19
  • 【中间件学习】Git的命令和企业级开发
  • YOLO11改进|注意力机制篇|引入并行分块注意力机制PPA
  • 掌握RocketMQ4.X消息中间件(一)-RocketMQ基本概念与系统架构
  • 深度探索Kali Linux的精髓与实践应用
  • 关键字:sizeof
  • 知识图谱入门——3:工具分类与对比(知识建模工具:Protégé、 知识抽取工具:DeepDive、知识存储工具:Neo4j)
  • 安卓WPS Office v18.13.0高级版
  • 28 基于51单片机的两路电压检测(ADC0808)