YOLOv5基础知识点——卷积神经网络

一文看懂卷积神经网络-CNN(基本原理+独特价值+实际应用)- 产品经理的人工智能学习库 (easyai.tech)

人类的视觉原理如下:从原始信号摄入开始(瞳孔摄入像素 Pixels),接着做初步处理(大脑皮层某些细胞发现边缘和方向),然后抽象(大脑判定,眼前的物体的形状,是圆形的),然后进一步抽象(大脑进一步判定该物体是只气球)。下面是人脑进行人脸识别的一个示例: 

YOLOv5基础知识点——卷积神经网络_第1张图片

 深度学习算法(包括CNN)的灵感来源:模仿人类大脑的这个特点,构造多层的神经网络,较低层的识别初级的图像特征,若干底层特征组成更上一层特征,最终通过多个层级的组合,最终在顶层做出分类

YOLOv5基础知识点——卷积神经网络_第2张图片

 卷积层负责提取图像中的局部特征;池化层用来大幅降低参数量级(降维);全连接层类似传统神经网络的部分,用来输出想要的结果。


卷积——提取特征

YOLOv5基础知识点——卷积神经网络_第3张图片

 这个过程我们可以理解为我们使用一个过滤器(卷积核)来过滤图像的各个小区域,从而得到这些小区域的特征值。

在具体应用中,往往有多个卷积核,可以认为,每个卷积核代表了一种图像模式,如果某个图像块与此卷积核卷积出的值大,则认为此图像块十分接近于此卷积核。

YOLOv5基础知识点——卷积神经网络_第4张图片

 CNN中feature map、卷积核、卷积核个数、filter、channel的概念解释,以及CNN 学习过程中卷积核更新的理解_xys430381_1的博客-CSDN博客_卷积核个数

卷积核

卷积核也称为过滤器(filter),具有长宽深三个维度,长宽是人为指定,深度与当前图像的深度相同。

YOLOv5基础知识点——卷积神经网络_第5张图片

 CNN中feature map、卷积核、卷积核个数、filter、channel的概念解释,以及CNN 学习过程中卷积核更新的理解_xys430381_1的博客-CSDN博客_卷积核个数

 漫画:卷积神经网络中的卷积核到底是什么? - 知乎 (zhihu.com)

YOLOv5基础知识点——卷积神经网络_第6张图片

对于不能识别的特征,计算值非常小:

YOLOv5基础知识点——卷积神经网络_第7张图片

 综上,提取图片特征的关键,是设计合理的卷积核,做完卷积后,再经过池化,就可以得到相应的值。

为什么要卷积?

YOLOv5基础知识点——卷积神经网络_第8张图片

 用输出图像中更亮的像素表示原始图像中存在的边缘。通常,卷积有助于我们找到特定的局部图像特征(如边缘),用在后面的网络中。

总结:卷积层的通过卷积核的过滤提取出图片中局部的特征,跟上面提到的人类视觉的特征提取类似。


池化层(下采样)——数据降维,避免过拟合

YOLOv5基础知识点——卷积神经网络_第9张图片

 上图就是一个池化的示意图,用了一个10*10的卷积核,对20*20的图像分块不重叠的进行了池化,池化之后featuremap为2*2的大小。

(34 封私信 / 80 条消息) 池化是什么意思? - 知乎 (zhihu.com)

池化也称下采样层,会压缩输入的特征图,一方面减少特征,导致参数减少,进而简化了卷积网络计算时的复杂度;另一方面保持了特征的某种不变性(旋转、平移、伸缩等)。

池化操作组要分为两种:平均池化、最大池化

YOLOv5基础知识点——卷积神经网络_第10张图片

YOLOv5基础知识点——卷积神经网络_第11张图片

 为什么要池化?

图像中的相邻像素倾向于具有相似的值,因此通常卷积层相邻的输出像素也具有相似的值。这意味着,卷积层输出中包含的大部分信息都是冗余的。如果我们使用边缘检测滤波器并在某个位置找到强边缘,那么我们也可能会在距离这个像素1个偏移的位置找到相对较强的边缘。但是它们都一样是边缘,我们并没有找到任何新东西。池化层解决了这个问题。这个网络层所做的就是通过减小输入的大小降低输出值的数量

池化(下采样)是什么?图像池化与卷积的区别_Dontla的博客-CSDN博客_池化下采样

总结:池化层相比卷积层可以更有效的降低数据维度,这么做不但可以大大减少运算量,还可以有效的避免过拟合。


全连接层——输出结果

YOLOv5基础知识点——卷积神经网络_第12张图片

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

典型的 CNN 并非只是上面提到的3层结构,而是多层结构。

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

YOLOv5基础知识点——卷积神经网络_第13张图片

全连接层详解_pogg_的博客-CSDN博客_全连接层

全连接层(fully connected layers,FC)在整个卷积神经网络中起到“分类器”的作用。如果说卷积层、池化层和激活函数等操作是将原始数据映射到隐层特征空间的话,全连接层则起到将学到的“分布式特征表示”(下面会讲到这个分布式特征)映射到样本标记空间的作用。在实际使用中,全连接层可由卷积操作实现:

对前层是全连接的全连接层可以转化为卷积核为1x1的卷积;而前层是卷积层的全连接层可以转化为卷积核为hw的全局卷积,hw分别为前层卷积结果的高和宽。

全连接的核心操作就是矩阵向量乘积 y = Wx

深入理解卷积层,全连接层的作用意义_向阳+的博客-CSDN博客_卷积池化全连接的作用
卷积取的是局部特征,全连接就是把以前的局部特征重新通过权值矩阵组装成完整的图。

例如经过卷积,relu后得到3x3x5的输出。

那它是怎么样把3x3x5的输出,转换成1x4096的形式?

很简单,可以理解为在中间做了一个卷积。

从上图我们可以看出,我们用一个3x3x5的filter 去卷积激活函数的输出,得到的结果就是一个fully connected layer 的一个神经元的输出,这个输出就是一个值。因为我们有4096个神经元。我们实际就是用一个3x3x5x4096的卷积层去卷积激活函数的输出。

这样做,有一个什么好处就是大大减少特征位置对分类带来的影响

从上图我们可以看出,猫在不同的位置,输出的feature值相同,但是位置不同。

对于电脑来说,特征值相同,但是特征值位置不同,那分类结果也可能不一样。

这时全连接层filter的作用就相当于喵在哪我不管,我只要喵,于是我让filter去把这个喵找到,实际就是把feature map 整合成一个值,这个值大,有喵,这个值小,那就可能没喵和这个喵在哪关系不大了,鲁棒性有大大增强。

全连接层参数特多(可占整个网络参数80%左右)

全连接层对模型影响参数就是三个:

  1. 全接解层的总层数(长度)
  2. 单个全连接层的神经元数(宽度)
  3. 激活函数

总结:全连接层的作用就是通过特征提取,实现分类

你可能感兴趣的:(机器视觉,深度学习,神经网络,cnn)