点击上方“深度学习大讲堂”可订阅哦!
编者按:“看图说话”,本质上是视觉与语言之间的融会贯通,是人类经过漫长的进化与不断的学习而形成的能力。而对于机器而言,这意味着视觉处理与语言处理两个领域之间的衔接。深度学习赋予了机器对单一维度图片数据、以及二维视频数据更强的识别理解能力,然而仍面临着在真实应用场景中鲁棒性不足的问题。在本文中,来自微软亚洲研究院的梅涛研究员,将从搭建视觉与语言之间桥梁的角度,讲述他所实现的“看图说话”。大讲堂在文末特别提供文中提及所有文章和代码的下载链接。
什么叫vision and language
从计算机视觉发展伊始,Marvin Minsky就提出电脑通过连接摄像头,使得它能够文字描述所见所闻的事物。这个文字描述并不是一个单独的词也不是一个短语,而是一句能够让机器和人自然交流的一句话。
vision and language 不仅只涉及文字描述,接下来给大家阐释它不仅是文字描述这一方面内容,还涵盖其他很多内容。
Vision and Language包罗万象
文字描述与场景理解
首先从较为熟悉的领域开始讲起:文字描述。
图片的识别任务涵义丰富,比如确定图片的像素属于什么类,它每一个区域范围属于什么类。而文字描述就是给出一张图片,自动生成一个语句去描述这张图片的内容。
左图是我们两年前生成的结果。微软有一个Microsoft CaptionBot 产品,当你上传图片的时候CaptionBot会告诉你这张图片内容是:a boat is docked in front of a building 。在一年前进行了改进,在生成文字描述的时候又加入其他信息。比如右侧图片人们站在建筑前,同时给出了每个人对应的名字。但是其中一个人没有对应人名,这是因为奥巴马的母亲不在庆典邀请列表里,这是一个问题。改进后的技术不仅可以识别人的名字,还能做场景理解的任务。这是image caption,对于视频也是一样的。
我们在微软做了很多与视频相关的研究。区别于以往处理视频,其旨在识别出有何东西、发生了何种动作。文字描述就是在往前更进一步,基于这个识别结果生成一个连贯的句子。
最近有一个研究是Language grounding ,就是在有句子的时候把词语、事件、物体相关联。还有个研究是Visual question answering,就是给出一个问题基于视频进行解答。目前这个研究还是比较早期的研究方向。最近还在研究事物评论,给出一段视频,生成能够跟人交流的评论内容,使机器跟人的交流更加自然。
如果把这个问题展开来看,就是说vision and language 在计算机视觉里边处于什么位置。如果要理解一张图片、一段视频,需有很多处理层次,最基本的是像素级别。
从像素级别理解图片、视频的步骤如下:
第一步确定每个像素属于什么类;
第二步是区域识别,此时不关心每个像素类别但是关心边界在什么位置;
第三步是传统分类;
第四步要根据视频生成词汇,最后生成句子。
第五步更深入研究能否根据照片生成一个完整的故事描述。
最后两个方面就是属于vision and language的范畴。这个问题研究有什么用处?
这也是经常被问到的一个问题。别人常问:
——这个问题是不是一个明确定义的问题?
——是不是一个有前景的问题?
——技术是不是一个可以落地的技术?
vision to language研究落地
我们开展的研究是面向产品的研究。
研究应用——微软小冰
一个应用就是微软小冰。小冰能够跟人们聊天,她是一个聊天机器人,她不仅可以和大家通过文本、语音聊天,还可以根据图片用视觉方式跟大家交流。当小冰有了视频聊天的功能之后,她的粉丝在一个月之内增加了60%。很多人不知道小冰是一个机器人。
研究应用——搜索领域
另外一个应用就是在搜索领域。可以用视频搜索语言,也可通过语言搜索视频。这是在产品里边已经应用的例子。当然还可以进行一些基于视频自动生成报告的应用,通过这个应用告诉人们在什么时间发生了什么事情。
Vision and Language领域的研究问题
在vision and language 领域有如下几个研究问题:
视觉领域包括图像和视频;
自然语言领域包括描述、评论、语言格式、主观情感(比如这个东西是不是很可爱、是不是很漂亮等);还包括数据集、评估等研究问题。
Image Caption的研究
研究的基本思路:一方面,不管是图像还是视频都是基于黑箱训练出一个网络模型,也可以引入注意力机制训练生成一个注意力模型。另一方面,引入语句向量。暂时不考虑语句的顺序,观察词汇的分布。也可以采用RNN训练出基于词汇序列的网络模型。下一步建立语义空间,在这个空间基础上生成image caption。
Image Caption 从技术实现上有三种方法:
(1)基于搜索的方法;
(2)基于语言模板的方法;
(3)基于序列学习的方法。
(1)基于搜索的方法
第一种image caption是基于搜索的方法。这里以2010年在ECCV上发表的一篇文章举例。
做法:
首先建立一个庞大的数据库,数据库内每张图片都有很多描述语句标签。输入新的图片时就在数据库中搜索类似相应图片。搜索的方法有很多种,找到相似的图片之后,把这些图片的描述语句赋给新的图片。最后通过训练学习一个网络模型去计算图片和描述语句之间的距离。
另外一个在CVPR2015发表的工作也是属于这个范畴,就是在训练图片的时候采用深度学习的方法。然后用CNN去训练学习图片和描述语句之间的联系。
(2)基于语言模板的方法
第二种方法是生成语言模型。这里以2015年在CVPR上发表的一篇文章举例。
做法:
首先对输入图片进行词语的识别,知道图片内有哪些物体。获得这些词语之后,采用S-V-O主谓宾形式生成一个句子。通过这些词汇能够生成很多这种简单的句子。接下来的问题就是如何去选择句子。可以通过深度学习建立一个网络模型。两年前这个模型是业界最好的一个模型。
这个方法的缺陷就是如果没有足够多的识别结果,生成的语言描述不能精确表达图片内容。
(3)基于序列学习的方法
第三种方法是基于序列学习的方法。该方法是目前比较主流的方法。
做法:
首先输入一张图片或一段视频,采用CNN、RNN或者其他网络学习训练出一个深度学习表达;然后将这个表达在循环里训练。这个图片输入实际是一个预测的过程,每个词语的状态与前一个词是相关的。
这是序列学习的方法,一个很通用的框架,很多人把这个框架用在不同的策略中。在第一个空间中已经识别出来这个图片有哪些词语,后面在词汇组成的空间中训练生成一个语言模型。
在此框架基础上也有很多变种。
Image Caption 研究进展概括:Image Caption with X
可以将这方面的研究进展概括为image caption with X。
其中,X 的几种涵义如下:
visual attention.
visual attribute.
能不能从图片里识别出一个物体,这个物体能不能使得语义符合这个模型;
entity recognition.
就是能否识别出来形容词、名词,把这些修饰词加到语句中使得语句更加符合人的表达习惯;
dense caption.
它认为一张图里边不只一个语句,可以有多个语句,几个物体之间可以构成语句;
基于强化学习优化指标.
最后一个是最近在做的一些基于强化学习优化它的指标加入到函数里边。
Image Caption近期算法分享
A-LSTM
这个是我们在去年8月份一个在COCO上面提交的结果。这个结果在网上放了有半年,怎么做呢?比如传统的CNN用LSTM,当时在想能不能在图像里边做一些基于 Multiple Instance Learning 识别出物体,把物体的语义加到训练过程中,把语义输入到LSTM节点。
背后尝试了很多方法,比如把图像注意力还有属性一起输入,实验表明,第五种组合的方式是最好的。在ICCV上发表的一篇文章阐述了这个观点。
这些是部分示例,比如说对于这上面的图,其他方法能识别出这条船。我们的方法就能够识别出:a man and a dog on a boat in the water。传统的方法却不能识别出来船。
引入注意力机制
另外一种方法,引入注意力机制,加入其他信息。
Image Caption数据集
针对Image Caption问题,最大的数据集就是MS COCO数据集。还有一些其他数据集,这里对MS COCO数据集详做介绍。
MS COCO数据集:
含有123K的图片,每个图片大概包含5个句子。这个数据集分成两个部分,一部分用来训练,一部分用来测试。如上图是数据集的列表,基本半年会更新一个结果。它会很快发布成绩结果,常用做Image Caption的公用数据集。
Video Caption的研究
以上是 Image Caption,Video Caption 比 Image Caption 要难一些。
Video Caption的挑战
首先,在学习视频特征时,不仅要学内容,还要学动作。另外,视频是一个序列,在做特征的提取的时候要做池化。池化是一个有难度的问题。
Video Caption 与 Image Caption 的差异性
这里是一个实验,很多人认为对于Video Caption问题,直接把图像帧拿到Image Caption就可以解决这个问题。
——是这样的吗?
——其实不是这样。
左边是一个视频,一些关键帧通过image caption生成文字描述。如果很幸运把第四张图放到image caption里边,生成的句子可能是对的,但通常这个句子是不对的。这就需要在做video captioning的时候一定要把图像和动态信息放到一起训练学习。
Video Caption 与 Image Caption 的相似性
a. 利用语言模型
Video Captioning 与 Image Caption都可以用语言模型来处理。首先在视频里边检测出来S-V-O主谓宾结构,一些物体以及一些动作。然后区分它是名词还是动词,最后拼接生成一个句子。
b.结合CNN和循环网络
第二种做法和Image Caption一样用CNN学习特征,然后将特征输入循环做语言翻译。
首先,在训练视频时不仅要学习视频帧的基础注意力机制,还要学习它的剪辑片段。学习视频片段时常用C3D网络。其次,把特征输入LSTM网络训练预测词语。在训练词的时候还有一些选择,视频是一个序列,每个帧在最后的文字描述时贡献是不一样的,因此可以给每帧加权重,称之为视频注意力机制。它是一个动态的视频注意力机制。此外,在做池化时可以给每帧加不同权重,这是动态池化,这是做视频的一个示例。
Video Caption 方面的研究成果
在研究video caption 方面,我们去年发表了一篇文章研究联合学习LSTM-E。在研究video caption 的时候,发现训练数据集中频繁出现的词会常被作为识别结果,所以增加了一层物体相关性的函数。在训练时每次产生句子时都计算损失函数,计算视频和内容之间是否是最小损失。由此获得一个最小损失函数,使得每次训练时把这个频繁出现的词替换掉。
这个是一个视频的例子,这些生成的句子是实时生成的。可以看到句子基本还是比较自然通顺的。
Video Caption数据集
如图,表格列出了研究video captioning常用的几个数据集。其中,有一个相对较小的数据集S2VT。
另外这个是我们做的数据集。去年我们在ACMMM上组织了一次vision and language挑战赛,这个挑战赛标注了一万个视频片段,它是目前最大的一个数据集。今年的大赛会在四底到五月底举办。去年77个团队进行了注册,22个提交了结果。针对其有两个评价指标,客观的和主观的两个指标。
Video Commenting 的应用
最后讲讲如何把视频评论技术用到无人小冰里边。
当你和小冰是好朋友的时候,当你发一张图片或一段视频给小冰,它能够根据视频和你交流。做法是通过LSTM-E搭建两层框架,第一层输入视频,用哈希的方法学到视频的范围边界,然后在数据集中选择相似视频(已经人工标注好了评论),提取标好的评论形成一个话题;第二层(嵌入层)重排评论。结果是,它在2015年10月份上线,11月份的时候小冰的朋友就增长了60%。在小冰的评论里边,大概有三分之一的评论比人的评论还要好。
这是我们的一个产品,左侧是测试视频,右侧是相似视频。首先保证找出来的视频是同一个类。它有很多评论,蓝色的是选出的和当前视频最相关的评论。
这个图列举了研究视频图像用到的数据集。横坐标是类的数量,纵坐标是实例数量。在图像里边大概有这么多数据集可以做说明,视频里边也有很多数据集。如今在研究图像的时候除了Image-Net就是Open Image(它的测试多一些)。研究视频数据时,YouTube-8M是最大的数据集。
视觉与语言方面研究的开放问题
在做这些研究的时候发现很多开放问题,比如我们团队在微软做的一个题目。很多说明、评论还是很容易被人区分出来。为了使得机器生成的说明更加自然,我们在做一些语义分析。比如识别小孩是高兴还是悲伤,这个女孩穿的衣服是红色的还是鲜艳的,我们把这样的形容词加到说明里边去;也可以对图像中出现的物体进行细化分类,并将类别放入说明里;另外,可以通过多模态数据分析的方式,例如将音频、文本、演讲等信息结合到一起;以及一个方向是,通过从单独的句子生成一段文字的方式,来让机器来讲述一个真正的故事。
文中引用文章的下载链接为: http://pan.baidu.com/s/1bGDQv8
致谢:
本文主编袁基睿,诚挚感谢志愿者杨茹茵、高春乐、李珊如对本文进行了细致的整理工作
该文章属于“深度学习大讲堂”原创,如需要转载,请联系 astaryst。
作者信息:
作者简介:
梅涛,微软亚洲研究院资深研究员,国际模式识别学会会士,美国计算机协会杰出科学家,中国科技大学和中山大学兼职教授博导。主要研究兴趣为多媒体分析、计算机视觉和机器学习,发表论文 100余篇(h-index 42),先后10次荣获最佳论文奖,拥有40余项美国和国际专利(18项授权),其研究成果十余次被成功转化到微软的产品和服务中。他的研究团队目前致力于视频和图像的深度理解、分析和应用。他同时担任 IEEE 和 ACM 多媒体汇刊(IEEE TMM 和 ACM TOMM)以及模式识别(Pattern Recognition)等学术期刊的编委,并且是多个国际多媒体会议(如 ACM Multimedia, IEEE ICME, IEEE MMSP 等)的大会主席和程序委员会主席。他分别于 2001 年和 2006 年在中国科技大学获学士和博士学位。主页:http://research.microsoft.com/en-us/people/tmei/
VALSE是视觉与学习青年学者研讨会的缩写,该研讨会致力于为计算机视觉、图像处理、模式识别与机器学习研究领域内的中国青年学者提供一个深层次学术交流的舞台。2017年4月底,VALSE2017在厦门圆满落幕,近期大讲堂将连续推出VALSE2017特刊。VALSE公众号为:VALSE,欢迎关注。
往期精彩回顾
欢迎关注我们!
深度学习大讲堂是由中科视拓运营的高质量原创内容平台,邀请学术界、工业界一线专家撰稿,致力于推送人工智能与深度学习最新技术、产品和活动信息!
中科视拓(SeetaTech)将秉持“开源开放共发展”的合作思路,为企业客户提供人脸识别、计算机视觉与机器学习领域“企业研究院式”的技术、人才和知识服务,帮助企业在人工智能时代获得可自主迭代和自我学习的人工智能研发和创新能力。
中科视拓目前正在招聘: 人脸识别算法研究员,深度学习算法工程师,GPU研发工程师, C++研发工程师,Python研发工程师,嵌入式视觉研发工程师,运营经理。有兴趣可以发邮件至:hr@seetatech.com,想了解更多可以访问,www.seetatech.com
中科视拓
深度学习大讲堂
点击阅读原文打开中科视拓官方网站