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

相关推荐
绍兴贝贝2 分钟前
代码随想录算法训练营第四十六天|LC647.回文子串|LC516.最长回文子序列|动态规划总结
数据结构·人工智能·python·算法·动态规划·力扣
逐鹿人生1 小时前
【人工智能工程师系列】一【全面Python3.8入门+进阶】ch.3
人工智能
杨浦老苏1 小时前
本地优先的AI个人助手Moltis
人工智能·docker·ai·群晖
OBS插件网1 小时前
OBS直播如何给人脸加口罩特效?OBS口罩特效插件下载安装教程
人工智能·数码相机·语音识别·产品经理
LitchiCheng1 小时前
Mujoco 如何添加 Apriltag 并获得相机视野进行识别
人工智能·python·开源
想用offer打牌1 小时前
一站式了解Agent Skills
人工智能·后端·ai编程
一切尽在,你来1 小时前
LangGraph快速入门
人工智能·python·langchain·ai编程
阿杰学AI2 小时前
AI核心知识110—大语言模型之 AI Collaboration Manager(简洁且通俗易懂版)
人工智能·ai·语言模型·自然语言处理·aigc·人机交互·ai协作管理员
SCLchuck2 小时前
人工智能-概率密度估计
人工智能·python·概率论·概率密度估计
王解2 小时前
AI Agent记忆模块进化史:从临时缓存到认知架构的设计范式
人工智能·缓存·架构