CNN

计算机视觉

          图像识别

          目标检测

          风格迁移

         挑战:输入的数据可能会非常的大。很难计算,同时很容易导致过拟合。

边缘检测示例

         在CNN中,会先检测边缘,比如垂线。

                     CNN_第1张图片

         我们称中间的矩阵为核或者过滤器。它和给定的输入图片做卷积运算。具体为图片--->过滤器---->图片。

                    CNN_第2张图片

         如上图所示,对于矩阵中不同值的边界正好是对应的垂直边缘。这就是卷积运算可以计算垂直边缘的原因。

更多边缘检测内容

                              CNN_第3张图片

         如上图上边所示检测的分别为垂直边缘和水平边缘。而下图则是使用通过水平边缘过滤器得出水平边缘。使用不同的滤波器得到的边缘也不相同。可以将过滤器的值设置为参数,然后通过数据反馈(反向传播算法)让神经网络自动学习他们。

Padding

                                   CNN_第4张图片

        如上图所示,每次输入的图像和给定的过滤器进行卷积运算后得到的对应的图像的大小为(n-f+1)*(n-f+1),其中n为输入图像的大小,而f为过滤器的大小。但是这样会导致两个不好的后果。①输出的图像不停的缩小。②图像边缘大部分信息都丢失了。因此引入padding(填充)。通过padding可以改变输入的大小这样就会改变输出的大小,同时填充的值在边缘,因此就会使得原本的信息得以保留。一般而言只使用奇数的过滤器会比较好一点

卷积步长

                                CNN_第5张图片

           如图所示,由此可以看出卷积的步长对应的就是在输入的图像矩阵中移动的位数,本例子中步长为2,因此对应的乘积就是以2为间隔如上图中左上角所示。而我们通过公式判断输出的矩阵的维度。(n+2p-f)/s+1    其中n代表的是输入的图片的维度,p代表的是padding,f代表的是过滤器的维度,s代表卷积步长。最后再向下取整便得出对应的输出矩阵的维度。

                                      CNN_第6张图片

        

卷积为何有效

                     CNN_第7张图片

                     想要即检测水平又检测垂直,需要使用两个不同的过滤器。生成的结果堆叠在一起。输入的图像和给定的滤波器的高和宽可以不一样,但他们的通道数(深度)必定需要相同。

单层卷积网络

                     CNN_第8张图片

           如上图所示为一层卷积的计算过程。其中对应的输入为(6*6*3)经过一层卷积后变为(4*4*2),我们可以得知实际上有几个过滤器就会提取几个特征。

简单卷积网络示例

                              CNN_第9张图片

        一个简单的CNN模型。一个典型的CNN输入图像的高和宽会随着网络深度的加深而逐渐减小。 

池化层

                       CNN_第10张图片

                     一个2*2区域,步幅为2.池化层有许多超参数,但并没有要学习的参数。 一个固定运算。

                     数字越大越能表明提取到了某样特征。maxpooling表明在过滤器中提取到某个特征,保留其最大值。

池化层不改变通道数。

                       CNN_第11张图片

                           平均池化比较少见。

卷积神经网络示例

                            CNN_第12张图片CNN_第13张图片

                            对于层数来说,一般只计算有权重和参数的层。

                         CNN_第14张图片

                        我们由上图可得知随着层数的加深,对应的激活值,即维度在不断地下降。                     

为什么要进行实例探究

              可以借鉴别人的网络架构来进行自己的研究。

经典网络

             LeNet-5:针对灰度图像。

            CNN_第15张图片

             用来对于MNIST手写数字的识别。

             AlexNet:

                CNN_第16张图片

             VGG-16:

               CNN_第17张图片

             

              VGG-16一共包含约1.38亿个参数。但结构不复杂。图像缩小的比例和信道增加的比例是有规律的。

残差网络(ResNets)

           非常深的网络很难实现,因为存在梯度消失和梯度爆炸的问题。

           残差块:

               CNN_第18张图片

             a[l]插入的时机是在线性激活之后,ReLU激活之前。

            跳远连接:

             a[l]跳过一层或者好几层从而将信息传递到神经网络的更深层。

            残差块可以构建更深的神经网络。

              CNN_第19张图片

           如上图所示,共有五个残差块构成了一个残差网络。而下面是对应的训练的结果,随着神经网络层数的加深,理论上错误率应该是越来越小的,实际上由于梯度爆炸和梯度消失的问题,在达到一个阈值之前神经网络的错误率确实是在下降的,但在超过该阈值后会变得越来越大。而残差神经网络的存在便解决了该问题。

网络中的网络以及 1×1 卷积

                   CNN_第20张图片

          1*1卷积的作用是便利给定的矩阵的元素,计算左图中32个数字和过滤器中32个数字的元素智能乘积。再应用Relu激活函数。我们可以将其当作连接了一个全连接层。可以在输入层实施一个非平凡计算。这种方法通常为1*1卷积。有时称为network in network。1*1卷积层给神经网络添加了一个非线性函数,从而减少或保持信道数量。减少通道是通过ReLU

谷歌 Inception 网络简介

          Inception网络或Inception层的作用就是代替人工来确定卷积层中的过滤器类型,确定是否要构建池化层或卷积层。

Inception 网络

使用开源的实现方案

迁移学习

        使用别人已经训练好的网络更加高效。ImageNet。

数据扩充

         1.数据增强

         2.随机裁剪

         3.色彩转换

         

计算机视觉现状

         图像识别:如何看图片的问题,看过以后告诉你这是不是猫。

         对象检测:看一幅图,告诉你图片里的物体。

 

你可能感兴趣的:(CNN,笔记,CNN,笔记,吴恩达)