美文网首页
PART 4 W1 卷积神经网络介绍

PART 4 W1 卷积神经网络介绍

作者: 迪丽娜扎 | 来源:发表于2019-12-09 00:27 被阅读0次

1.1 计算机视觉的两类最常见场景

一个是图像分类:如猫脸识别等;一个是目标检测:如无人驾驶技术中的各种交通信号检测技术

1.2 ~ 1.3 以边缘检测为例讲解“卷积”

1. 卷积操作及过滤器/卷积核的概念

如上图所示:最左侧矩阵是一个灰度图像,中间是一个3*3的小矩阵,称为“卷积核”或“过滤器”。

卷积:先把卷积核放到灰度图像左上角(绿色框),盖住灰度图像上一个3*3的矩阵区域,然后9对对应的元素相乘,然后求和(得到0),然后把卷积核逐渐移动一行一行的“扫描”,最终得到最右侧矩阵。上述操作叫做“卷积”,最右侧矩阵是卷积的输出。

2. 垂直边缘检测

仍以上图为例,可以看到3*3的卷积核具体的数值构成为“左边一列1,中间一列0,右边一列-1”,这种卷积核在“扫描”灰度图像时,可以检测到灰度图像的垂直边缘。分析如下:

1)假设正在扫描的灰度区域没有垂直边缘,意味着区域内的值在左右方向上分布差不多,与卷积核做完运算后,左边的乘1,右边的乘-1,相加正好有一定的抵消作用,其实计算出来的结果会接近0。即:卷积结果接近0代表没有边缘。

2)有垂直边缘分为两种情况:目标区域“左边值较大,右边值较小” 或“左边值较小,右边值较大”。前一种情况在卷积操作后会得到一个较大的正值,后一种情况卷积操作后会得到一个较大的负值。

可以看出,较大的正值代表着目标区域的变化趋势与卷积核相同,即检测到的是与卷积核相同的边缘,而较大的负值代表目标区域的变化趋势与卷积核相反,即检测到的是与卷积核相反的边缘。

3. 卷积应用在卷积神经网络中

卷积操作如何应用于神经网络中?简言之,卷积核本身就是网络要学习的参数。如上图所示,我们并不是事先设定好要检测垂直边缘或水平边缘或其它什么边缘,而是要网络去学习要检测什么东西。

1.4  卷积操作之Padding

1. padding的原因

在上节展示的卷积操作中,可以看出,假设输入图像的大小为n*n,而卷积核的大小为f*f,那么卷积核从输入图像的左上角扫描到右下角,最终得到的结果大小为(n-f+1)*(n-f+1),意味着如果一次次进行卷积,那么结果的尺寸会越来越小

另外,显然输入图像边缘的像素被使用的较少(最边缘的像素仅被使用一次),这显然会造成信息的丢失。

2. 如何进行padding

非常简单:把输入图像的四周补充p = (f-1)/2 圈的0,这样输入的图像尺寸变成了(n+2p)*(n+2p),因此卷积后的大小变成了(n+2p -f + 1)*(n+2p -f + 1)=n*n,即与原始的图像有了相同的大小,且原始图像边缘的像素也被较多的利用到。

3. 几点补充

(1)卷积核的尺寸设置为奇数:因为① 这样(f-1)/2就恰好是整数了,方便进行padding,② 有中心像素,便于表征卷积核的位置,等。

(2)根据是否进行padding,分为 普通卷积(valid) 和 同尺寸卷积(same)

1.5 卷积操作之“步长”

1. 步长概念

在上文中讲到卷积,即使用一个卷积核对输入图像进行“扫描”并进行相应计算时,提到这个“扫描”是逐个像素逐个像素的迈进的。但是,并不一定非得这样,也可以每次跨越两个或更多个像素,这就是“步长”的概念,一般用s表示

2. 卷积结果尺寸与步长的关系

前文提到,若输入图像尺寸为n*n,卷积核尺寸为f*f,则卷积结果尺寸为(n+f-1)*(n+f-1),若算上padding操作,则结果为(n+2p -f + 1)*(n+2p -f + 1)。这是在步长s=1的前提下成立。若步长不为1,则结果为floor((n+2p-f)/s+1)**2

3. 其它:数学中的卷积和神经网络中的卷积

需要说明的是,神经网络中所说的卷积和数学中说的卷积不是一回事,但数学中的卷积是啥就不追究了。

神经网络中的卷积操作,在数学的描述上,更像是一种“交叉相关性”的计算,可以看出,若目标区域与卷积核有类似的分布,则会计算出较大的正值(正相关),若有相反的分布,则会计算出较大的负值(负相关),若没什么关系,则会计算出接近0的值(不相关)。卷积操作的确很像一种相关性的计算。

1.6 对于彩色图像(立体矩阵)的卷积

1. RGB图像的数学构成

灰度图像是一个n*n的二维矩阵,彩色图像则是n*n*3 的三维矩阵,最外围的三个维度分别代表了RGB三原色的值,其中数字“3”在卷积神经网络中被称为通道数或信道数

2. 对RGB图像进行卷积

在对灰度图像进行卷积时,使用的是f*f的二维卷积核。在对RGB图像进行卷积时,则卷积核的维度也+1,变成了f*f*3。一次卷积的结果仍然是把所有的值加起来输出一个值。即:一个三维的图像,和一个三维的卷积核,在进行完卷积操作后,输出的是一个二维的矩阵(如上图)

3. 当使用多个卷积核时的输出

如上图所示,可以使用多个卷积核(一个亮黄色,一个屎黄色)。根据前文描述,一个立体的卷积核在一个立体的矩阵上扫描完,结果是一个二维的。但当使用多个卷积核时,则输出了多个二维矩阵,这些二维矩阵沿着第三个维度排列到一起,使得结果重新变成了三维。此时,第三个维度的尺寸,反应的是卷积核数,也就是说卷积核数就是信道数。直观理解,每一个卷积核代表着检测了某一种特征,多个卷积核就是同时检测了多种特征,传递了多种信息。

1.7 CNN中的一个卷积层

1. 一个卷积层的数据的基本流

如上图所示,由于卷积核本身就是一堆待学参数w,所以卷积操作本质还是“加权求和”,之后会加入偏置值,然后进行非线性变换,然后输出(到下一层),可见还是那一套。

需要提一下的是,卷积的输入不一定是原始图像构成的矩阵,还有可能是上一个卷积的结果。原始图像是彩色的,有多个通道。卷积时可以用多个卷积核,最终产生的结果也是立体的。因此原始的输入与中间卷积层的输出,在数学形式上是统一的。因此可以“输入->卷积层->卷积层->...”这样操作。

2. 卷积层的参数规模

一个卷积层总的参数规模(包括w,不包括b)为:f^{[l]}*f^{[l]}*n^{[l-1]}_{C}*n^{[l]}_{C},即:卷积核的大小的平方*上层输出的通道数)*本层所用的卷积核数。与上层输入的大小无关(但与通道数有关)

3. 一个卷积层涉及到的超参

卷积核的大小、是否padding、步长、卷积核数。

1.8 简单的卷积神经网络示例

1. 一个示例

上图为一个简单的卷积神经网络示例: 一层一层的卷积,最后把所有的元素展开成一个一维向量,然后加一个全连接层。

2. 注意以下几点:

1⃣️ 实际上CNN会有卷积层、池化层、全连接层,而非仅有卷积和全连接;

2⃣️ 从数据的构成形式上看,按照网络从前往后的顺序,图片尺寸不断减小,信道数量不断增加。一般遵从这个趋势。

1.9 池化层

1. 池化

如上图所示,假设输入是一个4*4的矩阵,现在我们把它分割成2*2四个子矩阵(或者说使用一个2*2的核以2为步长扫描矩阵),对四个子区域分别求最大值,最终得到一个值为9、2、6、3的2*2的矩阵输出。这种操作就叫池化,具体为最大值池化。

2. 池化的作用

1⃣️ 一般来说,较大的值往往代表学到了一个重要或典型的特征,把原始输入以某种方式滤除掉一些不重要的值,只保留一些较大的值,相当于强化了一些重要信息的表达。2⃣️ 降低图片的尺寸,可以节省空间、加速运算等。

3. 池化的特点

并没有需要学习的参数(w、b之类的),也因此“池化层”一般并不被称为单独的一层。在卷积神经网络中,通常把一个卷积层+一个池化层的组合叫一层。

4. 池化的超参数及经验值

池化层没有要学习的参数,只有核心的两个超参:池化核的大小、池化步长。此外还有池化所用的reduce操作:最大或者平均(没有其它选项)。

一般把池化核的大小设置为3或2,步长为2。注意:步长为2意味着把图片减小到原来的一半。

reduce操作最常用最大池化,偶尔用平均池化,不会用其它操作。

1.10 一个典型的卷积神经网络示例

上图为一个典型的卷积神经网络示例,描述如下:

输入层:彩色的手写数字图片,数学构成为32*32*3的矩阵,其中3为通道数。

Layer 1-卷积层:1)使用6个5*5*3的卷积核,以步长为1对输入层进行卷积,输出28*28*6的矩阵,2)然后使用2*2的最大池化,步长为2,最终输出14*14*6的矩阵。其中14为图片尺寸,6为信道数。

Layer2-卷积层:1)使用16个5*5*3的卷积核以步长1对上层输出进行卷积,输出10*10*16的矩阵,2)然后使用2*2的最大池化,步长为2,最终输出5*5*16的矩阵。

Layer3-全连接层:把上层输出的5*5*16矩阵展开成1*400的一维向量,以120*400的权重矩阵送入本层120个神经元,激活后输出。

Layer4-全连接层:120->84,激活后输出

输出层:84 -> 10,然后softmax后输出。

1.11 卷积神经网络的优势

1. 参数少

假如原始图片尺寸为100*100*3,假设使用全连接,即使第二层仅用100个神经元,那也已经产生了100*100*3*100 = 300w个参数,难以想象。

假设使用卷积层,使用10个10*10*3的卷积核,那就是只有3000个参数,而能输出的矩阵规模是91*91*10=81000

2. 参数少的原因

1)稀疏连接:卷积核扫描矩阵产生输出,这个过程就从“神经元连接”的角度看,输入的左上角只连着输出的左上角,右上角只连右上角,而非“全连接”,参数就会少很多。2)参数共享:这么稀疏的连接,还是使用了同一套参数,进一步减少了参数的量。

3. 参数共享的其它好处

如果图片上有一只猫,那么不管这个猫在图片的什么位置,都不改变“这是一张猫的照片”。使用参数共享时,相当于用同样的特征提取作用到整个图片的各个区域,适应平移不变性,增强鲁棒性。

相关文章

  • PART 4 W1 卷积神经网络介绍

    1.1 计算机视觉的两类最常见场景 一个是图像分类:如猫脸识别等;一个是目标检测:如无人驾驶技术中的各种交通信号检...

  • 使用CNN检测脸部关键点教程(一)

    目录: 1, 环境需求 2, 数据介绍 3, 模型卷积神经网络 4, 测试卷积神经网络的性能 第一部分:环境需求 ...

  • 神经网络(一)

    神经网络 1. 神经网络基础 2. 浅层神经网络分析 3. 卷积神经网络 4. 卷积神经网络MNIST数字图片识别...

  • 神经网络(二)

    神经网络 1. 神经网络基础 2. MNIST数据集浅层神经网络分析 3. 卷积神经网络 4. 卷积神经网络MNI...

  • 2019-09-13深度学习学习笔记(二)基础知识

    卷积神经网络 信号的局部连接 共享权重3.降采样4.多层网络结构 卷积神经网络的主要层次结构 1 卷积层: 卷积的...

  • TensorFlow深度学习-第十章

    本篇文章中主要是介绍卷积神经网络CNN 神经元和神经网络 卷积什么是卷积动态卷积重要概念 全连接网络局部相关性权值...

  • 卷积神经网络 CNN(1)

    今天给大家介绍一下什么是卷积神经网络,以及神经网络是与普通的神经网络有什么不同。卷积神经网络是为了简化普通神经网络...

  • 卷积神经网络导览

    摘要: 关于卷积神经网络最重要的概念都在这里! 介绍 这篇文章旨在以全面和简洁的方式介绍卷积神经网络(CNN),目...

  • CS231n 卷积神经网络: 架构, 卷积/池化层(上)

    卷积神经网络: 架构, 卷积/池化层(上) 卷积神经网络: 架构, 卷积/池化层(上) 卷积神经网络(CNNs/C...

  • 第五天-卷积神经网络基础,LeNet,卷积神经网络进阶

    卷积神经网络基础 本节我们介绍卷积神经网络的基础概念,主要是卷积层和池化层,并解释填充、步幅、输入通道和输出通道的...

网友评论

      本文标题:PART 4 W1 卷积神经网络介绍

      本文链接:https://www.haomeiwen.com/subject/dpnugctx.html