文章目录

  • 1 什么是不变性
  • 2 为什么有平移不变性
  • 3 为什么没有平移不变性
  • 4 平移不变性的定义
  • 5 如何实现平移不变性

1 什么是不变性

【不变性】就是目标发生了变换,但是你依然可以识别出来。在图像任务中,我们希望图像中的目标即使被平移、被旋转或者被缩放,模型都可以识别出来图像的目标。

所以不变性有下面几种:

平移不变性:Translation Invariance
旋转不变性:Rotation Invariance
尺度不变性:scale Invariance
光照不变性:Illumination Invariance
在图像分类任务中,平移不变性就是图像中的目标不管被移动到哪个位置,模型给出的标签应该都是相同的。

【平移不变性对应的有一个概念是平移同变性(translation equivariance),这个是用在图像的目标检测中的,如果输入图像中的目标进行了平移,那么最终检测出来的候选框应该也相应的移动,这就是同时改变。】

2 为什么有平移不变性

主要是由两个原因,一个是卷积,一个是最大池化。

【为什么卷积可以提供平移不变性】 比方说目标是在图像的左上角,经过卷积之后,目标的特征也会在特征图的左上角;目标在图像的左下角,经过相同的卷积核卷积之后,目标的特征也会在特征图的左下角。然后卷积层后面接上一个全连接层进行分类,就算目标位置改变了,但是经过相同的卷积核卷积,然后展开变成全连接层。所以对于全连接层来说,改变的之后特征的位置。可能之前目标的特征是作为全连接的第一个神经元的输入,平移目标位置之后,该特征就作为全连接的最后一个神经元的输入。

不过这种说法想体现的就是,就算目标位置变了,经过相同卷积核提取的特征该有的都有,只是位置变了。

简单地说,卷积+最大池化约等于平移不变性。

卷积:简单地说,图像经过平移,相应的特征图上的表达也是平移的。下图只是一个为了说明这个问题的例子。输入图像的左下角有一个人脸,经过卷积,人脸的特征(眼睛,鼻子)也位于特征图的左下角。假如人脸特征在图像的左上角,那么卷积后对应的特征也在特征图的左上角。 (如下两幅图所示)

在神经网络中,卷积被定义为不同位置的特征检测器,也就意味着,无论目标出现在图像中的哪个位置,它都会检测到同样的这些特征,输出同样的响应。比如人脸被移动到了图像左下角,卷积核直到移动到左下角的位置才会检测到它的特征。



池化:比如最大池化,它返回感受野中的最大值,如果最大值被移动了,但是仍然在这个感受野中,那么池化层也仍然会输出相同的最大值。这就有点平移不变的意思了。

所以这两种操作共同提供了一些平移不变性,即使图像被平移,卷积保证仍然能检测到它的特征,池化则尽可能地保持一致的表达。

【为什么池化可以提供平移不变性】 我觉得这个相比上面的解释,是有一定的道理的。最大池化层返回感受野中的最大值,如果最大值被移动了,但是仍然在这个感受野中,那么池化层也仍然会输出相同的最大值。这就有点平移不变的意思了。

在参考链接[2]中,给出了几个“池化层具有不变性”的例子:

可以看到,同样的数字1,原图中平移了1个像素,但是经过2*2的最大池化层之后,得到了相同的特征图。此外,最大池化层还可以根据类似的原理,得到尺度不变性和旋转不变性:


【池化层引入了平移不变性我觉得是比较靠谱的,这也是池化层的重要作用之一:为CNN引入不变性。但是怎么说呢?虽然目前听起来很有道理,在面试的时候被问起来池化层作用的时候我觉得回答上不变性也是不错的,但是下文就会讲解,池化层实际上并没有引入不变性。好像是2019年的一个论文强调了池化层并没有不变性】

3 为什么没有平移不变性

现在卷积网路的图像输入,改变一个像素就可能会得出不同的结构,所以很容易遭到对抗攻击。下面有一个形象的例子:

可以看出来,当平移小鸟的位置的时候,预测结果是有很大的波动的。

池化层并没有平移不变性。下面是参考链接[3]给出的一个简单的例子,这是一个一维卷积的例子,二维图像类似:

上图是一个没有平移的原始一位数据做了一个1*2的最大池化;

如果对一位数据做了一个平移,那么得到的池化结果就完全不同!这也就是为什么下采样(平均池化层,最大池化层等)没有平移不变性。

4 平移不变性的定义

说了这么多平移不变性,那么平移不变性的具体的严格的定义到底是什么呢?

定义几个数学符号。原始的输入数据为

                                 X

,经过下采样层变成

                                 D(X)

,然后再经过上采样得到

                                 U(D(X))

.(D是Down下采样,U是Up上采样)

【平移不变性】 如果平移之后的输入图像的下采样的上采样与原始输入图像的下采样的上采样相同,那么就是平移不变性。(中文说的太绕嘴了,数学公式清晰)

                                 U(D(X))=U(D(Xshift))Xshift

就是平移之后的输入;

举个例子:

这个就是

                                 U(D(X))


这个就是

                                 U(D(Xshift))

可以发现两者并不相等,所以并没有平移不变性。

5 如何实现平移不变性

现在使用的全局平均池化层,就是可以实现平移不变性。依然是用上面的例子:

可以发现,其实不管平移多少,反正得到的数值都是一样的,全局平均池化消除了位置的影响,所以实现了平移不变性。

参考链接:
[1]https://zhangting2020.github.io/2018/05/30/Transform-Invariance/

[2]https://www.zhihu.com/question/36686900

[3]https://www.jianshu.com/p/6041f3e8a583

转载于:
[1] https://cloud.tencent.com/developer/article/1661000

[2] https://codeantenna.com/a/dCn757fOJD

卷积网络的平移不变性相关推荐

  1. 卷积网络平移不变性的探讨

    1.卷积网络是否存在平移不变性 答案是不存在 财富值吧 2. timm(pytorch image models)预训练模型库 该库主要是针对图像分类任务的,基本包括了图像分类的所有模型,里面的预训练 ...

  2. CVPR2020:点云分析中三维图形卷积网络中可变形核的学习

    CVPR2020:点云分析中三维图形卷积网络中可变形核的学习 Convolution in the Cloud: Learning Deformable Kernels in 3D Graph Con ...

  3. 深度学习中的卷积网络简介

    卷积网络(convolutional network)也叫做卷积神经网络(convolutional neural network, CNN),是一种专门用来处理具有类似网格结构的数据的神经网络.例如 ...

  4. 万字长文带你看尽深度学习中的各种卷积网络

    来源:AI科技评论 摘要:深度学习中的各种卷积网络大家知多少? 深度学习中的各种卷积网络大家知多少?对于那些听说过却又对它们没有特别清晰的认识的小伙伴们,这篇文章非常值得一读.Kunlun Bai 是 ...

  5. Lesson 16.5 在Pytorch中实现卷积网络(上):卷积核、输入通道与特征图在PyTorch中实现卷积网络(中):步长与填充

    卷积神经网络是使用卷积层的一组神经网络.在一个成熟的CNN中,往往会涉及到卷积层.池化层.线性层(全连接层)以及各类激活函数.因此,在构筑卷积网络时,需从整体全部层的需求来进行考虑. 1 二维卷积层n ...

  6. 卷积网络的学习(卷积核,通道,padding,stride等概念)

    1  卷积网络的核心是:可以约减不必要的权值连接,引入稀疏或局部连接,带来权值共享策略大大地减少参数量相对的提升了数据量,从而可以避免过拟合: 具有平移不变性=鲁棒性较好. 优势:参数共享与稀疏连接, ...

  7. 论文理解 R-FCN:基于区域的全卷积网络来检测物体

    本文转载自: http://blog.csdn.net/shadow_guo/article/details/51767036 原文标题为"R-FCN: Object Detection v ...

  8. 万字长文带你看尽深度学习中的12种卷积网络

    转自 | AI科技评论 作者 | Kunlun Bai 深度学习中的各种卷积网络大家知多少?对于那些听说过却又对它们没有特别清晰的认识的小伙伴们,Kunlun Bai 这篇文章非常值得一读.Kunlu ...

  9. 图卷积网络 GCN Graph Convolutional Network(谱域GCN)的理解和详细推导

    文章目录 1. 为什么会出现图卷积神经网络? 2. 图卷积网络的两种理解方式 2.1 vertex domain(spatial domain):顶点域(空间域) 2.2 spectral domai ...

最新文章

  1. mysql for centos下载_python数据分析之路——centos下载并配置mysql与navicat的使用
  2. AndroidOrientation Sensor(方向传感器),新的替代方法详解(安卓官方提供)
  3. linux 安装 memcached
  4. 关于My Sql update语句不能用子查询的解决办法
  5. T-SQL利用Row_Number函数实现分页
  6. python回归预测例子_案例实战 | 逻辑回归实现客户流失预测(附Python代码与源数据)...
  7. 自定义带标尺的seekbar
  8. html期末主题作业,tm.html
  9. 【Kafka】Kafka Schema Registry 原理
  10. [软件更新]影拓三代 PTZ系列 系列 驱动程序 V6.1.1-3{链接已修复}
  11. 单片机c语言 教案,《单片机C语言》 课程教案.doc
  12. Linux 下Nginx SSL/HTTPS 配置
  13. 为什么家里要有公网IP
  14. 使用video.js遇到的坑。VIDEOJS: WARN: Player “player3“ is already initialised. Options will not be applied.
  15. xmanager无法连接Linux服务器,解决xmanager连接linux出错问题
  16. SQL列转行及行转列
  17. Java读取、写入、处理Excel文件中的数据
  18. colorkey唇釉是否安全_所谓的colorkey真假对比
  19. TensorFlow的几点小知识
  20. 放假安排 自己MARK

热门文章

  1. 网络安全入门day2
  2. 2022年南京大学考研法硕非法学真题及答案
  3. 有小孩上学实用 高中课程同步学 v1.0.5 免登陆高级版
  4. ArcGIS API for JavaScript 4.0尝鲜——WebGIS前端开发大杀器
  5. 全球人工智能(AI)在药物发现中的应用市场--行业趋势和2029年预测
  6. 普适计算技术的特点与发展趋势
  7. 使用scratch制作弹球游戏总结
  8. cesium实现二三维分屏地图同步效果
  9. 发那科机器人零点找回_「发那科」FANUC机器人零点复归详解
  10. 搜集的一些酷炫的金属色 ,RGB值 和大家分享一下