版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于VGG和LSTM网络的视觉问答系统研究与应用摘要随着互联网的发展,人类可以获得的数据信息量呈指数型增长,我们能够从数据中获得的知识也大大增多,人工智能的研究和应用再一次焕发活力。随着人工智能应用的不断发展,近年来,产生了有关视觉问答(VisualQuestionanswering,VQA)的研究,并发展成为人工智能应用的一大热门问题。视觉问答任务是一个多领域、跨学科的任务,以一张图片和一个关于图片形式自由、开放式的自然语言问题作为输入,以生成一条自然语言答案作为输出[1]。简单来说,VQA就是对给定的图片进行问答。本设计结合当前VQA的研究现状,基于深度学习理论,研究了VGG+LSTM网络的视觉问答系统,即用VGG网络对图片进行特征提取,用LSTM网络对问题进行特征提取和系统输出答案的特征生成。最终将这一复杂的人工智能系统,转化为一个多分类问题,实现了对一张图片用自然语言句子进行提问,然后用自然语言的一个单词来回答。本设计的主要创新点是将深度学习领域内的计算机视觉和自然语言处理两个方向进行多模态融合[2],将系统的输出转化为一个分类问题,达到了对图片进行一问一答的效果。关键词:VQA;视觉问答;VGG网络;LSTM网络;深度学习;人工智能
ResearchAndApplicationOfVisualQuestionAnsweringSystemBasedOnVGGAndLSTMNetworkABSTRACTWiththedevelopmentoftheInternet,theamountofdataavailabletohumanbeingshasincreasedexponentially,andtheknowledgewecanobtainfromthedatahasalsoincreasedgreatly.Theresearchandapplicationofartificialintelligencehavebeenrevitalizedagain.Alongwiththecontinuousdevelopmentofartificialintelligenceapplication,theresearchonVisualQuestionAnsweringhasappearedinrecentyearsandhasdevelopedintoahotspot.AVQAtaskisamulti-domain,interdisciplinarytask,withapictureandanaturallanguagequestionaboutthefreeandopenformofpicturesasinputandthegenerationofanaturallanguageanswerasoutput.Briefly,VQAisaquestion-and-answersessiononagivenpicture.ThisdesigncombinesthecurrentresearchstatusofVQA,basedonthetheoryofdeeplearning,tostudytheVQAsystemofVGG+LSTMnetwork.ItreferstouseVGGnetworktoextractthefeaturesofpicturesanduseLSTMnetworktoextractthefeaturesofquestionsandgeneratethefeaturesofsystemoutputanswers.Itfinallytransformsthiscomplexartificialintelligencesystemintoamulti-classificationproblem,realizingthewayofquestioningapictureinanaturallanguagesentence,andansweringitinanaturallanguageword.ThemaininnovationofthisdesignistocombinethetwodirectionsofComputerVisionandNaturalLanguageProcessinginthefieldofdeeplearningandtransformtheoutputofthesystemintoaclassificationproblem,andachievethequestion-and-answereffect.Keywords:VQA;Visualq&a;VGG-Net;LSTM-Net;Deeplearning;目录1. 绪论 11.1视觉问答系统 11.2VQA背景和研究现状 31.2.1VQA发展背景和研究意义 31.2.2VQA的发展历程和研究现状 31.3论文结构安排 52.相关工作准备 72.1图像特征提取 72.2文本特征提取 82.3输出分类器 123.VQA数据集 134.VGG+LSTM网络的视觉问答系统 154.1数据预处理 154.1.1图像数据归约 154.1.2文本数据处理 154.2VQA系统结构 164.3系统实现过程与验证结果 174.3.1系统运行环境 174.3.2系统参数选择 174.3.3系统评价标准和验证结果 184.4系统测试结果 185.总结和展望 225.1论文总结 225.2VQA的未来发展展望 22参考文献 23附录 25致谢 30PAGE2/29绪论1956年夏,在美国达特茅斯学院,麦卡锡、明斯基等科学家开会研讨“如何用机器模拟人的智能”,首次提出“人工智能(ArtificialIntelligence,简称AI)”的概念,标志着人工智能学科的诞生。在过去的六十多年内,人工智能的发展历程跌宕起伏。从上世纪的九十年起,计算机领域进入高速发展阶段,人工智能同样在算法(机器学习、深度学习)、算力(云计算)和算料(大数据)等“三算”方面取得了重要突破,使得人工智能在技术层面从“不能用”到“可以用”出现拐点。随着人工智能的不断发展,近年来,产生了视觉问答系统(visualquestionanswering,VQA)这一课题,并且成为人工智能研究的一大热门问题。通俗的讲,一个合格的VQA系统是将图片和关于图片的内容信息的问题共同作为系统的输入,然后系统结合图片和问题的的信息特征,产生一条符合人类逻辑思维的自然语言作为输出。针对一张特定的图片,如果想要机器以一条自然语言句子来回答关于该图片的某一个特定问题,则需要让机器对图片的内容、问题的含义和意图以及日常的逻辑思维和常识都有一定的理解能力。故就其任务本身而言,这是一个多学科,跨领域的研究问题。1.1视觉问答系统视觉问答系统的定义:一个VQA系统以一张图片和一个关于这张图片形式自由、开放式的自然语言问题作为输入,以生成一条自然语言答案作为输出。简单来说,VQA就是对给定的图片进行问答[1]。近来,开发出一个可以回答任意自然语言提问的计算机视觉系统可以说是一个充满挑战的目标,VQA的前身就是问答系统(QuestionAnsweringSystem,QA),问答系统同样也是人工智能和自然语言处理领域的热门研究问题。人工智能的研究过程就是将一个强AI的问题划分为若干个弱AI的问题,对于VQA这样一个复杂困难、涉及多学科的问题,我们可以将这个复杂问题划分为图像识别和文本语义分析两个弱AI问题,于是本设计的VQA系统就是将深度学习(DeepLearning)领域内计算机视觉(CV)和自然语言处理两大研究方向进行了融合。一个成功的VQA系统应当是什么样子?接下来我们通过一张图片,来进一步理解VQA系统,以及VQA系统的主要解决问题。如图1-1图1-1VQA问题描述图上图是理解VQA问题描述的经典例图,图中有一个人物主体和两条与图片相关的自然语言问问题,首先分析第一个问题,问图中女性的眼睛是什么颜色?对于这条问题,我们首先在NLP层面理解问题,可以提取到两个关键的单词eyes和color;然后在CV层面提取图片的特征,针对图像的像素值,纹理特征或者卷积特征(convolutionfeature)等够准确找到眼睛的位置信息,并且能够提取到该区域一系列特征,包括颜色、纹理、形状等特征和空间关系等;最后根据NLP提问的颜色提问,给出对应的特征,然后由系统生成对应的自然语言词句作为回答。对于第二个问题,胡子的是由什么组成的?这个问题对于系统就要有更高的逻辑思维能力和常识意识。很明显,通过人为逻辑思维理解判断,问题并不是要问胡子的正常构成成分,而是希望得到的回答是香蕉,即在胡子的位置是什么物体?因为女性一般情况下是没有胡子的。所以,系统要有一定的常识判断能力,再根据图像特征提取到图像的空间关系,文本语义信息处理,最后回答出正确的答案。1.2VQA背景和研究现状1.2.1VQA发展背景和研究意义随着自然语言处理技术的发展,许多研究逐渐转向了复杂、更智能化的问题。2015年,AishwaryaAgrawal和DeviParikh等人发表文章,首次提出了VQA问题,并且给定了关于图像的图像和自然语言问题,任务是提供准确的自然语言答案。他们提供了一个包含0.25M大小的图像包,0.76M大小的问题包和10M大小的答案包的数据集,以及许多VQA的基线和方法,并与人类表现进行了比较。作为一种区别于传统卷积神经网络对图片的处理(目标检测、图像分割、场景识别等),VQA更侧重与一种对图像的描述,即通过自然语言处理技术,将系统加入了更高层次的逻辑思维能力和常识思考能力。所以,VQA也进一步的促进了人机交互能力和强AI问题的发展。对于计算机多媒体领域的发展同样起到促进作用,对于海量图像文本信息检索和人工智能基础测试和图灵测试的发展也有帮助。在商业上,该系统的实现直接能够让视觉受损的用户受益,同样也可能改变传统的儿童智能早教行业。1.2.2VQA的发展历程和研究现状(1)联合嵌入法:Jointembeddingapproaches来源于深度学习的NLP的发展。相较于看图说话,VQA则多了一步在两个模态间的进一步推理过程。一般的,图像表示(imagerepresentations)用预训练的CNN模型,文本表示(Textrepresentations)用预训练的词嵌入。词嵌入就是将单词映射到空间中,距离来度量语义相似度,然后将嵌入送到RNN中来处理语法和句子。具体的实现方法为:Malinowskietal等人提出了“Neural-Image-QA”模型[3],文本特征提取用加入了LSTM网络的RNN来处理,图像特征用预训练的CNN来处理,然后将两个特征同时输入到第一个编码器LSTM中,再将生成的向量输入到第二个解码器LSTM中,最后会生成一个变化长度的答案,每次迭代产生一个单词,知道产生<end>分词为止。结构如图1-2:图1-2联合嵌入法框架图联合嵌入法非常直接,是目前大多数VQA的基础,除了上边介绍的框架之外,还有许多使用联合嵌入法的框架,基本都是基于预训练CNN来提取图片特征和RNN来提取文本特征,只是在多模融合和答案生成时有所不同。目前该方法还有很大的提升空间。(2)注意力机制:Attentionmechanisms上面提出联合嵌入法的模型,在视觉特征输入这里,都是提取的全局特征作为输入,会产生一些无关或者噪声信息来影响输出,而注意力机制就是利用局部特征来解决这个问题。注意力机制能够改善提取全局特征的模型性能[4]。最近的研究表明,注意力机制尽管能够提高VQA的总体精度,但是对于二值类问题却没有任何提升,一种假说是二值类问题需要更长的推理,这类问题的解决还需要进一步研究。(3)合成模型:CompositionalModels这种方法是对不同模块的连接组合,优点是可以更好的进行监督。一方面,能够方便转换学习,另一方面能够使用深度监督“deepsupervision”。这里主要讨论的合成模型有两个,一个是NeuralModuleNetworks(NMN),另一个是DynamicMemoryNetworks(DMN)。Andreasetal等人提出了NeuralModuleNetworks(NMN)[5],NMN的贡献在于对连续视觉特征使用了逻辑推理,而替代了离散或逻辑预测。模型的结构框架如图1-3:图1-3合成模型模型的输入和输出一共有三类:图像,图像注意力区域,标签。该方法比传统方法能更好的进行推理,处理更长的问题。但是局限性在于问题解析这里出现了瓶颈,此外,模块结合采用问题简化的方式,这就忽略了一些语法线索。(4)使用外部知识的模型:ModelsusingexternalknowledgebasesVQA在理解图像内容时,经常需要一些非视觉的先验信息,涉及范围可以从常识到专题,目前已有的外部知识库包括:DBpedia、Freebase、YAGO、OpenIE、NELL、WebChild、ConceptNet。Wangetal等人提出了基于DBpedia[6]的VQA网络命名为“Ahab”,,首先用CNN提取视觉概念,然后结合DBpedia中相似的概念,再学习image-question到查询的过程,通过总结查询结果来获得最终答案。还有一种基于该方法的改进模型,叫FVQA。是Wuetal等人提出了一种利用外部知识的联合嵌入法,首先用CNN提取图像的语义属性,然后从DBpedia检索相关属性的外部知识,将检索到的知识用Doc2Vec嵌入到词向量中,最后将词向量传入到LSTM网络,对问题进行解释并生成答案。但这种方法同样存在性能和缺陷,一个问题就是这些模型的问题类型都有限。1.3论文结构安排第一章,主要介绍视觉问答系统的定义和发展背景,以及VQA目前的发展前景和在未来商业上的潜在应用价值。最后总结了一下当前VQA的研究过程中,目前常用的四种研究方法。第二章,主要介绍本论文系统需要使用的相关技术,包括图像和问题的特征提取,以及最后系统生成回答的方法。其中重点讲解VGG和LSTM两个神经网络的原理和运用。第三章,介绍当前的VQA研究过程中主要使用的数据集,并且详细介绍本文中使用的数据集。第四章,主要介绍本论文中VQA系统的框架结构和训练验证结果。主要采用VGG+LSTM作为特征提取网络,最后使用softmax分类器作为系统的输出。在训练过程中数据的预处理,参数的选择和调节以及最后的系统性能的评价方案。第五章,总结本论文的主要工作,以及对未来VQA发展进行展望。
2.相关工作准备本文采取VQA的研究方法是基于上边所介绍的联合嵌入法,同样是用预训练的CNN网络来提取图像的特征,使用RNN网络来进行文本的特征提取,然而当前并没有一个科学准确地评价自然语言句子精准度的标准,因此我们只能在有技术方法中,用一个单词作为VQA的输出答案,这样就可以把视觉问答任务转换成一个多分类问题,从而可以利用现有的准确度评价标准来度量系统性能。我们在开始构建模型框架之前,我们首先介绍用来进行图像特征提取的VGG网络和进行文本特征提取的LSTM网络,以及最后用来产生答案的分类[7]。2.1图像特征提取卷积神经网络(CNN)最初设计被用来做图片分类工作,近来也被用来做图像分割,图像风格迁移以及其他计算机视觉的工作;当然,也有被用来做NLP的例子。卷积神经网络是最能解释深度学习的模型之一,因为我们可以将它的表达特征可视化来理解它可能学习到的东西。VGG是Oxford的VisualGeometryGroup的组提出的。该网络是在ILSVRC2014上的首次被提出,主要工作是为了证明在保证模型具有相同大小的感受野的情况下,增加网络的深度能够在一定程度上提高网络最终的性能。常用到的VGG网络有两种,分别是VGG-16和VGG-19,两个网络并没有本质上的区别,只是网络深度不一样,VGG-16网络结构如图2-1。图2-1VGG-16模型结构在用来处理图像的卷积神经网络中,VGG网络是我最喜欢使用的网络,并且是我认为最好用的网络。VGG网络的结构非常清晰简明,整个网络都使用了大小尺寸相同的卷积核(3x3)和最大池化尺寸(2x2)。同AlexNet网络相比,这样做的目的就是在相同感受野和步长的情况下,VGG网络使用几个小滤波器(3x3)卷积层的组合比AlexNet网络使用一个大滤波器(5x5或7x7)卷积层效果更好,并且验证了通过不断加深神经网络结构的深度,这样可以同时提升网络的整体性能。但是,更换了小的卷积核尺寸,网络的性能得到了提高,但却耗费更多计算资源,在相同的计算性能下,VGG网络花费了更多的计算时间,提取图像的卷积特征变得更慢,主要的原因是在网络层使用了更多的参数,其中大部分的权重参数都是来自于第一个全连接层,并且,VGG网络有3个全连接层。这样使得模型参数权重达到500M左右。2.2文本特征提取循环神经网络(RecurrentNeuralNetwork,RNN)[8]是一类以序列(sequence)数据(相互依赖的数据流,比如时间序列数据、信息性的字符串、对话等)为输入。在序列的演进方向进行递归(recursion),且所有节点(循环单元)按链式连接的递归神经网络(recursiveneuralnetwork)。RNN可以用到很多领域中去,除了本设计中用来文本分析和文本生成之外,RNN还用在机器翻译,语音识别,生成图像描述,视频标记等领域。引入了卷积神经网络构筑的循环神经网络可以处理包含序列输入的计算机视觉问题。在二十世纪80-90年代,开始了对循环神经网络的研究,并在二十一世纪初发展为深度学习优秀算法之一
,其中双向循环神经网络(BidirectionalRNN,Bi-RNN)和长短期记忆网络(LongShort-TermMemorynetworks,LSTM)是常见的循环神经网络,接下来主要阐述LSTM网络的工作原理。LSTM是一种特殊的RNN模型,是由Hochreiter&Schmidhuber在1997年首先提出,最初是为了解决RNN模型梯度弥散的问题,但是在后来的工作中被许多人精炼和推广,现在被广泛的使用。在传统的RNN中,训练过程使用的是基于时间的反向传播算法(back-propagationthroughtime,BPTT),当时间比较长时,需要回传的误差会指数下降,导致网络权重更新缓慢,无法体现出RNN的长期记忆的效果,因此需要一个存储单元来存储记忆,因此LSTM模型顺势而生。从图2-2和2-3我们可以看出传统RNN网络和LSTM网络两种模块链的区别。图2-2传统RNN网络层结构图2-3LSTM网络层结构与RNN网络的结构不同之处是LSTM网络最顶层多了一条名为“cellstate”的信息传播带,cellstate就是信息记忆的地方,如图2-4。图2-4cellstate其实就是整个模型中的记忆空间,随着时间而变化的,当然,cellstate本身是无法控制哪些信息是否被记忆,而真正其控制作用的是控制门(gate);控制门的结构如图2-5:主要由一个sigmoid函数跟点乘操作组成;sigmoid函数的值域在0-1之间,点乘操作决定多少信息可以传送过去,当sigmoid函数值为0时,则cellstate不传送存储的信息,当sigmoid函数值为1时,则cellstate将所有存储的信息进行传送。LSTM中有3个控制门:输入门、输出门、记忆门,三个控制门作用各不相同,具体功能如下:图2-5控制门结构图(1)记忆门:如图2-6,选择忘记或者存储过去某些记忆信息,即公式(2-1):图2-6记忆门ft=σWf∙(2)输入门:如图2-7,存储当前输入的某些信息,即公式(2-2)、(2-3):图2-7输入门itCt=tanhW(3)如图2-8,将记忆门与输入门的存储信息进行合并,即公式(2-4):图2-9记忆门与输入门合并Ct(4)输出门:如图2-10,存储传递到下一个模块链记忆门的信息,即公式(2-5)、(2-6):图2-10输出门otht2.3输出分类器分类是数据挖掘的一种非常重要的方法。分类的概念是在已有数据的基础上学会一个分类函数或构造出一个分类模型(即我们通常所说的分类器(Classifier))。分类器是数据挖掘中对样本进行分类的方法的统称,常用的分类方法包含决策树、逻辑回归、朴素贝叶斯、支持向量机(SVM)等算法。对于本文的VQA系统,我的期待的输出答案,本应该是将图像特征和文本特征进行多模态融合,然后在传入LSTM网络进行训练,然后生成一条自然语言的特征向量,最后经过一个文本解码器输出。但是鉴于现在没有一个好的评价生成自然语言准确率的标准,我们用一个关键单词来替换自然语言句子作为系统的最后输出,具体做法如下文。本文对所有训练数据的回答进行处理,将所有的回答出现按次数统计,然后排序,选择前1000个经常出现的答案,这些答案中包括yes、no、1、2、red、green等在现实生活中经常用的回答,而且这个回答样本基本上已经涵盖了整个回答数据集的82.67%以上的回答。于是我们就将系统转换成一个1000类的多分类问题。softmax分类器是神经网络中最常用的分类器。它简单有效,所以十分流行。Softmax的原理就是,对于一个输入x,我们想知道它是N个类别中的哪一类。现有一个模型,能对输入x输出N个类别的评分,评分越高代表x是这个类别的可能性越大,评分最高的被认为是x正确的类别。然而评分范围很广,我们希望把它变成一个概率,而softmax就是一个能将+∞,softmaxs其中si表示模型对输入x在第i个
3.VQA数据集与自然语言处理或计算机视觉中的许多问题一样,例如机器翻译、图像标注(ImageCaptioning)或图像识别,数据集的可用性是一个关键问题。VQA领域非常复杂,一个好的数据集体积应该足够大,大到能够在真实的场景中捕捉问题和图像内容的各种可能性。如今许多数据集中的图像都来自微软的MS-COCO数据集,这个数据集包含了32.8万张图像,91个对象类型,250万个标记的实例,涵盖了现实生活各个场景。目前,在学者和企业的研究过程中,已经出现许多VQA的数据集[9],主要包括四类:第一类是自然场景的数据集,有DAQUAR、COCO-QA、FM-IQA、VQA-real、VisualGenome、Visual7W、VQA-v1和VQA-v2等;第二类是合成场景的数据集,有VQAabstractscenes、Balanceddataset和CLEVR等;第三类是外部知识数据集,主要有KB-VQA和FVQA;最后一类就是其他的数据集,主要有Diagrams和Shapes。本文研究过程中所使用的是第一类的自然场景数据集。接下来主要介绍DAQUAR、COCO-QA、VQA-v1和VQA-v2这几个数据集:(1)DAQUAR(DAtasetforQUestionAnsweringonReal-worldimages)DAQUAR数据集是最早的,也是最小的VQA数据集包含了6795张训练数据和5673张测试数据,所有图像来自于数据集NYU-DepthV2Dataset。该数据集质量较差,一些图像杂乱无章,分辨率低,并且问题和回答有明显的语法错误。虽然这个数据集是一项伟大的创举,但NYU的数据集只包含室内场景。关于在室外的问题就很难回答出来。对人类的评估,NYU数据集显示了50.2%的准确率。DAQUAR数据集的另一个缺点是它的大小使它不适合用于训练和评估复杂模型。(2)COCO-QACOCO-QA数据集比DAQUAR大得多。它包含123,287张来自COCO数据集的图片,78,736个训练和38,948个测试question-answerpairs。为了创建如此大量的question-answerpairs,RenM,KirosR,ZemelR等人[10]使用了自然语言处理算法来自动从COCO图像标注(imagecaption)中生成它们。例如,对于一个给定的标注,比如“房间里的两把椅子”,它们会产生一个如“有多少椅子?”的问题,必须注意的是,所有的答案都是一个单一的词。虽然这种做法很聪明,但这里存在的问题是,这些问题都具有自然语言处理的限制,所以它们有时会被奇怪地表述出来,或者有语法错误。在某些情况下,它们的表达是难以理解的。另一个不便之处是,数据集只有四种问题,问题分布也不均匀:对象(69.84%)、颜色(16.59%)、计数(7.47%)和位置(6.10%)。(3)VQA-v1和VQA-v2与其他数据集相比,VQA数据集比较大。除了来自COCO数据集的204,721张图片外,它还包含5万个抽象的卡通图片。每个图像对应三个问题,每个问题有十个答案。由此可以得出VQA数据集有超过76万个问题,大约有1000万个答案。VQA-v1发布于2015年,VQA-v2发布于2017年,两个版本都是基于微软的COCO数据集。v2是在v1的基础上,两个数据集都是人工标注的问答数据集,v2相较于v1尽量减少了语言偏见。对于问题的类型:v1是多项选择得问题(Multiple-Choice),v2是开放式问答(Open-Ended)。每个版本的数据集内,除了图片都相同之外,分别还有训练数据、验证数据和测试数据的问题和答案,都是以josn文件存储。具体的文件格式如下表3-1:表3-1VQA数据集字段类型NameType类型Description描述image_idint图片IDquestion_idint图片对应的问题IDquestionstr图片对应的问题answer_idint问题对应的回答IDanswerstr问题对应的回答本文的系统使用的数据集,受计算机性能的限制,采用是对VQA-v2的部分数据,其中包括训练图像82,738张,大约12.7G,验证图像40,504张,大约6.25G。
4.VGG+LSTM网络的视觉问答系统4.1数据预处理第三章我们已经介绍了VQA的数据集,这里我们选择VQA-v1版本的数据集,它分为两部分:一部分是由MS-COCO数据集提供的,包含现实世界照片的数据集,以及另一个包含了抽象图画场景的数据集。后者通常只包括人物等内容,移除了图像噪声,主要用于进行高阶的推理用途。问题和答案由众包源的标注员提供。每个问题有十个答案,答案分别来自不同的标注员。答案通常都是一个单词或是短句。大约40%的问题答案为是或否。为了评估需要,同时提供开放性答案和多选答案两种格式。多选答案的问题一共有18个备选答案。本实验将开放性VQA视为N分类问题,即选择出现频率最高的N个答案,然后对于每一组问题和图像输入,输出一个分类。作为答案。本实验选择的N=1000,大约覆盖了整个数据集中答案的82.67%。4.1.1图像数据归约对于tensorflow深度学习的框架,需要的数据是一个张量(tensor)。在本系统中,用scipy这个科学计算工具包来加载图片,然后用numpy将加载的图片转换为一个224*223*3的三维数组向量,并且将数组内的每个像素值除以225,归约到0-1之间,因为VGG-16网络接受的是像素在0-1的RGB三通道图像。并且载数据规约之后,图像像素值虽然变小,但仍大致保持原数据的完整性。这样,在归约后的数据集上挖掘将更有效,并产生相同(或几乎相同)的分析结果,同时更加利于模型训练过程的损失函数下降和网络权重参数的优化。4.1.2文本数据处理数据集内的训练和验证question-answer都是以josn文件存储,文件比较大,而且存在不同图片相同问题的情况。在训练过程中,如果每次都用IO来读取文件,过程会比较慢,同时占用计算资源,这里我们将所有的question-answer和对应ID从json文件中抽取,然后一一对应整合到同一个文件,并且以pkl文件的形式存储。同样在最后softmax分类器最后输出结果的时候,需要一个解码过程,这时候我们需要一个参照的数据字典(vocab),就是将前1000个最常出现的回答,与他们的向量特征做一个一一对应的参照,同样我们以pkl文件存储,每次我们的系统回答结果只需要在这个vocab文件内进行转换之后输出就可以了。4.2VQA系统结构本文的VQA系统采用VGG+LSTM网络来设计[11],系统的框架如图4-1:图4-1VQA系统结构系统整体可分为三部分:图像特征提取、问题特征提取、答案生成分类器[11]。图像的特征提取使用VGG-16网络,这里将第二个全连接层的输出作为图片的特征向量,最终得到一个一维的4096长度大小的向量。然后将这个向量进行一个线性映射,以便于和后边的文本特征进行模态融合[11]。问题特征提取使用一个两层的LSTM网络,每一层LSTM都有512大小的模块链。对于每一个问题进行编码的时候,都将其转换为一个长度为512的向量然后传入LSTM网络中。每一个问题经过LSTM网络特征提取后,和图片的特征进行模态融合,将图像的特征添加到问题特征后边然后再次进入LSTM进行特征提取,然后生成一个长度为1000的特征向量,传入答案生成分类器中。答案生成分类器选择的是softmax分类器,将神经网络输出的长度为1000的向量映射到对应分类的概率,然后选择概率值最大的类别就是正确的分类结果,经过解码器输出即可。同样的方法,我们选择概率为前五的向量,将其解码输出,就是系统得到的最可能回答结果。4.3系统实现过程与验证结果4.3.1系统运行环境本实验在WindowsPC端运行,具体硬件设备性能:Inter(R)Core(TM)i5-8200UCPU@1.6GHZ1.80GHZ8核,16GB运行内存;软件配置:windows10操作系统,Python3.7tensorflow1.14.0。4.3.2系统参数选择在上文的我们已经介绍了VQA的部分参数,VGG网络为预训练的网络,图片的特征向量为大小4096的一维特征向量,问题特征提取网络为一个两层的LSTM,每层LSTM网络有512个隐藏模块链,输出的文本特征向量大小为512的一维特征向量,softmax分类器输出长度为1000的一维特征向量。但是为了防止系统的过拟合,我们的VGG和LSTM网络后边都加上一个大小为0.5的Dropout,就是随即丢弃50%的神经单元,强迫网络去学习更多特征,以此来提高模型的泛化能力。系统的学习率(learn-rate),初始设定为0.0001,在tensorflow中,AdamOptimizer函数可以自动调节网络的学习率,该函数是基于Adam算法,AdamOptimizer可控制学习速度调节,经过偏置校正后,每一次迭代学习率都有个确定范围,使得参数比较平稳。Adam这个名字来源于自适应矩估计(AdaptiveMomentEstimation),也是梯度下降算法的一种变形,但是每次迭代参数的学习率都有一定的范围,不会因为梯度很大而导致学习率(步长)也变得很大,参数的值相对比较稳定。概率论中矩的含义是:如果一个随机变量X服从某个分布,X的一阶矩是E(X),也就是样本平均值,X的二阶矩就是E(X^2),也就是样本平方的平均值。Adam算法利用梯度的一阶矩估计和二阶矩估计动态调整每个参数的学习率。训练过程BATCH_SIZE设定为200,迭代次数(epochs)为12次,关于BATCH_SIZE的设置我要根据实际情况来定,BATCH_SIZE的定义为一次训练所选取的样本数,在卷积神经网络中,如果是小样本的数据集训练,也可以不设置BATCH_SIZE,一次将样本全部传入网络中去,但是大型的数据集,一次的样本全部传入网络中去,势必将引起内存爆炸,于是就提出BATCH_SIZE的概念。通过训练过程,发现在迭代12次之后,系统的损失函数不在下降,准确率在52%左右,不再有明显提高。4.3.3系统评价标准和验证结果本系统最后将VQA问题转换为一个多分类问题,所以,用准确率来衡量系统的性能。VQA数据集也给出了一种评估方法[7]:min系统给出的答案与数据集人为标定的答案完全相同3,我们根据这个评价标准,用验证数据集来评价系统,最终得到经过12个epochs之后,系统的准确率为50.3%。4.4系统测试结果系统正确回答测试如表(4-1):表4-1系统正确回答问题展示表PictureQuestionTop5answerWhataretheydoing?1.surfing2.swimming3.flyingkite4.walking5.drinkingHowmanydogsinthispicture?4.45.3Whatsportisthis?1.skateboarding2.parasailing3.snowboarding4.skiing5.surfingWhatanimalisthis?1.zebra2.horse3.cow4.zebras5.goat系统错误回答测试如表(4-2):表4-2系统错误回答问题展示表PictureQuestionTop5answerWhatcolorofthiscat?1.white2.orange3.whiteandbrown4.gray5.blackHowmanypeopleinthepicture?4.15.5Whatcoloristheemptyplateonthetable?1.red2.black3.yellow4.white5.grayWhat’sonthebook?1.bottle2.trees3.vase4.woman5.statue通过上边几组测试结果,我们就可以发现,目前我们训练出来的VQA系统,对于较为简单的问题的图像,系统的成功率比较高;但是针对需要计数、推理、相对复杂的、具有一定逻辑思维能力或者常识性的问题,或者图片的内容比较复杂,问题相关主体在图像中相对尺寸比较小、像素值模糊,这样系统的出错几率就会增加[13]。
5.总结和展望本章主要对本论文的主要内容进行总结,以及对未来VQA的发展研究方向进行展望[14]。5.1论文总结本文的主要工作是利用VGG和LSTM模型,将计算机视觉(CV)和自然语言处理(NLP)两大领域相结合,完成了视觉问答任务。论文的具体工作讨论了VQA的研究意义和现如今的发展现状;并且介绍了目前VQA研究过程中常用到的数据集,并且对本文中用到的数据集惊醒了详细介绍;在VQA系统的实现过程中,详细阐述了图像和问题的特征提取方法,以及最后的答案产生过程;载系统模型训练完成后,通过制定评价方法,使用验证数据集,验证了系统的准确性。5.2VQA的未来发展展望在本文的验证和测试结果中,发现本文的VQA系统准确性并不是太高,而且对于一些复杂图像和有一定逻辑思维问题处理效果不是太好,说明未来的VQA系统还有很大的提升发展空间。究其原因,VGG对图像信息进行特征提取是基于全图进行,LSTM网络在学习过程中的知识来源只有训练集中的问答对,知识结构比较简单且信息量匮乏。所以未来,VQA的问答数据集应该得到扩充,而且问题和回答的质量需要更高,当然,这是一个非常耗时、耗资的巨大任务量。对于图像的特征提取,未来的趋势是加入注意力机制,可以让神经网络在进行特征提取时,更加聚焦在问题对图像提问的关键部分。同时,随着多媒体视频的发展,未来视频存储会和图片、文本一样在我们生活中使用越来越多,同样,对于VQA的发展必将应用在视频技术处理中[15]。随着深度学习的发展,计算机视觉和自然语言处理领域的技术越来越成熟,未来的VQA系统肯定会越来越精准。
参考文献[1]QiWu,DamienTeney,PengWang,ChunhuaShen,AnthonyDick,AntonvandenHengel.Visualquestionanswering:Asurveyofmethodsanddatasets[J].ComputerVisionandImageUnderstanding,2017.[2]李健,姚亮.融合多特征深度学习的地面激光点云语义分割[J/OL].测绘科学:1-11[2020-05-18].[3]M.Malinowski,M.Rohrbach,andM.Fritz.AskYourNeurons:ANeural-basedApproachtoAnsweringQuestionsaboutImages.InProc.IEEEInt.Conf.Comp.Vis.,2015[4]K.Chen,J.Wang,L.-C.Chen,H.Gao,W.Xu,andR.Nevatia.ABC-CNN:AnAttentionBasedConvolutionalNeuralNetworkforVisualQuestionAnswering.arXivpreprintarXiv:1511.05960,2015[5]J.Andreas,M.Rohrbach,T.Darrell,andD.Klein.NeuralModuleNetworks.InProc.IEEEConf.Comp.Vis.Patt.Recogn.,2016[6]Q.Wu,P.Wang,C.Shen,A.Dick,andA.v.d.Hengel.AskMeAnything:Free-formVisualQuestionAnsweringBasedonKnowledgefromExternalSources.InProc.IEEEConf.Comp.Vis.Patt.Recogn.,2016[7]张昊伟.基于多渠道卷积神经网络-LSTM的可视化问答系统研究[D].云南大学,2018.[8]陈凯.深度学习模型的高效训练算法研究[D].中国科学技术大学,2016.[9]K.Kafle,C.Kanan."VisualQuestionAnswering:Datasets,Algorithms,andFutureChallenges."
ComputerVisionandImageUnderstanding,2017[10]RenM,KirosR,ZemelR.ExploringModelsandDataforImageQuestionAnswering[J].2015.[11]M.Ren,R.Kiros,andR.Zemel.ImageQuestionAnswering:AVisualSemanticEmbeddingModelandaNewDataset.InProc.AdvancesinNeuralInf.Process.Syst.,2015.[12]白亚龙.面向图像与文本的多模态关联学习的研究与应用[D].哈尔滨工业大学,2018.[13]葛梦颖,孙宝山.基于深度学习的视觉问答系统[J].现代信息科技,2019,3(11):11-13+16.[14]王旭.基于深度学习的视觉问答系统研究[D].吉林大学,2018.[15]YunseokJang,
YaleSong,
ChrisDongjooKim,
YoungjaeYu,
YoungjinKim,
GunheeKim.InternationalJournalofComputerVision,2019,Vol.127(10),pp.1385-1412
附录vis+lstm_model.pyimporttensorflowastf
importmath
classVis_lstm_model:
definit_weight(self,dim_in,dim_out,name=None,stddev=1.0):
returntf.Variable(tf.truncated_normal([dim_in,dim_out],stddev=stddev/math.sqrt(float(dim_in))),name=name)
definit_bias(self,dim_out,name=None):
returntf.Variable(tf.zeros([dim_out]),name=name)
def__init__(self,options):
withtf.device('/cpu:0'):
self.options=options
#+1forzeropadding
self.Wemb=tf.Variable(tf.random_uniform([options['q_vocab_size']+1,options['embedding_size']],-1.0,1.0),name='Wemb')
self.Wimg=self.init_weight(options['fc7_feature_length'],options['embedding_size'],name='Wimg')
self.bimg=self.init_bias(options['embedding_size'],name='bimg')
#TODO:Assumedembeddingsizeandrnn-sizetobesame
self.lstm_W=[]
self.lstm_U=[]
self.lstm_b=[]
foriinrange(options['num_lstm_layers']):
W=self.init_weight(options['rnn_size'],4*options['rnn_size'],name=('rnnw_'+str(i)))
U=self.init_weight(options['rnn_size'],4*options['rnn_size'],name=('rnnu_'+str(i)))
b=self.init_bias(4*options['rnn_size'],name=('rnnb_'+str(i)))
self.lstm_W.append(W)
self.lstm_U.append(U)
self.lstm_b.append(b)
self.ans_sm_W=self.init_weight(options['rnn_size'],options['ans_vocab_size'],name='ans_sm_W')
self.ans_sm_b=self.init_bias(options['ans_vocab_size'],name='ans_sm_b')
defforward_pass_lstm(self,word_embeddings):
x=word_embeddings
output=None
forlinrange(self.options['num_lstm_layers']):
h=[Noneforiinrange(self.options['lstm_steps'])]
c=[Noneforiinrange(self.options['lstm_steps'])]
layer_output=[]
forlstm_stepinrange(self.options['lstm_steps']):
iflstm_step==0:
lstm_preactive=tf.matmul(x[lstm_step],self.lstm_W[l])+self.lstm_b[l]
else:
lstm_preactive=tf.matmul(h[lstm_step-1],self.lstm_U[l])+tf.matmul(x[lstm_step],self.lstm_W[l])+self.lstm_b[l]
i,f,o,new_c=tf.split(lstm_preactive,num_or_size_splits=4,axis=1)
i=tf.nn.sigmoid(i)
f=tf.nn.sigmoid(f)
o=tf.nn.sigmoid(o)
new_c=tf.nn.tanh(new_c)
iflstm_step==0:
c[lstm_step]=i*new_c
else:
c[lstm_step]=f*c[lstm_step-1]+i*new_c
#BUGINTHELSTM-->Haven'tcorrectedthisyet,Willhavetoretrainthemodel.
h[lstm_step]=o*tf.nn.tanh(c[lstm_step])
#h[lstm_step]=o*tf.nn.tanh(new_c)
layer_output.append(h[lstm_step])
x=layer_output
output=layer_output
returnoutput
defbuild_model(self):
fc7_features=tf.placeholder('float32',[None,self.options['fc7_feature_length']],name='fc7')
sentence=tf.placeholder('int32',[None,self.options['lstm_steps']-1],name="sentence")
answer=tf.placeholder('float32',[None,self.options['ans_vocab_size']],name="answer")
word_embeddings=[]
foriinrange(self.options['lstm_steps']-1):
word_emb=tf.nn.embedding_lookup(self.Wemb,sentence[:,i])
word_emb=tf.nn.dropout(word_emb,self.options['word_emb_dropout'],name="word_emb"+str(i))
word_embeddings.append(word_emb)
image_embedding=tf.matmul(fc7_features,self.Wimg)+self.bimg
image_embedding=tf.nn.tanh(image_embedding)
image_embedding=tf.nn.dropout(image_embedding,self.options['image_dropout'],name="vis_features")
#Imageasthelastwordinthelstm
word_embeddings.append(image_embedding)
lstm_output=self.forward_pass_lstm(word_embeddings)
lstm_answer=lstm_output[-1]
logits=tf.matmul(lstm_answer,self.ans_sm_W)+self.ans_sm_b
#ce=tf.nn.softmax_cross_entropy_with_logits(logits,answer,name='ce')
ce=tf.nn.softmax_cross_entropy_with_logits(labels=answer,logits=logits,name='ce')
answer_probab=tf.nn.softmax(logits,name='answer_probab')
predictions=tf.argmax(answer_probab,1)
correct_predictions=tf.equal(tf.argmax(answer_probab,1),tf.argmax(answer,1))
accuracy=tf.reduce_mean(tf.cast(correct_predictions,tf.float32))
loss=tf.reduce_sum(ce,name='loss')
input_tensors={
'fc7':fc7_features,
'sentence':sentence,
'answer':answer
}
returninput_tensors,loss,accuracy,predictions
defbuild_generator(self):
fc7_features=tf.placeholder('float32',[None,self.options['fc7_feature_length']],name='fc7')
sentence=tf.placeholder('int32',[None,self.options['lstm_steps']-1],name="sentence")
word_embeddings=[]
foriinrange(self.options['lstm_steps']-1):
word_emb=tf.nn.embedding_lookup(self.Wemb,sentence[:,i])
word_embeddings.append(word_emb)
image_embedding=tf.matmul(fc7_features,self.Wimg)+self.bimg
image_embedding=tf.nn.tanh(image_embedding)
word_embeddings.append(image_embedding)
lstm_output=self.forward_pass_lstm(word_embeddings)
lstm_answer=lstm_output[-1]
logits=tf.matmul(lstm_answer,self.ans_sm_W)+self.ans_sm_b
answer_probab=tf.nn.softmax(logits,name='answer_probab')
predictions=tf.argmax(answer_probab,1)
input_tensors={
'fc7':fc7_features,
'sentence':sentence
}
returninput_tensors,predictions,answer_probab
vis+lstm_model.py
HYPERLINK如何给电脑重做系统给电脑重做系统,自己学学,可少花钱,哈哈[图]
一、准备工作:
如何重装电脑系统
首先,在启动电脑的时候按住DELETE键进入BIOS,选择AdvancedBIOSFeatures选项,按Enter键进入设置程序。选择FirstBootDevice选项,然后按键盘上的PageUp或PageDown键将该项设置为CD-ROM,这样就可以把系统改为光盘启动。
其次,退回到主菜单,保存BIOS设置。(保存方法是按下F10,然后再按Y键即可)
1.准备好WindowsXPProfessional简体中文版安装光盘,并检查光驱是否支持自启动。
2.可能的情况下,在运行安装程序前用磁盘扫描程序扫描所有硬盘检查硬盘错误并进行修复,否则安装程序运行时如检查到有硬盘错误即会很麻烦。
3.用纸张记录安装文件的产品密匙(安装序列号)。
4.可能的情况下,用驱动程序备份工具(如:驱动精灵2004V1.9Beta.exe)将原WindowsXP下的所有驱动程序备份到硬盘上(如∶F:Drive)。最好能记下主板、网卡、显卡等主要硬件的型号及生产厂家,预先下载驱动程序备用。
5.如果你想在安装过程中格式化C盘或D盘(建议安装过程中格式化C盘),请备份C盘或D盘有用的数据。
二、用光盘启动系统:
(如果你已经知道方法请转到下一步),重新启动系统并把光驱设为第一启动盘,保存设置并重启。将XP安装光盘放入光驱,重新启动电脑。刚启动时,当出现如下图所示时快速按下回车键,否则不能启动XP系统光盘安装。如果你不知道具体做法请参考与这相同的-->如何进入纯DOS系统:
光盘自启动后,如无意外即可见到安装界面,将出现如下图1所示
查看原图
全中文提示,“要现在安装WindowsXP,请按ENTER”,按回车键后,出现如下图2所示
查看原图
许可协议,这里没有选择的余地,按“F8”后如下图3
HYPERLINK
查看原图
这里用“向下或向上”方向键选择安装系统所用的分区,如果你已格式化C盘请选择C分区,选择好分区后按“Enter”键回车,出现下图4所示
查看原图
这里对所选分区可以进行格式化,从而转换文件系统格,或保存现有文件系统,有多种选择的余地,但要注意的是NTFS格式可节约磁盘空间提高安全性和减小磁盘碎片但同时存在很多问题MacOS和98/Me下看不到NTFS格式的分区,在这里选“用FAT文件系统格式化磁盘分区(快),按“Enter”键回车,出现下图5所示
查看原图
格式化C盘的警告,按F键将准备格式化c盘,出现下图6所示
HYPERLINK
查看原图
由于所选分区C的空间大于2048M(即2G),FAT文件系统不支持大于2048M的磁盘分区,所以安装程序会用FAT32文件系统格式对C盘进行格式化,按“Enter”键回车,出现下图7所示
查看原图图7中正在格式化C分区;只有用光盘启动或安装启动软盘启动XP安装程序,才能在安装过程中提供格式化分区选项;如果用MS-DOS启动盘启动进入DOS下,运行i386\winnt进行安装XP时,安装XP时没有格式化分区选项。格式化C分区完成后,出现下图8所示
被过滤广告
查看原图
图8中开始复制文件,文件复制完后,安装程序开始初始化Windows配置。然后系统将会自动在15秒后重新启动。重新启动后,出现下图9所示
HYPERLINK
查看原图
9
查看原图
过5分钟后,当提示还需33分钟时将出现如下图10
HYPERLINK
查看原图
区域和语言设置选用默认值就可以了,直接点“下一步”按钮,出现如下图11
查看原图
这里输入你想好的姓名和单位,这里的姓名是你以后注册的用户名,点“下一步”按钮,出现如下图12
HYPERLINK
查看原图
如果你没有预先记下产品密钥(安装序列号)就大件事啦!这里输入安装序列号,点“下一步”按钮,出现如下图13
HYPERLINK
查看原图
安装程序自动为你创建又长又难看的计算机名称,自己可任意更改,输入两次系统管理员密码,请记住这个密码,Administrator系统管理员在系统中具有最高权限,平时登陆系统不需要这个帐号。接着点“下一步”出现如下图14
查看原图
日期和时间设置不用讲,选北京时间,点“下一步”出现如下图15
HYPERLINK
查看原图
开始安装,复制系统文件、安装网络系统,很快出现如下图16
查看原图
让你选择网络安装所用的方式,选典型设置点“下一步”出现如下图17
HYPERLINK
查看原图
点“下一步”出现如下图18
HYPERLINK
查看原图
继续安装,到这里后就不用你参与了,安装程序会自动完成全过程。安装完成后自动重新启动,出现启动画面,如下图19
HYPERLINK
查看原图
第一次启动需要较长时间,请耐心等候,接下来是欢迎使用画面,提示设置系统,如下图20
查看原图
点击右下角的“下一步”按钮,出现设置上网连接画面,如下图21所示
HYPERLINK
查看原图
点击右下角的“下一步”按钮,出现设置上网连接画面,如下图21所示
查看原图
这里建立的宽带拨号连接,不会在桌面上建立拨号连接快捷方式,且默认的拨号连接名称为“我的ISP”(自定义除外);进入桌面后通过连接向导建立的宽带拨号连接,在桌面上会建立拨号连接快捷方式,且默认的拨号连接名称为“宽带连接”(自定义除外)。如果你不想在这里建立宽带拨号连接,请点击“跳过”按钮。
在这里我先创建一个宽带连接,选第一项“数字用户线(ADSL)或电缆调制解调器”,点击“下一步”按钮,如下图22所示
HYPERLINK
查看原图
目前使用的电信或联通(ADSL)住宅用户都有帐号和密码的,所以我选“是,我使用用户名和密码连接”,点击“下一步”按钮,如下图23所示
查看原图
输入电信或联通提供的帐号和密码,在“你的ISP的服务名”处输入你喜欢的名称,该名称作为拨号连接快捷菜单的名称,如果留空系统会自动创建名为“我的ISP”作为该连接的名称,点击“下一步”按钮,如下图24所示
查看原图
已经建立了拨号连接,微软当然想你现在就激活XP啦,不过即使不激活也有30天的试用期,又何必急呢?选择“否,请等候几天提醒我”,点击“下一步”按钮,如下图25所示
HYPERLINK
查看原图
输入一个你平时用来登陆计算机的用户名,点下一步出现如下图26
HYPERLINK
查看原图
点击完成,就结束安装。系统将注销并重新以新用户身份登陆。登陆桌面后如下图27
HYPERLINK
查看原图
六、找回常见的图标
在桌面上点开始-->连接到-->宽带连接,如下图32
查看原图
左键点“宽带连接”不放手,将其拖到桌面空白处,可见到桌面上多了一个“宽带连接”快捷方式。结果如下图33
HYPERLINK
查看原图
然后,右键在桌面空白处点击,在弹出的菜单中选“属性”,即打开显示“属性窗口”如下图34
查看原图
在图中单击“桌面”选项卡,出现如下图35
HYPERLINK
查看原图
在图中的左下部点击“自定义桌面”按钮,出现如下图36
查看原图
在图中的上部,将“我的文档”、“我的电脑”、“网上邻居”和“InternetExplorer”四个项目前面的空格上打钩,然后点“确定”,再“确定”,你将会看到桌面上多了你想要的图标。如下图37
键盘上每个键作用!!!
F1帮助
F2改名
F3搜索
F4地址
F5刷新
F6切换
F10菜单
CTRL+A全选
CTRL+C复制
CTRL+X剪切
CTRL+V粘贴
CTRL+Z撤消
CTRL+O打开
SHIFT+DELETE永久删除
DELETE删除
ALT+ENTER属性
ALT+F4关闭
CTRL+F4关闭
ALT+TAB切换
ALT+ESC切换
ALT+空格键窗口菜单
CTRL+ESC开始菜单
拖动某一项时按CTRL复制所选项目
拖动某一项时按CTRL+SHIFT创建快捷方式
将光盘插入到CD-ROM驱动器时按SHIFT键阻止光盘自动播放
Ctrl+1,2,3...切换到从左边数起第1,2,3...个标签
Ctrl+A全部选中当前页面内容
Ctrl+C复制当前选中内容
Ctrl+D打开“添加收藏”面版(把当前页面添加到收藏夹中)
Ctrl+E打开或关闭“搜索”侧边栏(各种搜索引擎可选)
Ctrl+F打开“查找”面版
Ctrl+G打开或关闭“简易收集”面板
Ctrl+H打开“历史”侧边栏
Ctrl+I打开“收藏夹”侧边栏/另:将所有垂直平铺或水平平铺或层叠的窗口恢复
Ctrl+K关闭除当前和锁定标签外的所有标签
Ctrl+L打开“打开”面版(可以在当前页面打开Iternet地址或其他文件...)
Ctrl+N新建一个空白窗口(可更改,Maxthon选项→标签→新建)
Ctrl+O打开“打开”面版(可以在当前页面打开Iternet地址或其他文件...)
Ctrl+P打开“打印”面板(可以打印网页,图片什么的...)
Ctrl+Q打开“添加到过滤列表”面板(将当前页面地址发送到过滤列表)
Ctrl+R刷新当前页面
Ctrl+S打开“保存网页”面板(可以将当前页面所有内容保存下来)
Ctrl+T
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 河南省商丘市九校联考2025-2026学年上学期期末九年级物理试卷(含答案)
- 化工公司级安全培训课件
- 2026年美国经济展望:迈向更大失衡
- 钢结构智能化加工技术应用
- 2026年人力资源管理师人力资源外包管理知识练习(含解析)
- 2026年济南商河县事业单位公开招聘初级综合类岗位人员(59人)备考考试题库及答案解析
- 市场调查及咨询服务公司管理制度
- 2026四川宜宾市珙县退役军人事务局招聘民兵专职教练员3人备考考试题库及答案解析
- 化学帮扶活动策划方案(3篇)
- 内部管理制度的依据(3篇)
- 2025-2026年人教版二年级上册语文期末考试卷及答案
- 档案管理操作规程及实施细则
- 寒假班安全协议书
- (新教材)2026年人教版八年级下册数学 21.1 四边形及多边形 课件
- 精神科医生精神科医疗质量控制方案
- 2026年高考语文专题复习:文学类文本散文阅读 讲义(含练习题及答案)
- 2025广东省南粤交通投资建设有限公司招聘笔试历年参考题库附带答案详解
- 2025年人工智能在电力调度中的应用项目可行性研究报告及总结分析
- DB1310T 370-2025 化学分析实验室玻璃仪器清洗规范
- GB/T 46738-2025家用和类似用途电器的安全使用年限房间空气调节器的特殊要求
- 2025福建水投集团招聘7人笔试历年参考题库附带答案详解
评论
0/150
提交评论