给 AI 讲故事,如何教它脑补画面?


阿里妹导读:视觉想象力是人与生俱来的, AI 能否拥有类似的能力呢?比如:给出一段故事情节,如何让机器展开它的想象力,“脑补”出画面呢?看看阿里AI Labs 感知实验室的同学们如何解决这个问题。

1. 背景 —— 视觉想象力(Visual Imagination)

1.1 什么是视觉想象力?

视觉想象力是人脑拥有的一个重要功能,可以将一些抽象的概念具象化,进而凭借这些视觉想象进行思考。如图1最左列,当我们想到:A yellow bird with brown and white wings and a pointed bill时,脑海里可能已经想象出了一幅黄色鸟的画面。这就是视觉想象力。我们的目标就是让AI逐步具备这种能力。


图1:由第一行中的文本描述,AI“想象”出的画面 [1]。

1.2 AI拥有视觉想象力后的影响?

AI如果具备视觉想象力后,将会更懂人的需求,并能够对一些传统行业产生颠覆性影响。下面举两个例子。

图2为一个在语义图像搜索领域中的案例。我们在google中搜索man holding fish and wearing hat on white boat,可能返回的结果质量为(a),引擎只是零星理解了我们的搜索意图。而当机器拥有一定视觉想象力后,它的搜索结果可能是(b),这将极大提升我们的信息检索效率,而这些信息是承载于图像中的。


图2:AI具备视觉想象力后将会对语义图像搜索产生重要影响 [2]。

另一个例子在语义图像生成领域。试想:当我们用语言描述一个场景时,机器利用其庞大的经验数据便自动生成了这个场景。如图3,如果我们描述一个人拥有不同的外貌特征,那机器便自动想象出了这个人的样貌,这将对诸如刑侦等领域(如受害人描述犯罪分子样貌)产生怎样的颠覆。


图3:AI具备视觉想象力后将会对语义图像生成产生重要影响 [3]。

2. 选题 —— 站在巨人的肩膀上

2.1 领域的痛点在哪?

我们将焦点移至文本生成图像(text-to-image synthesis)领域。此领域中,针对简单单一主体的图像生成,例如:鸟、花、人脸等,利用GAN的思想而来的一系列算法已经取得了一些令人欣喜的结果,如图1。然而,当文本中含有多个相互关联的物体时,生成的效果就会大打折扣,如下左图所示。这主要是由过于灵活、非结构化文本所造成的。


图4:当前的生成算法很难对包含多个相互作用的物体进行生成,如左边的StackGan算法 [4]。右边的sg2im算法则一定程度上拥有潜力解决这个问题 [5]。

因此,Stanford大学CV组的Johnson等人在CVPR2018中提出了将文本到图像的生成拆分为若干个更加可控的子问题的想法 [5]。这用到了他们之前在CVPR2015中提出的一种新的场景表达方式 —— 场景图(Scene Graph)和语义构图(Semantic Layout) [2]。


图5:场景图和语义构图示意 [6]。

场景图是一种有向图,含有实体、属性、关系三种要素,可以看做是一种语义模态下的结构化表达。

每个场景图中的实体,在图像中会有一个与之对应的bbox。如果不看图像本身,单看图中所有的bbox,就形成了一幅图像的语义构图,因此可以将语义构图看作是一种具有普遍含义的图像结构化表达。


表1:结构名称及所属模态对照表。

2.2 如何解决?—— 我们眼中的大框架

站在大牛们的肩膀上,我们眼中从文本到图像的生成大致分为下面几个子任务:


表2:由文本生成图像任务拆分而来的子任务列表。

为了达到可控生成,信息逐步升维的目的,整个过程大致可拆分为上述子任务。每个子任务都有相应的一些工作,在此不一一具体展开。

2.3 论文的关注点

论文专注于解决子任务3:如何由场景图生成场景构图?

这个任务之所以重要,是因为由这个任务而始,结构化语义态的信息得以“想象”为图像的结构化表达,是赋予机器以视觉想象力的关键所在。

3. 论文的动机及贡献

3.1 当前的问题

| 3.1.1 最接近的工作与组合爆炸问题


图6:sg2im利用图卷积网络,以场景图整体作为输入,生成语义构图整体 [5]。

最接近的工作来自Stanford Johnson等人在CVPR2018中发表的sg2im算法 [5](如图6)。他们首先利用一个图卷积网络将每个实体进行特征嵌入,继而用这些特征通过一个object layout网络去生成语义构图。他们采用的生成方式是由场景图整体到语义构图整体。场景图整体中会包含若干个实体和关系,这些实体和关系的组合所形成的场景图变化极多,使得模型难以有效表达如此多的变化,最终导致了语义构图学习效果的不理想。我们称之为组合爆炸问题。

| 3.1.2 语义构图评价指标的缺失

另一大挑战是:如何直接自动化评价语义构图生成的好坏?

过去绝大部分工作采用间接自动化评价的方式进行,对由语义构图生成后的图像给予打分,利用Inception score或Image captioning score。这样做根本无法评价语义构图的生成好坏,很大程度上只评估了最终的GAN网络是否有效。很多工作还加入了人工评分,虽给出了评分结果,但其几乎不可能被完全复现,这极大地阻碍了本领域的发展。

3.2 Seq-SG2SL的动机

Seq-SG2SL是我们针对组合爆炸问题提出的一个由场景图生成语义构图的框架。本节不谈框架本身,先讲个故事。

故事背景:老师需要教学生学习如何通过看建筑图纸去建楼。如图7。


图7:上图是建筑图纸示意,下图是建成的房间示意(图片来源于网络)。

A老师教快班。他指着一摞厚厚的图纸对学生们说:“看,这是之前的图纸,上面有按图纸建好的大楼地址,你们拿这些图纸去看看那些大楼,应该就能悟出来大楼是怎么建的了。以后我给你一张新图纸,你们就能建出大楼了。”学生们按照A老师的方法,纷纷去学了。当A老师测验时发现,几乎没有学生可以照图纸盖出大楼,A老师生气地说:“还快班呢,这群学生也太没有悟性了,举一反三都不会。”

B老师教慢班。他对学生们说:“我给大家一些图纸,今天我先教大家怎么建客厅,明天教怎么建厨房。我们的目标是先把每个房间的建造套路学到,再教大家怎么串起来建一整间房。最后再教你们怎么建栋楼。看看这些图纸,不必着急,我会告诉你们每一部分都和实际建筑里的哪一部分相对应,虽然整栋建筑看起来都不一样,但这些局部是很有套路的,掌握以后保管你们都会盖大楼。”果然,在B老师的悉心教导下,所有同学都很快通过了测验,连小笨笨源方都学会了怎么看图纸建大楼。

故事中,A老师的学生虽然是快班的,都很聪明,但是大楼千变万化,学生们通过这些图纸很难学到其中的共性。而B老师的学生,虽然整体学习比较慢,记性也不好,但B老师通过教授建大楼所需要的一些基础知识,将这些具有共性的要点教给学生,结果笨鸟得以先飞。

场景图就好比建筑图纸,语义构图就好比大楼。A老师的教学方法其实就遇到了组合爆炸的问题,B老师通过教授最基础的建楼操作避免了组合爆炸的问题。

由此启发,我们提出了一种全新的视角,去看待由场景图生成语义构图的问题。语义构图是一个结果,我们要学习的不应该是直接这个结果,而是产生这个结果的过程。通过对更基础单元的学习,解决组合爆炸问题。

3.3 SLEU的动机

为了解决缺乏直接自动化评估指标的问题,我们提出了一个新指标:semantic layout evaluation understudy,简称SLEU。这个指标是受到著名的机器翻译指标BLEU启发而来。

背后的逻辑是这样的:

1)要想完成自动化评估,必须需要真值。
2)SLEU的设计目的就是要度量一个生成的语义构图与真值之间的差异。

因此,遵循上述逻辑,我们类比了机器翻译指标BLEU的设计,将BLEU的基本概念由1D扩展到2D,提出了SLEU。

3.4 论文的贡献

1)提出了一个新的框架Seq-SG2SL,将语义构图看作是一系列过程叠加的结果。和以往方法不同,AI学的是生成过程而不是结果。这种序列到序列的学习方式可以解决组合爆炸问题。

2)提出了一个直接自动化评价语义构图生成好坏的指标SLEU,将会解决本领域存在的结果复现问题,为不同构图生成方法的直接比较提供基础。

4. 方法要点简述

4.1 Seq-SG2SL框架


图8:Seq-SG2SL框架。

什么决定了一张语义构图呢?是关系。因此,一个场景图中的关系三元组(主 - 谓 - 宾),决定了组成一张语义构图中的主语和宾语所对应的两个bbox。其中主语和宾语所对应的bbox,分别称为视觉主语(visual subject)和视觉宾语(visual object)。

由此,产生语义构图的过程可拆解为一系列基础动作片段,每一个基础动作片段称为一个brick-action code segments (BACS)。每一个BACS执行的操作就是将一个视觉主语和一个视觉宾语摆放到语义构图中,分别调整他们的类别,位置以及大小。而每一BACS恰恰由其在场景图中所对应的关系三元组所决定。一个关系三元组主-谓-宾顺序相接,三个词组成了一个基础语义片段,我们叫做一个semantic fragments(SF)。如图8,tree by sidewalk就是一个SF,它对应的图中BACS Sequence所示的那10个code(c0002 … h14)就是一个BACS,而这10个code执行的结果就是最右侧layout图中tree和sidewalk两个bbox。

将一系列SF进行串联,形成了SF序列(SF sequence)。这个SF序列所对应的是一个由每一个对应BACS所串联形成的序列(BACS sequence)。这两个序列,就像两种语言,我们需要做的只是让机器学习从SF语言“翻译”到BACS语言就好啦。当然,为了保有scene graph中的有向图信息,我们额外维护了一个节点序列(Node sequence),主要为了确定sequence中的哪些实体属于同一个实体,并且能够通过节点序列直接将场景图中的实体属性传递到语义构图中的bbox上。这样,整个Seq-SG2SL框架做到了灵活且通用。

回想一下,这个过程是不是像我们之前讲过的那个老师教学生从设计图纸建楼的故事。我们看到了设计图纸(scene graph)中的一个局部(一个SF),然后我们去学习大楼(semantic layout)中的这个对应局部是怎么建的(学习一个BACS),最后再综合,教学生去建整幢建筑。这样做是不是很直观,也符合客观规律,我们不要求我们的学生(模型)都是天才般的存在,但是需要我们这个老师教授方式得法,才能最终达到好的效果。

框架的主要思想就讲完了,细节的话感兴趣的读者可以去看论文。

4.2 SLEU指标

在介绍SLEU之前,我们希望读者已经熟悉什么是机器翻译中的BLEU指标。

BLEU的基础是n-gram。n-gram是指文本中连续出现的n个词语(word),是基于(n-1)阶马尔科夫链的一种概率语言模型。简单地说,其假设当前第n个词出现的概率,仅取决于其前(n-1)个词,而跟更前的词无关。在机器翻译中,BLEU评估的基本单位是word,一个unigram代表一个word,评估翻译的充分性,而较长的n-gram代表一个word序列,评估翻译的流畅性。BLEU的思想是将句子拆分为n-grams,评估局部相似度,进而对整体翻译效果进行打分。

对于机器翻译而言,最小可拆分单元是一个word,那对于语义构图生成问题而言,最小可拆分单元又是什么?是一个关系。因此,对于语义构图生成来说,我们的unigram变为了一个关系。评估充分性就是评估单个关系是否匹配;评估流畅性就是评估n个关系是否会同时匹配。我们同样做了n阶马尔科夫链的假设,即:一个关系的出现,只取决于不超过(n-1)个其他关系,而和更多的关系无关。由于场景图和语义构图中的物体是一一对应的,因此没有precision和recall的概念,我们称对单个关系的评估,叫做unigram accuracy,而对多个关系的评估叫做n-gram accuracy。

具体设计我就不在这里细讲了,将关系看做unigram是我们的核心思想。我们的工作只是将这个概念设计出来,将BLEU的概念由1D推广到2D罢了。感兴趣的读者可以参考论文,指标的实现也将会开源。

5. 实验结果预览


图9:由Seq-SG2SL框架在测试集上的一些结果展示。

上图是一些利用Seq-SG2SL在测试集上的生成的结果,其中第一行为输入,第二行为生成的语义构图,第三行是一个参考的语义构图及其对应图像。可以看出,我们的结果可以对含有多个关系的复杂场景进行构图生成。

这里只做个引子,更多定量的分析在论文中详细阐述,主要包括与baseline算法的比较,以及一些关于具体设计的必要性实验等。由于只是导读,结论及未来工作等在此也概不赘述啦,感兴趣的读者可以直接看论文。

本文是ICCV 2019录用论文《Seq-SG2SL:基于序列到序列学习的由场景图生成语义构图的算法》的导读,并不涉及论文中的全部内容,只重点阐述我们对一些问题的思考。虽以论文为背景,但行文上试图以更科普的形式逐步展示给读者,期望对后续研究及应用场景有所启发。


原文链接
本文为云栖社区原创内容,未经允许不得转载。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/517410.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

产业数字化升级进入深化期,腾讯智慧出行释放“数字底座”核心能力

6月24日,腾讯智慧出行举办线上年度新品发布会。本次发布会以“创造出行新价值”为主题,发布了生态车联网产品TAI 3.0、全新一代自动驾驶虚拟仿真平台TAD Sim 2.0,以及汽车云数字营销解决方案、智慧交通解决方案,从深度和广度上展示…

MySQL与Redis的双写一致性解决方案

文章目录一、解决方案1.1 先更新缓存,再更新数据库1.2 先删除缓存,再更新数据库1.3 先更新数据库,再更新缓存二、总结一、解决方案 1.1 先更新缓存,再更新数据库 💣 问题: 数据库更新成功了,但是由于异常…

解密双十一小程序云背后毫秒级伸缩的Serverless计算平台:函数计算

自2017年第一批小程序上线以来,越来越多的移动端应用以小程序的形式呈现。小程序拥有触手可及、用完即走的优点,这大大减少了用户的使用负担,使小程序得到了广泛的传播。在阿里小程序也被广泛地应用在淘宝/支付宝/钉钉/高德等平台上&#xff…

RuoYi-Cloud 进阶篇_01( Seata 单机环境搭建)

文章目录一、部署单机 TC Server1. 下载Seata2. 解压缩3. 启动4. 监听日志5. 启动命令讲解一、部署单机 TC Server 1. 下载Seata 在https://github.com/seata/seata/releases 这里找到对应的版本软件包进行下载 注:单机模式只适用于学习或者本地测试阶段&#xf…

Logtail 混合模式:使用插件处理文件日志

作为一个服务百万机器的日志采集 agent,Logtail 目前已经提供了包括日志切分、日志解析(完整正则、JSON、分隔符)、日志过滤在内的常见处理功能,能够应对绝大多数场景的处理需求。但有些时候,由于应用的历史原因或是本…

腾讯车联发布TAI3.0:三步实现汽车智能进化,2个月快速上车

6月24日,“2020腾讯智慧出行新品发布会”在线上举行,全新升级的TAI3.0生态车联网正式亮相,并在新款哈弗F7上进行了真实驾车场景的功能展示。 据介绍,TAI3.0包含两个车载APP——腾讯随行和腾讯爱趣听,以及一个生态开放…

RuoYi-Cloud 进阶篇_02( Seata 高可用集群与 Nacos 注册中心整合)

文章目录二、安装步骤1. 创建数据库2. 修改配置文件3. 调整数据库驱动4. 修改配置中心二、 启动和验证2.1. 启动nacos2.2. 启动TC Server2.3. 启动第二个节点2.4. 验证高可用二、安装步骤 1. 创建数据库 创建名称为ry_seata的数据库,并初始化ry_seata_20210128.sql脚本 2.…

腾讯TAD Sim2.0领跑自动驾驶仿真市场 双擎驱动构建新一代仿真平台

随着自动驾驶领域硬件、算法等方面的快速发展,虚拟仿真技术在自动驾驶研发和测试领域的应用日渐广泛,成为自动驾驶量产应用的必备工具,城市智慧交通调度管理和相关法规制定的有力辅助。 在这片行业竞争新高地上,腾讯自动驾驶仿真…

RuoYi-Cloud 部署篇_03(windows环境 Oracle + nginx版本)

请参考RuoYi-Cloud 分布式部署_03(linux环境 Mysqlnginxredis版本)

为了实现在线库的复杂查询,你还在双写吗?

一、在线库不支持在线复杂查询 做在线业务的开发者经常会碰到这样的难题:在线数据库上面运行稍微复杂点的查询,在线业务就挂了!不管是单机数据库如MySQL、PG,还是分布式数据库,HBase、MongoDB、Cassandra都有这个问题…

JUC 中断线程的3种方式

文章目录介绍中断方式一中断方式二中断方式三源码解析总结介绍 三个方法: 1、public boolean isInterrupted()判断线程是否被中断,如果此线程已被中断,则为true ;否则false 。 2、public void interrupt()中断线程 3、public …

RuoYi-Cloud 进阶篇_04( Seata 高可用集群 AT模式 需求实战)

需求背景: 模拟下单场景:首先去在自己的本地创建一条下单记录,同时,还要去调用库存服务,执行减库存操作。 这里演示一个客户下订单的流程服务来为小伙伴们进一步了解一下分布式事务到底如何使用? 首先,我…

基于Tablestore多元索引打造亿量级店铺搜索系统

一、方案背景 对于一套GEO管理系统,其核心点与瓶颈在于数据库的存储性能与查询能力;一方面,存储服务需要应对海量数据的低延迟存、读,另一方面,存储服务也要提供高效的GEO多维度数据检索。表格存储(TableS…

Java中的序列化与反序列化机制

文章目录一、序列化的定义二、为什么需要序列化呢?三、如何序列化四、案列实现4.1、将对象序列化位二进制流4.2 将序列化后的二进制流反序列化为对象五、总结一、序列化的定义 💡 所谓的序列化就是将Java 中的对象转换成一种流的形式(二进制…

今天起,我们喝的百年牛奶要变了!

一天从一杯光明奶开始,是很多小伙伴的日常:牛奶下肚,醇厚、香甜的奶味仍余舌尖。如今,这家百年老字号正在不断焕发新能量。 今天,光明乳业与阿里云达成战略合作。双方将整合优质资源,形成聚合效应&#xf…

Spring 从入门到入土——AOP 就这么简单!| 原力计划

作者| 冢狐责编 | 夕颜出品 | CSDN博客什么是AOP?面向切面编程(Aspect Oriented Programming),通过预编译的方式和运行期动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续,是软件开发中的一个热点&#xff…

RuoYi-Cloud 进阶篇_03( Seata 高可用集群与 NacosConfig配置中心整合)

文章目录1. 创建文件config.txt2. 创建nacos-config.sh3. 配置导入nacos配置中心4. 配置验证1. 创建文件config.txt 在seata的安装文件夹下创建文件config.txt [rootnode2 ~]# cd /app/seata/seata-server-1.4.2/ [rootnode2 seata-server-1.4.2]# vim config.txt 说明&#…

基于 Tracing 数据的拓扑关系生成原理

背景 随着互联网架构的流行,越来越多的系统开始走向分布式化、微服务化。如何快速发现和定位分布式系统下的各类性能瓶颈成为了摆在开发者面前的难题。借助分布式追踪系统的调用链路还原能力,开发者可以完整地了解一次请求的执行过程和详细信息。但要真…

一条命令导出MySQL表结构xls

文章目录🌱介绍🌷一、先尝鲜💘二、导出失败的看过来🐒三、原理🐷总结🌱介绍 🌷一、先尝鲜 🍃执行下面SQL语句,将会发生神奇的事情😁 SELECT 字段名称,数据…

揭秘2019双11背后的云网络 – 双11网络架构和洛神系统

图1 天猫双11成交额 2019年天猫双11成交额,2684亿!核心系统100%上云!全球最大流量洪峰,阿里云扛住了。 狂欢背后的技术栈 网上轻松购物体验实际上是背后复杂的技术组成的,这是一个简化的通用电商系统架构&#xff0…