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

深度学习:卷积神经网络(CNN)详解

卷积神经网络(CNN)详解

卷积神经网络(Convolutional Neural Network, CNN)是一种专为处理具有网格结构数据(如图像)的深度学习模型。CNN通过引入卷积层池化层等独特的操作,能够有效提取局部特征,并通过层级特征抽象逐步构建对复杂数据的理解。由于其在图像处理任务上的强大性能,CNN广泛应用于图像分类、物体检测、语义分割等领域,同时在自然语言处理和时间序列分析等任务中也表现出色。

1. CNN的动机与背景

在传统的**全连接神经网络(Fully-connected Neural Networks, FNN)**中,每个神经元与前一层的所有神经元相连,参数量随着网络深度和输入维度的增加呈指数增长。这种结构在处理高维数据(如图像、视频等)时,容易出现参数过多、训练复杂度高、计算资源消耗大等问题,并且难以有效捕捉数据中的空间或局部关联特征。

为了解决这些问题,CNN通过引入局部连接权值共享等策略,能够在减少参数量的同时,保留和利用数据中的局部空间关系,极大提高了对图像等高维数据的建模效率。

2. CNN的核心组成部分

CNN的核心由三类主要组件构成:卷积层(Convolutional Layer)池化层(Pooling Layer)全连接层(Fully Connected Layer)。此外,还包含了激活函数和损失函数等关键要素。

2.1 卷积层(Convolutional Layer)

卷积层是CNN的核心构成部分,通过在输入数据上应用卷积操作提取局部特征。卷积层的工作原理主要包括以下几个方面:

  1. 卷积操作

    • 卷积操作通过一个小的滤波器(即卷积核)在输入数据上滑动,计算局部区域的加权和。卷积核的参数(权重)在滑动过程中共享,即相同的卷积核参数应用于输入数据的不同位置,从而实现参数共享。
    • 卷积操作能够捕捉输入数据中的局部模式和特征,如图像中的边缘、纹理等。

    数学表达式为:
    [
    y [ i , j ] = ∑ m ∑ n W [ m , n ] ⋅ x [ i + m , j + n ] + b y[i,j] = \sum_m \sum_n W[m,n] \cdot x[i+m, j+n] + b y[i,j]=mnW[m,n]x[i+m,j+n]+b
    ]
    其中,($ y[i,j]$ ) 是卷积输出的第 ($ i, j $) 个位置的值,( x [ i + m , j + n ] x[i+m, j+n] x[i+m,j+n] ) 是输入数据在局部感受野的值,( W [ m , n ] W[m,n] W[m,n] ) 是卷积核参数,( b b b ) 是偏置项。

  2. 卷积核(Filter/Kernels)

    • 卷积核是一个可学习的权重矩阵,通常具有较小的尺寸(如 ( 3 × 3 3 \times 3 3×3 ) 或 ( $5 \times 5 $))。卷积核在输入数据上滑动,逐步计算不同局部区域的加权和。每个卷积核可以学习一种特定的特征模式,如图像中的边缘、角点、纹理等。
    • 在卷积层中,通常会使用多个卷积核,这样可以同时学习到不同的特征表示。每个卷积核会生成一个特征图(Feature Map),所有特征图叠加在一起形成卷积层的输出。
  3. 步幅(Stride)

    • 步幅控制卷积核在输入上滑动的速度,步幅决定了输出特征图的大小。步幅为1表示卷积核每次滑动一个单位;步幅为2表示卷积核每次滑动两个单位,生成的特征图尺寸会比原始输入更小。
  4. 填充(Padding)

    • 为了防止卷积操作后输出的尺寸过小(尤其是在多层卷积的情况下),可以使用填充操作,在输入数据的边缘添加额外的零值(称为零填充)。填充能够帮助保留更多的边缘信息,并防止特征图尺寸过快缩小。
  5. 卷积输出(特征图,Feature Map)

    • 卷积核与输入数据的卷积操作会生成一个新的特征图。每个卷积核生成一个特征图,多个卷积核生成多个特征图,每个特征图对应着输入数据中的一种模式或特征。
2.2 池化层(Pooling Layer)

池化层是CNN中的下采样操作,用于减小特征图的尺寸,降低计算复杂度,同时增强模型的鲁棒性。池化层通过将局部区域的值进行聚合,保留重要特征信息,同时丢弃细节信息。常见的池化操作包括:

  1. 最大池化(Max Pooling)

    • 在每个局部区域中选择最大值作为输出。最大池化能够保留局部区域中最显著的特征,忽略较小的噪声或不重要的特征。

    数学表达式:
    [
    y [ i , j ] = max ⁡ ( x [ i + m , j + n ] ) , ( m , n ) ∈ window y[i,j] = \max(x[i+m, j+n]), \quad (m,n) \in \text{window} y[i,j]=max(x[i+m,j+n]),(m,n)window
    ]
    其中,( x [ i + m , j + n ] x[i+m, j+n] x[i+m,j+n] ) 是局部窗口内的值,($ y[i,j]$ ) 是池化后的值。

  2. 平均池化(Average Pooling)

    • 在每个局部区域中取平均值作为输出。平均池化通过平滑特征图,能够减少特征图的噪声。
  3. 池化的作用

    • 池化层降低了特征图的空间维度,从而减少了模型的参数量和计算量。它还能使模型对输入数据的微小变换(如平移或缩放)具有更强的鲁棒性。
    • 例如,一个 ( 2 × 2 2 \times 2 2×2 ) 的池化窗口将输入特征图的每 ( 2 × 2 2 \times 2 2×2 ) 个区域缩小为一个值,从而减少特征图的尺寸。
2.3 全连接层(Fully Connected Layer)

全连接层是卷积神经网络中的最后几层,其作用是将卷积层和池化层提取的特征映射到最终的输出空间(如类别标签)。全连接层通过将特征图展平(flatten),并与所有神经元相连接,类似于传统的神经网络。

  1. 展平操作

    • 卷积层和池化层生成的特征图通常是多维的(如 ( 16 \times 16 \times 32 ))。在进入全连接层之前,通常需要对这些多维特征图进行展平操作,将其转换为一维向量。
  2. 输出分类

    • 在图像分类任务中,最后一个全连接层通常使用softmax激活函数,生成每个类别的概率分布,并最终输出类别标签。

3. CNN的关键特性

3.1 权重共享

CNN的卷积核在整个输入上滑动,使用相同的参数(权重)对不同的局部区域进行卷积。这种权重共享机制大大减少了模型的参数量,并增强了模型的平移不变性。权重共享使得CNN能够高效地提取局部特征,而不需要为每个输入位置单独学习不同的权重。

3.2 局部感受野

CNN中的卷积操作通过局部感受野来提取输入数据中的局部特征。每个卷积核只关注输入数据中的一个小区域,捕捉到的特征是局部的。通过堆叠多层卷积,CNN能够逐步扩大感受野,提取更高层次、更抽象的特征,从而对输入数据进行分层表示。

3.3 平移不变性

CNN通过卷积和池化操作获得了对输入数据平移、旋转等几何变化的鲁棒性。平移不变性使得CNN在处理图像、视频等具有局部结构的任务时表现优异,因为无论物体在图像中的具体位置如何,卷积核都能够捕捉到其特征。

4. CNN的训练与优化

CNN的训练过程与传统的神经网络类似,通常采用**反向传播(Backpropagation)梯度下降(Gradient Descent)**等优化算法。在训练过程中,卷积核和全连接层的权重通过反向传播逐步更新,模型不断优化其对输入数据的表示能力。

  1. 损失函数
  • CNN常用的损失函数包括交叉熵损失(Cross-Entropy Loss)(用于分类任务)和均方误差(Mean Squared Error, MSE)(用于回归任务)。
  1. 优化器

    • 常用的优化器包括随机梯度下降(SGD)Adam等,这些优化算法通过最小化损失函数来更新网络的参数。
  2. 正则化方法

    • 为了防止模型过拟合,常用的正则化方法包括DropoutL2正则化数据增强等。
    • Batch Normalization也是一种常见的正则化方法,它通过对每一层的激活进行归一化处理,加速模型收敛并提升泛化能力。

5. CNN的优势

  1. 参数效率高:通过权重共享和局部感受野机制,CNN大大减少了参数量,使其能够高效处理高维数据(如图像)。

  2. 平移不变性和局部感知能力:CNN对局部特征和空间信息具有很好的捕捉能力,使其特别适用于图像处理等具有空间结构的数据。

  3. 层级特征抽象:CNN通过多层卷积逐步提取更高层次的特征,能够自动学习复杂的数据表示。

6. CNN的局限性

  1. 对全局信息的捕捉能力有限:尽管CNN擅长提取局部特征,但它对捕捉输入数据中的全局信息(特别是长距离依赖)相对较弱。对于一些需要全局上下文理解的任务,如自然语言处理,单独使用CNN可能效果不佳。

  2. 计算资源消耗大:尽管CNN减少了参数量,但在处理高分辨率图像时,卷积和池化操作仍需要大量计算资源。

  3. 感受野限制:CNN的感受野随着网络深度增加而逐渐扩大,但初始层的感受野较小,限制了它在低层次直接捕捉远距离依赖信息的能力。

7. CNN的扩展与改进

为了解决CNN在全局特征捕捉、计算复杂度等方面的局限性,近年来出现了许多CNN的改进和扩展模型:

  • ResNet(残差网络):通过引入残差连接(skip connections),ResNet能够有效缓解深层网络的梯度消失问题,并使得非常深的网络(如100层以上)能够稳定训练。

  • Inception网络:Inception模块通过并行应用多个不同尺寸的卷积核,能够在同一层次上提取多尺度特征,提升了模型的表达能力。

  • VGGNet:VGGNet通过使用更深的网络结构(如16层或19层)和较小的卷积核(( 3 × 3 3 \times 3 3×3)),显著提高了模型的分类性能。

8. CNN的应用

CNN被广泛应用于各种视觉任务中,如:

  • 图像分类:如ImageNet数据集的分类任务,CNN通过提取图像特征来分类不同的物体类别。

  • 物体检测:如Faster R-CNN、YOLO等模型用于检测图像中的目标位置和类别。

  • 图像分割:如U-Net和FCN等模型,用于将图像划分为不同的区域或物体。

  • 自然语言处理:尽管CNN最初应用于视觉领域,但在文本分类、句子建模等任务中,CNN也取得了显著效果,尤其在处理局部上下文信息时表现出色。

9. 总结

卷积神经网络(CNN)通过引入卷积层、池化层和全连接层,利用权值共享、局部感受野和平移不变性,成为处理图像和视觉任务的强大工具。其多层次特征提取的能力使其能够从低级到高级捕捉数据中的重要模式。尽管CNN在视觉任务中表现出色,但其在捕捉全局信息和处理长距离依赖上存在一定局限,促使了包括ResNet、Inception等在内的各种改进模型的发展。

相关文章:

深度学习:卷积神经网络(CNN)详解

卷积神经网络(CNN)详解 卷积神经网络(Convolutional Neural Network, CNN)是一种专为处理具有网格结构数据(如图像)的深度学习模型。CNN通过引入卷积层、池化层等独特的操作,能够有效提取局部特…...

软件测试学习笔记丨Pycharm实用技巧

本文转自测试人社区,原文链接:https://ceshiren.com/t/topic/23459 PyCharm 应该是大多数 python 开发者的首选 IDE,每天我们都在上面敲着熟悉的代码,写出一个又一个奇妙的功能。它是帮助用户在使用 Python 语言开发时提高其效率的…...

Vue学习笔记(二、Vue.js的引入与对象创建)

一、引入vue 1.通过cdn引入&#xff1a; <script src"https://cdn.jsdelivr.net/npm/vue2/dist/vue.js"></script> 2.本地引入&#xff1a; <script src"./lib/vue.js"></script> 二、创建Vue对象 代码参考如下&#xff1a; …...

从0-1搭建金融智能助理保姆级教程:拆箱即用的微信公众号后端+AI Agents智能体框架

大模型LLM 应用AI Agents框架&#xff0c;为我们提供了非常便利的自动化执行任务的能力。微信公众号(订阅号) 是非常适合落地各种AI Agents的场景&#xff0c;我们可以利用微信公众号提供的文本、图像、语音的输入&#xff0c;在自己服务器上部署一套API框架&#xff0c;把自己…...

Yolov10训练的餐盘菜品目标检测软件(包含源码及数据集)

本文摘要 摘要&#xff1a;本文主要使用YOLOV10深度学习框架自训练了一个“餐盘菜品目标检测模型”&#xff0c;基于此模型使用PYQT5实现了一款界面软件用于功能演示。让您可以更好的了解和学习&#xff0c;该软件支持图片、视频以及摄像头进行目标检测&#xff0c;本系统所涉…...

Active Directory(活动目录)密码审核工具

什么是Active Directory密码审核 Active Directory密码审核涉及监控用户密码的状态及其身份验证尝试&#xff0c;以便 IT 管理员收到有关弱 Active Directory密码或任何异常身份验证行为的通知。 Active Directory密码审核可帮助管理员评估用户密码的强度并采取必要措施来加强…...

Transformer为什么使用LayerNorm而不是BatchNorm?

01 引言 层归一化(Layer normalization ) 是Transformer模型中的一项重要技术&#xff0c;它通过对每一层的输入进行归一化&#xff0c;帮助稳定和加速训练。无论输入的规模或分布如何&#xff0c;它都能确保模型处理信息的一致性。在自注意力机制、多头注意力机制和位置编码…...

理解和重构目录结构:Java 中的父子关系管理

理解和重构目录结构&#xff1a;Java 中的父子关系管理 一、前言1. 问题背景2. 目录项结构3. 实现重构逻辑4. 示例代码5. 结果与输出 二、总结 好的&#xff0c;我们将目录结构调整为使用中文数字表示的标题。以下是重新组织后的内容&#xff1a; 一、前言 在软件开发中&…...

ES6面试题:(第一天)

目录 1.var,let,const的区别 2.说说你对数组的解构和对象的解构的理解? 3.ES6的新语法 4.Map对象和Set对象的区别 5.Set实现数组去重 1.var,let,const的区别 使用 var 声明的变量&#xff0c;其作用域为全局作用域或者为所在的函数内局部作用域&#xff0c;且存在变量提升…...

【ChatGPT】什么是ChatGPT:基础介绍与使用场景

什么是ChatGPT&#xff1a;基础介绍与使用场景 在当今科技快速发展的时代&#xff0c;人工智能工具正逐步融入我们生活的方方面面。你是否曾在编写报告时陷入思路停滞&#xff1f;或者在客户服务中焦急等待响应&#xff1f;这些问题&#xff0c;随着 ChatGPT 的出现&#xff0…...

工业自动化为什么依赖光耦隔离器 --- 腾恩科技

光耦合器隔离器在工业自动化中必不可少&#xff0c;可确保信号传输&#xff0c;同时保护敏感电子设备和人员免受高压影响。选择合适的光耦合器隔离器取决于对操作环境和隔离要求的了解。本文将重点介绍在为工业应用选择光耦合器隔离器时需要考虑的关键因素。 光耦合器隔离器在工…...

Linux环境下Jmeter执行压测脚本

Linux环境下Jmeter执行压测脚本 前提官网下载Jmeter执行脚本 前提 注意&#xff1a;Jmeter的运行依赖Java环境 官网下载Jmeter 1、下载链接&#xff1a;https://dlcdn.apache.org//jmeter/binaries/apache-jmeter-5.6.3.zip 2、解压 unzip apache-jmeter-5.6.3.zip 执行脚本…...

PROFINET开发或EtherNet/IP开发嵌入式板有用于工业称重秤

这是一个真实案例&#xff0c;不过客户选择不透露其品牌名称。稳联技术的嵌入式解决方案助力工业称重设备制造商连接至任意工业网络。多网络连接使得称重设备能够轻松接入不同的控制系统&#xff0c;进而加快产品的上市时间。 我们找到了稳联技术的解决方案。他们成熟的技术与专…...

OracleT5-2 Solaris11安装

1、Solaris11安装 在光驱中插入Solaris11的光盘后,在ok提示中boot cdrom {0} ok boot cdrom NOTICE: Entering OpenBoot. NOTICE: Fetching Guest MD from HV. NOTICE: Starting additional cpus. NOTICE: Initializing LDC services. NOTICE: Probing PCI devices. N…...

详解 JuiceFS 在多云架构下的数据同步与一致性

随着大模型流行&#xff0c;GPU 算力资源正变得日益稀缺&#xff0c;传统的“算力跟着存储跑”的策略需要转变为“存储跟着算力跑”。为了确保数据一致性和管理的便捷性&#xff0c;企业通常在特定地区的公有云上选择对象存储作为所有模型数据的集中存储点。当进行计算任务调度…...

赛氪贡献突出获评优秀合作伙伴,第十九届环境友好科技竞赛落幕

2024年10月19日&#xff0c;第十九届全国环境友好科技竞赛终审答辩会在同济大学顺利举行&#xff0c;标志着这一环境领域顶级学科竞赛的又一盛事圆满落幕。本次竞赛由清华大学、同济大学、西安建筑科技大学及中国环境科学学会共同主办&#xff0c;吸引了全国各高校相关专业学生…...

GrowingIO埋点(前端)

GrowingIO埋点&#xff08;前端&#xff09; 一、CDN集成SDK 1、初始化 ​ 当用户加载页面的时候&#xff0c;会异步加载 WebJS SDK&#xff0c;不会影响到用户的加载速度&#xff0c;所以一般建议把这段代码加入到 <head></head> 中的最下面&#xff0c;这样能…...

MySQL-15.DQL-排序查询

一.DQL-排序查询 -- 排序查询 -- 1.根据入职时间&#xff0c;对员工进行升序排序 select * from tb_emp order by entrydate asc ;-- 2.根据入职时间&#xff0c;对员工进行降序排序 select * from tb_emp order by entrydate desc ;-- 3.根据 入职时间 对公司员工进行 升序排序…...

SpringBoot中大量数据导出方案:使用EasyExcel并行导出多个excel文件并压缩zip后下载

文章目录 前言一、控制器层代码二、服务层代码三、代码亮点分析 前言 SpringBoot的同步excel导出方式中&#xff0c;服务会阻塞直到Excel文件生成完毕&#xff0c;如果导出数据很多时&#xff0c;效率低体验差。有效的方案是将导出数据拆分后利用CompletableFuture&#xff0c;…...

黑马软件测试第一篇_数据库

说明: 数据库是专门用来存储数据的软件 注意: 对于测试工作而言, 如果项目页面没有实现, 但是我们又想要校验数据,则可以直接通过查询数据库实现 关系: 具体存在的商品录入后 -> 产生对应的数据(存到数据库中) -> 最后会被加载到项目页面中 数据库的分类 分类: 1> 关…...

第十六届蓝桥杯嵌入式组准备

最近我看很多人都在准备蓝桥杯的比赛了&#xff0c;这里我给大家整理一下历届真题或模拟题的讲解与源码 蓝桥杯嵌入式第十二届省赛真题二 蓝桥杯嵌入式第十三届省赛真题一 蓝桥杯嵌入式第十三届省赛真题二 蓝桥杯嵌入式第十四届省赛真题 蓝桥杯嵌入式第十四届模拟考试一 蓝…...

城乡供水信息化系统如何建设?

城乡供水信息化建设是一个综合性的过程&#xff0c;旨在通过现代信息技术提升农村供水系统的管理效率和服务质量。这一过程包含以下关键内容&#xff1a; 一、信息化基础设施建设 感知层建设&#xff1a;在农村饮水工程的关键部位&#xff0c;如水源地、水厂、供水管网等&#…...

【Petri网导论学习笔记】Petri网导论入门学习(七) —— 1.5 并发与冲突

导航 1.5 并发与冲突1.5.1 并发定义 1.14定义 1.15 1.5.2 冲突定义 1.17 1.5.3 一般Petri网系统中的并发与冲突定义 1.18一般网系统中无冲撞概念阻塞&#xff08;有容量函数K的P/T系统&#xff0c;类似于冲撞&#xff09;一般Petri网中并发与冲突共存情况 1.5 并发与冲突 Petr…...

MongoDB常用语句

1.只统计记录总数&#xff1a; let result await CorrectionRecordModel.countDocuments(db);2.数组遍历&#xff0c;循环体中可以有调用异步函数&#xff1a; for(let item of result2){if(item && Tool.checkNotEmptString(item.auth_id) && (item.status …...

自动创作PPT 利用提示词和大模型自动创建ppt

背景 ppt创作可以分为3个步骤&#xff1a;1.大纲撰写&#xff1b;2.内容填充&#xff1b;3.ppt实现。我前几天用十分钟的时间做了一个ppt&#xff0c;主讲大模型测评。这里给大家分享一下我的创作过程。 关于步骤1和步骤2&#xff0c;最近发现一个非常好的提示词&#xff0c;…...

二分类评价指标AUROC和AUPR

文章目录 一、AUROC&#xff08;Area Under the Receiver Operating Characteristic Curve&#xff09;二、AUPR&#xff08;Area Under the Precision-Recall Curve&#xff09;三、区别3.1 案例3.2 如何选择&#xff1f; 在分类任务中&#xff0c; AUROC&#xff08;受试者工…...

雅迪控股营收、净利润和毛利下滑:销量大幅减少,屡屡抽查不合格

《港湾商业观察》廖紫雯 日前&#xff0c;雅迪集团控股有限公司&#xff08;以下简称&#xff1a;雅迪控股&#xff0c;01585.HK&#xff09;发布业绩报告&#xff0c;披露2024年上半年营收净利双下滑等情况&#xff0c;在业绩承压的情况下&#xff0c;雅迪控股遭多家券商下调…...

【网络安全】记一次漏洞挖掘

Spring Cloud Data Flow 热点漏洞详细分析 环境搭建 2.10.0 - 2.11.2版本都可以&#xff0c;这里下的2.11.2 源码下载https://github.com/spring-cloud/spring-cloud-dataflow/tree/v2.11.2 在src/docker-compose里面是有docker文件的&#xff0c;使用docker即可 最近是爆出…...

Redis遇到Hash冲突怎么办?

这是小伙伴之前遇到的一个面试题&#xff0c;感觉也是一个经典八股&#xff0c;和大伙分享下。 一 什么是 Hash 冲突 Hash 冲突&#xff0c;也称为 Hash 碰撞&#xff0c;是指不同的关键字通过 Hash 函数计算得到了相同的 Hash 地址。 Hash 冲突在 Hash 表中是不可避免的&am…...

React综合指南(四)

61、描述React事件处理。 为了解决跨浏览器兼容性问题&#xff0c;React中的事件处理程序将传递SyntheticEvent实例&#xff0c;该实例是React跨浏览器本机事件的跨浏览器包装器。这些综合事件具有与您惯用的本机事件相同的界面&#xff0c;除了它们在所有浏览器中的工作方式相…...