当前位置: 首页 > article >正文

卷积神经网络 - 卷积层

卷积神经网络一般由卷积层、汇聚层和全连接层构成,本文我们来学习卷积层。

卷积层(Convolutional Layer)是卷积神经网络(CNN)的核心组件,专门用于处理具有网格结构的数据(如图像、音频、时间序列等)。它的核心思想是通过局部连接权重共享,高效提取数据的局部特征。

一、核心思想:用“滑动窗口”提取局部特征

假设你正在观察一张猫的图片:

  • 全连接层:需要将整张图片的像素展开成一维向量,每个像素与神经元独立连接,导致参数爆炸。

  • 卷积层:像用放大镜扫描图片,每次只观察一个小窗口(如3×3的区域),通过重复使用同一组权重(卷积核)扫描全图。

类比
卷积层相当于一组“可学习的特征探测器”,每个探测器(卷积核)专门捕捉一种局部模式(如边缘、纹理、颜色过渡等)。

卷积层在CNN中的输出通常用一个三维张量表示,其结构为 (H, W, D):

  • H(高度)和 W(宽度):对应卷积后得到的特征图的空间尺寸。这个尺寸取决于原始输入图像的大小、卷积核尺寸、步幅(stride)和填充(padding)策略。
  • D(深度或通道数):对应卷积层使用的滤波器(卷积核)的个数。每个滤波器在整个输入上滑动后会生成一个二维特征图,这些二维特征图堆叠起来形成第三个维度。

举个例子:

假设输入是一张尺寸为32×32的RGB彩色图像(即32×32×3),我们在卷积层中使用了16个大小为5×5的卷积核(每个卷积核的深度与输入通道一致,即5×5×3)。如果采用适当的填充(例如“same”填充)和步幅为1,那么卷积层输出的特征图尺寸依然为32×32。因此,输出张量的尺寸就是 32×32×16。

这种三维表示方式能保留图像的空间结构(高度和宽度),同时通过多个滤波器提取不同的局部特征(深度),为后续的层提供丰富的特征信息。

卷积层的三维结构表示如下:

二、卷积层的数学操作

1. 单通道输入(灰度图像)
  • 输入矩阵:X(尺寸 H×W,如5×5)

  • 卷积核:K(尺寸 Kh×Kw​,如3×3)

  • 输出特征图:Y(尺寸 (H−Kh+1)×(W−Kw+1))

计算示例
输入矩阵:

[[1, 2, 3, 4, 5],[6, 7, 8, 9, 10],[11,12,13,14,15],[16,17,18,19,20],[21,22,23,24,25]]

卷积核:

[[1, 0, -1],[1, 0, -1],[1, 0, -1]]

输出计算(以左上角3×3区域为例):

Y[0,0]=1×1+2×0+3×(−1)+6×1+7×0+8×(−1)+11×1+12×0+13×(−1)=−24

负值表示检测到从亮到暗的垂直边缘

2. 多通道输入(如RGB图像)
  • 输入:Cin​ 个通道的矩阵(尺寸 H×W×Cin​)

  • 卷积核:每个输出通道对应 Cin​ 个核(尺寸 Kh×Kw)

  • 输出:CoutCout​ 个特征图(尺寸 H′×W′×Cout)

参数计算
参数总量 = Kh×Kw×Cin×Cout+Cout(含偏置项)

三、特征映射的概念

卷积层中的“特征映射”(Feature Map)是指通过卷积核(滤波器)对输入数据进行局部运算后产生的一组输出矩阵,每个矩阵对应一种特定的特征响应。通俗地讲,可以这样理解:

  • 局部响应:每个卷积核在输入图像上滑动,对每个局部区域计算加权和(加上偏置,并通过激活函数处理),这个计算结果反映了该区域是否包含卷积核所“关注”的特定模式(例如边缘、纹理、角点等)。

  • 特征“激活”图:卷积核得到的输出矩阵就是一个特征映射。矩阵中每个数值代表在对应位置上该特征出现的强度。比如,一个专门检测垂直边缘的滤波器,会在图像中存在垂直边缘的区域输出较高的激活值。

  • 多通道组合:通常一个卷积层会有多个卷积核,每个核负责提取不同的特征。这样,该层的输出就不只是一个矩阵,而是多个矩阵的组合(通道),每个通道对应一个特征映射,整体提供了丰富的局部特征信息。

  • 空间信息保留:特征映射保留了输入图像的空间结构,只不过经过滤波器转换成了另一种表示。这种空间保持性使得后续层能够进一步组合这些局部特征,形成更高层次的语义理解。

总之,特征映射就是卷积层对输入局部区域进行特定模式检测后输出的“图像”,反映了卷积核在整个输入上的响应情况。这一过程使得网络能从原始像素中自动学习并提取有意义的局部特征,为进一步的图像理解和分类提供基础。

四、卷积层的核心特性

1. 局部连接(Local Connectivity)
  • 原理:每个神经元仅连接输入的一个局部区域。

  • 优势

    • 减少参数量(如3×3卷积核仅需9个权重,而全连接层需连接所有像素)。

    • 聚焦局部特征,避免全局噪声干扰。

2. 权重共享(Weight Sharing)
  • 原理:同一卷积核在不同位置重复使用。

  • 优势

    • 参数效率极高(1个核扫描全图)。

    • 捕捉平移不变性(无论猫耳朵在图像左侧还是右侧,同一核均可检测)。

3. 平移不变性(Translation Invariance)
  • 原理:物体在图像中的位置变化不影响检测结果。

  • 实现:通过滑动窗口覆盖所有位置,同一核在不同位置激活相同特征。

五、卷积层的实际效果

1. 浅层卷积:边缘与纹理检测
  • 示例核

    • 水平边缘检测:[[1,1,1], [0,0,0], [-1,-1,-1]]

    • 垂直边缘检测:[[1,0,-1], [1,0,-1], [1,0,-1]]

2. 深层卷积:抽象语义提取
  • 组合低级特征:如通过边缘检测结果组合出车轮、窗户等物体部件。

  • 高级语义:最终识别出“汽车”“人脸”等复杂概念。

3. 特征图可视化
  • 浅层特征:显示边缘、颜色块等低级模式。

  • 深层特征:对应抽象形状或物体部件。

六、卷积层与全连接层的对比

特性卷积层全连接层
连接方式局部连接 + 权重共享全局连接 + 独立参数
参数量与输入尺寸无关与输入尺寸成正比
空间信息保留保留多维结构(如图像的2D布局)展平为一维向量(丢失结构)
适用场景图像、视频、语音等网格数据简单分类任务

七、卷积层的核心价值

  1. 高效特征提取:通过滑动窗口和权重共享,以极少的参数捕捉局部模式。

  2. 层次化学习:浅层提取边缘/纹理,深层组合抽象语义。

  3. 空间不变性:无论目标在图像中的位置如何,均能稳定检测。

实际应用建议

  • 图像分类:堆叠多个卷积层,逐步抽象特征。

  • 目标检测:用卷积层生成候选区域(如Faster R-CNN)。

  • 语义分割:全卷积网络(FCN)保持空间分辨率。

最终理解
卷积层是CNN的“智能扫描仪”,通过可学习的局部模板,在数据中逐段寻找重复出现的模式。这种设计既保留了空间/时序结构,又避免了参数冗余,是处理网格化数据的基石。

相关文章:

卷积神经网络 - 卷积层

卷积神经网络一般由卷积层、汇聚层和全连接层构成,本文我们来学习卷积层。 卷积层(Convolutional Layer)是卷积神经网络(CNN)的核心组件,专门用于处理具有网格结构的数据(如图像、音频、时间序…...

玩转 Tailwind CSS:深入解析函数与指令

玩转 Tailwind CSS:深入解析函数与指令 如果你正在使用 Tailwind CSS,可能已经习惯了各种 text-center、mt-4 这样的类名,但你知道吗?Tailwind 其实还隐藏着一套 强大的函数与指令系统,可以让你的代码更加优雅、可维护…...

Axure设计之下拉多选框制作教程C(中继器)

利用Axure制作下拉多选器组件可以极大地提升原型制作的效率和效果。以下是基于你提供的详细步骤的详细指导,帮助你在Axure中实现一个功能完善、高保真且可复用的下拉多选器组件。 一、案例预览 预览地址:https://pghy0i.axshare.com 实现效果包括&#…...

本地部署Jina AI Reader:用Docker打造你的智能解析引擎

本地部署Jina AI Reader:用Docker打造你的智能解析引擎 🌟 引言:为什么需要本地部署?📌 场景应用图谱🔧 部署指南(Linux环境)1. 环境准备2. Docker部署3. 验证服务状态 &#x1f680…...

Java基础语法练习42(基本绘图-基本的事件处理机制-小坦克的绘制-键盘控制坦克移动)

目录 一、图形的基本绘制 1.基本介绍: 2.入门代码如下: 3.常用图形的绘制, 示例代码如下: 二、坦克的绘制 三、事件处理机制 四、坦克的移动 一、图形的基本绘制 1.基本介绍: Component 类提供了两个和绘图相关最重要的方…...

RabbitMQ 入门

RabbitMQ 入门 1RabbitMQ 介绍 RabbitMQ 是信息传输的中间者。本质上,他从生产者(producers)接收消息,转发这些消息给消费者(consumers).换句话说,他能够按根据你指定的规则进行消息转发、缓冲…...

yolo环境 pytorch环境配置 CUDA安装

我的成功案例:首先安装python 3.12.9的conda虚拟环境 (如果不安装3.12的会报错误ModuleNotFoundError:没有名为“numpy._core”的模块) 然后安装11.8cuda (其实我是可以最高安装12.6的cuda但我实测,太高版…...

ESP32(4)TCP通信

本章重点讲解 lwIP 的 Socket接口如何配置 TCP客户端,并在此基础上实现收发功能。 TCP Client 连接流程 在实现 TCP 协议之前,用户需要按照以下步骤配置结构体 sockaddr_in 的成员变量,以便建立 TCPClient 连接: ①:…...

【从零开始学习计算机科学】软件测试(二)单元测试 与 集成测试

【从零开始学习计算机科学】软件测试(二)单元测试 与 集成测试 单元测试概述单元测试的内容单元测试的优点单元测试的停止准则单元测试的过程与文档管理单元测试的任务集成测试集成测试关注的问题模块分析集成测试与系统测试的区别集成测试与开发的关系集成测试的层次集成测试…...

数学建模:MATLAB循环神经网络

一、简述 1.循环神经网络 循环神经网络(RNN)是一种用于处理序列数据的神经网络。不同于传统的前馈神经网络,RNN在隐藏层中加入了自反馈连接,使得网络能够对序列中的每个元素执行相同的操作,同时保持一个“记忆”状态…...

EagleTrader为何重申重要数据前后2分钟禁止交易?

3月12日,美国公布了2月份的CPI数据。 美国2月未季调CPI年率录得2.8%,为去年11月来新低,低于市场预期的2.9%。 美国2月季调后CPI月率录得0.2%,为去年10月来新低,预期值为0.3%,前值为0.5%。 数据公布后&#…...

【Spring】声明式事务传播机制

1. 所有传播行为 REQUIRED(默认类型): 如果当前存在事务,则加入该事务;如果没有,则新建一个事务。适用于大多数业务场景。 SUPPORTS: 如果当前存在事务,则加入该事务;…...

个人blog系统 前后端分离 前端js后端go

系统设计: 1.使用语言:前端使用vue,并使用axios向后端发送数据。后端使用的是go的gin框架,并使用grom连接数据库实现数据存储读取。 2.设计结构: 最终展示:仅展示添加模块,其他模块基本相似 前…...

单元测试mock

一、背景 现在有A类,B类,C类,A类依赖B类,依赖C类,如果想要测试A类中的某个方法的业务逻辑。A类依赖其他类,则把其他类给mock,然后A类需要真实对象。这样就可以测试A类中的方法。 举例:Ticket类需要调用Flight类和Pas…...

OpenGL 将屏幕上的二维坐标转换为三维空间中的一个点

本文主要介绍将屏幕上的二维坐标转换为三维空间中的一个点,该点位于 近 平面上(即 Z 坐标为 -1)。 一、步骤概述 屏幕坐标到标准化设备坐标 (NDC): 将屏幕坐标 (x, y) 转换为 NDC 坐标系。NDC 到相机空间: 使用逆投影矩阵将 NDC 坐标转换到相…...

golang接口用法-代码案例

文章目录 Go语言中接口(interface)的含义接口的常见应用场景示例1示例2(Dog 和 Cat)使用场景-多数据库 Go语言中接口(interface)的含义 接口在Go语言中是一种类型,它定义了一组方法的集合。一个…...

ORA-12162: TNS:net service name is incorrectly specified

1.现象 SQL plus 连接实例报错,已确定实例是open状态。 [rootlocalhost ~]# su - oracle [oraclelocalhost ~]$ sqlplus / as sysdbaSQL*Plus: Release 19.0.0.0.0 - Production on Sat Mar 15 10:20:56 2025 Version 19.11.0.0.0Copyright (c) 1982, 2020, Orac…...

基于 Verilog 的时序设计:从理论到实践的深度探索

在数字电路设计领域,时序设计是一个至关重要的环节,它涉及到组合逻辑电路与时序逻辑电路的设计差异、时钟信号的运用以及触发器的工作原理等多个方面。本文将围绕基于 Verilog 的时序设计实验展开,详细阐述实验过程、代码实现以及结果分析,帮助读者深入理解时序设计的核心概…...

GreenKGC: A Lightweight Knowledge Graph Completion Method(论文笔记)

CCF等级:A 发布时间:2023年7月 代码位置 25年3月17日交 目录 一、简介 二、原理 1.整体 2.表示学习 3.特征修剪 4.决策学习 三、实验性能 1.主要结果 2.消融实验 四、结论和未来工作 一、简介 传统知识图谱补全方法中,嵌入维度…...

SSM基础专项复习5——Maven私服搭建(2)

系列文章 1、SSM基础专项复习1——SSM项目整合-CSDN博客 2、SSM基础专项复习2——Spring 框架(1)-CSDN博客 3、SSM基础专项复习3——Spring框架(2)-CSDN博客 4、SSM基础专项复习4——Maven项目管理工具(1&#xff…...

Linux中的epoll简单使用案例

I/O 多路复用允许一个进程或线程同时监控多个网络 sockets 的状态。它通过单个系统调用(select)来检查多个 sockets 是否有数据可读、可写或是否有异常。Linux 提供了多种 I/O 复用技术,包括上面提到的 select、以及 poll、epoll。 创建epol…...

ASP4644四通道降压稳压器的工业高效电源管理方案

ASP4644工业级型号(ASP4644I6B)是一款专为工业场景设计的四通道降压稳压器,支持-40C至85C工作温度。其核心特性包括: 宽输入电压范围:4V–14V,适配工业现场多变的电源环境。 高负载能力:单通道…...

kali破解Pdf/execl/word

一、准备工作 1.工具安装 Kali Linux 内置部分工具,需补充安装以下工具: sudo apt update sudo apt install pdfcrack hashcat john -y git clone https://github.com/magnumripper/JohnTheRipper # 更新版John 2.字典准备 常用字典:Kal…...

宇树科技纯技能要求总结

一、嵌入式开发与硬件设计 核心技能 嵌入式开发: 精通C/C,熟悉STM32、ARM开发熟悉Linux BSP开发及驱动框架(SPI/UART/USB/FLASH/Camera/GPS/LCD)掌握主流平台(英伟达、全志、瑞芯微等) 硬件设计&#xff1a…...

RabbitMq C++客户端的使用

1.RabbitMq介绍 RabbitMQ 是一款开源的消息队列中间件,基于 AMQP(高级消息队列协议)实现,支持多种编程语言和平台。以下是其核心特点和介绍: 核心特点 多语言支持 提供 Java、Python、C#、Go、JavaScript 等语言的客…...

用通义大模型写爬虫程序,汇总各科成绩

需求:根据各科网址,输入学号、姓名查询成绩。 中间反反复复很多次,本文只记下重点的几次和大模型的沟通历史。 输入界面 查询界面 round0(最初的问题) 请在windows下,使用python的selenium库&#xff0…...

电商项目Ts版本

文章目录 项目地址一、环境安装1.1 配置作为导入1.2 文件目录 二、路由2.1 publicRoutes 项目地址 教程作者:教程地址: 代码仓库地址: 所用到的框架和插件: dbt airflow一、环境安装 1.1 配置作为导入 vite.config.ts impor…...

HarmonyOS Next中的弹出框使用

HarmonyOS Next弹出框概述及分类 弹出框是一种模态窗口,通常用于在保持当前上下文环境的同时,临时展示用户需关注的信息或待处理的操作。用户需在模态弹出框内完成相关交互任务之后,才能退出模态模式。弹出框可以不与任何组件绑定&#xff0…...

C++实现的数据结构示例,涵盖链表、数组、树和图

使用C实现的数据结构示例&#xff0c;涵盖链表、数组、树和图的基本操作&#xff1a; 链表&#xff08;单向链表&#xff09; #include <iostream> using namespace std;struct Node {int data;Node* next;Node(int val) : data(val), next(nullptr) {} };class Linked…...

FPGA中级项目4——DDS实现

FPGA中级项目4——DDS实现 DDS简介 DDS&#xff08;直接数字频率合成器&#xff0c;Direct Digital Frequency Synthesis&#xff09;是一种基于数字信号处理技术的频率合成方法&#xff0c;广泛应用于通信、雷达、仪器仪表等领域。在 FPGA中实现 DDS 具有灵活性高、集成度强、…...