zoukankan      html  css  js  c++  java
  • 微软自动图像说明技术的最新进展

    作者:John Platt

    微软雷德蒙研究院副院长兼杰出科学家

    文章译自:Rapid Progress in Automatic Image Captioning

    多年来,我一直热衷于接受图像理解(image understanding)领域各种艰巨的挑战。关于图像理解,每个人对其都有不同的定义,它的种类几乎与从事计算机视觉研究的人员数量一样多。但是我们都有一个共同的目标:创建一个能够与人类相媲美的系统,自动为图像生成描述性说明。

    微软自动图像说明系统的性能如何

    今年夏天,抱着“放手一搏”的想法,包括我在内,来自微软研究院的大约12名实习生和研究员成功开发了一套自动图像说明(Automatic Image Captioning)系统。在对象分类和检测的深度学习方面取得的诸多进步推动了我们去开发这样一个令人信服的系统了。

    下面是我们的系统输出的一个例子:你认为哪个说明是由人编写的,而哪个又是系统生成的呢?

     微软自动图像说明技术的最新进展

    1. 用朴实的木制件设计的华丽厨房 (An ornate kitchen designed with rustic wooden part)

    2. 配有木制橱柜和水槽的厨房 (A kitchen with wooden cabinets and a sink)

    【答案在文章下半部分公布】

    这个项目的乐趣是惊人的;对于我们当中的许多人来说,这是我们过去多年科研工作中最有趣的事情。研究的团队包含了来自不同学科的专家,如计算机视觉、自然语言、语音、机器翻译和机器学习。

    当然,这不仅仅是个有趣的研究课题而已,我也为我们的研究成果而感到骄傲(我们已经把结果书写成论文了)。你可以把我们开发的这个自动图像说明系统看作一个机器翻译系统。机器翻译专家使用BLEU指标对系统输出的翻译和人类的翻译进行比对。BLEU将说明拆成不同长度的语块(chucks),它们通常由1到4个字组成,然后测量系统和人类翻译之间的重叠度。它还会对过短的系统生成的说明进行罚分。

    为了了解我们究竟可以获得多高的BLEU分数,我们检测了一条人类编写的说明(作为一个假定“系统”)和其他四条系统编写的说明。我很高兴地告诉大家,在BLEU得分方面,我们实际上击败了人类!我们的系统取得了21.05%的BLEU分数,而人类“系统”仅取得了19.32%。

    当然,超越人类的BLEU得分是要打一个大大的折扣的。在机器翻译界,BLEU的许多局限性是人所共知的。为此,我们也尝试用METEOR指标进行测试,自动图像说明的得分在一定程度上逊色于人类(20.71%比24.07%)。

    事实上,最好的方法是进行盲测,请人类来判断哪一条图像说明更好一些(有点像我在上文中向读者提出的问题那样)。我们使用亚马逊的Mechanical Turk请人们对说明进行比较:是这个好,还是那个好,又或者它们差不多好?对于23.3%的测试图像,人们认为系统说明同于或优于人类说明。

    研究小组对于这样的结果颇感激动。因为即使接近于人类对图像的理解水平对人类开发的自动图像说明来说都是一个难题。下面就是一个棘手的例子:

    微软自动图像说明技术的最新进展

    系统输出:“一只猫坐在床上”

    人类描述:“一个人坐在床上,面前有台打开的笔记本电脑,一只猫坐在他旁边,看着笔记本电脑的屏幕区域”

    正如你所看到的,系统输出的描述当然是完全正确的,但人类会调用自己的处世经验,编写更加详细的说明。

    下面我们来揭晓文章开头的谜题的答案: “一个配有木制橱柜和水槽的厨房”,这是系统输出的说明。

    这个系统是如何工作的

    从大的范围上来看,这个系统的工作方式可以分为3步,如下图所示:

    微软自动图像说明技术的最新进展

    1. 检测字词:女人、人群、猫、相机、举着、紫色
    2. 生成句子:一台紫色相机和一个女人。一个女人在人群中举着一台相机…一个女人抱着一只猫
    3. 句子重新排序:第一句:一个女人在人群中举着一台相机

    首先,系统将图片拆散成几个可能包含物体的区域(基于边缘)。然后用深层神经网络(deep neural network)对每个区域进行处理,以产生一个高层级的特征矢量,捕获相关的视觉信息。接下来,将这个特征矢量作为输入,进入一个神经网络。这个网络经过训练,能够提供相关说明中出现过的字词。在训练中,我们并未手工给各个区域分配字词;相反,我们用了一个称为“多实例学习(Multiple Instance Learning)”的方法,让神经网络自行找出哪个区域与哪个字词最匹配。

    其结果就是一大堆从图像中检测到的字词,并且没有特定的顺序。看看从哪个区域检测出了哪个字词,是件很有趣的事情:

     微软自动图像说明技术的最新进展

    接下来,我们使用语言模型(language model),把这些字词放在一起并组成一个有合理意义的句子。你可能听说过的语言模型:它们需要借助训练语料库(比如莎士比亚著作)来生成“听起来像”上述语料库的新文本(例如新的伪莎士比亚著作)。我们所做的是训练一个图像说明语言模型来生产新的说明。我们通过从图像中检测到的字词创建一块“小黑板”来给语言模型添加一个“方向盘”。我们鼓励语言模型生成这些字词,在这个过程中,系统逐个从“小黑板”上擦掉了这些字词。这样就避免系统一遍又一遍重复同样的字词(我称之为马尔科维奇(Malkovich)问题)。

    字词检测器(word detector)和语言模型都是本地的,这意味着它们只能看到图像的特定部分来产生每个字,而且每次只考虑生成一个字词。说明与图像之间没有任何全局语义或适当性。为了解决这个问题,我们又创建了一个相似性模型,采用深度学习技术了解哪些说明最适合哪张图像。我们使用相似性模型(以及这个句子的特征)来生成最终答案。

    当然,这是从高层次来对这个系统进行描述。关于这个系统的更多信息,你可以阅读我们的论文

    学界的其他研究

    有时,一个“悬而未决”的想法会有由多个团队在同一时间想出解决的思路。在图像说明领域貌似也是如此。2014年之前,也曾有人尝试开发自动图像说明系统,但没有利用深度学习技术。MidgeBabyTalk就是其中的例子。当然,我们的方法得益于这些早期的研究经验。

    今年以来,基于深度学习的图像说明系统出现了令人振奋的寒武纪大爆发。很多研究团队纷纷把目标瞄准了2015年CVPR大会。我所知道的论文有:

    这种类型的集体进步是我所喜闻乐见的。图像说明是个令人着迷又十分重要的问题。我想更好地了解这些方法的长处和短处。(我注意到,有几个人使用了神经网络和/或LSTM模型)。作为一个研究领域,如果我们能够在标准化测试集(如COCO)以及标准指标上达成共识,我们就将继续向这一终极目标靠拢:创造一个可以与人类相媲美的系统,用于自动生成描述性的图像说明。今年夏天我们以及其他人的工作成果表明,我们正在朝着正确的方向。

    欢迎关注

    微软亚洲研究院官方网站:http://www.msra.cn

    微软亚洲研究院人人网主页:http://page.renren.com/600674137

    微软亚洲研究院微博http://t.sina.com.cn/msra

    from: http://blog.sina.com.cn/s/blog_4caedc7a0102v72n.html

  • 相关阅读:
    VBS处理AD帐号密码到期提醒的脚本[zt]
    简单几步手工扩容LVM、缩小LVM及移除磁盘(笔记)
    python加入进度条:tqdm 和 progressbar
    python的map和reduce函数
    python的lambda表达式
    python的推导式 —— 列表推导式、集合和字典推导式
    Pyspark中遇到的 java.io.IOException: Not a file 和 pyspark.sql.utils.AnalysisException: 'Table or view not found
    pyecharts绘制map地图
    pyecharts绘制geo地图
    sklearn.feature_extraction.text 的TfidfVectorizer函数
  • 原文地址:https://www.cnblogs.com/GarfieldEr007/p/5560768.html
Copyright © 2011-2022 走看看