图像分类学习笔记

2022-08-08,,

图像分类学习笔记

分享下学习笔记
图片网上找的勿喷quq

2020 西瓜大 视觉课 学渣笔记 20***406 - cyx
同节课的兄弟仅供参考不要抄了交上去啊

一、图像分类

图像分类是计算机视觉中最基础的一个任务,从比较简单的10分类的灰度图像手写数字识别mnist,到之后的10分类cifar10,图像分类的目标是将不同的图像划分到不同的类别的同时实现最小的分类误差。具体的来说输入为RGB图像的分类任务中,图像被计算机理解为一个M * N* 3(M N由图像像素长宽决定)的矩阵或”张量”,此时图像分类的任务就是通过训练的到一个具体的函数关系能够正确的将图像矩阵映射到对应的具体类别。
如下图为CNN图像分类:

图像分类的传统方法如KNN,SVM在面对比较简单的数据集如MNIST手写数字数据集时有不错表现,但在面对当下下的图像分类的新挑战中往往无法行之有效。图像分类面临着如,视角变化,光照条件,形状,大小变化,遮挡,背景干扰,类内差异的诸多挑战,面对以上所有变化及其组合,好的图像分类模型能够在维持分类结论稳定的同时,保持对类间差异足够敏感。而CNN卷积神经网络能够很好的适应图像分类问题的新挑战。
CNN本质上是一个多层感知机,其成功的原因关键在于它所采用的局部连接和共享权值的方式,一方面减少了的权值的数量使得网络易于优化,另一方面降低了过拟合的风险。CNN是神经网络中的一种,它的权值共享网络结构使之更类似于生物神经网络,降低了网络模型的复杂度,减少了权值的数量。该优点在网络的输入是多维图像时表现的更为明显,使图像可以直接作为网络的输入,避免了传统识别算法中复杂的特征提取和数据重建过程。在二维图像处理上有众多优势,如网络能自行抽取图像特征包括颜色、纹理、形状及图像的拓扑结构;在处理二维图像问题上,特别是识别位移、缩放及其它形式扭曲不变性的应用上具有良好的鲁棒性和运算效率等。

二、CNN网络部分简介

(一)CNN

卷积神经网络由具有可学习的权重和偏置常量(biases)的神经元组成。CNN 复合多个卷积层和采样层对输入信号进行加工,然后在连接层实现与输出目标之间的映射。

(二)卷积层

卷积层就相当于一个卷积核,对于传送过来的 feature map 进行局部窗口滑动,进行特征提取

(三)池化层

池化层可以非常有效地缩小参数矩阵的尺寸进行降采样的同时尽量保留原图像的特征,减少了最后全连层中的参数数量。使用池化层即可以加快计算速度也有防止过拟合的作用

(四)全连接层

全连接层在整个卷积神经网络中起到“分类器”的作用。如果说卷积层、池化层和激活函数层等操作是将原始数据映射到隐层特征空间的话,全连接层则起到将学到的“分布式特征表示”映射到样本标记空间的作用。

三、CNN网络模型发展历程

LeNet(1998)

网络基本架构为:CONV-POOL-CONV-POOL-FC-FC-FC,括号内数字表示channel数。这是个很小的五层网络,kernel_size 是2x2,stride是2,feature map刚好为上层一半大小。该网络用于对支票的手写数字分类。网络受制于当时的硬件条件和训练数据大小,并未带来神经网络的爆发。

AlexNet(2012)

AlexNet是2012年ILSVRC(ImageNet Large Scale Visual Recognition Challenge)冠军,使得性能从25.8降低到16.4是一个非常大的飞跃,这是CNN网络首次获胜,将卷积神经网络的巨大优势带入人们视野。

AlexNet基本架构如下:

AlexNet有着和LeNet相似网络结构,但更深、有更多参数。AlexNet第一次使用到了ReLU激活函数,使用了droupout方法,batchsize设置为128,learning_rate为1e-2 (0.01),reduced by 10 manually when val accuracy plateaus,L2 weight decay 5e-4,batch size 128,droupout概率为0.5。通过使用这些trick使得ALEX的性能逐渐提高并最终达到一个突破。Alexnet第一个卷积层所用的卷积核大小为1111,较大的卷积核使得special size迅速变小,减少计算量(由于当时的硬件限制),当今硬件逐渐发展下我们越来越倾向于使用如33的较小的卷积核
alexnet采用了双分支网络结构,相对独立的两个并行部分仅在某些lyaer进行交叉,这样可以在两个GPU上同时进行训练(显存有限)
双分支网络结构:

ZFnet(2013)

ZFnet并没有很明显的突破而是在Alex网络的基础上进行了进一步的调整,卷积层第一层的卷积核由11 *11变为7 *7,且调高了channel个数,增加了神经网络的宽度

VGGNet(2014)

相较于AlexNet,VGGnet的首先明显变化是在层数上变得越来越深,同时VGGnet中的卷积核全部使用了3 *3的大小,更小的卷积核与更深的层数进一步提升了网络的效果。较小的卷积核虽然会有更大的计算量,但在相同感受野的情况下使用较小的卷积核与较深的网络可以带来更多的非线性操作,意味着模型有更好的容量与拟合能力。
VGGNet16的细节与内存计算与参数计算如下

VGGnet内存主要消耗在浅层卷积,中间变量,而参数最主要在第一层全连接中最多。这里说的内存消耗,主要是指存储各层feature map所用的空间,从前往后feature map的size逐渐变小,中间变量逐渐变小但参数逐渐增加。设计时可以使具有较小feature size的深层卷积层具有较大的channel个数,以适应深层表达对象的复杂性的同时适应当时的硬件条件。
Fc7层的输出向量可以视为对原图像特征的表征。

GoogLeNet

GoogLeNet是ILSVRC2014冠军。该网络如之前所提,使用average pooling代替了最耗参数(相应的也最耗时间)的全连接层,同时使用inception模块来代替简单的卷积层;另外,使用1x1的卷积进行了降维。
Googlenet中不同于之前网络卷积层的叠加,采用了Network-in-Network的设计思想,将较小的Inception module网络进行多层叠加,通过并行展开的思 路,每一路对应不同的卷积操作,同时设置了1*1瓶颈层进行channel个数的缩放,控制输出的feature size,使得操作个数与计算量进行有效控制。Concatenation将并行展开的卷积操作进行拼接。Inception module的设计初衷是使用不同大小的感受野,提取更加丰富的信息特征。

Googlenet的中间层也有一些全连接层classifiaction-head,其产生的梯度也参与反响传播过程,但最终分类结果还是取决于最后的classifiaction-head。其目的是为了防止梯度消失,防止深度过深导致最终结果的梯度反向传播中变得过小以至于无法优化浅层参数。添加中间层使得前面参数的优化更加方便。

注意优化过程中,优化的目标函数是min w(aloss1+bloss2+loss)

ResNet

ResNet(残差神经网络)是ILSVRC 2015的冠军。ResNet最大的贡献在于解决了深层网络难以训练的问题(反向传播梯度弥散),其主要的设计思路是残差模块的输出由输入x与经卷积层变换后的f(x)相加构成。

ResNet之前的神经网络,从原理上来说更深的神经网络最起码应该能够覆盖浅层神经网络的训练效果(深层效果理论上应该好于或等于浅层),但实际上因为训练难度的原因(参数调整难度大,反响传播过程过长,梯度可能会消失无法优化浅层参数),使得深层神经网络的表现反而比浅层更差。ResNet中的残差块的卷积层实际优化的是残差,是f(x)=h(x)-x,从优化的角度讲优化残差比优化h(x)更容易。同时我们注意到FC全连接层仅有一层,而FC之前则通过全局pooling层进行降采样,使得resnet的参数量与计算量得到优化。

从另一种角度理解Resnet,如上图的两个网络其实是等价的,Resnet其实时进行了2的n次幂的神经网络的集成以达到更好的训练效果。参考以下论文:

实际上即使砍掉中间的一些层如图中f2,依然能够达到一个不错的性能,所以说resnet相对于优化残差更倾向于进行网络集成来达到一个较好的效果

实际实验中,绝大部分有效path的卷积层层数都在30-40层中间,且较短路径的梯度较高较长较深的路径梯度较小,实际上真正产生作用的层数基本都在20层以下。
截至2017年,典型CNN网络的准确度和复杂度如下

仅学习用,仅学习用,仅学习用,勿用作其他用途(胆小怕事的我.jpg)

最近学校里好多大佬在考试前把自己的学习笔记内容分享了出来,思维导图,复习要点,帮我度过了难关,这里仅以分享的精神分享出我在2020年计算机视觉提交的学习笔记内容。(侵删)

本文地址:https://blog.csdn.net/quqyyy/article/details/107219183

《图像分类学习笔记.doc》

下载本文的Word格式文档,以方便收藏与打印。