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

在深度学习,特别是计算机视觉任务中,感受野(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.rhkb.cn/news/471109.html

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

相关文章

Diffusion Policy——斯坦福机器人UMI所用的扩散策略:从原理到其编码实现(含Diff-Control、ControlNet详解)

前言 本文一开始是属于此文《UMI——斯坦福刷盘机器人:从手持夹持器到动作预测Diffusion Policy(含代码解读)》的第三部分,考虑后Diffusion Policy的重要性很高,加之后续还有一系列基于其的改进工作 故独立成本文,且写的过程中 …

【数据结构与算法】第12课—数据结构之归并排序

文章目录 1. 归并排序2. 计数排序3. 排序算法复杂度及稳定性分析在这里插入图片描述 1. 归并排序 分治法(Divide and Conquer)是一种重要的算法设计策略,其核心思想是将一个复杂的大问题分解为若干个小规模的子问题,递归地解决这些…

2024 年 Apifox 和 Postman 对比介绍详细版

Apifox VS Postman ,当下流行的的两款 API 开发工具,2024 版对比!

vue请求数据报错,设置支持跨域请求,以及2种请求方法axios或者async与await

设置跨域 通过vite创建的项目,一般会在你项目文件中自动生成一个名为vite.config文件,点击添加支持跨域的代码 import { defineConfig } from vite import vue from vitejs/plugin-vue// https://vitejs.dev/config/ export default defineConfig({plu…

【ACM出版】第四届信号处理与通信技术国际学术会议(SPCT 2024)

& 第四届信号处理与通信技术国际学术会议(SPCT 2024) 2024 4th International Conference on Signal Processing and Communication Technology 2024年12月27-29日 中国深圳 www.icspct.com 第四届信号处理与通信技术国际学术会议&#x…

【大数据学习 | HBASE高级】rowkey的设计,hbase的预分区和压缩

1. rowkey的设计 ​ RowKey可以是任意字符串,最大长度64KB,实际应用中一般为10~100bytes,字典顺序排序,rowkey的设计至关重要,会影响region分布,如果rowkey设计不合理还会出现region写热点等一系列问题。 …

基于微信小程序的农场管理系统的设计与实现,LW+源码+讲解

1.2 课题意义 现如今,信息种类变得越来越多,信息的容量也变得越来越大,这就是信息时代的标志。近些年,计算机科学发展得也越来越快,而且软件开发技术也越来越成熟,因此,在生活中的各个领域&…

学习记录:js算法(九十二):克隆图

文章目录 克隆图思路一 克隆图 给你无向 连通 图中一个节点的引用,请你返回该图的 深拷贝(克隆)。 图中的每个节点都包含它的值 val(int) 和其邻居的列表(list[Node])。 class Node {public int…

大数据新视界 -- 大数据大厂之 Impala 性能飞跃:动态分区调整的策略与方法(上)(21 / 30)

💖💖💖亲爱的朋友们,热烈欢迎你们来到 青云交的博客!能与你们在此邂逅,我满心欢喜,深感无比荣幸。在这个瞬息万变的时代,我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

win11 新建一个批处理,双击查看本机的IP地址

1、先上个图: 2、bat的代码: :: 获取本机 IP 地址 : 只显示ip echo off for /f "tokens2 delims:" %%a in (ipconfig ^| findstr /i "IP 地址") do set IP%%a echo %IP%pause 3、新建一个文件比如叫ip.bat,…

Spring高手之路26——全方位掌握事务监听器

文章目录 1. 什么是Spring事务监听器?2. 通过TransactionSynchronization 接口实现事务监听器3. 时序图:通过TransactionSynchronization 接口实现事务监听器4. TransactionalEventListener注解实现事务监听器5. 时序图:TransactionalEventLi…

QQ 小程序已发布,但无法被搜索的解决方案

前言 我的 QQ 小程序在 2024 年 8 月就已经审核通过,上架后却一直无法被搜索到。打开后,再在 QQ 上下拉查看 “最近使用”,发现他出现一下又马上消失。 上线是按正常流程走的,开发、备案、审核,没有任何违规&#xf…

MFC工控项目实例二十九主对话框调用子对话框设定参数值

在主对话框调用子对话框设定参数值,使用theApp变量实现。 子对话框各参数变量 CString m_strTypeName; CString m_strBrand; CString m_strRemark; double m_edit_min; double m_edit_max; double m_edit_time2; double …

C语言 | Leetcode C语言题解之第556题下一个更大元素III

题目&#xff1a; 题解&#xff1a; int nextGreaterElement(int n){int x n, cnt 1;for (; x > 10 && x / 10 % 10 > x % 10; x / 10) {cnt;}x / 10;if (x 0) {return -1;}int targetDigit x % 10;int x2 n, cnt2 0;for (; x2 % 10 < targetDigit; x2…

elementui el-table中给表头 el-table-column 加一个鼠标移入提示说明

前言 在使用el-table 表格中有些表格的表头需要加入一些提示&#xff0c;鼠标移入则出现提示&#xff0c;非常实用&#xff0c;我是通过el-table中的el-tooltip实现的&#xff0c;以下的效果预览 代码实现 <el-table ref"multipleTable" :data"data"…

阿里云通义大模型团队开源Qwen2.5-Coder:AI编程新纪元

&#x1f680; 11月12日&#xff0c;阿里云通义大模型团队宣布开源通义千问代码模型全系列&#xff0c;共6款Qwen2.5-Coder模型。这些模型在同等尺寸下均取得了业界最佳效果&#xff0c;其中32B尺寸的旗舰代码模型在十余项基准评测中均取得开源最佳成绩&#xff0c;成为全球最强…

python 同时控制多部手机

在这个智能时代,我们的手机早已成为生活和工作中不可或缺的工具。无论是管理多个社交媒体账号,还是处理多台设备上的事务,如何更高效地控制多个手机成为了每个人的痛点。 今天带来的这个的软件为你提供了一键控制多部手机的强大功能。无论是办公、娱乐,还是社交,你都能通过…

软件测试:测试用例详解

&#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 一、通用测试用例八要素   1、用例编号&#xff1b;    2、测试项目&#xff1b;   3、测试标题&#xff1b; 4、重要级别&#xff1b;    5、预置…

【操作系统】守护进程

一、守护进程的概念 守护进程是一个在后台运行并且不受任何终端控制的进程 二、自己实现守护进程 1.预备知识 &#xff08;1&#xff09;/dev/null /dev/null是一个特殊的设备文件&#xff0c;往这个文件里写不进去任何数据&#xff0c;也读不出来任何数据 因此&#xff0…

基于微信小程序的乡村研学游平台设计与实现,LW+源码+讲解

摘 要 信息数据从传统到当代&#xff0c;是一直在变革当中&#xff0c;突如其来的互联网让传统的信息管理看到了革命性的曙光&#xff0c;因为传统信息管理从时效性&#xff0c;还是安全性&#xff0c;还是可操作性等各个方面来讲&#xff0c;遇到了互联网时代才发现能补上自…