深度学习--TensorFlow(8)CNN卷积神经网络理论(计算机视觉)

目录

计算机视觉介绍

1、计算机视觉应用 

2、计算机视觉技术

图像分类

目标检测

目标跟踪

语义分割

实例分割

BP神经网络的缺点

一、卷积神经网络简介 

1、卷积 

2、全连接与局部感受野

3、权值共享

二、卷积计算

三、不同卷积核

四、池化

池化作用

池化分类

五、Padding

六、常见的卷积计算

1、对一张图像卷积生成一张特征图 

2、对一张图像卷积生成多张特征图

3、对多张图像卷积生成一张特征图

4、对多张图像进行卷积生成多张特征图

七、经典神经网络

CNN应用在手写数字识别


        计算机视觉是人工智能领域最热门的研究领域之一,并且是近几年发展最快的人工智能领域之一。CV(Computer Vision)领域的快速发展主要得益于卷积神经网络的使用。

计算机视觉介绍

1、计算机视觉应用 

人脸识别

 

图像检索(搜索引擎图片搜索)

 

监控 

光学字符识别OCR(证件识别,车牌识别,文档识别,银行卡识别,名片识别,身份证识
别等)

 

自动驾驶(检测交通标志、路上的行人和车辆等) 

 

2、计算机视觉技术

图像分类

        图像分类就是图像识别,识别一张图片中的物体,然后给出类别判断。一般对一张图片我们可能会得到多个类别判断,我们可以根据类别的置信度(模型认为图片属于该类别的概率)从高到低进行排序,然后得到可能性最大的几个类别。

目标检测

        有时候我们不仅要识别图片是属于什么类别,还需要把它们给框选出来、确定它们在图片中的位置和大小。

目标跟踪

目标跟踪是指在特定场景跟踪某一个或多个特定感兴趣对象的过程。

语义分割

        语义分割可以将图像分为不同的语义可解释类别,例如我们可能会把图片中汽车的颜色
都用蓝色的表示,所有行人用红色表示。与图像分类或目标检测相比,语义分割可以让我们
对图像有更加细致的了解。

实例分割

         实例分割可以将不同类型的实例进行分类,比如用 4 种颜色来表示 4 辆不同的汽车,用8 种颜色表示 8 个不同的人。

BP神经网络的缺点

        有一个细节问题当时我们可能没有注意到,当时我们使用的手写数字图片是 28×28 的黑白图片,输入数据一共有 28×28×1 个数据,所以输入层只需要 784 个神经元。假如我们有一张1000 * 1000的彩色图片,那么输入层神经元就需要 1000×1000×3 个,我们使用带有一个隐藏层的神经网络,隐藏层神经元个数为 1000,那么输入层和隐藏层之间权值的个数就会有 30 亿个,这是一个非常巨大的数字。
        如此大量的权值会带来两个问题,一个问题是计算量巨大,要计算这么多权值就需要花费大量时间。第二个问题是要训练这么多权值就需要大量的训练样本来进行训练,防止模型过拟合
        因此我们需要使用卷积神经网络解决计算机视觉任务中权值数量巨大的问题

一、卷积神经网络简介 

1、卷积 

卷积目的:找到特征。 

剔除不重要的信息,保留重要的信息。 

不同卷积核提取不同特征。

        卷积神经网络就是一种包含卷积计算的神经网络。卷积计算是一种计算方式,有一个卷积 窗口(Convolution Window) 在一个平面上滑动,每次滑动会进行一次卷积计算得到一个数值,卷积窗口滑动计算完成后会得到一个用于表示图像特征的特征图。

例:
用一个 3×3 的卷积窗口对 4×4 的图片求卷积,卷积的移动步长为 1,最后得到 2×2 的特征图。

2、全连接与局部感受野

卷积层中的神经元连接不是全连接的,而是后一层的每个神经元连接前一层的一部分神经元。
左边为 BP 网络的全连接结构,右边为卷积网络的局部连接结构:

  

3、权值共享

        外卷积神经网络还用到了权值共享(Weight Sharing)。这里的权值共享指的是同一卷积层中的同一个卷积窗口的权值是共享的

例:

        使用 3×3 的卷积窗口(也就是后一层的一个神经元连接前一层 3×3 的区域)对 1000×1000的图片求卷积, 那么输入层和卷积层之间一共有多少个权值需要训练?

二、卷积计算

        卷积窗口又称为卷积核(Convolution  Kernel) ,卷积之后生成的图称为特征图。卷积窗口/卷积核一般都是使用正方形的,比如 1×1,3×3,5×5 等,极少数特殊情况才会使用长方形。对一张图片求卷积实际上就是卷积核在图片上面滑动,并进行卷积计算。卷积计算很简单,就是卷积核与图片中对应位置的数值相乘然后再求和

例:

3×3 的卷积核对 4×4 的图片求卷积,步长为 1。

1、

 

2、

 3、

4、

综上:

三、不同卷积核

使用不同的卷积核来对同一张图片求卷积会得到不同的结果。

         在卷积神经网络中,我们通常会使用多个不同的卷积核来对同一图像求卷积,目的就是为了可以提取出图像中多种不同的特征。
        深度学习里面,卷积核中的数值实际上就是卷积核的权值 。所以说卷积核的取值在卷积神经网络训练最开始的阶段是随机初始化的,之后结合误差反向传播算法,逐渐训练得到最终的结果。训练好的卷积核就可以作为特征提取器,用于提取图像特征,然后传到网络后面的全连接层,用于分类回归等任务。
        在同一个卷积核中的权值是共享的,在不同的卷积核中的权值是不共享的。假设使用 6个 5×5 的卷积核对一幅图像求卷积,会产 6×5×5=150 个权值加 6 个偏置值,卷积后会得到 6 个不同的特征图

四、池化

        池化也有一个滑动窗口在图像中进行 滑动计算 ,这一点跟卷积有点类似,不过池化层中没有需要训练的权值。
        我们通常会使用多个不同的卷积核来对图像求卷积,之后生成很多个不同的特征图,卷积网络中权值参数仍然是很多的。

池化作用

1、可以做进一步的 特征提取 减少权值参数的个数
 2、 使得网络的输入具有平移不变形 。平移不变形指的是当我们对输入进行少量平移时,经过池化后的数值并不会发生太大变化。这是一个非常有用的性质,因为我们通常关心的是某个特征是否在图像中出现,而不是关心这个特征具体出现的位置。

例:我们要判断一张图片中是否有猫,我们并不关心猫是出现在图片上方,还是下方,还是左边,还是右边,我们只关心猫是否出现在图片中。

 

池化分类

        不过稍微要注意的是我们对输入进行少量平移时,经过池化后的数值并不会发生太大变化。如果对输入平移太多时,池化后的数值还是会发生较大变化的。
最大池化(Max-Pooling) 平均池化(Mean-Pooling) 随机池化(Stochastic Pooling) 最大池化:提取池化窗口区域内的最大值。
平均池化:提取池化窗口区域内的平均值。
随机池化:提取池化窗口区域内的随机值。
其中最常用的是最大池化

最大池化: 

 

平均池化: 

 

五、Padding

 扩充图片补充像素点

作用:

1、保留边界信息;

2、对尺寸有差异的图片进行补充,使图片尺寸一致;

3、卷积神经网络的卷积层加入Padding,可以使得卷积层的输入维度和输出维度一致;

4、卷积神经网络的池化层加入Padding,一般都是保持边界信息。

        在卷积神经网络中我们通常会堆叠多个卷积层的结构,形成一个深度的卷积神经网络。堆叠多个卷积层结构会碰到一个问题,那就是每一次做卷积,得到的特征图就会比原来的图像要变小一些,这样特征的数量会不断减少。

        在计算卷积的时候图像中间的数据会重复使用多次,而图像边缘的数据可能只会被用到一次。四个角的四个数据只计算了一次,而图像中心的四个数据则计算了四次,这就表示卷积容易丢失掉图像的边缘特征(不过其实边缘位置的信息一般来说也没这么重要)。我们可以使用 Padding 的方式来解决。卷积和池化操作都可以使用Padding。

Padding 一般有两种方式,一种是 Valid Padding ,还有一种是 Same Padding
Valid Padding 其实就是不填充。不填充数据那么卷积后得到的特征图就会比原始图像要 小一点
Same Padding 指的是通过填充数据(一般都是填充 0),使得卷积后的特征图的大小跟原始的图像大小相同

 

六、常见的卷积计算

1、对一张图像卷积生成一张特征图 

对一张图像卷积生成一张特征图是最简单的卷积方式:

2、对一张图像卷积生成多张特征图

生成多张特征图需要多个不同的卷积核求卷积。(有几个卷积核生成几张特征图

3个卷积核(3个特征图): 

 

因为每个卷积核中的权值不同,所以使用 3 个不同的卷积核求卷积会得到 3 个不同的特征图。一个卷积核会对原始图像进行 5×5×28×28 次乘法计算,所以总共计算量为5×5×28×28×3=58800。总共有 5×5×3=75 个权值和 3 个偏置值需要训练。偏置值数量主要跟特征图数量相关,每个特征图有 1 个偏置值。        

3、对多张图像卷积生成一张特征图

        比如我们多 1 张彩色图片求卷积,彩色图片可以看成是 RGB 三原色的组合,所以可以看成是 3 张图像。

        对 3 张图像进行卷积的时候先分别对每张图像进行卷积,得到 3 个大小相同,数值不同的特征图。然后再对每个特征图对应位置的数值进行相加,最后得到 1 个特征图。(我们对不同图像进行卷积的时候,所使用的卷积核也是不同的

        把对多张图像进行卷积的多个不同的卷积核称为一个滤波器(Filter) 一个滤波器可以产生一个特征图 。在我们写程序搭建网络结构的时候,我们需要 定义卷积层 Filter 的数量,实际上就是在定义卷积后生成的特征图的数量

4、对多张图像进行卷积生成多张特征图

        这里我们使用 128 个滤波器对 64 张 28×28 的图像求卷积,使用 Same Padding 的方式,步长为 1,卷积计算后生成128 个不同的特征图。

 

 

七、经典神经网络

常见的卷积神经网络结构实际上是多个卷积层叠加起来之后再加上全连接层构成的。

        卷积神经网前面的部分进行 卷积池化 相当于是进行 特征提取 ,后面部分进行 全连接 相当于是利用提取出来的图像特征进行 分类

CNN应用在手写数字识别

第一层:卷积层。

第二层:卷积层。

第三层:全连接层。

第四层:输出层。

        图中原始的手写数字的图片是一张 28×28 的图片,并且是黑白的,所以图片的通道数是1,输入数据是 28×28×1 的数据,如果是彩色图片,图片的通道数就为 3。
        该网络结构是一个 4 层的卷积神经网络(计算神经网络层数的时候,有权值的才算是一层,池化层就不能单独算一层)(池化的计算是在卷积层中进行的)。

对多张特征图求卷积,相当于是同时对多张特征图进行特征提取

        特征图数量越多说明卷积网络提取的特征数量越多,如果特征图数量设置得太少容易出现欠拟合,如果特征图数量设置得太多容易出现过拟合,所以需要设置为合适的数值。

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 卷神经网络CNN)是一种用于处理图像数据的深度学习算法,其核心思想是通过卷运算来提取图像特征,并将这些特征映射到输出层进行分类或回归。 近年来,CNN计算机视觉领域得到了广泛应用。例如,通过训练一个CNN模型来识别图像中的物体,可以实现自动驾驶车辆、安防监控、医疗影像分析等众多领域的应用。 为了让更多的人能够轻松地使用CNN,开发者们开发了基于谷歌开源的深度学习框架TensorFlow的CNN实现。TensorFlow是一个用于构建和训练深度学习模型的强大平台。它提供了丰富的API和工具,使得开发者可以轻松地构建CNN模型,调试和优化算法。 在使用TensorFlow实现CNN时,我们需要定义模型的结构、损失函数和优化器等参数,并通过大量数据进行模型训练。在训练过程中,TensorFlow自动完成反向传播算法,更新模型参数,从而完成模型的优化。最后,我们可以通过在测试数据集上进行模型测试,评估模型的性能。 CNN在图像处理方面有着非常广泛的应用,而TensorFlow则为实现CNN提供了便利和支持。通过这种配合使用的方式,我们可以更加高效和精准地处理图像数据,提升图像处理的效率和质量。 ### 回答2: 随着人工智能领域的不断发展,图像处理作为其中非常重要的分支之一也逐渐得到了广泛的应用。在图像处理领域,卷神经网络(Convolutional Neural Network,CNN)是一种被广泛采用的模型,而Tensorflow则是其中一种应用较为广泛的深度学习框架。下面将对这几个概念进行详细介绍。 CNN是一种专门用于图像处理的神经网络模型。它具备比传统神经网络更加优秀的处理图像的能力,通过卷的方式对输入矩阵进行逐步筛选,能够提取更加高级的特征信息。这种模型一般由多个卷层、池化层和全连接层构成。卷层一般用于提取图像特征,而池化层则对图像进行降采样,降低处理的复杂度和运算量,全连接层则是将前面提取的特征信息进行进一步处理后输出结果。 Tensorflow则是由Google公司开发的一种开源的深度学习框架,可以用于搭建和训练各种深度学习模型。其中包含了各种常用的神经网络模型,如卷神经网络、循环神经网络等。Tensorflow有着良好的可扩展性和灵活性,它使用静态计算图和动态计算图相结合的方式来执行计算,使得开发者能够更方便地进行调试和优化。 在使用CNN对图片进行分类和识别时,Tensorflow提供了一系列用于训练神经网络的接口和工具,使得使用者可以方便地调用和使用这些函数库。同时,Tensorflow还具备良好的分布式计算能力,可以将计算任务划分到多台计算机上进行并行计算,提高了神经网络训练的速度和效率。 综上所述,CNN神经网络、图像和Tensorflow深度学习框架之间是存在着紧密的联系和关联的。在图像处理领域,CNN是一种优秀的模型,而Tensorflow则是应用广泛的深度学习框架,可以搭建出各种神经网络模型,并将其用于图像处理相关的任务中。同时,如何利用Tensorflow优化卷神经网络也是图像领域研究的一个重要方向。 ### 回答3: CNN是一种常用于图像处理和识别的神经网络,它通过卷核对图像进行特征提取,然后将提取的特征输入到全连接层进行分类或回归等任务。在CNN中,卷和池化是两个基本操作。卷通过滑动窗口在图像上提取局部特征,而池化则对特征进行降维处理,减少计算量和过拟合。 现在,越来越多的人使用TensorFlow框架来构建CNN模型。TensorFlow是一个开源的人工智能工具包,可以在各种平台上进行高效的数值计算。通过TensorFlow,我们可以方便地构建和训练CNN模型。TensorFlow提供了一组丰富的API,包括卷、池化等常用的图像处理操作,以及自动求导、优化器等高级功能。 对于图像任务,CNN由于具有较强的特征提取能力和传递性,被广泛应用于图像分类、目标检测、人脸识别等领域。在图像分类任务中,我们可以使用一些经典的模型,如LeNet、AlexNet、VGG、GoogLeNet、ResNet等。这些模型都是通过对CNN进行改进和深化得到的,其中,ResNet是目前表现最好的模型之一,它成功解决了深度模型退化的问题。 除了图像外,CNN还可以用于文本、声音等数据的处理,例如文本分类、语音识别等任务。在这些任务中,CNN同样可以通过提取局部特征来获得更好的性能。 总之,CNN是一种常用的神经网络模型,用于图像处理和识别任务,TensorFlow则是一个优秀的框架,可用于构建和训练CNN模型。通过CNN和TensorFlow,我们可以进行准确、高效、自动化的图像处理和识别任务。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_(*^▽^*)_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值