卷积神经网络
1.卷积神经网络应用领域
CV领域发展
CV领域是计算机视觉(Computer Vision)领域的简称。
计算机视觉是指利用计算机模拟人类视觉系统的科学,让计算机具有类似于人类在观察外界的视觉、图像的能力,包括图像处理、图像分析、图像理解等。
计算机视觉领域发展有以下特点:
-
视觉系统的出现和不断完善迫使不同物种间的竞争加剧,进而导致了“Big Bang”现象的出现。
-
80年代,逻辑学和知识库等理论在人工智能领域占据了主导地位。人们试图建立专家系统来存储先验。
我们需要明确监测任务,然后进行分类和检索,对相应的对象进行超分辨重构,卷积神经网络除了在图像识别上有广泛的应用以外,还在医学任务、无人驾驶等领域也非常重要。
卷积神经网络的应用领域主要有:
-
图像识别、物体识别、图像处理、语音识别、自然语言处理等。
-
应用于计算机视觉、人工智能研究等多个领域。
-
视频分析、游戏AI。
2.卷积的作用
卷积在信号处理和图像处理中主要用于以下几方面1:
-
特征提取:通过卷积核(也称为滤波器)对输入信号进行卷积操作,可以提取信号的局部特征。不同卷积核可以提取不同类型的特征,例如在图像处理中,可以使用边缘检测卷积核来提取图像中的边缘特征。
-
降噪:通过卷积对输入信号进行平滑处理,可以去除噪声。例如在图像处理中,可以使用高斯滤波器对图像进行平滑处理,从而去除图像中的噪声。
-
压缩:通过卷积降低信号的维度,可以实现数据压缩。例如在语音处理中,可以使用卷积将语音信号压缩成更小的维度,从而减少存储空间和计算成本。
卷积网络与传统网络的区别:
传统神经网络输入是一个向量,一维数据。卷积神经网络输入是三维长方体矩阵。
-
传统神经网络的每一层的权值参数都是一样的,而卷积神经网络的每一层的权值是可以不同的。
-
传统神经网络有专门的预处理和后处理层,而卷积神经网络的可以没有专门的预处理和后处理层。
-
传统神经网络有专门的池化层,而卷积神经网络的可以没有专门的池化层。
卷积网络的作用有:
-
局部连接和权值共享,减少了网络自由参数的个数易于计算。
-
多卷积核,可以添加多个卷积核提取不同的特征,使特征提取更充分。
-
卷积神经网络的池化,降低了空间分辨率,改善结果。
3.卷积特征值计算方法
步长大小与计算速度有关系,步长越小,所得特征图越大,所做计算次数越多,一般为1。
卷积核尺寸:所选区域大小,一般取3*3即可
边缘填充:在一定程度上弥补边界特征不被重视的点,一般填充一圈0,或者两圈0都可以,可以自定义
卷积核个数:即特征图个数,即filter个数
卷积计算结果:(特征图长宽以及个数)h * w * c
步长的影响:
步长比较短的,那么它的内容获得更加丰富。
卷积层涉及到参数:
-
滑动窗口步长
-
卷积和尺寸
-
边缘填充
-
卷积核个数
边缘填充方法:一般来说,越往边界的点,利用的次数就比较少;而中间的点利用的次数更多一些。这时候我们需要进行边缘填充,很多时候,我们在边界加上一圈0,扩充边缘的内容,将原来的边界转变为内部值。
卷积结果计算:
其中W1、H1表示输入的宽度、长度;W2、H2表示输出特征图的宽度、长度;F表示积卷核长和宽的大小;S表示滑动窗口的步长;P表示边界填充(加几圈0)。
如果输入数据是32323的图像,用10个553的filter来进行卷积操作,指定步长为1,迈界填充为2,最终输入的规模为?
(32-5+2 * 2) / 1+1=32,所以输出规模为32 * 32 * 10, 经过卷积操作后也可以保持特征图长度、宽度不变。
4.卷积参数共享
卷积参数共享是指在同一个模型的不同模块中使用相同的参数,它是卷积运算的固有属性。
在全连接网络中,计算每层的输出时,权值参数矩阵中的每个元素只作用于某个输入元素一次;而在卷积神经网络中,卷积核中的每一个元素将作用于每一次局部输入的特定位置上。根据参数共享的思想,我们只需要学习一组参数集合,而不需要针对每个位置的每个参数都进行优化,从而大大降低了模型的存储需求。
卷积参数共享的物理意义是使得卷积层具有平移等变性。例如在图像中有一只猫,那么无论它出现在图像中的任何位置,我们都应该将它识别为猫,也就是说神经网络的输出对于平移变换来说应当是等变的。
数据依旧是32 * 32 * 3的图像,继续用10个5 * 5 * 3的filter来进行卷积操作,所需的权重参数有多少个呢?
5 * 5 * 3=75,表示每一个卷积核只需要75个参数,此时有10个不同的卷积核,就需要10 * 75=750个卷积核参数,不要忘记还有b参数,每个卷积核都有一个对应的偏置参数,最终只需要750+10=760个权重参数。
5.CNN介绍
CNN(卷积神经网络)是一种常见的深度学习神经网络,主要用于图像识别、语音识别和其他图像或语音处理任务。
CNN的基本结构包括卷积层(convolutional layer)、池化层(pooling layer)、全连接层(fully connected layer)和激活函数(activation function)。其中,卷积层用于提取图像或语音的特征,池化层用于降低数据的维度,全连接层用于将特征与标签进行映射,激活函数则用于增加非线性特性。
CNN的优势在于可以利用局部连接、权值共享和池化等操作,使得网络具有平移、旋转、缩放等不变性,从而更好地适应图像和语音等数据。此外,CNN还可以通过多层卷积和池化操作,逐步提取更高级的特征,提高识别准确率
6.池化层的作用
池化层(pooling layer)在卷积神经网络(CNN)中的作用主要有以下几个方面:
-
下采样:池化层可以对输入数据进行下采样,即对输入数据进行降维操作,从而减少数据的计算量和存储需求。
-
特征压缩:池化层可以通过对输入数据进行降维操作,将高维数据压缩成低维数据,从而实现特征的压缩和简化网络复杂度的效果。
-
数据归一化:池化层可以对输入数据进行归一化处理,即将数据映射到指定的范围内,例如将数据压缩到0到1之间,从而避免梯度消失和梯度爆炸等问题。
-
提高模型的泛化能力:池化层可以通过对输入数据进行平移、旋转、缩放等不变性操作,提高模型的泛化能力和鲁棒性,从而更好地适应不同的数据场景。
-
实现非线性:池化层可以引入非线性因素,例如使用ReLU等激活函数,从而提高模型的表达能力。
-
扩大感知野:池化层可以扩大神经网络的感知野,即让神经元能够感知到更多的局部特征,从而提高模型的准确率和泛化能力。
最大池化:将我们分块的部分选择出最大的参数值进行操作,MAX POOLING就是把最重要的部分(特征)取出来,舍去了不太重要的部分。也就是将原来的大的部分压缩成相对小的多的。
7.整体网络架构
卷积神经网络(CNN)的整体网络架构包括以下几个主要组成部分:
-
输入层(Input layer):负责接收原始数据,例如图像、文本等。
-
卷积层(Convolutional layer):通过卷积核(也称为滤波器)对输入数据进行卷积操作,提取局部特征。
-
池化层(Pooling layer):通过下采样、降维、压缩等操作,降低数据的维度,提高模型的泛化能力和鲁棒性。
-
全连接层(Fully connected layer):将所有特征进行线性组合,并输出结果。通常用于分类任务。
-
激活函数(Activation function):用于引入非线性因素,提高模型的表达能力。常见的激活函数包括ReLU、sigmoid等。
-
损失函数(Loss function):用于评估模型的预测结果与实际结果的差距,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-entropy)等。
-
优化器(Optimizer):用于通过反向传播算法更新模型的参数,以最小化损失函数。常见的优化器包括梯度下降(Gradient descent)、Adam等。
-
正则化(Regularization):用于防止过拟合现象,提高模型的泛化能力。常见的正则化方法包括L1正则化、L2正则化等。
这是对上面的知识点的总结。
而这些组成部分通过组合和堆叠,可以构建出各种不同类型和规模的卷积神经网络,例如LeNet、AlexNet、VGG、ResNet、Inception等。
一般来说,执行了几次卷积之后,就需要进行一次池化的操作。最后的目标是转化为一条向量,这样才能比较合理地处理相应的数据。
8.VGG网络架构
经典网络-Alexnet
AlexNet是深度卷积神经网络的一种,由谷歌和Hinton领导的团队在2012年提出,在ImageNet图像识别挑战中以15.3%的错误率登顶,并高出第二名10%以上。
AlexNet的特点包括:
-
使用ReLU作为激活函数。
-
使用数据增强技术来增加数据集的多样性。
-
使用局部响应归一化(Local Response Normalization,LRN)来控制卷积层的响应范围,提高模型的泛化能力。
-
使用Dropout技术来避免过拟合。
-
使用GPU进行训练,提高了训练速度和效率。
-
网络结构较深,使用多个卷积层和池化层来提取图像特征。
-
使用两个GPU来加速训练过程,并实现了更高效的并行计算。
AlexNet是深度卷积神经网络的里程碑之一,其提出的许多技术和方法对后来的研究和实践产生了深远的影响。
经典网络-Vgg
VGG网络架构是一种深度卷积神经网络,由牛津大学视觉几何组(Visual Geometry Group,VGG)开发。
VGG的网络架构主要由卷积层和全连接层组成,其中卷积层使用的基本上是3x3的小卷积核,通过堆叠多个卷积层和池化层来构建深度模型。VGG共有16、19、3、4、5五种不同深度的模型,其中最常用的是VGG16和VGG19。
VGG网络架构的特点是简单、深度、效果良好,其小卷积核的使用使得网络更加稀疏,减少了计算量和参数数量,同时通过不断加深网络来提升性能,从而提高了模型的泛化能力和鲁棒性。
VGG网络架构在图像分类、目标检测、图像分割等多个领域都取得了良好的效果,成为深度学习领域的一个经典模型。
VGG和AlexNet的区别:
-
网络结构:VGG的网络结构相对较深,通常有16-19个卷积层和池化层,而AlexNet的网络结构相对较浅,只有8个卷积层和池化层。
-
卷积层:VGG的卷积层使用的是3x3的小卷积核,而AlexNet的卷积层使用的是11x11和5x5的大卷积核,这使得AlexNet的卷积层能够更好地捕捉图像的局部特征。
-
池化层:VGG的池化层使用的是2x2的最大池化层,而AlexNet的池化层使用的是3x3的最大池化层,这使得AlexNet的池化层能够更好地保留图像的细节信息。
-
数据增强:VGG使用了一些简单的数据增强技术,例如随机翻转、旋转和缩放等,而AlexNet使用了更复杂的数据增强技术,例如随机裁剪、旋转、色彩扰动等,这使得AlexNet能够更好地处理图像数据。
-
正则化:VGG使用了Dropout技术来避免过拟合,而AlexNet使用了L2正则化技术来控制模型的复杂度。
-
激活函数:VGG使用了ReLU激活函数,而AlexNet使用了非线性激活函数,例如ReLU和sigmoid函数。
总体来说,VGG和AlexNet在结构和设计上都有所不同,但它们都是非常优秀的深度卷积神经网络,都在图像识别领域取得了很高的准确率和泛化能力
经典网络-残差Resnet
ResNet(残差网络)是由微软研究院的Kaiming He等四位华人于2015年提出的深度卷积神经网络,它在ILSVRC2015比赛中取得了冠军,并在ImageNet数据集上实现了9.1%的top-5错误率。
ResNet的主要思想是在网络中增加残差块(residual block),使得网络能够学习到残差映射关系,即通过直接学习残差来训练神经网络,从而避免网络过深导致的梯度消失和梯度爆炸问题。
ResNet的特点包括:
-
网络结构非常深,通常有18、34、50、101、152等不同深度的残差块。
-
使用批归一化(Batch Normalization,BN)来加速训练和提高模型的泛化能力。
-
使用残差块(residual block)来避免梯度消失和梯度爆炸问题。
-
使用跨层连接(shortcut connection)来将浅层特征与深层特征进行融合。
-
使用恒等映射(identity mapping)来实现残差学习。
-
在ImageNet图像识别挑战中获得了极高的准确率,并成为当时最优秀的卷积神经网络之一。
ResNet的贡献在于其提出了深度卷积神经网络的残差学习方法和跨层连接方法,解决了网络过深导致的梯度消失和梯度爆炸问题,并展示了深度卷积神经网络在图像识别领域的巨大潜力。
上面的都是经典的网络代表,具有很好的参考意义。
9.感受野的作用
感受野的作用如下:
-
感受野可以减少网络参数,增加网络深度,扩大感受野,从而使得神经网络具有更好的泛化能力和更快的收敛速度。
-
对于分类任务,感受野的大小要大于等于输入图像的大小,以保证网络能够捕捉到足够的图像特征,从而提高分类的准确率和稳定性。
-
对于目标检测任务,感受野的大小要适当,不能太小也不能太大。如果感受野太小,目标尺寸很大或很小,模型收敛困难,会严重影响检测性能;如果感受野太大,会导致模型计算量过大,增加计算时间和空间复杂度。
-
不同层次的特征图具有不同的感受野大小,这可以使得检测网络适应不同尺寸的目标,提高目标检测的准确率和稳定性。
假设输入大小都是h * w * c,并且都使用c个卷积核(得到c个特征图),可以来计算其各自所需的参数:
1个7 * 7卷积核所需参数:C * (7 * 7 * C) = 49 C^2 加上
3个3 * 3卷积核所需参数:3 * C * (3 * 3 * C) = 27 C^2 加上3个relu
很明显,堆叠小的卷积核所需的参数更少一些,并且卷积过程越多,特征提取也会越细致,加入的非线性变换也随着增多,还不会增大权重参数个数,这就是VGG网络的基本出发点,用小的卷积核来完成体特征提取操作。