论文阅读-U3M(2)

HOW MUCH POSITION INFORMATION DO CONVOLUTIONAL NEURAL NETWORKS ENCODE?

文章目录

  • HOW MUCH POSITION INFORMATION DO CONVOLUTIONAL NEURAL NETWORKS ENCODE?
    • 前言
    • 一、位置编码网络(PosENet)
    • 二、训练数据
    • 三、实验
      • 3.1 位置信息的存在性
      • 3.2 分析PosENet
      • 3.3 位置信息存储在哪里?
      • 3.4 位置信息来自哪里?
    • 四、结论

在阅读Segformer论文中,设计一个高效、有用、轻量的分割模型,其中对编码器的设计中对位置嵌入做了改进,使用一个卷积来完成位置编码。这个思想就是借鉴了“HOW MUCH POSITION INFORMATION DO CONVOLUTIONAL NEURAL NETWORKS ENCODE?”这篇文章。中文名翻译过来就是多少位置编码信息被卷积神经网络学习?
在这里插入图片描述

前言

在使用基于CNN的模型学习数据特征时,由于CNN是使用卷积在输入图像局部的滑动卷积提取特征,所以想当然的认为基于CNN的方法很难感知到图像的绝对位置信息。但是作者发现了一个有趣的现象,我们通常认为图像的显著性区域集中在图像中心,在对图像进行裁剪后(显著性区域内容不会变化,但是位置会发生变化),模型仍然可以感知到显著性区域。因此作者提出一个假设:卷积神经网络能够隐式地将图像的绝对位置编码进特征图中。作者通过一系列随机化测试来验证该假设。

一、位置编码网络(PosENet)

  • 前馈网络编码器:编码器由5个特征提取器组成 f θ 1 , f θ 2 , f θ 3 , f θ 4 , f θ 5 f_{\theta}^1,f_{\theta}^2,f_{\theta}^3,f_{\theta}^4,f_{\theta}^5 fθ1,fθ2,fθ3,fθ4,fθ5,网络从浅层到深层提取不同层次的特征 f p o s 1 , f p o s 2 , f p o s 3 , f p o s 4 , f p o s 5 f_{pos}^1,f_{pos}^2,f_{pos}^3,f_{pos}^4,f_{pos}^5 fpos1,fpos2,fpos3,fpos4,fpos5。编码器部分的计算过程被表示如下:
    f p o s i = f θ i ( W α ∗ I m ) f_{pos}^i=f_\theta^i(W_\alpha * I_m) fposi=fθi(WαIm)
    其中 W α W_\alpha Wα表示冻结的权重。 ∗ * 表示卷积操作。前馈网络编码器只用于提取特征提取,其权重是由预训练是预训练得到的。
  • 位置编码器:位置编码器的输入是经过前馈网络得到的多尺度特征 f p o s 1 , f p o s 2 , f p o s 3 , f p o s 4 , f p o s 5 f_{pos}^1,f_{pos}^2,f_{pos}^3,f_{pos}^4,f_{pos}^5 fpos1,fpos2,fpos3,fpos4,fpos5。然后应用双线性插值拉起多尺度特征图的空间维度,然后对它们做concat操作,得到特征图 f p o s c f_{pos}^c fposc, 然后对 f p o s c f_{pos}^c fposc做卷积操作和变换方程 T p o s \mathcal{T}_{pos} Tpos将特征图为位置图。具体的操作如下:
    f p o s c = ( f p o s 1 ⊕ . . . ⊕ f p o s 5 ) f ^ p = W p o s c ∗ f p o s c f_{pos}^c=(f_{pos}^1\oplus...\oplus f_{pos}^5) \ \ \ \ \ \ \ \ \ \ \hat{f}_p={W_{pos}^c*f_{pos}^c} fposc=(fpos1...fpos5)          f^p=Wposcfposc
    其中 W p o s c W_{pos}^c Wposc是与变换函数 T p o s \mathcal{T}_{pos} Tpos相连的可训练权重。

编码模块添加主要目的是用于验证前馈网络编码器是否隐式地学习了位置信息。如果没有在特征图中编码位置信息,那么PosENet的输出应该是随机的。

在这里插入图片描述

二、训练数据

为了验证卷积神经网络中是否学习到位置信息,我们分配一个归一化类似梯度的位置图作为Ground Truth来进行随机化测试。在实施过程中,选择了五种类似梯度的掩码:水平方向(H)、垂直方向(V)、高斯方向(G)、水平条纹(HS)以及垂直条纹(VS)。
从图中可以看到Ground Truth 和图像内容无关,所以每一张位置GT可以对应任意的图像。作者采用了多种位置编码去验证卷积神经网络对位置编码的学习情况。如果特征图中没有特征编码信息,那么输出则很难匹配GT,相反,如果特征图中隐式地编码了位置信息,那么,就可以匹配到GT。
在这里插入图片描述

三、实验

在实验结果中,VGG表示PosENet基于VGG16模型中提取特征。ResNet表示PosENet基于ResNet模型提取特征,而PosENet则表示仅应用PosENet模型直接从输入图像中学习位置信息。为了证明卷积神经网络可以隐式的编码绝对位置这个假设,作者做了4组实验:位置信息的存在性(对比有无前馈编码器提取特征)、分析PosENet(分析PosENet中卷积的大小和卷积层的层数对读取绝对位置的能力)、位置信息存储位置(主要是通过分析前馈神经不同层中对位置编码的能力)、位置信息来自哪里(对比有无zero-padding)。

3.1 位置信息的存在性

在这部分,在5种GT图像上训练带有前馈编码VGG和ResNet的PosNet网络以及仅仅应用PosENet网络(用于验证位置信息是不是从对物体的内容感知中获取的,此外在本部分的实验中PosENet仅使用了3x3的单个卷积层,并且未使用zero-padding),对应的定量的结果如Table1所示。从Table1中可以看到在5种GT实验中,使用前馈编码器的PosENent模型,不使用前馈编码器的PosENet的得分普遍较低。这个结果说明,仅仅从输入图像中提取位置信息是非常困难的。PosENet仅仅从输入图像中提取位置信息是非常困难的,只有在与深度编码网络结合时,才能提取与真实位置图一致的定位信息。通过不同模式下的测试,可以较好证明了模型并非盲目的过度拟合噪声,而是正在提取真实的定位信息。
在这里插入图片描述
在这里插入图片描述

3.2 分析PosENet

在这部分,作者设计了两个消融实验来检验编码网络的作用。(1)卷积层的堆叠长度的作用(a图)(2)卷积核大小的作用(b图)。
从(a)图中的结果中可以看到,增加更多的层能够使模型获得更高的得分,其中一个原因时堆叠多个卷积层可以使网络具有更大的感受野,另一个可能是位置信息的转换可能需要高于一阶推理的方式表示。
从(b)图中可以看到,较大的卷积核可能更有利于捕获更多的位置信息,这意味着位置信息可能在层内和特征空间中分布的更加广泛,进而更大感受野可以更好的解析位置信息。
在这里插入图片描述

3.3 位置信息存储在哪里?

前面的实验揭示了位置信息被编码在一个预训练的CNN模型中,那么那一层回编码更多的信息呢?
作者使用基于VGG-16作为前馈编码器的模型为例用于检验在 f p o s 1 , f p o s 2 , f p o s 3 , f p o s 4 , f p o s 5 f_{pos}^1,f_{pos}^2,f_{pos}^3,f_{pos}^4,f_{pos}^5 fpos1,fpos2,fpos3,fpos4,fpos5中哪一层中编码了更多的信息。
从表3中可以看到来自深层的 f p o s 5 f_{pos}^5 fpos5特征相比浅层的 f p o s 1 f_{pos}^1 fpos1特征得到了更好的表现。因此这表明网络越深层处的编码器对位置信息的编码能力更强。同样这也和深层视觉特征看的特征更偏向全局的观点相吻合。
在这里插入图片描述
在这里插入图片描述

3.4 位置信息来自哪里?

作者在实验中证明了CNN能够学习到位置编码主要归因于zero-padding过程。是的,是源自如此基础性的内容。作者是通过对比在编码器中使用Zero-padding和不使用Zero-padding来验证这一点。
实验结果如表4和图6所示,可以看的,在没有zero-padding的实验中。模型的性能表现最差,远低于默认设置(zero-padding)的情况。当设置更多的zero-padding时,位置信息的作用也变得更加明显。
在这里插入图片描述
在这里插入图片描述

四、结论

在本篇文章中,探讨了绝对位置信息是否被隐式地编码在卷积神经网络中的假设。通过对比是否使用前馈编码器输出的特征的实验证明了卷积神经网络确实能够隐式地学习到图像的绝对位置信息。通过分析卷积核的大小和卷积层的层数证明了,更大的感受野和非线性读取位置信息进一步增强了单层3x3PosENet对位置的读取能力。通过分析前馈编码器不同层的位置编码能力得出更深的特征提取层具有更好的位置编码能力。通过对比编码器中是否设置zero-padding操作,验证了卷积神经网络对图像的位置编码能力主要来源于zero-padding。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/450180.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

多机编队—(3)Fast_planner无人机模型替换为Turtlebot3模型实现无地图的轨迹规划

文章目录 前言一、模型替换二、Riz可视化三、坐标变换四、轨迹规划最后 前言 前段时间已经成功将Fast_planner配置到ubuntu机器人中,这段时间将Fast_planner中的无人机模型替换为了Turtlebot3_waffle模型,机器人识别到环境中的三维障碍物信息&#xff0…

X(twitter)推特的广告类型有哪些?怎么选择?

X(twitter)推特是全球最热门的几大社交媒体平台之一,也是很多电商卖家进行宣传推广工作的阵地之一。在营销过程中不可避免地需要借助平台广告,因此了解其广告类型和适配场景也十分重要。 一、广告类型及选择 1.轮播广告 可滑动的…

谷歌浏览器办公必备扩展推荐有哪些

在现代办公环境中,谷歌浏览器凭借其强大的功能和丰富的扩展生态,成为了许多人日常工作中不可或缺的工具。为了进一步提升办公效率,本文将为您推荐几款实用的谷歌浏览器扩展,并解答在使用过程中可能遇到的一些常见问题。&#xff0…

基于SpringBoot+Vue+Uniapp家具购物小程序的设计与实现

详细视频演示 请联系我获取更详细的演示视频 项目运行截图 技术框架 后端采用SpringBoot框架 Spring Boot 是一个用于快速开发基于 Spring 框架的应用程序的开源框架。它采用约定大于配置的理念,提供了一套默认的配置,让开发者可以更专注于业务逻辑而…

【原创】java+springboot+mysql在线课程学习网设计与实现

个人主页:程序猿小小杨 个人简介:从事开发多年,Java、Php、Python、前端开发均有涉猎 博客内容:Java项目实战、项目演示、技术分享 文末有作者名片,希望和大家一起共同进步,你只管努力,剩下的交…

【xilinx-versal】【Petalinux】添加TMP75温度传感器Linux驱动

Xilinx versal添加TMP75温度传感器Linux驱动 I2C总线的内核配置打开Cadence I2C 控制器配置xilinx I2C配置(不使用)添加设备树总结I2C总线的内核配置 TMP75挂载第一个i2c总线上,地址是0x48。 petalinux-config -c kernel打开内核配置界面。 打开Cadence I2C 控制器配置 │…

MySQL中常见函数

1,日期类函数 1,获取年月日 关键字:current_date(); 2,获取时间 关键字:current_time(); 3,获取时间戳 关键字:current_timestamp(); 注意,MySQL的时间戳显示是以时间的方式显示,所以可以看…

调查显示软件供应链攻击增加

OpenText 发布了《2024 年全球勒索软件调查》,强调了网络攻击的重要趋势,特别是在软件供应链中,以及生成式人工智能在网络钓鱼诈骗中的使用日益增多。 尽管各国政府努力加强网络安全措施,但调查显示,仍有相当一部分企…

Servlet[springmvc]的Servlet.init()引发异常

报错: 原因之一: web.xml配置文件中监听器导入依赖项错误

Node.js 中的 WebSocket 底层实现

WebSockets 是一种网络通信协议,可实现双向客户端-服务器通信。 WebSockets 通常用于需要即时更新的应用程序,使用 HTTP 之上的持久双工通道来支持实时交互,而无需持续进行连接协商。服务器推送是 WebSockets 的众多常见用例之一。 本文首先…

接口测试 —— 如何测试加密接口?

接口加密是指在网络传输过程中,将数据进行加密,以保护数据的安全性。接口加密可以采用多种加密算法,如AES、DES、RSA等。测试接口加密的目的是验证接口加密算法的正确性和安全性。以下是一些详细的测试方法和注意事项: 接口加密字…

centos7.9调整磁盘分区大小

在安装centos7.9时我们一般采用默认分区设置,使用LVM来管理磁盘空间,根分区只有50GB,其余的所有可用空间都分配在/home分区下。可是centos7中大多数的应用软件都是安装在根分区的,在使用过程中经常会出现明明系统还有很大的磁盘空…

Leetcode—1114. 按序打印【简单】(多线程)

2024每日刷题&#xff08;179&#xff09; Leetcode—1114. 按序打印 C实现代码 class Foo { public:Foo() {firstMutex.lock();secondMutex.lock();}void first(function<void()> printFirst) {// printFirst() outputs "first". Do not change or remove t…

【后端开发】自动化部署、服务管理、问题排查工具(cicd流水线,k8s集群,ELK日志)

【后端开发】自动化部署、服务管理、问题排查工具&#xff08;cicd流水线&#xff0c;k8s集群&#xff0c;ELK日志&#xff09; 文章目录 1、Devops与CICD流水线(TeamCity, Jenkins&#xff0c;GitHub Actions)2、Kubernetes 集群的管理和操作&#xff08;对比Portainer&#x…

排序算法上——插入,希尔,选择,堆排序

前言&#xff1a; 常见排序方法如下&#xff1a; 本篇将介绍4种排序方法&#xff0c;分别为插入排序&#xff0c;希尔排序&#xff0c;选择排序&#xff0c;堆排序&#xff0c;并分别举例与讲解。 一. 插入排序 1.1 含义与动图分析 插入排序的思想是在有序区间的下一个位置…

设计模式---责任链模式快速demo

Handler&#xff08;处理者&#xff09;&#xff1a; 定义一个处理请求的接口。通常包括一个处理请求的方法。它可以是抽象类或接口&#xff0c;也可以是具体类&#xff0c;具体类中包含了对请求的处理逻辑。处理者通常包含一个指向下一个处理者的引用。ConcreteHandler&#x…

JAVA封装和包

一.包的概念&#xff1a; 下面是包的目录位置&#xff1a; 在src底下的demo&#xff0c;com&#xff0c;baidu相当于一个文件夹&#xff0c;可以存放类&#xff0c;同一个包类名不能相同&#xff0c;不同的包的类名可以相同。&#xff08;通俗点来说&#xff1a;一个包相当于一…

手撕数据结构 —— 堆(C语言讲解)

目录 1.堆的认识 什么是堆 堆的性质 2.堆的存储 3.堆的实现 Heap.h中接口总览 具体实现 堆结构的定义 初始化堆 销毁堆 堆的插入 堆的向上调整算法 堆的插入的实现 堆的删除 堆的向下调整算法 堆的删除的实现 使用数组初始化堆 获取堆顶元素 获取堆中的数据…

南科大分享|大数据技术如何赋能大模型训练及开发

嘉宾介绍 张松昕&#xff0c;南方科技大学统计与数据科学系研究学者&#xff0c;UCloud 顾问资深算法专家&#xff0c;曾任粤港澳大湾区数字经济研究院访问学者&#xff0c;主导大模型高效分布式训练框架的开发&#xff0c;设计了 SUS-Chat-34B 的微调流程&#xff0c;登顶 Ope…

2010年国赛高教杯数学建模A题储油罐的变位识别与罐容表标定解题全过程文档及程序

2010年国赛高教杯数学建模 A题 储油罐的变位识别与罐容表标定 通常加油站都有若干个储存燃油的地下储油罐&#xff0c;并且一般都有与之配套的“油位计量管理系统”&#xff0c;采用流量计和油位计来测量进/出油量与罐内油位高度等数据&#xff0c;通过预先标定的罐容表&#…