深度学习——卷积神经网络CNN

卷积神经网络CNN

图像原理

我们眼中的图像,在计算机世界里其实是一组有序排列的数字矩阵。

对于黑白灰度图,每个像素的数值范围是 0-255,0 代表最暗的黑色,255 代表最亮的白色,整个图像就是一个二维矩阵。

彩色图像则采用 RGB 颜色模型,通过红、绿、蓝三原色的不同比例组合生成各种色彩,对应着三个并列的二维矩阵,也就是三维张量(Tensor),可以用 "宽 × 高 × 深(通道数)" 来描述,其中每个矩阵称为一个通道(Channel)。这种数字化表示是 CNN 能够处理图像的基础。

图像不变性

图像识别的核心挑战在于 "不变性"------ 一个物体无论在画面的左侧还是右侧(平移不变性)、旋转一定角度(旋转不变性)、缩放大小(尺度不变性),甚至在不同光照条件下(光照不变性),都应该被准确识别为同一物体。

希望所建立的网络可以尽可能的满足这些不变性特点

传统神经网络面对这类变体时显得力不从心,因为它会将图像像素全部摊平为一维向量输入,丢失了空间结构信息,需要海量标注数据和极深的网络才能勉强学习这些变体特征。而 CNN 通过特殊的网络结构,天然具备了学习这些不变性的能力。

如下图所示:

卷积层

什么是卷积?

对图像(不同的窗口数据)和卷积核(一组固定的权重:因为每个神经元的多个权重固定,所以又可以看做一个恒定的滤波器filter)做内积(逐个元素相乘再求和)的操作就是所谓的『卷积』操作,也是卷积神经网络的名字来源。

卷积层原理

a、步长stride:每次滑动的位置步长。

b. 卷积核的个数:决定输出的depth厚度。同时代表卷积核的个数。

c. 填充值zero-padding:在外围边缘补充若干圈0,方便从初始位置以步长为单位可以刚好滑倒末尾位置,通俗地讲就是为了总长能被步长整除。

数据窗口每次移动两个步长取3*3的局部数据,即stride=2。

两组神经元(卷积核),即depth=2,意味着有两个滤波器。

zero-padding=1

神经网络的构造

图片精通卷积核处理后的样子

与人眼观看事物原理相似,先看事物的轮廓

卷积层计算的结果

例如:输入数据为32*32*3的图像,用10个5*5*3的卷积核来进行操作,步长为1,边界0填充为2, 最终输出结果为?

(32-5+2*2)/1 +1 =32,输出规模为32*32*10的特征图

池化层

池化层的作用

一种降采样,减小数据的空间大小,因此参数的数量和计算量也会下降,这在一定程度上也控制了过拟合

常见的池化层

最大池化、平均池化、全局平均池化、全局最大池化。

平均池化(average pooling):计算图像区域的平均值作为该区域池化后的值。

最大池化(max pooling):选图像区域的最大值作为该区域池化后的值。是最为常见的。 通常来说,CNN的卷积层之间都会周期性地插入池化层。

池化层操作方法

与卷积层类似,池化层运算符由一个固定形状的窗口组成,该窗口根据其步幅大小在输入的所有区域上滑动,为固定形状窗口(有时称为 池化窗口)遍历的每个位置计算一个输出。 然而,不同于卷积层中的输入与卷积核之间的互相关计算,池化层不包含参数。

最大池化的原理分析

Max pooling的主要功能是压缩,却不会损坏识别结果。 这意味着卷积后的Feature Map中有对于识别物体不必要的冗余信息。 那么我们就反过来思考,这些"冗余"信息是如何产生的。

全连接层(Fully Connected Layer)

当抓取到足以用来识别图片的特征后,接下来的就是如何进行分类。

全连接层(也叫前馈层)就可以用来将最后的输出映射到线性可分的空间。 通常卷积网络的最后会将末端得到的长方体平摊(flatten)成一个长长的向量,并送入全连接层配合输出层进行分类。

感受野

例如图片是3通道:

卷积核为7*7的,则卷积核所需要的参数个数为:7*7=49个

卷积核为3个3*3的,则卷积核所需要的参数个数为:(3*3*3) =27

一张250*250的图片和一张500*500的图片,卷积层的权重参数数谁多?

答案:一样多

卷积神经网络的多种模型

LeNet:第一个成功的卷积神经网络应用

AlexNet:类似LeNet,但更深更大。使用了层叠的卷积层来抓取特征(通常是一个卷积层马上一个max pooling层)

ZF Net:增加了中间卷积层的尺寸,让第一层的stride和filter size更小。

GoogLeNet:减少parameters数量,最后一层用max pooling层代替了全连接层,更重要的是Inception-v4模块的使用。

VGGNet:只使用3x3 卷积层和2x2 pooling层从头到尾堆叠。 ResNet:引入了跨层连接和batch normalization。

DenseNet:将跨层连接从头进行到尾。

相关推荐
IT_陈寒3 分钟前
SpringBoot自动配置差点让我加班到凌晨
前端·人工智能·后端
yumgpkpm16 分钟前
Acceldata ODP(Open Data Platform)3.3.6.4(RHEL9)保姆级完整安装手册
大数据·人工智能·hive·hadoop·kafka·hbase·cloudera
程序员cxuan19 分钟前
腾讯又来一王炸,开源版 WorkBuddy 太夯了!
人工智能·后端·程序员
邓工说电29 分钟前
智慧断路器安全吗?数据加密、离线保护与合规认证全解读
大数据·数据库·人工智能·智能断路器·炜晔科技
阿里云大数据AI技术31 分钟前
Lance 数据检索怎么选,当然阿里云 Milvus 向量湖
人工智能
出海客33 分钟前
跨境电商多语言客服知识库怎么建:资料结构、检索边界与人工升级
大数据·人工智能
xsd202411181 小时前
从自主导航到视觉读表:一台工业巡检机器人的全栈技术链路拆解
人工智能
袁哥大话安全1 小时前
巡隐WEBSHELL扫描软件
人工智能·安全·web
论文复现现场1 小时前
8卡4090能跑70B吗?Llama-2显存预算、QLoRA与通信瓶颈
人工智能·深度学习·分布式训练·llama·显存·qlora·算家云
酷虎软件1 小时前
如何用AI创作AI歌曲AI音乐
人工智能