人工智能时代前沿技术社区

首页 > 人工智能 > 热点

腾讯TEG视觉算法团队负责人肖万鹏:看图说话—从算法角度理解图像内容 | 2018FMI人工智能与大数据高峰论坛(深圳站)

10月28日FMI-2018人工智能与大数据高峰论坛深圳场圆满落幕,腾讯TEG视觉算法团队负责人肖万鹏以从算法角度理解图像内容为主题进行了精彩的分享。

作者: | 2018-11-07 09:49:35

5.肖万鹏.png

10月28日FMI-2018人工智能与大数据高峰论坛深圳场圆满落幕,腾讯TEG视觉算法团队负责人肖万鹏以从算法角度理解图像内容为主题进行了精彩的分享。

以下是肖万鹏演讲内容,飞马网根据现场速记进行了不改变原意的编辑(有删减): 

肖万鹏:非常感谢主持人,我今天分享的内容是《看图说话——从算法角度理解图像内容》,分三块:一是图像内容的理解角度。二是图像描述算法的发展和优化。三是看后续的发展方向是什么。 

第一部分:图像内容的理解角度

1541555500208178.png

从人的角度理解这个图,你们觉得怎么描述或者它的内容应该怎么总结出来?

从算法的角度,最简单的是基于分类算法,比如给出图片的定义,是机场的场景,机场场景的含义,取决于你做分类算法的时候标签怎么设定的。基于实体检测的算法,它会告诉你图像里面有男人、女人、飞机,这两个算法是现在比较常见的,都是基于标签的。这种基于分类、多标签的方式,它的弊端是只能识别出实体是什么或者场景是什么,但是他把实体之间的信息,人与人的行为这些信息损失了。但是在我们现在的场景,其实对于图片语义理解的需求越来越旺盛,所以因为这些需求,基于图像描述的算法就应运而生。如果用这种算法看,对图片的描述是停在机场的飞机前有一个男人和女人,相对前面两个基于标签的算法多了很多实体关系和行为信息。这三种方法我们再抽象出来,分类算法是是什么“,实体检测是“有什么”,图像描述算法就是“干什么”。从语义级别是由低到高的过程。接下来我们的内容会基于第三块内容,图像描述算法,从框架和算法的技术点来看怎么做的,有什么优势和缺点。

第二部分:图像描述算法的发展以及优化

1541555513851442.png

我们先把整个图像描述算法的架构抽象一下,整体看来就是这块内容:一是Encoder、二是Decorder、三是损失函数。前面两个最早是机器翻译场景,前两者主要的应用场景是把两种维度的信息关联起来,比如机器翻译的场景是把语言信息去通过Encoder编码到隐藏空间,再用Decoder把编码好的特征解码到另外的语言,完成机器翻译的动作。图像描述也是一样的,首先通过图像的像素信息得到一个特征,再通过Decoder特征翻译成人理解的话。前面的Encoder、Decoder就是一个图片输入进来得到一句话。真正训练的时候不可缺少的还有评估,只有客观的评价这个描述好坏,算法才能对整个模型进行优化。

接下来讲和这三块相关的算法和技术点。Encoder大家常用的是CNNR-CNNDecoder大部分都是RNNLSTM,以及Attentiontrick。损失函数有最早的Cross EntropyN-gram,以及专门针对图像描述算法做SPICE。除了每块的技术点和算法,整个训练的流程也会有些技巧在里面,这里主要介绍最早的MLE,以及后面引入了强化学习和对抗生成网络。

看一个算法首先要知道算法的好坏,首先从损失函数开始,展开所有内容之前先看图像描述算法到底要解决的问题是什么。从训练的维度看,如果是训练样本,其实就是一张图,让不同的人或者同一个人对这张图进行描述,描述的越丰富越好,这是训练角度收集样本的要求。在推理的过程中,其实就是输入一张图,根据这张图过这个模型之后产生相应的描述,描述的越准确,跟图的相关性越高越好,这是简单的样本展示。

怎么评估它的好坏?

主观角度判断分为四个层级:

一是描述的没有任何错误,这是最好的。

二是描述会有些错误,比如把床识别成了沙发。

三是描述了很多错误,但是多少和图有关。

四是完全描述错误。

可以发现,从人的角度来看很直观,但是它的缺点是没有办法通过计算得到,所以没有办法把这套标准用到机器学习里面。我们要做的是寻找一个客观能够量化、能够求导的评估方式。

第一种方式是Cross Entropy,它很简单,因为我们知道把一张图片最后生成一句话,是一个词一个词生成,每个词和ground truth里面对应的词有相关的概率,Cross Entropy就是把每个词评估出来的概率求和,目标就是让这个概率越大越好,这是最简单的Cross Entropy。这种方法有一个弊端,很容易爆炸,后面会介绍

第二种方式是基于N-gram,这个算法会关注连续出现词的频率,它的频率越高就认为得分越高。但是这种基于N-gram的方式有一个弊端,它永远优先选择频率比较高的连续词来做输出,会导致最后通过算法生成的语句的多样性很差。

第三种方式是SPICE的方式,不再以连续出现词频的方式做统计,而是从语法结构或者语义结构上做理解。

有了评估方式之后,我们怎么来去提取图像特征,这是最重要的。

提取图片特征现在常用的是基于CNN或者R-CNN,这是视觉范围比较通用的。基于CNN网络提取的特征,它的特点是全局信息更好。R-CNN关注的是图片里面的实体是什么,这种R-CNN的好处是提取的信息更加有针对性。两者会有一个互补的关系。

有了这种提取特征的算法之后,下一步是怎么把特征解析为一句话?

现在常用的都是RNN的方式,这个结构是最早的CNN+RNN,。这个结构一直被模仿,而且持续被超越,这就是做开创性算法的魅力和重要性,任何相关算法都会提到它。之后,做了进一步的优化,首先它用Google Net替换AlexNet,把后面结构复杂的换成lstm,整个结构变得简单,只要在开始的时候把图像传给LSTM做初始就可以,后面只要传入预测的词或者训练的词就可以。基本上现在所有相关的算法大致都是这种结构。大家基本上都会在这上面做优化。其中比较重要的优化是Attention,它的作用可以理解为把特征做加权,现在开始更多的应用到图像场景,包括special,基于空间,还有一些基于特征通道的,这对整体优化的效果很明显。

接下里讲讲MLE的流程。

当一个图像的特征和上次预测的词传入进来,会得到下一个词的概率是什么。这个词做比较之后得到一个损失,累加起来作为训练的损失。训练的过程中都没有问题,它每次会传入正确的东西,但是预测的时候会发现有问题,预测的某个词不一定准确,预测的某个词错了之后,把错误的词传递到下面的状态,导致后面都不可控。这就是它的问题。为了解决这个问题,我们引入强化学习,强化学习非常适合在这种需要做延迟奖励的场景,强化学习更关注整句话翻译完了之后整体的效果怎么样。通过引入强化学习,一定程度上解决了MLE的问题,但是多样性的问题并没有解决。这块我们引入了GANs,通过GANs把生成语句变得富有多样性。

我们现在整体的架构,其实比较简单,一个图片过来先通过CNNCNN提出之后,通过特征加权,加权之后,为了不去损失原图信息,把原图特征加进来,原图特征和加权特征都有,给到RNN,同时预测词再做Embedding,一起输出给RNNRNN会输出下一个词的Attention,受前一个词的影响,下一个词会发生变化,同时预测词是什么。预测的词产生完之后会分两个判断,一个是基于语言模型的判别,另外一个是传给自己通过一个神经网络做的判别器。

CNN会稍微比RNN复杂一点,过来一张图通过CNN的东西得到向量,最后得到特征,接下来把生成的词或者语句做Embedding之后,跟图像的特征拼接在一起,最后得到的这个特征图其实同时包含图像信息和语句信息。然后用不同大小的卷积对这个特征图做卷积操作,然后再对卷积后的特征图的每行数据做max pooling,然后把二维矩阵降到一维,这时候再把不同的向量拼到一起,不同网络大小的卷积之后的结果向量拼到一起,就会得到一个特征,特征后面会接MLP,后面做分类,预测这个语句是人写的还是机器生成的。这是基于CNN的判别器。基于RNN的简单很多,把图像用CNN提取特征传给LSTM,后面每个时刻都传入对应的词,不管是Ground truth还是机器生成的,后面也是接MLP,看到底人写的语句还是机器生成的语句,这是基于RNN的判别器。

做优化之后,效果是怎么样的?

在不同的模型上做验证,发现基于CNN的判别器和RNN的判别器融合后的结果最好,融合的方式很简单。图像过来之后去预测词,同时过基于CNN的判别器产生的模型和基于RNN判别器产生的模型,这两个模型预测词的概率哪个更高,我们就认为这个词是下一个状态的输入,通过这个方式很好的把这种基于RNN的判别器和CNN判别器的优点融合起来。我们在所有模型上,结果都比原始好很多。基于CNN的判别器和RNN的判别器各有优劣。GANs的优化会让语句通顺很多,而且描述更加丰富。

第三部分:What’s next?

第一张特朗普的图按照上面的思路可以做到如下描述:一个男人和一个女人站在飞机前。但这远远不够。我们希望描述出来的是这样:特朗普和穿着黑色套装的中年女人,在一架停在地面上的飞机前行走,飞机上写着TRUMP”,远处还有几个人。

特朗普通过人脸识别可以识别到。穿着黑色套装,这是做人体识别或者人体属性或者着装识别很容易得到。中年女人,通过体态或者年龄识别。行走,通过分类或者可以做基于骨架的识别,把人的关键点识别出来,对骨架做进一步分类,很容易知道他的行为是什么。TRUMP,这种印刷体很容易识别。远处还有几个人,很容易根据人体检测的大小判断出来它是在远处。这些信息每个点都可以通过已有的成熟技术得到,其实我们现在要做的是怎么把这些零散的信息去跟已有的算法结合起来。怎么做到像人一样描述图片是我们现在努力的方向。

图像和视频内容的理解与挖掘

最早互联网出现的时候,传播的东西大部分是基于文字,包括新闻之类的。现在随着智能机的普及,视频和图像越来越多,占比越来越大。但是基于数据挖掘的场景,依然没有跟上步伐,大部分还是基于文本或者基于用户信息的挖掘。图像里面的内容价值很大.

图像分类、实体检测、描述算法,视频行为分析、人脸识别、OCR、视频实体跟踪、音转文、视频也包括音频信息,这些都是可能得到图像信息的算法,这些东西每个单点的算法都已经非常成熟。由这些单点算法我们得到的是人物信息、描述信息等等,这些信息其实还没有完全被利用起来,相当于这是一座金矿,但是缺少挖掘的工具。比如关系链,如果这里拍合照,每个人人脸都可以检测出来,而且每个人脸都有唯一的ID,那同时出现在一张图片的人不知道什么关系,但是有联系,比如今天大家都来这个论坛,这肯定有联系,通过人脸建立联系,再扩散出来,我们完全有可能得到基于人脸ID的信息。

图片传播的热度和视频传播的热度也是一种热度,这种热度现在是越来越成为一个趋势,比如说台风,你怎么把图像视频的内容关联起来,挖掘现在的热点是什么。前面我们说想做成这样,也是一样,把不同信息融入在这个算法里面来,得到更加详尽、更加知识层面的东西,而不只是信息。以上两方面是我们现在正在努力的方向。 

今天的分享就到这里。谢谢大家!