image caption笔记(八):《From Captions to Visual Concepts and Back》

这篇文章是15年微软的工作,是和谷歌《show and tell》同时期的文章,它们都去参加了微软的Image Caption比赛(MS COCO caption challenge),总的结果是并列第一。

文章的框架不是我们常见的encoder-decoder类型,但是仍然有启发意义。

文章生成caption的思路是

(1)给出一幅图像,首先使用视觉检测器提取出图像中可能存在的单词。

(2)提取完单词后,采用传统的方法,而不是lstm来进行语言建模。得到若干预测的captions.

(3)使用DMSM模型(deep multimodal similarity model)计算captions和图像的相似度 ,取最相似的一个caption作为最终的预测结果。

实现细节如下:

(0)准备工作

作者首先在所有的captions中提取了1000个单词,它们占到了所有单词出现次数的92%以上。

按照我们的想法,首先我们要提取图像中可能存在的词汇,对于 cat  dog 等这一类名词,使用BBs框出来是比较容易的,但是一些抽象的词,比如 beautiful 没办法限定在图像特定的区域上。 作者使用的方法是使用弱监督的多实例学习(MIL)。

下面简单的介绍一下多实例学习(Multiple Instance Learning,MIL)

首先来简单介绍下多示例学习。多示例学习实际是一种半监督算法。考虑这样一种训练数据:我们有很多个数据包(bag),每个数据包中有很多个示例(instance)。我们只有对bag的正负类标记,而没有对instance的正负例标记。当一个bag被标记为正时,这个包里一定有一个instance是正类,但也有可能其他instance是负类,当一个bag被标记为负类时,它里面的所有instance一定是负类。我们的目标是训练一个分类器,可以对instance的正负进行判别。

多示例学习在现实中其实很常见。如一篇文章违禁时通常是因为该文章具有某些违禁词,但我们可能无法知道具体是哪个词违禁。在这个例子中,bag就是文章,instance就是单词。又如在医学图像领域,CT图被标定为有无病症,而一个人有病症是因为在CT图的某个区域被检测为病灶区域。我们往往只有CT图的标注,但没有CT图中每个区域的标注。这时,bag就是CT图像,而instance就是CT图中的小区域。

在这篇论文中,就是使用多示例学习来处理从图片出提取单词这一问题。对每一个单词来说,标注中含有该单词的图片就是正例的bag,图中的区域就是instance。

由此,我们使用多示例学习方法进行两步迭代,第一步是利用当前算法,选出正例bag中最有可能是正例的instance、以及负例bag的instance。这样,我们就有了大量instance的标签(1000个单词)。

第二步是利用选出的正例instance进行训练,更新训练,这就是一个监督学习的过程了。这样迭代下去,就可以对图片的区域进行分类。

这样给出一个图片的区域,我们就可以提取所需要的单词。文章采用的是针对目标检测改进版的多示例学习方法Noisy-OR MIL,来自(《Multiple instance boosting for object detection》)。

 

                                           

可以看出,最核心的两个问题是

怎么找最有可能时正例的instance(图像区域)和用什么网络架构对选出的instance进行训练。

测试的时候,给出一幅图像i,对每个区域j,计算该区域包含单词w的概率,计算出图像 i包含单词w的概率。

将图像输入训练好的全连接网络,输出12*12的特征图,特征图每个位置代表了图像上的一个区域(可能有重叠),利用这个特征图进一步产生词的概率。

                

训练的时候,我们把不同区域的特征输进网络,然后做一个多标签的预测。比如某一个标签是‘dog’,如果所有的区域特征输进网络,得到的结果都不是'dog;,我们判定该图像在‘dog’这个标签上是一个负包。否则是一个正包。根据图像对应的caption,我们可以知道图像在‘dog’上的gt究竟是正包还是负包。这就可以计算损失函数。

如果损失函数不为0,更新梯度值。

 

利用传统 的方法生成若干captions,这一部分没看懂。

建立DMSM模型计算captions和image的相似度。DMSM是一对神经网络。

将前面那个全卷积网络的最后fc表示叠加三个tanh非线性层,作为图像特征的表示。图像特征提取完成。(Q)

引入DSSM,将文本映射到特征空间。文本特征提取完成。(D)

采用余弦相似度计算二者的相似程度。

r是平滑因子。D是多个caption的集合。

经过这三部分,模型的框架搭建起来。不过不能实现端到端的训练,需要分阶段训练。这也是bottom_up机制存在的问题。

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
本课程适合具有一定深度学习基础,希望发展为深度学习之计算机视觉方向的算法工程师和研发人员的同学们。基于深度学习的计算机视觉是目前人工智能最活跃的领域,应用非常广泛,如人脸识别和无人驾驶中的机器视觉等。该领域的发展日新月异,网络模型和算法层出不穷。如何快速入门并达到可以从事研发的高度对新手和中级水平的学生而言面临不少的挑战。精心准备的本课程希望帮助大家尽快掌握基于深度学习的计算机视觉的基本原理、核心算法和当前的领先技术,从而有望成为深度学习之计算机视觉方向的算法工程师和研发人员。本课程系统全面地讲述基于深度学习的计算机视觉技术的原理并进行项目实践。课程涵盖计算机视觉的七大任务,包括图像分类、目标检测、图像分割(语义分割、实例分割、全景分割)、人脸识别、图像描述、图像检索、图像生成(利用生成对抗网络)。本课程注重原理和实践相结合,逐篇深入解读经典和前沿论文70余篇,图文并茂破译算法难点, 使用思维导图梳理技术要点。项目实践使用Keras框架(后端为Tensorflow),学员可快速上手。通过本课程的学习,学员可把握基于深度学习的计算机视觉的技术发展脉络,掌握相关技术原理和算法,有助于开展该领域的研究与开发实战工作。另外,深度学习之计算机视觉方向的知识结构及学习建议请参见本人CSDN博客。本课程提供课程资料的课件PPT(pdf格式)和项目实践代码,方便学员学习和复习。本课程分为上下两部分,其中上部包含课程的前五章(课程介绍、深度学习基础、图像分类、目标检测、图像分割),下部包含课程的后四章(人脸识别、图像描述、图像检索、图像生成)。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值