卷积神经网络(CNN)在图像处理中的应用及架构分析

释放双眼,带上耳机,听听看~!
本文介绍了卷积神经网络(CNN)在图像处理中的应用及其架构分析,详细解释了为什么CNN能够解决图像处理问题,并对CNN网络架构进行了深入讲解。

卷积神经网络(CNN)在图像处理中的应用及架构分析

1.介绍

卷积神经网络(Convolutional Neural Networks,简称CNN)是一种具有局部连接、权值共享等特点的神经网络(Feedforward Neural Networks),是深度学习(deep learning)的代表算法之一,擅长处理图像特别是图像识别等相关机器学习问题,比如图像分类、目标检测、图像分割等各种视觉任务中都有显著的提升效果,是目前应用最广泛的模型之一。

卷积神经网络(CNN)在图像处理中的应用及架构分析

图1.左为神经网络(全连接结构),右为卷积神经网络。

2.为什么是cnn能够解决图像处理问题

2.1.图像

图片在计算机中保存的格式为一个个的像素,比如一张长度为1080,宽度为1024的图片,总共包含了1080 * 1024的像素,如果为RGB图片,因为RGB图片由3种颜色叠加而成,包含3个通道,因此我们需要用1080 * 1024 * 3的数组来表示RGB图片。举例如下图:打印一个RGB图像并观察结果。

卷积神经网络(CNN)在图像处理中的应用及架构分析

图2.RGB图像

卷积神经网络(CNN)在图像处理中的应用及架构分析

图3.RGB图像形状输出

我们读入后的数组的最后一个维度是 3,对于计算视觉任务来说,绝大多数处理的图片都是 RGB 格式,如果不是 RGB 格式的话,要记得事先转换成 RGB 格式。

2.2为什么是cnn

在卷积网络之前,一般的网络采用的是矩阵乘法的方式,前一层的每一个单元都对下一层每一个单元有影响。下面看图理解:

卷积神经网络(CNN)在图像处理中的应用及架构分析

图中s是由矩阵乘法产生,响应层的每一个神经元,都会受到输入层每一个神经元的影响。

举个例子,全连接网络的输入层是 1000* 1000* 3 的一张图片,那么这个向量维度就是 300w 。那么就会有一个 300w个神经元节点的输入层。同时,下一层的神经元节点个数就不能取的太少,太少的话,原始的输入又多,这就导致很难捕捉到更多的信息。假设下一层神经元节点个数取4000个,那么两层之间有多少个权重参数w呢?即:300w * 4K 个权重 w 。

这样会导致参数量过大,单单一层就有 300w * 4K 参数,过多的参数会带来两方面问题:

1.参数量太大,对于工程上是一个很大的挑战,最后更新参数时压力较大;

2.参数量大,容易导致过拟合(overfitting),参数量大,会导致模型的拟合能力非常强,这个时候会带来过拟合问题,而且很难控制;

由此可见,图像处理过程中参数量过大是一个问题。那么有没有一个办法能够保持它的学习能力,使得它能够在图像上捕捉到尽可能多的信息,又能把参数量降下来呢?在此需求下,卷积神经网络这类的网络由此出现。

下面,从cnn网络架构讲起。

3.cnn网络架构

卷积神经网络(CNN)在图像处理中的应用及架构分析

10分类卷积神经网络架构图

3.1.卷积层

3.1.1卷积计算

卷积神经网络(CNN)在图像处理中的应用及架构分析

以上述单通道的灰度图像为例。可以在上图中看到,图中黑色色块中的白色数字为4,假设白色区域(即数字4对应部分)的值为1,而与之相邻的黑色色块的值为0,那么我们便能得到色块不同区域对应的值,将其用表格的形式进行展示,如下图所示:

卷积神经网络(CNN)在图像处理中的应用及架构分析

假设色块可以用8*8的像素表示,像素值为0(白色)或1(黑色)。

单次的卷积运算,即为左边红色框内的数字与卷积核(kernel)/过滤器(filter)中对应位置的数字相乘再求和,其结果为右边红色框内示出的值(0)。可以看到,框的大小,即卷积核的大小是人为设定的,直观地,可以将卷积核的大小与“时间分辨率”类比,卷积核越大,分辨率越低。

然后,将红色框向右移动一个单位(即滑动步长stride=1),再次进行卷积运算,这个过程如下图所示:

卷积神经网络(CNN)在图像处理中的应用及架构分析

然后不断重复以上过程(向右移动到末端之后,回到起始位置,再向下移动同样的stride,再重复以上过程即可),可以得到最终结果:

卷积神经网络(CNN)在图像处理中的应用及架构分析

例如,下图中左边红色框内数字与卷积核所做卷积运算所得结果为右边红色框内的3,图中给出了在步长stride=1的情况下,卷积运算所得新的表格的边长的计算公式(其中f即为filter边长)。另外,过滤器和卷积核在CNN中是一个意思,以下统一用卷积核来表述。

卷积神经网络(CNN)在图像处理中的应用及架构分析

3.1.2填充(也就是说卷积层不一定降维)

由以上卷积过程可以看到,卷积运算可能导致“表格”(以下表述为“图像”)减小,有些情况下可能不期望出现这种情况,这时会采用填充(padding)的方式来处理,填充其实就是进行卷积前的一些预处理。但在CNN中padding也可能指代这种特殊类型的卷积运算。

卷积神经网络(CNN)在图像处理中的应用及架构分析

由上图可以看到,为了使得大小为66的图像(N2)经卷积运算后大小不变,可以事先填充,将其变为88的图像(这里用0填充),经过卷积运算可以得到6*6的图像(N3)。称这种图像经卷积运算后大小不变的填充方式为same(在许多CNN的模型如VGG-16中都会用到same方式的卷积运算)。

3.1.3.卷积层的作用-特征提取

卷积层有很多卷积核,通过做越来越多的卷积,提取到的图像特征会越来越抽象。

卷积神经网络(CNN)在图像处理中的应用及架构分析

上图选择了2种filter分别对图中的矩阵做卷积,可以看到值越大的就表示找到的特征越匹配,值越小的就表示找到的特征越偏离。

  • Filter1主要是找到为”|”形状的特征,可以找到1处,转换后相乘值为3的网格就表示原始的图案中有”|”,
  • Filter2主要是找到为””形状的特征,可以找到2处,转换后相乘值为3的网格就表示原始的图案中有””。

3.1.4.感受野

感受野:卷积神经网络每一层输出的特征图(featuremap)上的像素点在输 入图片上映射的区域大小,即特征图上的一个点对应输入图上的区域。下图反映了经过几层卷积之后,卷积结果所对应前几层的图像数据范围。

卷积神经网络(CNN)在图像处理中的应用及架构分析

感受野的大小的可以计算的,计算过程连接

3.1.5.三通道图像的卷积计算

在实际应用中,CNN中往往用到多个通道的情形,以三个通道的情形为例,卷积运算过程如下图所示:

卷积神经网络(CNN)在图像处理中的应用及架构分析

可以看出,此时依旧是对应位置的数字相乘然后再求和。

一般用立方体的形式表示以上过程,且往往卷积核数目为多个(卷积层的深度) ,如下图所示:

卷积神经网络(CNN)在图像处理中的应用及架构分析

卷积神经网络(CNN)在图像处理中的应用及架构分析

三通道图像(883)经过4个卷积核(33),输出是664特征图,当前层神经元的个数(66*4个)。 可以看到当前层卷积核的深度也决定了后面结果的层数,也是结果的厚度。

3.1.6.卷积层对应的神经网络形式

卷积神经网络(CNN)在图像处理中的应用及架构分析

注:左侧输入层,以及中间卷积核非神经元节点。

如上图所示,最右侧卷积层的神经元个数由特征图矩阵的大小决定。比如上文提到三通道图像(883)经过4个卷积核(33),输出是664特征图,当前层神经元的个数(66*4个)。

来自同一Feature Map的每个神经元与上一层22区域局部相连,22也是滤波器的大小,这也是卷积神经网络局部连接的思想。

激活函数 :是一种非线性函数,对输出结果进行转换,使模型获得非线性特性。用来归一化输出结果使其限制在一定的范围内。

3.2.池化层(降维)

在卷积运算之后,经常进行池化处理(但这不是必须的)以进一步减少运算量,如下图所示,选择3*3的区域(红色框),最大池化即为从中选取最大值(这里是2)。

卷积神经网络(CNN)在图像处理中的应用及架构分析

步长stride=3(图中用s表示),因此可以得到四个池化后的值。平均池化与最大池化类似,区别仅在于计算红色框内数值的平均值,最大池化与平均池化的最终结果如下图所示:

卷积神经网络(CNN)在图像处理中的应用及架构分析

3.2.1.池化层的作用

对特征进行降维,提高后续特征的感受野,也就是让池化后的一个像素对应前面图片中的一个区域。

3.3全连接层

池化层的后面一般接着全连接层,全连接层将池化层的所有特征矩阵转化成一维的特征大向量,全连接层一般放在卷积神经网络结构中的最后,用于对图片进行分类,到了全连接层,我们的神经网络就要准备输出结果了。

卷积神经网络(CNN)在图像处理中的应用及架构分析

因为从卷积层过来的数据太多了,全连接层的作用主要是对数据进行降维操作,不然数据骤降到输出层,可能会丢失一些图像特征的重要信息。

值得注意的是全连接层就是一个完全连接的神经网络,根据权重每个神经元反馈的比重不一样,最后通过调整权重和网络得到分类的结果。

因为全连接层占用了神经网络80%的参数,因此对全连接层的优化就显得至关重要,现在也有用平均值来做最后的分类的。

3.4输出层

从全连接层到输出层会再一次减少数据,变成更加低维的向量,这个向量的维度就是需要输出的类别数。然后将这个向量的每个值转换成概率的表示,这个操作一般叫做softmax,softmax使得向量中每个值范围在(0,1)之间,它是二分类函数sigmoid在多分类上的推广,目的是将多分类的结果以概率的形式展现出来

卷积神经网络(CNN)在图像处理中的应用及架构分析

4.CNN的训练过程

  • Step 1:用随机数初始化所有的卷积核和参数/权重
  • Step 2:将训练图片作为输入,执行前向步骤(卷积, ReLU,池化以及全连接层的前向传播)并计算每个类别的对应输出概率。
  • Step 3:计算输出层的总误差
  • Step 4:反向传播算法计算误差相对于所有权重的梯度,并用梯度下降法更新所有的卷积核和参数/权重的值,以使输出误差最小化

注:卷积核个数、卷积核尺寸、网络架构这些参数,是在 Step 1 之前就已经固定的,且不会在训练过程中改变——只有卷 积核矩阵和神经元权重会更新。

5.经典cnn模型

链接

6.传统cv算法

链接

本网站的内容主要来自互联网上的各种资源,仅供参考和信息分享之用,不代表本网站拥有相关版权或知识产权。如您认为内容侵犯您的权益,请联系我们,我们将尽快采取行动,包括删除或更正。
AI教程

ChatGPT注册和使用指南,解锁更多高级玩法!

2023-12-3 19:45:14

AI教程

不良条件下视觉感知的挑战与解决方法

2023-12-3 19:57:14

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索