面向初学者的卷积神经网络

news2024/11/16 9:24:10

卷积神经网络在机器学习中非常重要。如果你想做计算机视觉或图像识别任务,你根本离不开它们。但是很难理解它们是如何工作的。

在这篇文章中,我们将讨论卷积神经网络背后的机制、它的优点和应用领域。

什么是神经网络?

首先,让我们复习一下神经网络(Neural Networks, NN)的一般工作原理。

任何神经网络,从简单的感知器到巨大的企业人工智能系统,都由模仿人脑神经元的节点组成。这些细胞紧密相连。节点也是如此。

在这里插入图片描述

神经元通常被组织成独立的层。神经网络的一个例子是前馈神经网络。数据从输入层通过一组隐藏层仅沿一个方向移动,就像水通过过滤器一样。

在这里插入图片描述
系统中的每个节点都连接到上一层和下一层中的某些节点。节点从其前面的层接收信息,对其执行某些操作,并将信息发送到下一层。

每个传入连接都分配有一个权重。这是一个数字,节点在从不同节点接收数据时将输入乘以该数字。

在这里插入图片描述
节点通常使用多个传入值。 然后,它将所有内容总结在一起。

在这里插入图片描述
有几种可能的方法可以决定是否应将输入传递到下一层。例如,如果使用单位阶跃函数,则如果节点的值低于阈值,则节点不会将数据传递到下一层。如果数字超过阈值,节点将向前发送数字。然而,在其他情况下,神经元可以简单地将输入投影到某个固定值段中。

当神经网络首次被训练时,它的所有权重和阈值都是随机分配的。一旦训练数据被馈送到输入层,它就会穿过所有层,最终到达输出。在训练期间,将调整权重和阈值,直到具有相同标签的训练数据始终提供相似的输出。这称为反向传播。你可以在 TensorFlow Playground 中看到它是如何工作的。

简单 NN 有什么问题?

常规的人工神经网络不能很好地扩展。例如,在通常用于训练计算机视觉模型的数据集 CIFAR 中,图像的大小仅为 32x32 像素,并且具有 3 个颜色通道。这意味着该神经网络第一隐藏层中的单个全连接神经元将具有 32x32x3 = 3072 个权重。它仍然是可管理的。但是现在想象一个更大的图像,例如,300x300x3。它将有 270000 个权重(训练需要如此多的计算能力)!

像这样的庞大神经网络需要大量资源,但即便如此,仍然容易过度拟合,因为大量的参数使其能够只记住数据集。

卷积神经网络(Convolutional Neural Networks, CNN)使用参数共享。特定特征图中的所有神经元共享权重,这使得整个系统的计算强度降低。

CNN 是如何工作的?

卷积神经网络只是使用卷积的神经网络。为了理解原理,我们将首先使用二维卷积。

什么是卷积?

卷积是一种数学运算,允许合并两组信息。在 CNN 的情况下,卷积应用于输入数据以过滤信息并生成特征图。

在这里插入图片描述
此滤波器也称为内核或特征检测器,其尺寸可以是 3x3。为了执行卷积,内核遍历输入图像,一个又一个元素地执行矩阵乘法。每个感受野(发生卷积的区域)的结果都写在特征图中。

在这里插入图片描述
我们继续滑动滤波器,直到特征图完成。

填充(Padding )和步幅(Striding )

在我们进一步讨论之前,讨论填充和步幅也很有用。这些技术通常用于 CNN:

  • 填充:填充通过将假像素添加到矩阵的边框来扩展输入矩阵。这样做是因为卷积减小了矩阵的大小。例如,当筛选器经过 5x5 矩阵时,它会变成 3x3 矩阵。

  • 步幅:经常发生的情况是,在使用卷积层时,您需要获得小于输入的输出。实现此目的的一种方法是使用池化层。实现此目的的另一种方法是使用步幅。Striding 背后的想法是在内核滑过时跳过某些区域:例如,每 2 或 3 个像素跳过一次。它降低了空间分辨率,使网络的计算效率更高。

填充和步幅可以帮助更准确地处理图像。

对于现实生活中的任务,卷积通常在 3D 中执行。大多数图像具有 3 个维度:高度、宽度和深度,其中深度对应于颜色通道 (RGB)。因此,卷积滤波器也需要是三维的。以下是相同操作在 3D 中的外观。

在这里插入图片描述
卷积层中有多个滤波器,每个滤波器都会生成一个滤波器映射。因此,图层的输出将是一组相互堆叠的滤波器映射。

例如,填充 30x30x3 矩阵并通过 10 个过滤器将生成一组 10 个 30x30x1 矩阵。 将这些贴图堆叠在一起后,我们将得到一个 30x30x10 的矩阵。

这是我们卷积层的输出。

这一过程可以重复:CNN 通常具有多个卷积层。

3 层 CNN

CNN 的目标是减少图像,以便更容易处理,而不会丢失对准确预测有价值的特征。

卷积层、池化层和全连接层有三种层。

  • 卷积层负责识别像素中的特征。

  • 池化层负责使这些功能更加抽象。

  • 全连接层负责使用获取的特征进行预测。

在这里插入图片描述

卷积层

我们已经在上面描述了卷积层的工作原理。它们位于 CNN 的中心,使它们能够自主识别图像中的特征。

但是通过卷积过程会产生大量数据,这使得训练神经网络变得困难。要压缩数据,我们需要进行池化。

池化层

池化层从卷积层接收结果并将其压缩。池化层的滤波器始终小于特征映射。通常,它采用 2x2 正方形(图像块)并将其压缩为一个值。

2x2 滤波器会将每个特征图中的像素数减少到大小的四分之一。如果特征映射的大小为 10×10,则输出映射将为 5×5。

可以使用多个不同的函数进行池化。这些是最常见的:

  • 最大池化。它计算特征图的每个图像块的最大值。

  • 平均池化。它计算特征图上每个图像块的平均值。

使用池化层后,您将获得池化特征图,它们是输入中检测到的特征的汇总版本。 池化层提高了 CNN 的稳定性:如果之前像素的最轻微波动都会导致模型错误分类,那么现在卷积层检测到的输入中特征位置的微小变化将导致特征在同一位置的池化特征图。

现在我们需要将输入展平(将其转换为列向量)并将其传递给常规神经网络进行分类。

全连接层

平坦化的输出被馈送到前馈神经网络,并且在训练的每次迭代中应用反向传播。 该层为模型提供了最终理解图像的能力:每个输入像素和每个输出类之间存在信息流。

卷积神经网络的优点

卷积神经网络有几个优点,使其可用于许多不同的应用。

特征学习

CNN 不需要手动特征工程:它们可以在训练过程中掌握相关特征。 即使您正在处理全新的任务,您也可以使用预先训练的 CNN,并通过向其提供数据来调整权重。 CNN 将根据新任务进行调整。

计算效率

由于卷积过程,CNN 的计算效率比常规神经网络高得多。 CNN 使用参数共享和降维,使得模型的部署变得简单快捷。 它们可以经过优化以在任何设备上运行,甚至在智能手机上。

高精度

目前最先进的图像分类神经网络不是卷积网络。 然而,在图像和视频识别以及类似任务的大多数情况和任务中,CNN 已经统治了很长一段时间。 它们通常比非卷积神经网络表现出更高的准确性,特别是当涉及大量数据时。

卷积神经网络的缺点

然而,CNN 并不完美。即使它看起来是一个非常聪明的工具,它仍然容易受到对抗性攻击。

对抗性攻击

对抗性攻击是向网络提供 “坏” 示例(即以特定方式略微修改图像)以导致错误分类的情况。即使是像素的轻微变化也会让 CNN 发疯。例如,犯罪分子可以欺骗基于 CNN 的人脸识别系统,并在镜头前通过而不被识别。

数据密集型训练

为了让 CNN 展示他们的神奇力量,他们需要大量的训练数据。这些数据不容易收集和预处理,这可能会成为更广泛采用该技术的障碍。这就是为什么即使在今天也只有少数好的预训练模型,如 GoogleNet,VGG,Inception,AlexNet。大多数由全球公司拥有。

卷积神经网络的用途是什么?

卷积神经网络用于许多行业。以下是它们在实际应用中使用的一些常见示例。

图像分类(Image classification)

卷积神经网络通常用于图像分类。通过识别有价值的特征,CNN 可以识别图像上的不同物体。这种能力使它们在医学上很有用,例如,用于 MRI 诊断。CNN 也可用于农业。这些网络从 LSAT 等卫星接收图像,并可以使用这些信息根据耕种水平对土地进行分类。因此,这些数据可用于预测场地的肥力水平或制定最佳利用农田的策略。手写数字识别也是 CNN 最早用于计算机视觉的应用之一。

在这里插入图片描述

物体检测(Object detection)

自动驾驶汽车、人工智能监控系统和智能家居经常使用 CNN 来识别和标记物体。 CNN 可以识别照片上的物体,并实时对其进行分类和标记。 这就是自动驾驶汽车如何绕过其他汽车和行人,以及智能家居如何识别户主的脸部。

在这里插入图片描述

视听匹配(Audio visual matching)

YouTube,Netflix 和其他视频流服务使用视听匹配来改进其平台。有时用户的请求可能非常具体,例如,“关于太空僵尸的电影”,但搜索引擎应该满足这种奇特的请求。

对象重建(Object reconstruction)

您可以使用 CNN 对数字空间中的真实对象进行 3D 建模。目前,有 CNN 模型仅基于一个图像创建 3D 面部模型。类似的技术可用于创建数字孪生,这在建筑、生物技术和制造业中很有用。

语音识别(Speech recognition)和自然语言处理(Natural Language Processing)等

尽管 CNN 经常用于处理图像,但它并不是它们唯一可能的用途。CNN 也可以帮助语音识别和自然语言处理。例如,Facebook 的语音识别技术基于卷积神经网络。

总结

总而言之,卷积神经网络是计算机视觉和类似领域的一个很棒的工具,因为它们能够识别原始数据中的特征。

他们可以识别训练数据中不同像素之间的联系,并使用这些信息自行设计特征,从低级(边缘、圆圈)到高级(面部、手部、汽车)构建。

问题是这些特征对人类来说可能变得相当难以理解。此外,图像中的野生像素有时会导致新的令人惊讶的结果。

希望本篇博客对你学习卷积神经网络有所帮助!如果觉得文章不错或能帮助到你学习,可以点赞👍收藏📁评论📒+关注哦😊😊😊!后续会持续更新机器学习相关内容。

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

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

相关文章

K8s是什么?

K8s是开源的,用于管理云平台中多个主机上的容器化的应用。(docker只能是单主机上的容器化的应用) 职责:管理容器应用 目标:让部署容器化的应用简单高效 Rancher 可以通过界面管理 K8s 平台 一、让我们先来了解一个什…

nginx+lua(openresty) lua-protobuf 安装及使用(三)

前言 前2章已经讲述 openresty 安装及使用 这章主要讲述 openresty 环境下 lua-protobuf 安装及使用 1:环境 ubuntu18 lua-protobuf https://github.com/starwing/lua-protobuf protobuf https://github.com/protocolbuffers/protobuf/releases/tag/v3.9.1 ##最的版本自行选择…

科技资讯|苹果Vision Pro头显处方镜片外观曝光

苹果公司在几周前推出了售价 3499 美元的 Vision Pro 头显,这款头显可以让用户体验增强现实和虚拟现实的内容。对于许多佩戴眼镜的用户来说,他们最关心的问题是,近视眼能够使用 Vision Pro。 Vision Pro 的一个亮点是,它可以配备…

前端修改单选框和多选框的样式(美化)

html提供了单选框和多选框的写法,但是样式并不好看,如图所示: 有时候设计图并不是这样的,需要修改,比如: 这里给大家提供思路,隐藏input框,文字加label标签,使得点击文字…

SPSSPRO数据分析之——CSI指纹数据分析(预处理、降维等)

目录 一、前言 二、数据准备 三、进行预处理 四、进行降维任务 五、正态性检测 六、描述性统计 七、频数分析 八、代码功能 一、前言 SPSSPRO是一款全新的在线数据分析平台,可以用于科研数据的分析、数学建模等,对于那些不会编程或者刚进入科…

浅析数据中台

note 很多企业更倾向于数据集中采集、存储,分层建设,集中管理运营数据资产。阿里的中台是从管理的角度出发,以中台事业部集中数据搜索,技术及产品,数据共享等多个部门的功能。 文章目录 note一、数据中台1. 传统企业的…

数字孪生百科之海康威视安防系统

智能安防是指利用先进的技术手段和系统,以提升安全防护能力和监控效果的安全领域。数字化则是指将信息以数字形式进行处理和存储的过程。智能安防与数字化密切相关,通过数字化的手段和技术,可以实现对安全领域的全面监控、数据分析和智能决策…

Xcode 15 beta 2 - Apple Vision Pro安装下载

1. 更新OS系统 已更新的忽略这步 2. 下载Xcode 15 beta 2 Xcode 15 Xcode 15 让你能够开发、测试和分发适用于所有 Apple 平台的 App。借助增强的代码补齐功能、交互式预览和实时动画,更快地推进 App 的编码和设计。利用 Git 暂存功能直接改进下次要提交的文件&…

汽车通用LCD显示驱动电路芯片DP6524替代PT6524

DP6524是一款利用CMOS技术专门设计的通用LCD驱动IC,完全替代PT6524,采用单片机控制的电子调谐器。它的最大行驶速度可以达到204段输出,可控制多达12个通用输出端口。引脚分配和应用电路都进行了优化,易于PCB布局和节省成本的优势。 主要特性…

iPhone手机如何移除桌面便签软件小组件?

对于很多iPhone手机用户来说,app小组件是非常便捷实用的一个功能,它可以让用户在不打开软件的情况下查看里面的相关内容。如果在iPhone手机上添加了多个桌面便签小组件,想要移除一个的话应该怎么操作呢?以iPhone手机端敬业签便签软…

前端excel文件处理,vue2 、file-saver、xlsx, excel文件生成与excel文件链接数据导出

1、前端excel文件生成 安装插件 npm install file-saver --save如使用TS开发,可安装file-saver的TypeScript类型定义 npm install types/file-saver --save-dev下载文件流 import { saveAs } from file-saver /**** param {*} fileStream // 文件流* param {*} …

vue+leaflet地图实现根据省份区域划分颜色渐变图

效果图 实现代码如下 let separatedColors [rgb(255, 153, 209)];// 离散颜色&#xff0c;如效果图上的粉色 let maxVal 300000;// 定义一个最大值 data.forEach((item) > {for (let i 10; i > 0; i--) {if (item.us_year < maxVal * i) {item.opacity i / 10;}…

ThinkPHP-Shop2020版本的商城CMS前端SQL注入

0x01、漏洞名描述 ThinkPHP-Shop2020版本的商城CMS前端SQL注入 0x02、fofa "ThinkPHP-Shop"0x03、POC http://x.x.x.x//mobile/index/index2/id/1* 0x04、漏洞复现

数字孪生和 GIS 结合能够为智慧社区带来怎样的改变?

数字孪生和地理信息系统&#xff08;GIS&#xff09;是当今智慧社区发展中的两个重要技术&#xff0c;它们的结合将为智慧社区带来根本性的改变和巨大的发展机遇。这种结合将深刻影响社区的规划、建设、运营和管理&#xff0c;为居民创造更智能、便利、宜居的生活环境。 首先&…

Windows 10 使用Docker记录

1. 下载Docker Desktop Installer&#xff0c;按照步骤安装。 2. 安装位置只能在系统盘&#xff0c;镜像存储位置可更改&#xff0c;如下图&#xff0c;在设置中。 3. 启动桌面后会有提示&#xff0c;打开终端(cmd)&#xff0c;输入 wsl -upgrade可解决。 4. 拉取仓库中的镜像…

【C++学习】类和对象 | 拷贝构造 | 探索拷贝构造函数为什么需要引用传参 | 深拷贝 | 初识运算符重载

写在前面&#xff1a; 上一篇文章我们开始学习类内的默认成员函数&#xff0c; 这里是传送门&#xff0c;有兴趣可以去看看&#xff1a;http://t.csdn.cn/iXdpH 这篇文章我们继续来学习类和对象的知识。 目录 写在前面&#xff1a; 1. 拷贝构造 2. 拷贝构造函数为什么需…

线性回归算法实现

回归算法是一种有监督算法。 回归算法是一种比较常用的机器学习算法&#xff0c;用来建立“解释”变量(自变量X)和观 测值(因变量Y)之间的关系&#xff1b;从机器学习的角度来讲&#xff0c;用于构建一个算法模型(函 数)来做属性(X)与标签(Y)之间的映射关系&#xff0c;在算法的…

Search space set group switching(二)

R17规定UE可以根据DCI 0_2/0_1/1_1/1_2 的PDCCH monitoring adaptation field 结合具体的配置&#xff0c;对Type3-PDCCH CSS sets 或 USS sets 的acitve DL BWP进行skipping PDCCH monitoring或search space set group switch(包括2个SSSG或3个SSSG的switching)的操作。3个SSS…

腾讯云轻量应用服务器便宜是不是性能差?

腾讯云轻量应用服务器便宜&#xff1f;大揭秘&#xff01;为什么便宜&#xff1f;因为限制月流量&#xff0c;虽然公网带宽看似很大&#xff0c;有月流量限制&#xff0c;但是也不得不说&#xff0c;轻量应用服务器性价比确实高&#xff0c;大家估算下自身应用&#xff0c;如果…

打包apk时出现Execution failed for task ‘:app:lintVitalRelease

程序可以正常运行&#xff0c;但是打包apk的时候报Execution failed for task ‘:app:lintVitalRelease导致打包失败&#xff0c;原因是执行lintVitalRelease失败了&#xff0c;存在错误。解决办法&#xff1a;在app模块的build.gradle的Android里面添加如下代码&#xff1a; l…