【深度学习:Convolutional Neural Networks】卷积神经网络入门指南

卷积神经网络(CNN)是深度学习领域最引人注目的成就之一。自从LeCun等人在20世纪90年代初引入以来,CNN在图像处理、视频分析和自然语言处理等领域取得了显著的成就。在这篇博客中,我们将探讨CNN的基本原理、结构和一些实际应用案例。

人工智能在缩小人类与机器能力差距方面取得了巨大发展。无论是研究人员还是爱好者,都在该领域的许多方面开展工作,以实现令人惊叹的成就。计算机视觉领域就是其中之一。

在这里插入图片描述
人工智能在缩小人类与机器能力差距方面取得了巨大发展。无论是研究人员还是爱好者,都在该领域的许多方面开展工作,以实现令人惊叹的成就。计算机视觉领域就是其中之一。

这一领域的目标是让机器能够像人类一样观察世界,以类似的方式感知世界,甚至将知识用于图像和视频识别、图像分析和分类、媒体再创造、推荐系统、自然语言处理等多种任务。随着时间的推移,深度学习技术在计算机视觉领域的发展也日臻完善,这主要得益于一种特殊的算法–卷积神经网络。

介绍

在这里插入图片描述

图:用于对手写数字进行分类的 CNN 序列

卷积神经网络 (ConvNet/CNN) 是一种深度学习算法,可以接收输入图像,为图像中的各个方面/对象分配重要性(可学习的权重和偏差),并能够区分彼此。与其他分类算法相比,ConvNet 中所需的预处理要低得多。虽然在原始方法中,过滤器是手工设计的,但经过足够的训练,ConvNets有能力学习这些过滤器/特征。

ConvNet的架构类似于人脑中神经元的连接模式,并受到视觉皮层组织的启发。单个神经元仅在视野的有限区域(称为感受野)中对刺激做出反应。此类字段的集合重叠以覆盖整个可视区域。

为什么选择ConvNets而不是前馈神经网络?

在这里插入图片描述

图:将 3x3 图像矩阵展平为 9x1 向量

图像只不过是像素值的矩阵,对吧?那么,为什么不直接将图像展平(例如,将 3x3 图像矩阵转换为 9x1 向量)并将其馈送到多级感知器进行分类呢?呃。。没有。

在极其基本的二进制图像的情况下,该方法在执行类预测时可能会显示平均精度分数,但当涉及到具有整个像素依赖性的复杂图像时,准确性几乎没有。

ConvNet 能够通过应用相关过滤器成功捕获图像中的空间和时间依赖关系。由于涉及的参数数量的减少和权重的可重用性,该架构可以更好地拟合图像数据集。换句话说,可以训练网络以更好地理解图像的复杂程度。

Input Image 输入图像

在这里插入图片描述

图:4x4x3 RGB图像

在图中,我们有一个 RGB 图像,它被三个颜色平面(红色、绿色和蓝色)分隔开。图像存在许多这样的色彩空间——灰度、RGB、HSV、CMYK 等。

你可以想象,一旦图像达到尺寸,比如8K(7680×4320),计算量会有多大。ConvNet 的作用是将图像简化为更易于处理的形式,而不会丢失对获得良好预测至关重要的特征。当我们要设计一个不仅擅长学习特征,而且可以扩展到海量数据集的架构时,这一点很重要。

基本架构

CNN主要由三种类型的层组成:卷积层、池化层和全连接层。

  • 卷积层: 通过滤波器(或称为卷积核)提取输入数据(如图像)的特征。
  • 池化层: 减少数据的空间大小,降低计算复杂度,同时保留重要信息。
  • 全连接层: 将学习到的特征用于分类或其他任务。

Convolution Layer 卷积层 — 内核

使用 3x3x1 内核卷积 5x5x1 图像以获得 3x3x1 卷积特征

图:使用 3x3x1 内核卷积 5x5x1 图像以获得 3x3x1 卷积特征

图像尺寸 = 5(高度)x 5(宽度)x 1(通道数,例如。RGB格式)

在上面的演示中,绿色部分类似于我们的 5x5x1 输入图像 I。卷积层第一部分中卷积运算中涉及的元素称为内核/滤波器 K,以黄色表示。我们选择 K 作为 3x3x1 矩阵。

Kernel/Filter, K =
1 0 1
0 1 0
1 0 1

由于步幅长度 = 1(非步幅),内核移动 9 次,每次在 K 和内核悬停的图像部分 P 之间执行元素乘法运算(Hadamard 乘积)。

在这里插入图片描述

图:内核的运动

过滤器以一定的步长值向右移动,直到解析完整的宽度。继续,它以相同的步幅值跳到图像的开头(左侧),并重复该过程,直到遍历整个图像。

在这里插入图片描述

图:使用 3x3x3 内核对 MxNx3 图像矩阵进行卷积运算

对于具有多个通道的图像(例如 RGB),内核具有与输入图像相同的深度。在 Kn 和 In stack ([K1, I1]; [K2, I2]; [K3, I3]) 之间执行矩阵乘法,并将所有结果与偏差相加,得到压缩的单深度通道卷积特征输出。

在这里插入图片描述

图:步长 = 2 的卷积运算

卷积运算的目的是从输入图像中提取高级特征,例如边缘。卷积网络不必仅限于一层卷积层。传统上,第一个 ConvLayer 负责捕获低级特征,例如边缘、颜色、梯度方向等。通过添加层,该架构也适应高级特征,为我们提供了一个具有全面理解的网络数据集中的图像,类似于我们的方式。

该操作有两种类型的结果 - 一种是与输入相比,卷积特征的维数减少,另一种是维数增加或保持不变。这是通过在前者的情况下应用有效填充或在后者的情况下应用相同填充来完成的。

在这里插入图片描述
当我们将 5x5x1 图像增强为 6x6x1 图像,然后在其上应用 3x3x1 内核时,我们发现卷积矩阵的尺寸为 5x5x1。因此得名——Same Padding。

另一方面,如果我们在没有填充的情况下执行相同的操作,我们会看到一个具有内核 (3x3x1) 本身尺寸的矩阵 - 有效填充。

下面这个链接里还有其他不同卷积的gif动画:https://github.com/vdumoulin/conv_arithmetic

Pooling Layer 池化层

在这里插入图片描述
与卷积层类似,池化层负责减小卷积特征的空间尺寸。这是为了通过降维来降低处理数据所需的计算能力。此外,它对于提取旋转和位置不变的主导特征很有用,从而保持有效训练模型的过程。

池化有两种类型:最大池化和平均池化。最大池化返回内核覆盖的图像部分的最大值。另一方面,平均池化返回内核覆盖的图像部分的所有值的平均值。

最大池化还可以充当噪声抑制器。它完全丢弃噪声激活,并执行去噪和降维。另一方面,平均池化只是简单地执行降维作为噪声抑制机制。因此,我们可以说最大池化的性能比平均池化要好得多。

在这里插入图片描述

图:池的类型

卷积层和池化层共同构成卷积神经网络的第 i 层。根据图像的复杂性,可以增加此类层的数量以进一步捕获低级细节,但代价是更多的计算能力。

经过上述过程,我们已经成功让模型能够理解特征。接下来,我们将展平最终输出并将其输入常规神经网络以进行分类。

Classification — Fully Connected Layer (FC Layer) 分类全连接层

在这里插入图片描述
添加全连接层是学习卷积层输出所表示的高级特征的非线性组合的(通常)廉价方法。全连接层正在学习该空间中可能的非线性函数。

现在我们已经将输入图像转换为适合多级感知器的形式,我们将把图像展平为列向量。平坦化的输出被馈送到前馈神经网络,并将反向传播应用于训练的每次迭代。经过一系列的 epoch,该模型能够区分图像中的主要特征和某些低级特征,并使用 Softmax 分类技术对它们进行分类。

有多种可用的 CNN 架构,这些架构对于构建算法至关重要,这些算法在可预见的未来为整个人工智能提供动力。下面列出了其中一些:

  1. LeNet
  2. AlexNet
  3. VGGNet
  4. GoogLeNet
  5. ResNet

工作原理

CNN通过卷积层中的滤波器在输入数据上滑动,提取局部特征。这些特征随后通过网络的深层传递并逐渐集成为更高级的特征,最终用于执行诸如分类或检测的任务。

应用案例

CNN在多个领域都有广泛应用,例如:

  • 图像识别: 识别图像中的物体。
  • 视频分析: 追踪视频中的物体或行为。
  • 自然语言处理: 虽然CNN主要用于图像,但也可以用于处理文本数据。

特征提取示例

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

实验3 vTPM相关

一、实验目的 1.了解vTPM原理和相关知识;2.创建具备vTPM的虚拟机;3.加深对可信计算技术的理解。 二、实验内容 安装seabios,libtpms,swtpm,qemu‐tpm;启动vTPM;安装虚拟机。 三、实验环境 …

2013年第二届数学建模国际赛小美赛B题寄居蟹进化出人类的就业模式解题全过程文档及程序

2013年第二届数学建模国际赛小美赛 B题 寄居蟹进化出人类的就业模式 原题再现: 寄居蟹是美国最受欢迎的宠物品种,依靠其他动物的壳来保护。剥去寄居蟹的壳,你会看到它柔软、粉红色的腹部卷曲在头状的蕨类叶子后面。大多数寄居蟹喜欢蜗牛壳&…

Unity Window安装包制作

Unity Window安装包制作 介绍一、RAR自解压方式1、找到Unity打包的可执行程序2.创建自解压文件3.配置设置4、最后点击确定等待压缩完成即可(默认生成位置为你选中文件右键点击添加到压缩文件时的路径) 二、Setup Factory工具安装制作Window安装包相关常用…

2023年成都市中等职业学校学生技能大赛“网络搭建及应用”赛项竞赛样卷

2023年成都市中等职业学校学生技能大赛 “网络搭建及应用”赛项竞赛样卷 (总分1000分) 目录 2023年成都市中等职业学校学生技能大赛 “网络搭建及应用”赛项竞赛样卷 网络建设与调试项目(500分) 服务器搭建与运维项目(…

每日一题----删除指定数字

大家好今天是1月1号,我在这里祝大家元旦快乐,感谢大家的支持,新的一年我会更加努力。谢谢大家。!!! 文章目录 目录 文章目录 题目演示 题⽬描述: 先输⼊10个整数存放在数组中,再输⼊…

华为云创新中心,引领浙南的数字化腾飞

编辑:阿冒 设计:沐由 县域经济是我国国民经济的重要组成部分,是推动经济社会全面发展的核心力量之一。在推进中国式现代化的征程中,县域经济扮演的角色也越来越重要。 毫无疑问,县域经济的良性发展,需要多方…

阿里后端实习一面面经

阿里后端实习一面面经 项目中使用到了es,es的作用? elasticsearch是一款非常强大的开源搜索引擎,具备非常多强大功能,可以帮助我们从海量数据中快速找到需要的内容 es中的重要概念? 群集:一个或多个节点…

【HarmonyOs Arkts笔记】Arkts ForEach循环使用

说明 ForEach循环数组对象时 要指定对象的唯一标识 例如 id,否则只会显示第一个 State tabsList: object[] [{ name: 砍价活动, id: 1, icon: https://php-b2c.likeshop.cn/uploads/images/2022062414322367e6a5479.png },{ name: 拼团活动, id: 2, icon: https:…

Java循环高级(无限循环,break,continue,Random,逢七过,平方根,判断是否是质数,猜数字小游戏)

文章目录 1.无限循环概念:for格式:while格式:do...while格式:无限循环的注意事项: 2.条件控制语句break:continue: 3. Random使用步骤: 4. 逢七过5. 平方根6.判断是否为质数7. 猜数字小游戏 1.无限循环 概…

【形式语言与自动机/编译原理】CFG-->Greibach-->NPDA(3)

本文将详细讲解《形式语言与自动机》(研究生课程)或《编译原理》(本科生课程)中的上下文无关文法(CFG)转换成Greibach范式,再转成下推自动机(NPDA)识别语言是否可以被接受…

NXP实战笔记(三):S32K3xx基于RTD-SDK在S32DS上配置WDT配置

目录 1、WDT概述 2、SWT配置 2.1、超时时间,复位方式的配置 2.2、中断形式 1、WDT概述 SWT 编程模型只允许 32 位(字)访问。 以下任何尝试访问都是无效的: •非32位访问 •写入只读寄存器 •启用SWT时,将不正确的值写入SR…

10 个顶级的 OBS 录屏替代品知识分享

视频是任何商业沟通策略的关键。您可能希望共享和记录您的屏幕以显示工作流程、为客户创建有用的教程和资源,或增强组织的知识库。 或者,也许视频是您核心产品的一部分,而出色的视频录制软件对于您的业务、YouTube 频道或直播爱好来说是必需…

计算机基础面试题 |01.精选计算机基础面试题

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…

【软件工程】融通未来的工艺:深度解析统一过程在软件开发中的角色

🍎个人博客:个人主页 🏆个人专栏: 软件工程 ⛳️ 功不唐捐,玉汝于成 目录 前言: 正文 统一过程(Unified Process) 介绍和解释: 应用: 优缺点&#xf…

使用docker轻量化部署snmp agent(SNMPv2访问)

文章目录 服务器环境说明单机部署(非挂载conf文件版)debian:buster-slim容器简介实现步骤创建Dockerfile创建SNMP配置文件 (snmpd.conf)构建Docker镜像运行Docker容器 注意补充复制容器文件到本地容器、镜像操作 单机部署(挂载conf文件版&…

【SpringBoot】常用注解

RequestBody:自动将请求体中的 json 数据转换为实体类对象。 这个例子凑巧传入的json属性键名和User键名一致,可以直接使用User实体类对象,如果键名不一致则需要用一个Map 类接收参数: PutMapping("/update")public R…

Android apk安装包反编译——apktool工具

目录 一、apk 文件结构二、下载 apktool三、 使用 apktool 反编译 apk四、编译为apk五、apk签名1.生成密钥库2.使用 v1 签名3.使用 v2 签名 六、Dex 加解密原理 一、apk 文件结构 首先是 apk,即安卓程序的安装包。Apk 是一种类似于 Symbian Sis 或 Sisx 的文件格式…

Flink实时电商数仓之DWS层

需求分析 关键词 统计关键词出现的频率 IK分词 进行分词需要引入IK分词器&#xff0c;使用它时需要引入相关的依赖。它能够将搜索的关键字按照日常的使用习惯进行拆分。比如将苹果iphone 手机&#xff0c;拆分为苹果&#xff0c;iphone, 手机。 <dependency><grou…

createElement, parentNode, removeChild, appendChild

1获取父节点 var childNode document.getElementById("child"); var parentNode childNode.parentNode; // 获取父节点利用dom获取元素要嵌套 引出&#xff1a;利用父子兄节点关系获取元素 标签&#xff0c;元素&#xff0c;元素节点空格&#xff0c;文本节点属性…

32个关于FPGA的学习网站

语言类学习网站 1、HDLbits 网站地址&#xff1a;https://hdlbits.01xz.net/wiki/Main_Page 在线作答、编译的学习Verilog的网站&#xff0c;题目很多&#xff0c;内容丰富。非常适合Verilog初学者&#xff01;&#xff01;&#xff01; 2、牛客网 网站地址&#xff1a;https:…