CNN概述

CNN

卷积神经网络简介

  • 特点
    • 将大数据量的图片降维成小数据量
    • 有效保留图片特征
  • 应用领域
    • 人脸识别、自动驾驶、无人安防
  • CNN解决的问题
    • 图像的数据量太大,导致成本很高,效率很低
    • 图像在数字化的过程中容易丢失特征
    • (其实就对应了两个特点)

下面具体看一下这两个问题

数据量大

图像是由很多像素构成的,每个像素又是由颜色构成的。一张彩色图,每一个像素都有RGB(即光学三原色)三个通道,用于表示颜色信息。所以,对于一张常见的1000*1000清晰度的图片,就会含有1000*1000*3个数值需要计算,这显然是一个庞大的数据。

为了解决此问题,CNN将大量参数降维成少量参数。

需要说明的是,降维并不会影响结果。就比如将一张图像在一定范围内缩小,图像的特征仍然不会改变。

保留图像特征

图像简单数字化无法保留图像特征

如果简单地将图像的特征01化,即有圆形的地方为1,其余地方为0。则对于特征相近的图像(比如平移),则数字化的矩阵会有很大区别。

为解决此问题,CNN用视觉的方式保留图像特征,即模仿人的肉眼去提取、存留特征。

人的视觉原理

深度学习的理论研究,很大程度上是对人视觉的模仿。

人类视觉如何运作?

人类视觉原理1

首先摄入原始信号(即各种颜色的像素点),然后提取不同物体间的分界,接着识别图像的抽象(如几何形状),最后判断物体。

对应成图像处理的步骤:读取图像并数值化、提取图像边缘、提取图像特征、图像分类。

所以一个图像处理的思路是:构造多层的神经网络,较低层提取初级的图像特征,较高层进一步细化,最终在顶层实现图像的分类。

CNN基本原理

  • CNN三个基本组成部分
    • 卷积层:提取图像局部特征
    • 池化层:数据降维
    • 全连接层:输出结果

卷积层

核心部分是一个卷积核,滑窗处理。大致思路是用一个卷积核来过滤图像的各个区域,得到这些小区域的特征值

卷积层运算过程

具体计算过程为对应项相乘然后相加。

img

(32*32*3->28*28*1)

在具体应用中,往往有多个卷积核,可以认为,每个卷积核代表了一种图像模式,**如果某个图像块与此卷积核卷积出的值大,则认为此图像块十分接近于此卷积核。**如果我们设计了6个卷积核,可以理解:我们认为这个图像上有6种底层纹理模式,也就是我们用6中基础模式就能描绘出一副图像。比如说垂直边缘、水平边缘等。

img

如果使用6个卷积核提取,最终得到6个特征图,叠加在一起就得到了卷积层。

img

同时可以对卷积层继续进行卷积操作。注意每一个卷积核的深度和上一层的输入相等。经过连续的卷积不断提炼出高层次的特征,一步步将特征浓缩,得到高层次特征,最终达到分类效果。

可以发现,其实卷积层已经将图像缩小了一圈(如果不加边框),但是效果并不明显。

在了解卷积的大致过程后,还有一些细节部分需要思考。

  • 卷积核每次滑动的步长stride
    • 步长如果太大,比如大于卷积核的长度,则会遗漏一些像素点,导致特征损失。
    • 步长如果太小,比如为1,则效率太低。
  • 卷积对每个像素点是否平权
    • 由于滑窗的交集部分是计算了多次的,所以边缘的像素点计算次数少于中间的像素点。所以可能会丢失一部分边缘信息。
    • 解决方法是在图像外围加一圈0(或多圈),使得在不影响特征的情况下,增加边缘像素点的计算次数。

img

  • 由于卷积的过程是多次叠加的,所以需要计算卷积过程中每一次的输入图尺寸,来设计卷积核。

    h o u t = h i n − F i l t e r + 2 P a d S t r i d e + 1 h_{out}=\frac{h_{in}-Filter+2Pad}{Stride}+1 hout=StridehinFilter+2Pad+1

    w o u t = w i n − F i l t e r + 2 P a d S t r i d e + 1 w_{out}=\frac{w_{in}-Filter+2Pad}{Stride}+1 wout=StridewinFilter+2Pad+1

  • 权值共享

    • 同一卷积过程中,filter内的值不变,即对于每一时刻滑窗对应的矩阵,各个位置的参数对于结果的权重保持一致。

前向传播和反向传播

  • 前向传播即是卷积的操作。(输入->输出)

本质是用输入层和卷积核去求解卷积结果。 w [ i ] w[i] w[i]表示第i个卷积核。

img

  • 反向传播

本质是已知卷积结果,去更新 w w w的过程。

img

具体过程以后再补充。

提取边缘特征

  • 为什么中间的卷积核可以提取垂直边缘?

在颜色相近的区域,矩阵内的值相近,卷积计算的结果小,表现为暗色;在颜色区别明显的区域(可以认为是边缘),卷积计算结果大,表现为白色。

  • 垂直边界和水平边界

一个物体的边界可以看成由许多小的垂直边缘和水平边缘组成。

这里写图片描述

偏差值和激活函数

  • 卷积计算后还需加入偏差 b b b,计算出新矩阵放入激活函数(Relu、Softmax、logistic等),作为卷积层的输出结果。

池化层(下采样)

池化层可以大大降低数据的维度,也可以有效避免过拟合。如下图(20*20->2*2)

池化层过程

池化的大致过程:选取输入图中某个区域的最大值或均值来代替整个区域。在一幅图像中提取最大值可能意味着提取了某些特定特征,如垂直边缘、一只眼睛等。

img

全连接层

经过卷积层和池化层降维过的数据,全连接层才能”跑得动”,不然数据量太大,计算成本高,效率低下。

全连接层

典型的 CNN 并非只是上面提到的3层结构,而是多层结构,例如 LeNet-5 的结构就如下图所示:

卷积层 – 池化层- 卷积层 – 池化层 – 卷积层 – 全连接层

LeNet-5网络结构

img

也就是说卷积和池化重复出现,避免一次池化降维太快,导致特征损失。

参考博客参考博客

  • 4
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
CNN,即卷积神经网络(Convolutional Neural Networks),是一种深度学习模型,广泛应用于图像识别、处理和分类任务。它是深度学习领域的一个重要分支,与传统的神经网络相比,CNN通过引入卷积层,可以更好地处理局部和上下文信息,并且具有很好的空间适应性。 CNN的主要特点包括: 1. 卷积层:CNN的核心在于卷积层,该层利用滑动窗口在输入数据上滑动,同时对窗口附近的像素进行加权平均得到该位置的卷积结果。这种操作能够有效地捕捉输入数据中的局部和上下文信息。 2. 池化(Pooling)技术:卷积神经网络通常结合池化技术以减少特征地图的大小,并保持某些区域的权重比其他区域更高,这在神经网络中引入了空间下的“稀疏性”。 3. 深度:CNN通常具有多层的卷积层和池化层,这使得CNN具有很强的特征学习和分类能力。随着网络深度的增加,CNN能够学习到越来越复杂的特征表示。 4. 适应性:CNN对输入数据的形状具有适应性,这意味着它可以轻松处理不同形状和大小的输入数据。 卷积神经网络计算机视觉、自然语言处理、机器人视觉等领域有广泛应用,尤其是在图像分类、目标检测、图像生成等领域表现出了强大的性能。虽然CNN已经取得了许多成功,但它仍在不断发展和改进,如使用自注意力机制、跨通道信息融合等新技术,以进一步提高性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值