深度学习(2)--卷积神经网络(CNN)

卷积神经网络(Convolutional Neural Networks)是一种深度学习模型或类似于人工神经网络的多层感知器,常用来分析视觉图像。

一.卷积神经网络基础概念

传统网络是二维的,而卷积网络是三维的。

例如32x32x3的图片,在传统网络中的输入是3072个像素点组合的矩阵,而在卷积网络中则是直接接受该特征图作为输入。

(1). 卷积是为了提取图像特征,通过卷积层,可以自动提取图像的高维度且有效的特征

(2). 池化主要是为了减少卷积层提取的特征个数,增加特征的鲁棒性或是为了降维

二.输入层 

数据输入层的主要目的是对原始图像数据进行预处理,其中包括:

1.去均值:把输入数据各个维度都中心化为0,如下图所示,其目的就是把样本的中心拉回到坐标系原点上。

2.归一化:幅度归一化到同样的范围,如下所示,即减少各维度数据取值范围的差异而带来的干扰,比如,我们有两个维度的特征A和B,A范围是0到10,而B范围是0到10000,如果直接使用这两个特征是有问题的,好的做法就是归一化,即A和B的数据都变为0到1的范围。

原图→去均值→归一化过程

3.PCA/白化:用PCA降维;白化是对数据各个特征轴上的幅度归一化。

PCA降维参考资料:

【机器学习】降维——PCA(非常详细) - 知乎 (zhihu.com)icon-default.png?t=N7T8https://zhuanlan.zhihu.com/p/77151308原图→PCA降维→白化过程

三.卷积层

卷积的计算:

(1).左侧的三张图表示的是输入图片的三种颜色通道表示(eg.R,G,B),对应的卷积过程中使用的权重矩阵也需要有三种颜色通道(输入矩阵和权重矩阵的颜色通道参数应当相同) 。

(2).原始图像中选择的矩阵大小取决于Filter权重矩阵的大小,即取决于权重矩阵的前两个参数。

(3).同一个输入数据在不同的颜色通道中的像素点是不同的,对于每个颜色通道的数据需要设置不同的权重矩阵来进行过滤。

(4).输入矩阵和权重矩阵的计算通过内积来完成:即矩阵上的对应位置相乘然后再相加。

(5).通过权重矩阵过滤后得到的输出值应当是三个颜色通道分别计算出的过滤值相加再加上偏置值。

eg.如图对Input进行Filter W0计算,对于第一块选中的3x3的矩阵,Input的三个颜色通道矩阵和W0的三个颜色通道矩阵分别进行内积,得到的结果为0+2+0=2,再加上偏置值,此处设置为1,所以得到的Output矩阵中的第一个位置的值为2+1=3。

(6).每一个过滤器都能获得一个特征图,因此特征图的数量与过滤器的数量是相同的。

卷积层涉及参数:

(1).滑动窗口步长:选取的矩阵每次上下平移的单元格数量

(2).卷积核尺寸:即选择的卷积核的大小。

(3).边缘填充:边界的点对结果的影响较小,中间的点对结果的影响较大,为了使边界的点能够起到的作用更大,增加边缘填充(加一圈0,对结果没有影响),使原本边界的点能够利用的次数增多,对结果起到更大的作用。

如图,原始矩阵应当是一个5x5x3的矩阵,通过+pad 1即增加一层边缘填充,扩大成一个7x7x3的矩阵。

(4).卷积核个数:与想要得到的特征图个数相同,每个卷积核的数据都是不同的。

卷积结果计算公式:

(1).通过卷积结果计算公式计算输出特征图的长度和宽度。

(2).输出特征图的深度和卷积核的个数相同。

四.池化层

池化层夹在连续的卷积层中间, 用于压缩数据和参数的量,减小过拟合。

常用的池化方法:MAX POOLING

 选择分块矩阵中最大的特征值作为压缩矩阵的值。(较大的特征值更加重要)

五.整体网络架构

1.经过每个卷积层计算后都需要进行一次非线性变换(CONV → RELU)。

2.执行了几次卷积过程后,得到较大的特征图,再进行池化POOLING压缩。

3.最后一层通过全连接层(Fully Connected Layer)将特征值转换为对应类别的概率值。

eg.卷积最后得到一个32x32x10的三维特征图,而全连接层不是三维的,所以要将三维特征图拉长成一个[1,10240]的向量,全连接向量为[10240,5],两者向量相乘得到最后的分类结果。

4.层数一般就是指具有权重/参数的层数总和,即卷积层+全连接层,上图中的卷积神经网络中有6(卷积层) + 1(全连接层)=7 层。

 六.感受野

感受野(Receptive Field)的定义:卷积神经网络每一层输出的特征图(feature map)上的像素点映射回输入图像上的区域大小

如上图所示,第二次卷积得到的1x1的图像的感受野为5x5:Second Conv对应的First Conv的部分为3x3,First Conv对应Input的部分为5x5,所以Second Conv得到的图像的感受野为5x5。

感受野的计算:

由卷积计算公式反推出感受野计算公式:

N=(W-F+2P)/S+1 → W+2P=(N-1)*S+F(从下往上逐层递推)

其中N为输出特征图的长/宽,W为输入的长/宽,F表示本层卷积核的长/宽,P表示边界填充,S为滑动窗口步长。

eg.Second Conv → First Conv:(W+2P)1 = (1-1) * 0 + 3 = 3 ,所以感受野为3x3,First Conv → Input :(W+2P)2 = (3-1)*1 + 3 = 5,所以最终的感受野为5x5。

1.感受野大小的计算是从最后一层feature map开始,从下往上逐层递推进行计算即先计算最深层在前一层上的感受野,然后以此类推逐层传递到第一层。

2.感受野大小的计算不考虑padding的大小。

3.最后一层的特征图感受野的大小等于其卷积核的大小。(最后一层特征图的大小为1x1)

4.第i层特征图的感受野大小和第i层的卷积核大小和步长有关系,同时也与第(i+1)层特征图的感受野大小有关。

感受野的作用:

1.堆叠小的卷积核所需要的参数更少一些。

eg.假设输入大小均为h*w*c,并且都使用c个卷积核(得到c个特征图)

一个7*7卷积核所需参数:C x (7x7xC) = 49C^2 -- 一次卷积

三个3*3卷积核所需参数:3 x C x (3x3xC) = 27C^2 -- 三次卷积

2.卷积过程越多,特征提取的也更加细致,过程中使用的非线性变换也更多。(每次卷积后需要使用激活函数进行一次非线性变换)

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

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

相关文章

阿里云云原生弹性方案:用弹性解决集群资源利用率难题

作者:赫曦 随着上云的认知更加普遍,我们发现除了以往占大部分的互联网类型的客户,一些传统的企业,一些制造类的和工业型企业客户也都开始使用云原生的方式去做 IT 架构的转型,提高集群资源使用率也成为企业上云的一致…

告别繁琐配置!JVS低代码逻辑引擎让你轻松实现高效数据处理

在当今高度数字化的世界中,逻辑引擎作为数据处理和业务逻辑的核心组件,其重要性不言而喻。它不仅关乎企业数据的准确处理,还影响着业务决策的效率和准确性。为了确保逻辑引擎的正常运行和准确性,配置和测试环节显得尤为重要。 本…

C++ 类与对象Oop

类与对象Oop 一、类:用户定义的数据类型,用于封装数据和方法1.1 对比结构体警告-->主要目的:初始化 1.2 定义类的过程并定义一个对象1.2.1 定义类例子 1.2.2 定义一个对象1.2.3 注意事项例子1.2.4 分成头文件和源文件的方式(0&…

k8s之对外服务ingress

一、service 1、service作用 ①集群内部:不断跟踪pod的变化,不断更新endpoint中的pod对象,基于pod的IP地址不断变化的一种服务发现机制(endpoint存储最终对外提供服务的IP地址和端口) ②集群外部:类似负…

canal调度控制器CanalController源码分析

canal调度控制器初始化: public CanalController(final Properties properties) 1. 初始化instance公共全局配置: canal.instance.global.(mode、lazy、manager.address以及spring.xml,并放入内存 InstanceConfig globalInstanceConfig; …

看完买,开放式耳机质量榜单:南卡夺冠、韶音第5、Cleer排第7

​作为一名拥有丰富经验的开放式耳机用户,我想在此提醒大家,选择耳机时,千万不要盲目跟风或过于信赖所谓的“网红”或“大牌产品”。毕竟,每个人的需求和使用环境都是独一无二的,因此,适合自己的耳机才是最…

AP5191DC-DC宽电压LED降压恒流驱动器

产品描述 AP5191是一款PWM工作模式,高效率、外围 简 单、外置功率MOS管,适用于4.5-150V输入的高 精度降压LED恒流驱动芯片。输出最大功率150W, 最大电流6A。 AP5191可实现线性调光和PWM调光,线性 调 光脚有效电压范围0.55-2.6V. AP519…

centos7 arm服务器编译安装PaddlePaddle

前言 随着国产服务器发展,部署项目需要用在国产服务器上,官方教程里面很多没有讲解到,安装过程中出现了各种各样的问题,以下是对官方教程的补充,有什么问题,欢迎指正! 一、环境准备 gcc: 8.2版…

(工具变量)各地区-距沿海港口最短距离汇总数据集

全国各省距沿海港口最短距离数据提供了中国各省份与最近海港之间的最短地理距离信息。这些数据对于理解和分析中国各省的地理优势、物流效率以及对外贸易潜力有一定帮助。沿海港口作为国际贸易的重要节点,其距离对于省份的出口入口物流成本、运输时间以及总体贸易便…

vue $attrs和$listenners

Vue2.x 中的a t t r s 和 attrs和attrs和listeners 或许很多Vue小白跟我一样, 在之前不太了解a t t r s 和 attrs和attrs和listenners这两个API是干嘛的, 甚至没有听过或者使用过。下面我来浅述一下我对这两个API的理解。 下文将基于下面这张图片来进行解释,现在我…

《Python数据分析技术栈》第01章 02 Jupyter入门(Getting started with Jupyter notebooks)

02 Jupyter入门(Getting started with Jupyter notebooks) 《Python数据分析技术栈》第01章 02 Jupyter入门(Getting started with Jupyter notebooks) Before we discuss the essentials of Jupyter notebooks, let us discuss…

VSCode使用Makefile Tools插件开发C/C++程序

提起Makefile,可能有人会觉得它已经过时了,毕竟现在有比它更好的工具,比如CMake,XMake,Meson等等,但是在Linux下很多C/C源码都是直接或者间接使用Makefile文件来编译项目的,可以说Makefile是基石…

RT Thread Stdio生成STM32L431RCT6工程后如何修改外部时钟

一、简介 RT Thread Stdio生成STM32L431RCT6工程后默认为内部时钟,如何修改为外部时钟呢? 二、修改时钟步骤 本方案修改外部时钟为直接修改代码,不通过STM32CubeMX 进行配置(使用这个软件会编译出错) (…

AEB滤镜再破碎,安全焦虑「解不开」?

不久前,理想L7重大交通事故,再次引发了公众对AEB的热议。 根据理想汽车公布的事故视频显示,碰撞发生前3秒,车速在178km/h时驾驶员采取了制动措施,但车速大幅超出AEB(自动紧急刹车系统)的工作范…

为什么 Golang Fasthttp 选择使用 slice 而非 map 存储请求数据

文章目录 Slice vs Map:基本概念内存分配和性能Fasthttp 中的 SliceMap性能优化的深层原因HTTP Headers 的特性CPU 预加载特性 结论 Fasthttp 是一个高性能的 Golang HTTP 框架,它在设计上做了许多优化以提高性能。其中一个显著的设计选择是使用 slice 而…

用sdkman在linux上管理多个java版本

概述: SDKMAN 是一个用于管理软件开发工具的工具,允许您轻松地安装、升级和切换不同版本的 JDK、Maven、Gradle 等工具。以下是在 Linux 上安装 SDKMAN! 的基本步骤: 安装SdkMan 使用 curl 安装 SDKMAN!: 打开终端,并运行以下命…

SpringCloud之Nacos

一、微服务介绍 1. 什么是微服务 2014年,Martin Fowler(马丁福勒 ) 提出了微服务的概念,定义了微服务是由以单一应用程序构成的小服务,自己拥有自己的进程与轻量化处理,服务依业务功能设计,以全自动的方式部署,与其他服务使用 HTTP API 通信。同时服务会使用最小的规模…

eNSP学习——配置通过Telnet登陆系统

实验内容: 模拟公司网络场景。R1是机房的设备,办公区与机房不在同一楼层,R2和R3模拟员工主机, 通过交换机S1与R1相连。 为了方便用户的管理,需要在R1上配置Telnet使员工可以在办公区远程管理机房设备。 为…

德施曼智能锁×去哪儿跨界联名,送你一场说走就走的新年旅行~

2024年农历新年即将来临,智能锁行业领军企业德施曼携手中国领先在线旅游平台去哪儿,紧扣“旅游过年”的新年趋势,推出“新年去哪儿,德施曼替你看家”跨界联名活动,为广大用户带来一场说走就走的旅行。 德施曼X去哪儿 …

学习笔记之——3D Gaussian SLAM,SplaTAM配置(Linux)与源码解读

SplaTAM全称是《SplaTAM: Splat, Track & Map 3D Gaussians for Dense RGB-D SLAM》,是第一个(也是目前唯一一个)开源的用3D Gaussian Splatting(3DGS)来做SLAM的工作。 在下面博客中,已经对3DGS进行了…