深度学习中的感受野:从基础概念到多层次特征提取

在深度学习,特别是计算机视觉任务中,感受野(Receptive Field)是一个至关重要的概念。它指的是在神经网络中某一层的神经元在输入图像上“看到”的区域大小。感受野的大小影响了网络能捕捉的特征层级,从而决定了它的特征提取能力。因此,理解感受野如何逐层扩展、如何对不同特征进行分级,是深入理解深度学习图像处理的关键。本文将通过一个分层特征提取示例,解释感受野在多层卷积操作中的变化过程,并展示如何利用感受野进行多尺度特征提取。

感受野的基本概念

感受野可以简单理解为神经元”看到“的图像区域。当网络层数逐渐加深,感受野会逐渐增大,使得每一层的神经元能够”看到“更大的图像区域,从而提取到更高级的特征。一般来说,感受野较小的神经元只能提取到局部细节信息,而较大的感受野可以捕捉到全局信息,使得模型能够识别更复杂的图像模式。

示例代码:

# 简单展示卷积层如何影响感受野大小
import torch
import torch.nn as nn# 定义一个简单的卷积网络
class ConvNet(nn.Module):def __init__(self):super(ConvNet, self).__init__()self.conv1 = nn.Conv2d(1, 16, kernel_size=3, stride=1, padding=1)  # 第一层卷积self.conv2 = nn.Conv2d(16, 32, kernel_size=3, stride=1, padding=1)  # 第二层卷积def forward(self, x):x = self.conv1(x)x = self.conv2(x)return x# 假设输入是 32x32 的图像
input_image = torch.randn(1, 1, 32, 32)
model = ConvNet()
output = model(input_image)print("Output size:", output.size())#输出为
#Output size: torch.Size([1, 32, 32, 32])

这段代码定义了一个简单的两层卷积网络,每层卷积操作后感受野会逐渐扩大,最终在图像上“看到”更大的区域。

代码基本结构说明

代码定义了一个简单的卷积神经网络ConvNet,包含两个卷积层conv1conv2

  • conv1接收单通道的输入图像,并输出16个通道(即生成16个特征图)conv2接收16个通道的输入,输出32个通道(生成32个特征图)。
  • 每个卷积层的卷积核(kernel_size)大小都是3×3。这意味着每个卷积核在输入特征图上查看一个3×3的区域。
  • 步幅(stride)设置为1,即卷积核每次移动一个像素,这会导致卷积层生成与输入大小相似的特征图。
  • 填充(padding)设置为1,即在输入的边缘填充一个像素宽的0,以确保卷积后的输出大小与输入一致。

感受野的概念

在卷积网络中,感受野可以理解为网络中某个层或某个神经元在输入图像上“看到”的区域。随着卷积层的叠加,感受野逐渐增大,使得网络能够提取到更大的区域信息。

在以上代码中,通过叠加两个卷积层,网络的感受野会比单层卷积更大,下面详细解释感受野在每一层的扩展过程。

逐层计算感受野

感受野计算公式

R o u t = R i n + ( K − 1 ) × S R_{out}=R_{in}+(K-1)×S Rout=Rin+K1×S

其中:

  • R o u t R_{out} Rout是输出的感受野大小,
  • R i n R_{in} Rin是输入的感受野大小,
  • K K K是卷积核的大小,
  • S S S是卷积层的步幅。

第一层卷积conv1的感受野

  1. 初始时,输入图像的每个像素的感受野为1(即输入自身)。

  2. conv1的卷积核为3×3,步幅为1,意味着每个卷积输出对应的感受野扩大为3,因为卷积核在3×3的区域滑动。计算如下:

    R c o n v 1 = 1 + ( 3 − 1 ) × 1 = 3 R_{conv1}=1+(3-1)×1=3 Rconv1=1+31×1=3

    因此,在conv1之后,每个输出特征图的像素点“看到”输入图像上3×3的区域。

第二层卷积conv2的感受野

  1. 现在,进入第二层conv2时,输入的感受野为3

  2. conv2的卷积核也是3×3,步幅为1。该层的感受野计算如下:

    R c o n v 2 = 3 + ( 3 − 1 ) × 1 = 5 R_{conv2}=3+(3-1)×1=5 Rconv2=3+31×1=5

    这意味着在conv2之后,每个输出特征图的像素点的感受野扩大到了5×5,即它们能够“看到”输入图像的5×5区域。

输出

代码中的输入input_image是一个32×32大小的图像,经过两层卷积后,输出的大小仍然是32×32,因为填充和步幅的设置保持了输出尺寸不变。

print("Output size:", output.size())
#输出为
#Output size: torch.Size([1, 32, 32, 32])

感受野的作用

通过以上分析可以看出,随着卷积层的堆叠,感受野逐渐增大。这种逐层扩展的感受野使得模型能够捕捉到更大的区域信息,识别更复杂的特征。换句话说,堆叠卷积层的过程是感受野逐步扩大的过程,越深层的神经元就能“看到”更大的图像区域。

图像金字塔与分层特征提取

在多层卷积网络中,分层特征提取是一种常见的技术,我们可以通过逐层分解来提取不同尺度的特征。图像金字塔(Image Pyramid)是这种方法的直观表现,通过对图像进行多次降采样,逐渐提取更高级的特征。如下图所示,在图中,我们展示了一个图像金字塔的简单示例,图像在每一层被逐步分解为低频和高频成分。每一层的低频成分代表了较大的感受野,而高频成分则保留了更多的局部细节部分。

image-20241110205615875

图中展示了如何通过小波变换(WT)操作逐层分解图像,扩大感受野,提取不同的特征:对输入的图像 X X X首先进行通过一次小波分解得到第一层低频 X L L ( 1 ) X_{LL}^{(1)} XLL(1)和高频 X L H ( 1 ) 、 X H L ( 1 ) X_{LH}^{(1)}、X_{HL}^{(1)} XLH(1)XHL(1) X H H ( 1 ) X_{HH}^{(1)} XHH(1)成分,低频成分包含了全局信息,高频成分包含细节,然后对第一层分解后的低频部分再应用小波分解,获得更高层的分解,通过多层分解扩大感受野,逐步将模型分为低频和高频成分,使得模型可以同时关注全局信息和细节信息。

详细解释:假设输入的图像初始分辨率是256×256

第一次小波分解:

  • 图像被分解为低频和高频,其中低频的部分分辨率降低一半为128×128
  • 在128×128的低频图像上应用3×3的卷积核,每个像素在128×128的图像对应于原图的2×2像素(分辨率减半)
  • 一个3×3卷积核在128×128的低频图像上相当于在原图上看到6×6像素区域(3×2),所以感受野扩大两倍为6×6

第二次小波分解:

  • 在第一次的基础上再小波分解,低频成分的分辨率进一步减半为64×64
  • 在64×64的低频图像上,每个像素对应于原图的4×4像素(两次分辨力减半2×2)
  • 3×3的卷积和在64×64的图像上相当于覆盖了原图的12×12像素区域(3×4)

以上就是关于上图中感受野扩大的过程详解。

感受野扩展与特征提取能力

感受野的逐层扩展可以增强模型的特征提取能力,使其在同时关注全局信息和局部细节的基础上,对图像特征进行更准确的表征。在深度卷积神经网络中,通过逐层的卷积和池化操作,感受野可以被大大扩展,最终使得深层的神经元能够“看到”整个图像区域。

我们可以通过一下代码示例,计算卷积层和池化层对感受野的影响:

import torch
import torch.nn as nn
def calculate_receptive_field(layers):receptive_field = 1for layer in layers:if isinstance(layer, nn.Conv2d) or isinstance(layer, nn.MaxPool2d):receptive_field = receptive_field + (layer.kernel_size[0] - 1) * layer.stride[0]return receptive_field# 创建卷积层和池化层
layers = [nn.Conv2d(1, 16, kernel_size=3, stride=1, padding=1),nn.MaxPool2d(kernel_size=2, stride=2),nn.Conv2d(16, 32, kernel_size=3, stride=1, padding=1)
]print("Receptive field size:", calculate_receptive_field(layers))
# 输出为:
#Receptive field size: 5

通过以上代码,我们可以估算出在不同网络层组合下的感受野大小。

感受野在深度学习任务中的应用案例

  1. 图像分类:在图像分类任务中,较大的感受野帮助模型捕捉全局的物体信息,从而提高分类精度。例如,深度卷积网络能够在最后的全连接层“看到”整个图像,进而根据全局特征做出准确判断。
  2. 目标检测和分割:在目标检测和图像分割中,感受野的大小影响了模型的定位能力和分割精度。较大感受野使得网络可以捕捉到物体的整体轮廓,而小感受野可以关注物体的细节,使分割边界更准确。

参考文献

  1. Zeiler, M. D., & Fergus, R. (2014). Visualizing and understanding convolutional networks. In European Conference on Computer Vision (pp. 818-833). Springer, Cham.

  2. Luo, W., Li, Y., Urtasun, R., & Zemel, R. (2016). Understanding the effective receptive field in deep convolutional neural networks. arXiv preprint arXiv:1701.04128.

  3. O’Shea, K., & Nash, R. (2015). An introduction to convolutional neural networks. arXiv preprint arXiv:1511.08458.

  4. Goodfellow, I., Bengio, Y., & Courville, A. (2016). Deep learning. MIT press.

introduction to convolutional neural networks. arXiv preprint arXiv:1511.08458.

  1. Goodfellow, I., Bengio, Y., & Courville, A. (2016). Deep learning. MIT press.

  2. Mallat, S. (1999). A wavelet tour of signal processing. Academic Press.

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

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

相关文章

VirtIO实现原理(1)

本文内容参考: VirtIO实现原理——PCI基础_virtio-pci-CSDN博客 QEMU源码全解析 —— virtio(3)_qemu virtio block bus-CSDN博客 特此致谢! 序言 本系列文章是笔者在看了网名为“享乐主”的VirtIO系列文章后决心要写的。这位博主的“VirtIO专栏”中博文的内容从技术层…

2024年双11激光投影仪哪个品牌最好?当贝新品震撼视觉的秘密武器

激光投影仪逐渐占据家庭娱乐生活的中心位置,以其超大屏优势与卓越的性能获得了众多消费者的青睐。双11购物狂欢节期间,正是入手一台高品质激光投影仪的好时机,各大厂商也纷纷推出了品牌新品,2024年双11激光投影仪怎么选&#xff1…

React的概念以及发展前景如何?

React是一个由Facebook开发的用于构建用户界面的的开源JavaScript库,它主要用于构建大型、动态的Web应用程序。React的主要特点是使用VirtualDOM(虚拟DOM)来优化性能,并使用声明式的编程方式来编写UI。 React的主要概念包括&#…

定位,堆叠,CSS精灵,过渡,光标(前端)

一.定位 1.作用 灵活改变盒子在网页中的位置 2.标签 position 3.属性值 (1)相对定位relative relative(相对定位)-----改变位置的参照物是原来的位置,挪动后原来的位置不托标,不被占用。 要配合top…

2024-11-01 - 统一身份认证 - OpenLdap - 中间件 - 流雨声

摘要 2024-11-01 周五 杭州 暴雨 调查问卷: https://www.wjx.cn/vm/exIBFDM.aspx# 2024年转瞬即逝,可是生活还在继续,这里有一项关于人工智能和项目管理对于效能关系的调研问卷,AI 对工作的作用和影响。问卷不采集个人信息,在此…

【363】基于springboot的高校竞赛管理系统

摘 要 如今社会上各行各业,都喜欢用自己行业的专属软件工作,互联网发展到这个时候,人们已经发现离不开了互联网。新技术的产生,往往能解决一些老技术的弊端问题。因为传统高校竞赛管理系统信息管理难度大,容错率低&am…

qt QTextFrame详解

1. 概述 QTextFrame是Qt框架中用于表示文本框架的类。它允许在QTextDocument中创建和管理具有特定边界和格式的文本区域。QTextFrame可以包含文本、图像、表格或其他QTextFrame,从而提供丰富的文本布局和排版功能。QTextFrame通常与QTextCursor结合使用&#xff0c…

【JWT】Asp.Net Core中JWT刷新Token解决方案

Asp.Net Core中JWT刷新Token解决方案 前言方案一:当我们操作某个需要token作为请求头的接口时,返回的数据错误error.response.status === 401,说明我们的token已经过期了。方案二:实现用户无感知的刷新token值,我们希望当响应返回的数据是401身份过期时,响应阻拦器自动帮我…

如何在Microsoft Edge中删除已保存的网站密码

目录 前言1. 如何进入Edge的密码管理界面1.1 打开Microsoft Edge的设置菜单1.2 进入个人资料设置1.3 进入密码管理 2. 在Edge中查看和删除已保存的密码2.1 查找需要删除的密码2.2 检查密码安全性2.3 删除特定网站的密码 3. 提升Edge密码管理的安全性3.1 启用Edge的多重身份验证…

[ Linux 命令基础 4 ] Linux 命令详解-文本处理命令

🍬 博主介绍 👨‍🎓 博主介绍:大家好,我是 _PowerShell ,很高兴认识大家~ ✨主攻领域:【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 🎉点赞➕评论➕收藏 养成习…

Linux 实验:日志的备份与恢复 xfs文件系统

添加一个新的硬盘,创建硬盘分区sdc1 设置文件系统格式xfs,提示安装xfsprogs,如果安装失败,在后缀加上--fix-missing直到安装完成为止 mkdir创建空目录data,将sdc1挂载到data,data是根目录下新建的目录&…

【C#】使用.net9在C#中向现有对象动态添加属性

在 C# 中向现有对象动态添加属性并不像在 Python 或 JavaScript 中那样容易,因为 C# 是一种强类型语言。 但是,我们可以通过使用一些技术和库来实现这一点,例如扩展方法、字典等。本文将详细介绍如何在 C# 中实现这一点。ExpandoObject 方法 …

Python学习从0到1 day26 第三阶段 Spark ⑤ 搜索引擎日志分析

目录 一、搜索引擎日志分析 二、需求1:热门搜索时间段(小时精度)Top3 实现步骤 三、需求2:打印输出:热门搜索词Top3 实现步骤 四、需求3:打印输出:统计hadoop关键字在哪个时段被搜索最多 实现步骤 五、需求4:将数据转换为JSON格式…

#渗透测试#SRC漏洞挖掘#深入挖掘CSRF漏洞01

免责声明 本教程仅为合法的教学目的而准备,严禁用于任何形式的违法犯罪活动及其他商业行为,在使用本教程前,您应确保该行为符合当地的法律法规,继续阅读即表示您需自行承担所有操作的后果,如有异议,请立即停…

揭秘云计算 | 2、业务需求推动IT发展

揭秘云计算 | 1、云从哪里来?-CSDN博客https://blog.csdn.net/Ultipa/article/details/143430941?spm1001.2014.3001.5502 书接上文: 过去几十年间IT行业从大型主机过渡到客户端/服务器,再过渡到现如今的万物互联,IT可把控的资…

Grover算法——量子搜索算法

假设N个数据中符合条件的数据有M个,则量子搜索算法的复杂度为,远小于经典算法的复杂度。 黑箱 下面以N2为例,介绍黑箱如何标记符合条件的数据。N2意味着只有两个数据,可以用0和1来表示这两个数据,也就只需要一个量子比…

Ubuntu24.04网络异常与应对方案记录

PS: 参加过408改卷的ZJU ghsongzju.edu.cn 开启嘲讽: 你们知道408有多简单吗,操作系统真实水平自己知道就行~~ Requested credits of master in UWSC30,in ZJU24,domestic master is too simple ubuntu安全软件 在 U…

智能的编织:C++中auto的编织艺术

在C的世界里,auto这个关键字就像是一个聪明的助手,它能够自动帮你识别变量的类型,让你的代码更加简洁和清晰。下面,我们就来聊聊auto这个关键字的前世今生,以及它在C11标准中的新用法。 auto的前世 在C11之前&#x…

Spark的Standalone集群环境安装

一.简介 与MR对比: 概念MRYARNSpark Standalone主节点ResourceManagerMaster从节点NodeManagerWorker计算进程MapTask,ReduceTaskExecutor 架构:普通分布式主从架构 主:Master:管理节点:管理从节点、接…

cache(一)基本概念

在知乎发现一份不错得学习资料 请教CPU的cache中关于line,block,index等的理解? PPT 地址 https%3A//cs.slu.edu/%7Efritts/CSCI224_S15/schedule/chap6-cache-memory.pptx 课程主页 https://cs.slu.edu/~fritts/CSCI224_S15/schedule/ 文章目录 1. cache概念2. cac…