您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 交通运输 > 如何教计算机看懂一张图
汇报人:黄江专业:信息计算技术2016年12月22日李飞飞2015年在TED的演讲——“我们如何教计算机理解图像”TED演讲的主旨是:Ideasworthspreading.【T】Technology技术【E】Entertainment娱乐【D】Design设计。李飞飞教授曾为斯坦福大学人工智能实验室和视觉实验室主任,多年来致力于解决人工智能的棘手问题——包括图像识别,学习能力和语言处理等功能。她和她的团队在2007年通过网络众包技术,建立起了一个含有1500万张照片的数据库ImageNet,将深度学习应用到图像相关领域的这个潮流中起到了非常重要的作用。今天,ImageNet数据集已经成为全球最大的图像识别数据库,包含了使用日常英语标记的超过1400万张图像,跨越21,800个类别。而且这个集合了全球智慧和力量的数据库是免费的。这也就意味着,全球所有致力于图像识别的公司,都可以免费对自己的算法进行反复测试。数据集应用于一年一度举办的TheImageNetLargeScaleVisualRecognitionChallenge(ILSVRC)比赛2016年李飞飞教授也从学术界转移到了工业界,正式加入谷歌,任GoogleCloudMachineLearning(谷歌云机器学习)负责人。2016年李飞飞开启了VisualGenome(视觉基因组)计划,要把语义和图像结合起来。在VisualGenome的官方网站上,把它定义为:VisualGenome是一个数据集,知识库,不断努力把结构化的图像概念和语言连接起来。VisualGenome的图像要比ImageNet的图像标签更为丰富,包括名字、图片的不同细节,以及在对象和动作信息之间的关系。ImageNet大规模视觉识别挑战赛VisualGenome挑战赛深度学习在图像语义分析的应用图像分类(imageclassification)目标检测(objectdetection)图像理解图像分类(imageclassification)图片分类是一个最基本的图片语义分析方法。传统的图片分类,首先需要先手工提取图片特征,譬如SIFT,再经由VQcoding和Spatialpooling,最后送入传统的分类模型(例如SVM等)。传统方法里,人工特征提取是一个巨大的消耗性工作。而随着深度学习的进展,不再需要人工特征,通过深度学习自动提取特征成为一种可能。接下来主要讲述卷积神经网络在图片分类上的使用。基于深度学习的图片分类由Hinton和他的学生AlexKrizhevsky在ILSVRC(ImagenetLargeScaleVisualRecognitionCompetition)2012中提出。整个网络结构包括五层卷积层和三层全连接层,网络的最前端是输入图片的原始像素点,最后端是图片的分类结果。一个完整的卷积层可能包括一层convolution,一层RectifiedLinearUnits,一层max-pooling,一层normalization。InputLayer就是输入图片层,每个输入图片都将被缩放到固定尺寸,分rgb三个颜色维度输入。Layer1~Layer5是卷积层。在Layer1,卷积滤波后,还接有ReLUs操作和max-pooling操作。Layer6~Layer8是全连接层,相当于在五层卷积层的基础上再加上一个三层的全连接神经网络分类器。Layer8的神经元个数相当于训练目标的图片类别数。目标检测目标检测(objectdetection)相比于图片分类,提取到信息将更加丰富。目前最先进的detection方法应该是Region-basedCNN(简称R-CNN),是由JeffDonahue和RossGirshick提出的。R-CNN的具体方法是,将detection分为寻找object和识别object两个过程。在第一步寻找object,可以利用很多regiondetection算法,譬如selectivesearch,CPMC,objectness等,利用很多底层特征,譬如图像中的色块,图像中的边界信息。第二步识别object,就可以利用“CNN+SVM”来做分类识别。给定一张图片,利用selectivesearch方法来产生2000个候选窗口。然后利用CNN进行对每一个候选窗口提取特征(取全连接层的倒数第一层),特征长度为4096。最后用SVM分类器对这些特征进行分类(每一个目标类别一个SVM分类器),SVM的分类器的参数个数为:4096*N,其中N为目标的类别个数,所以比较容易扩展目标类别数。图像理解类比一下我们人如何去“理解”一幅图像理解一副图像时也是要先认识到图像中有哪一些目标及图像的背景,然后在脑海中尝试用语言来勾勒出图像传达出来的意思,这里面需要大量的先验知识,包括我们作为人来说,学习到的语言知识,计算机无非就是按照我们理解图像的方式来理解图像,在拥有了大量的数据、知识后肯定能比我们做的更快。一个人骑在一匹马上,他的狗坐在马前面图像描述即通过深度学习,直接根据image产生sentence。Pipeline方法和End-to-end方法。Pipeline方法先学习到image中visualobject对应的word(参照图像识别imagedetection方法),再加上languagemodel,就可以生成sentence。这种方法各个模块可以独立调试,相对来说,更灵活一点。如右图所示,它分为三步:(1)利用上一节提到的思路detectwords;(2)基于languagemodel(RNNorLSTM)产生句子;(3)利用相关性模型对句子打分排序。End-to-end方法通过一个模型直接将image转换到sentence。在机器翻译中,“encoder”RNN读取源语言的句子,将其变换到一个固定长度的向量表示,然后“decoder”RNN将向量表示作为隐层初始值,产生目标语言的句子。那么一个直观的想法是,能否复用上面的框架,考虑到CNN在图片特征提取方面的成功应用,将encoderRNN替换成CNN,先利用CNN将图片转换到一个向量表示,再利用RNN将其转换到sentence。可以通过图片分类提前训练好CNN模型,将CNN最后一个隐藏层作为encoderRNN的输入,从而产生句子描述。如下图所示。机器翻译将输入句子(sourcesentence)和目标句子(targetsentence)表示在同一个向量空间,当输入一个句子时,将其encode成一个向量,这个向量包含了句子的语义信息,然后将这个向量decode,得到目标句子。Encode我们可以通过文本深度表示模型word2vec将句子中每个词表示成一个K维的向量形式,这里每个词向量是表示了词的语义信息的,然后进行几次纵向的卷积操作,最后可以得到一个1*K维的向量,这个向量就被当成是这个句子的向量表达。通过一个RNN来对输入句子进行encode。把源句子中的词一个一个顺序输入,RNN对输入的词进行如下操作:每一个当前状态的输出是基于之前所有词的输入,因此将最后一个时刻隐藏层的表达当做整个句子的向量表示。Decode我们将源句子的向量表示和目标句子中第i时刻的词的词向量一起作为RNN网络的输入,如下面公式所示,s表示源句子的向量表示(sourcesentence),V(f_i)表示的第i个词的词向量,通过隐藏层计算后,再通过一个softmax函数生成一个K维的向量(这个K表示词典的长度),向量中每一维的值表示基于前面的词以及源句子后,出现下一个词的概率。最后我们可以将这个网络完整表示为如下所示m-RNN(multimodalRecurrentNeuralNetwork)模型2014年10月,百度研究院的JunhuaMao和WeiXu等人在arXiv上发布论文《ExplainImageswithMultimodalRecurrentNeuralNetworks》,提出了multimodalRecurrentNeuralNetwork(即m-RNN)模型,创造性地将深度卷积神经网络CNN和深度循环神经网络RNN结合起来,用于解决图像标注和图像和语句检索等问题。其结构特点可以归纳如下:模型的输入是图像和与图像对应的标注语句(比如在下图中,这个语句就可能是amanatagianttreeinthejungle)。其输出是对于下一个单词的可能性的分布;模型在每个时间帧都有6层:分别是输入层、2个单词嵌入层,循环层,多模型层和最后的Softmax层;循环层的维度是256维,在其中进行的是对t时刻的单词表达向量和t-1时刻的循环层激活数据的变换和计算多模型层连接着模型的语言部分和图像部分。图像部分就是上图中绿色虚线包围的部分,其本质是利用深度卷积神经网络来提取图像的特征。在该文中,使用的是AlexNet的第七层的激活数据作为特征数据输入到多模型层,如此就得到了图像特征向量。而语言部分就是包含了单词嵌入层和循环层。模型的语句生成:模型从一个特殊的开始符号“##START##”或者任意个参考单词开始,然后模型开始计算下一个单词的概率分布。然后取概率最大的一个单词作为选取的单词,同时再把这个单词作为输入,预测下一个单词,循环往复,直到生成结束符号##END##。谷歌NIC(NeuralImageCaption)模型相较于百度的m-RNN模型,NIC模型的主要不同点在于:首先,在语言模型部分将RNN替换为了实践证明在NLP方面效果更好的LSTM。其次,在图像模型部分使用了效果更好的卷积神经网络模型来做图像特征数据的提取。最后,改变了图像特征数据的输入方式,从m-RNN的每个时间点都输入变成了只在初始时输入1次。我们从实践经验上证实如果在每一个时间点都输入图像数据,将会导致较差的结果。网络可能会放大图像数据中的噪音,并且更容易过拟合。NeuralTalk:一个开源的从图片生成文本描述的工具NeuralTalk是一个Python的从图像生成自然语言描述的工具。它实现了Google(Vinyals等,卷积神经网络CNN+长短期记忆LSTM)和斯坦福(KarpathyandFei-Fei,CNN+递归神经网络RNN)的算法。NeuralTalk自带了一个训练好的动物模型。项目主页:实验结果结论和展望生成一幅图像的文本描述是一件很有意义的事情。我们知道人们传递信息一般有三种方式,文本、语音、图像,这三种信息的传递方式各有各的特点。如果能构建一个桥梁将它们联系起来,将会更好的传递信息,给人们带来更多的便利以及想象空间。文本和语音的关联上人们做了很多的研究,但是图像和文本之间人们似乎一直没有很有效的将其连接起来。我上面说的这些都是非常好的努力,它帮助计算机更好的去理解图像,并且在图像—文本相关联的一些任务(比如检索、问答等)上可以带来非常大的帮助。对于文本和图片的语义分析,可以看到:最近几年,在某些任务上,基于深度学习的方法逐渐超过了传统方法的效果。但目前为止,对于深度学习的发掘才刚刚开始,比较惊艳的神经网络方法,也只有有限几种,譬如CNN,RNN,RBM等。未来其他的研究热点:Video。Learnabout3Dstructurefrommotion。研究将视频也转换到自然语言。
本文标题:如何教计算机看懂一张图
链接地址:https://www.777doc.com/doc-3986737 .html