计算机视觉结课论文文档_第1页
计算机视觉结课论文文档_第2页
计算机视觉结课论文文档_第3页
计算机视觉结课论文文档_第4页
计算机视觉结课论文文档_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

目录摘要................................................................................................................................1一.图像分类技术简介与相关工作..........................................................................21.1图像分类技术.................................................................................................21.2图像分类技术的相关工作.............................................................................2二.数据以及数据处理..............................................................................................32.1Cifar10...............................................................................................................32.2Cifar10数据处理..............................................................................................4三.本文使用的图像分类方法或改进策略................................................................63.1简单卷积神经网络.........................................................................................63.2简单卷积神经网络+数据增强.......................................................................83.3深度卷积神经网络/深度卷积神经网络+数据增强......................................83.4残差网络Resnet/残差网络Resnet+数据增强............................................113.5HRnet..............................................................................................................12四.实验结果与对比分析..........................................................................................164.1简单卷积神经网络与数据增强的对比.......................................................164.2深度卷积神经网络与数据增强的对比.......................................................174.3Resnet残差网络与数据增强的对比............................................................194.4HRnet..............................................................................................................224.5所有结果accuracy对比...............................................................................23五.总结....................................................................................................................24参考文献......................................................................................................................25

摘要本文主要研究图像分类技术,本文主要通过keras在Cifar10数据集上尝试不同的图像分类的模型与算法,对比与分析各个图像分类方法的优缺点,探究如何提升图像分类的效率以及准确率,另外,本文尝试在keras上复现出HRNet网络,来比较HRNet网络与常规图像分类网络模型的优劣性关键词:图像分类,对比与分析,HRNet1

一.图像分类技术简介与相关工作1.1图像分类技术图像分类,是指根据各自在图像信息中所反映的不同特征,把不同类别的目标区分开来的图像处理方法。它利用计算机对图像进行定量分析,把图像或图像中的每个像元或区域划归为若干个类别中的某一种,以代替人的视觉判读。图像分类是计算机视觉中最基础的一个任务,也是几乎所有的基准模型进行比较的任务。从最开始比较简单的10分类的灰度图像手写数字识别任务mnist数据集,到后来更大一点的10分类的cifar10,也就是和100分类的cifar100任务,到后来的imagenet任务,图像分类模型伴随着本文主要使用的数据集,数据集的增长,一步一步提升到了今天的水平。现在,在imagenet这样的超过1000万图像,超过2万类的数据集中,计算机的图像分类水准已经超过了人类。图像分类在很多领域有广泛应用,包括安防领域的人脸识别和智能视频分析等,交通领域的交通场景识别,互联网领域基于内容的图像检索和相册自动归类,医学领域的图像识别等。1.2图像分类技术的相关工作本文讨论图像分类技术的相关技术主要是从图像分类经典技术的改进与图像分类提升作为的轴来进行介绍的。2013年ILSVRC分类任务冠军网络是Clarifai,不过更为我们熟知的是zfnet,即《VisualizingandUnderstandingConvolutionalNetworks》[1],Zeiler和Fergus在研究中利用反卷积技术引入了神经网络的可视化,对网络的中间特征层进行了可视化,为研究人员检验不同特征激活及其与输入空间的关系成为了可能。在这个指导下对AlexNet网络进行了简单改进,包括使用了更小的卷积核和步长,将11x11的卷积核变成7x7的卷积核,将stride从4变成了2,性能超过了原始的AlexNet网络。而2014年的冠亚军的图像分类网络分别是GoogLeNet[2]和VGGNet[3]。其中VGGNet包括16层和19层两个版本,共包含参数约为550M。全部使用3×3的卷积核和2×2的最大池化核,简化了卷积神经网络的结构。VGGNet很好的展示了如何在先前网络架构的基础上通过简单地增加网络层数和深度就可以提高网络的性能。虽然简单,但是却异常的有效,在今天,VGGNet仍然被很多的任务选为基准模型。而GoogLeNet是于Google的ChristianSzegedy等人提出的22层的网络,其top-5分类错误率只有6.7%。GoogleNet的核心是的inception结构,包括有四个成分。1×1卷积,3×3卷积,5×5卷积,3×3最大InceptionModule的核来自InceptionModule,它采用并行的方式。一个经典池化,最后对四个成分运算结果进行通道上组合。这就是心思想。通过多个卷积核提取图像不同尺度的信息然后进行融合,可以得到图像更好的表征。自此,深度学习模型的分类准确率已经达到了人类的水平(5%~10%)。与VGGNet相比,GoogleNet模型架构在精心设计的Inception结构下,模型更深又更小,计算效率更高。在2015年,何凯明的团队的ResNet[4]获得了分类任务2

冠军。它以3.57%的错误率表现超过了人类的识别水平,并以152层的网络架构创造了新的模型记录。由于ResNet采用了跨层连接的方式,它成功的缓解了深层神经网络中的梯度消散问题,为上千层的网络训练提供了可能。2016年依旧诞生了许多经典的模型,包括赢得分类比赛第二名的ResNeXt[5],101层的ResNeXt可以达到ResNet152的精确度,却在复杂度上只有后者的一半,核心思想为分组卷积。即首先将输入通道进行分组,经过若干并行分支的非线性变换,最后合并。在ResNet基础上,密集连接的DenseNet[6]在前馈过程中将每一层与其他的层都连接起来。对于每一层网络来说,前面所有网络的特征图都被作为输入,同时其特征图也都被后面的网络层作为输入所利用。DenseNet中的密集连接还可以缓解梯度消失的问题,同时相比ResNet,可以更强化特征传播和特征的复用,并减少了参数的数目。DenseNet相较于ResNet所需的内存和计算资源更少,并达到更好的性能。2017年,也是ILSVRC图像分类比赛的最后一年,SeNet[7]获得了冠军。这个结构,仅仅使用了“特征重标定”的策略来对特征进行处理,通过学习获取每个特征通道的重要程度,根据重要性去降低或者提升相应的特征通道的权重。至此,图像分类的比赛基本落幕,也接近算法的极限。但是,在实际的应用中,却面临着比比赛中更加复杂和现实的问题,之后的图像分类问题就需要研究者们根据具体的场景和需要进行其他的改进与提升。二.数据以及数据处理2.1Cifar10本文主要个微小图像数据集的子集。他们由AlexKrizhevsky,VinodNair和GeoffreyHinton收集。使用的是Cifar10数据集,CIFAR-10和CIFAR-100被标记为8000万而其中的CIFAR-10数据集由10个类的60000个32x32彩色图像组成,每个类有6000个图像。有50000个训练图像和10000个测试图像。数据集分为五个训练批次和一个测试批次,每个批次有10000个图像。测试批次包含来自每个类别的恰好1000个随机选择的图像。训练批次以随机顺序包含剩余图像,但一些训练批次可能包含来自一个类别的图像比另一个更多。总体来说,五个训练集之和包含来自每个类的正好5000张图像。以下是数据集中的类,以及来自每个类的10个随机图像,截自Cifar10官方网站:3

本文之所以使用Cifar10数据是因为Cifar10比较方便处理,虽然Cifar10的图像数据同样也不少,但是由于他的数据存储方式比较节省空间与资源,所以处理起来也比较方便,不像imagenet一样有海量的数据,难以下载并进行处理。2.2Cifar10数据处理首先,下图是Cifar10的数据,但是在代码中使用的是keras的数据处理的代码,可以直接下载并进行处理,但是这里还是介绍一下Cifar10的数据。首先介绍上图中的5个data_batch文件和test_batch,前者是是测试集,在一个batch中,有10000张图片,但是像比如imagenet的数据一样是训练集,后者他这里的处理方式比较特别,他并不是一张张图独立出来的,而是为了保证能4

够将数据的体量压缩到较小的程度,并且方便处理,这一个batch可以理解成是将10000张图拼成的一张大图,首先,这一个batch文件的shape是10000x3072uint8的numpy数组,10000是指图像的数量,而这个3072是1024维,又由于这里一个这么来的,因为这一万张图中的一张图大小是32*32,也就是使用的是彩色图像,从上面官网截取的概览图也可以发现。所以所谓彩色图,那就是存在三个通道,就应该是32*32*3,也就是3072,所以这也就是这一个batch是10000x3072的原因。而这里的batches.meta则是label_names[0]==“airplane”。做了一个元素的对应,例如接下来从代码角度来进行说明,由于使用的是keras的数据处理的方法,所以代码比较简单,主要是来看看输入数据的格式与shape。如下图进行输出。得到下图的显示可以看出,训练集的shape是50000*32*32*3,也就是50000张32*32的彩色图片,标签是50000*1,测试集是10000*32*32*3,也就是10000张32*32的彩色图片,标签是10000*1,之后的所谓多分类标签生成也就是将标签变为one-hot的标签,也就是属于哪一类就在那个下标标1,其他全为0,这主要方便在训练中方便模型的拟合。一般使用softmax之后得到的结果与one-hot的标签进行交叉熵计算。然后数据处理中还有下图的代码:5

从我之前有提到,这里的Cifar10数据中的batch文件的shape是一个10000x3072uint8的numpy数组,这里是使用0~255由于keras以及卷积等操作的处理基本上使用float类型,并且0~1的值比较好进行操作或者训练,所以这里将训练集和测试集除以了255进行标准化,下图可以看到处理之后shape并没有发生变化,主要是uint8的形式,也就是RGB值是的数值来进行的表示,但是改变了数值大小。三.本文使用的图像分类方法或改进策略3.1简单卷积神经网络这里的简单神经网络可以理解成一个本文使用的一个基准方法,得到的结果可以作为baseline,以此来进行之后的其他网络的实验结果的对比。首先看一下简单卷积神经网络的构建代码:6

可以看出,首先经过了一个二维卷积层,其中,输出滤波器数量为32,(3,3)是卷积核的shape,padding是same的意思就是说保持卷积前后大小一致,然后经过一层最大池化层,将特征图缩小到原来的两倍,然后再进行以此卷积,这里的padding策略并不是same,所以特征图大小会发生变化,然后再进行一次最大池化进行特征图缩小,中间穿插激活层RELU。通过几次处理之后用flatten对向量进行打平,然后进入dense层进行分类,为了防止过拟合,设置dropout层为0.5.下图是每层的shape。7

3.2简单卷积神经网络+数据增强深层神经网络一般都需要大量的训练数据才能获得比较理想的结果。在数据量有限的情况下,可以通过数据增强来增加训练样本的多样性,提高模型鲁棒性,避免过拟合。例如,可以对图像进行翻转,即将图像沿水平或垂直方法随机翻转一定角度;旋转,即将图像按顺时针或逆时针方向随机旋转一定角度;平移,即将图像沿水平或垂直方法平移一定步长;缩放,即将图像放大或缩小;随机裁剪或补零,即将图像随机裁剪或补零到指定大小等等。Keras自带一种生成相似图像数据的方式,即keras的ImageDataGenerator类。这个类可以对原始图像进行水平/竖直移动一定范围、水平/垂直翻转图像、放大图像一定范围等等,达到数据增强的目的。其他代码大致与3.1中的一样,就是进入ImageDataGenerator进行数据增强,然后由于这里训练集的数据的model.fit要改成model.fit_generator,以此来迎这里训练集暂时不直接除以255来做标准化,而是格式发生了改变,所以在下面合新的训练集的数据格式。之后在其他地方也会使用到这个数据增强,之后就不一一阐述了。3.3深度卷积神经网络/深度卷积神经网络+数据增强较为简单的卷积神经网络对于数据的拟合能力还是十分有限的,并且在图像分类领域,有很多人认为提升模型的层数,增加模型的深度,有助于图像分类的任务,虽然深度学习中并不是层数越多就越好,毕竟层数越多参数越多,更容易发生过拟合,超参数需要进行小心的平衡,并且深度过高会导致梯度传播异常的等等问题,但是不可否认的是,大多数情况下,只要平衡好模型的各个参数,加深模型层数确实会比简单的模型的拟合能力更强一些。下图是深度卷积神经网络的网络模型构建的代码。8

9

可以看到其中卷积神经网络的层数明显加深,下图是每层的shape。10

这里同样也使用了数据增强,之后会进行实验结果的对比。3.4残差网络Resnet/残差网络Resnet+数据增强残差网络是继卷积神经网络提出之后又一个十分经典的方法,主要为了解决卷积神经网络层数过深之后的信息丢失问题,Resnet的大致思想就是不断地使用前面的层的输出数据进行数据加强,避免随着卷积层数的增加而导致数据丢失。Resnet提出了一种残差模块,如下图11

上图是一个残差block的定义,主要是进行卷积之后过一个批normalization函数,防止梯度消失以及梯度爆炸,有助于模型的训练,然后进行激活。上面图的所谓残差是通过下图来进行的,主要使用for循环来进行残差网络的搭建,可以看出,a和b主要是分别进行两次残差模块之后得到的结果,然后将两次之后的结果b与之前的未经过处理的x进行累加,这也就是对于输入x残差网络的精髓。之后也同样使用了数据增强来提升模型效率。3.5HRnet主要是论文《DeepHigh-ResolutionRepresentationLearningforHumanPoseEstimation》中提出的一种方法,模型如下图,具体上课分享的时候讲过。12

下面是复现的代码,复现主要是照着这张模型图进行的复现。13

14

这个网络模型其实应该还可以优化一下,比如使用循环进行操作。这个应该暂时还没有人使用keras复现,因为github上也找不到,复现起来还是其中有几个对keras复现比较重要的几个点。上采样在keras中有些麻烦。首先是原论文中提到的上采样是采取的最邻近插值,但是并没有某个特定的可以使用的网络层来达到这个效果。所以需要使用这个Lambda这个网络层,这个层可以将你自己设置的函数转变成一个层结构,来满足keras对于网络层的格式要求,这里函数实现是这样的:然后使用方法是下面这样:这样就能够在keras的网络层中进行上采样并且使用最邻近插值方法了,另外就是里面有除法的定义,同理:这样就能够使用除法了。但是Lambda还是有一个问题,那就是当函数中含有需要训练的参数时无法进行定义,那样就需要另外一种完整定义keras层的方法了。15

四.实验结果与对比分析4.1简单卷积神经网络与数据增强的对比上图分别是简单卷积神经网络的accuracy图以及loss收敛图。

从上面4.2深度卷积神经网络与数据增强的对比

上两张图是神经网络的层数变深之后,模型会在训练到一半之后就无法再进行提高,并且之后loss甚至会逐渐增大,所以要采取保留最优模型的策略,才能够防止模型在到达训练最优点之后越来越差。下面两张图是数据增强之后的accuracy图以及loss收敛图

可以看出数据增强之后的深度卷积神经网络还是要比不增强的模型表现好很多。4.3Resnet残差网络与数据增强的对比19

上图是Resnet网络的accuracy和loss收敛情况下图是Resnet网络加上数据增强之后的accuracy和loss收敛情况。20

21

可以看出在accuracy上,数据增强之后的Resnet的表现更好,并且从loss收敛情况可以看出,模型在稳定之后,在数据增强的Resnet下,loss更不容易回升,这也说明数据增强之后的Resnet模型的训练更加稳定,模型表现也更好。4.4HRnet下图分别是HRnet的accuracy图和loss收敛图:可以看出训练起来的结果比较正常,但是准确率较低,但是训练集的准确率又是上升的,所以推测出现了过拟合情况,并且可能是在实现过程中可能忽略掉了某个细节或者是HRnet的层数比较少,无法达到预期效果也有可能,由于accuracy有点低,所以不参加后续的比较。具体怎么复现比较好并且符合原文的22

设定,还需要进一步研究。4.5所有结果accuracy对比这张图可以明显看出,综合来说,残差网络Resnet加上数据增强的表现是最好的。23

五.总结通过对计算机视觉的学习,还是掌握到了很多计算机视觉方面的知识,对于计算机视觉的各个任务都有了一个大致的了解,感觉受益匪浅,并且之前浅显接触过计算机视觉,但是掌握的并不是很系统,这门课比较系统的将计算机视觉的知识都讲了,老师的讲解也很细致,很多计算讲的都很精细,而不是几句话带过。而本文主要是对于各种图像分类技术有一个大致了解,并且互相对比他们的表现,并且探究如何使图像分类任务的表现更好,比如使用数据增强等等方法,并且比较了数据增强之前和之后模型的表现,比较直观的了解了数据增强对于计算机视觉这一领域的重要性,并且从accuracy和loss上也能对于效果有很好的展现。此外还对比了浅层和深层卷积神经网络和残差网络以及HRnet网络,对比分析了他们优劣性以及在Cifar10图像分类任务中的模型表现,对于图像分类技术和图像分类任务有了更深的理解。上完这门课之后还是有很多感想,一方面觉得计算机视觉确实是一门十分有趣但是也十分严谨的学科,并且,其实很多计算机视觉上的技术并不仅仅只能使用在计算机视觉任务中,比如像卷积神经网络CNN就已经被运用到了机器学习以及深度学习的各个领域,包括我现在所研究的关联预测,知识图谱嵌入技术等等,里面都有一些还比较前沿的方法会使用到卷积神经网络,并且有些其他的研究问题与课题中,有一些与计算机视觉相关的研究与代码经验,所以计算机视觉也不仅仅只是一个研究领域,它还能带给一些其他的学科一些处理某些数据上的方法,在发展自身的同时,也能够辐射到其他的领域。24

参考文献[1]ZeilerMD,FergusR.Visualizingandunderstandingconvolutionalnetworks[C]//Europeanconferenceoncomputerv

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论