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

news2024/11/25 23:36:11

在深度学习,特别是计算机视觉任务中,感受野(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 = 1
    for 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.coloradmin.cn/o/2237737.html

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

相关文章

Jekins篇(搭建/安装/配置)

目录 一、环境准备 1. Jenkins安装和持续集成环境配置 2. 服务器列表 3. 安装环境 Jekins 环境 4. JDK 环境 5. Maven环境 6. Git环境 方法一:yum安装 二、JenKins 安装 1. JenKins 访问 2. jenkins 初始化配置 三、Jenkins 配置 1. 镜像配置 四、Mave…

ElasticSearch备考 -- 集群配置常见问题

一、集群开启xpack安全配置后无法启动 在配置文件中增加 xpack.security.enabled: true 后无法启动,日志中提示如下 Transport SSL must be enabled if security is enabled. Please set [xpack.security.transport.ssl.enabled] to [true] or disable security b…

C++ : STL容器(适配器)之stack、queue剖析

STL容器适配器之stack、queue剖析 一、stack、queue的接口(一)stack 接口说明(二)queue 接口说明 二、stack、queue的模拟实现(一)stack、queue是容器适配器stack、queue底层默认容器--deque1、deque概念及…

排序算法.

排序算法是最常用的一种算法.它解决的主要问题是在一定的时间复杂度和空间复杂度的条件下,对n个数按照一定的顺序进行排序.排序算法主要分为四大类,即插入类,交换类,选择类和归并类,不同的排序算法的时间复杂程度和空间复杂程度差别很大. 排序算法主要有以下几种: 1.插入类排…

window下安装rust 及 vscode配置

安装 安装mingw64 (c语言环境 选择posix-ucrt) ucrt:通用c运行时库配置mingw64/bin的路径到环境变量中在cmd窗口中输入命令 "gcc -v" 4. 下载Rust安装程序 安装 Rust - Rust 程序设计语言 5. 配置rustup和cargo目录 (cargo是包管…

contos7.9 部署3节点 hadoop3.4 集群 非高可用

contos7.9 部署3节点 hadoop3.4 集群 非高可用 contos7.9 部署3节点 hadoop3.4 集群 非高可用环境信息服务器角色分配服务器配置服务器配置初始化 init_server.sh配置主机名映射所有节点配置 hosts文件 配置免密登录 hadoop 安装环境配置下载安装包下载 jdk1.8hadoop3.4 分发安…

M1M2 MAC安装windows11 虚拟机的全过程

M1/M2 MAC安装windows11 虚拟机的全过程 这两天折腾了一下windows11 arm架构的虚拟机,将途中遇到的坑总结一下。 1、虚拟机软件:vmware fusion 13.6 或者 parallel 19 ? 结论是:用parellel 19。 这两个软件都安装过&#xff0…

【设计模式系列】享元模式(十五)

目录 一、什么是享元模式 二、享元模式的角色 三、享元模式的典型应用场景 四、享元模式在ThreadPoolExecutor中的应用 1. 享元对象(Flyweight)- 工作线程(Worker) 2. 享元工厂(Flyweight Factory)- …

国产化浪潮下,高科技企业如何选择合适的国产ftp软件方案?

高科技企业在数字化转型和创新发展中,数据资产扮演着越来越重要的角色。在研发过程中产生的实验数据、设计文档、测试结果等,专利、商标、版权之类的创新成果等,随着信息量急剧增加和安全威胁的复杂化,传统的FTP软件已经不能满足这…

大模型人工智能课程全栈完整学习路径

嘿,朋友们,今天我们聊点高级的——大模型人工智能课程的全栈学习路径。不过别慌,虽然听起来高大上,但咱们慢慢来。从零开始,一步步带你走进这个神奇的世界。喝杯咖啡,穿上最舒适的拖鞋,准备好踏…

【CUDA】认识CUDA

目录 一、CUDA编程 二、第一个CUDA程序 三、CUDA关键字 四、device管理 4.1 初始化 4.2 Runtime API查询GPU信息 4.3 决定最佳GPU CUDA C 编程指南CUDA C在线文档:CUDA C 编程指南 CUDA是并行计算的平台和类C编程模型,能很容易的实现并行算法。只…

吾店云介绍 – 中国人的WordPress独立站和商城系统平台

经过多年在WordPress建站领域的摸索和探索,能轻松创建和管理各种类型网站的平台 – 吾店云建站平台诞生了。 应该说这是一个艰苦卓绝的过程,在中国创建一个能轻松创建和使用WordPress网站的平台并不容易,最主要是网络环境和托管软件的限制。…

黔院长 | 慢病快调,中医养生的奇迹之旅!

想象一下,自己踏上了一场奇妙的冒险之旅,而目的地就是健康的彼岸。在这场旅途中,黔院长如同一位智慧的向导,引领我们穿越中医养生的神秘世界,实现慢病快调。 黔院长,这个拥有着古老传承的中医世家&#xff…

JavaWeb合集23-文件上传

二十三 、 文件上传 实现效果&#xff1a;用户点击上传按钮、选择上传的头像&#xff0c;确定自动上传&#xff0c;将上传的文件保存到指定的目录中&#xff0c;并重新命名&#xff0c;生成访问链接&#xff0c;返回给前端进行回显。 1、前端实现 vue3AntDesignVue实现 <tem…

Java项目实战II基于Spring Boot的药店管理系统的设计与实现(开发文档+数据库+源码)

目录 一、前言 二、技术介绍 三、系统实现 四、文档参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发&#xff0c;CSDN平台Java领域新星创作者&#xff0c;专注于大学生项目实战开发、讲解和毕业答疑辅导。 一、前言 随着医疗行业的快速发展和人们对健康需…

「撸一手好代码」设计模式之接口隔离原则

「撸一手好代码」设计模式之接口隔离原则 什么是接口隔离原则 接口隔离原则&#xff08;Interface Segregation Principle, ISP&#xff09;指出&#xff0c;客户端不应该依赖它不使用的接口。换句话说&#xff0c;一个类对另一个类的依赖应该建立在最小的接口上。接口的设计应…

在 WPF 中,绑定机制是如何工作的?WPF数据绑定机制解析

在WPF&#xff08;Windows Presentation Foundation&#xff09;中&#xff0c;数据绑定机制是其核心功能之一&#xff0c;广泛用于连接应用程序的UI&#xff08;用户界面&#xff09;和应用程序的业务逻辑层。数据绑定允许你将UI元素与数据源&#xff08;如对象、集合或其他数…

线性代数:Matrix2x2和Matrix3x3

今天整理自己的框架代码&#xff0c;将Matrix2x2和Matrix3x3给扩展了一下&#xff0c;发现网上unity数学计算相关挺少的&#xff0c;所以记录一下。 首先扩展Matrix2x2&#xff1a; using System.Collections; using System.Collections.Generic; using Unity.Mathemati…

字节青训-小F的永久代币卡回本计划、

目录 一、小F的永久代币卡回本计划 问题描述 测试样例 解题思路&#xff1a; 问题理解&#xff1a; 数学公式&#xff1a; 代码实现&#xff1a; 最终代码&#xff1a; 运行结果&#xff1a; 二、构造特定数组的逆序拼接 问题描述 测试样例 解题思路&#xff1a;…

PGMP-串串0203 项目集管理绩效域战略一致性

1.项目集管理绩效域 2.战略一致性 战略一致性包含内容商业论证BC项目集章程项目集路线图环境评估项目集风险管理策略 前期formulation sub-phaseplanning sub-phase组织的战略计划项目集风险管理策略项目集管理计划商业论证BC项目集章程项目集路线图环境评估