Bottom-Up and Top-Down Attention for Image Captioning and Visual Question Answering

2023-05-16

一、摘要

自下而上的机制(基于Faster R-CNN):提取出图像区域,每个区域都有一个相关的特征向量。

自上而下的机制:确定特征权重。

      提出了一种自下而上和自上而下的结合注意力机制,使注意力能够在对象和其他显著图像区域上计算。这是注意力(Attention)被考虑的基础。

二、简介

视觉注意机制:基于深度神经网络架构,通过学习 关注图像中显著的区域来提高性能。

自上而下(Top-Down ):非视觉或任务特定环境驱动的注意机制。

自下而上(Bottom-Up ):纯视觉前馈注意机制。

       图像字幕(Image Captioning)和视觉问答(VQA) 通常需要执行一些细粒度的可视化处理,甚至多个推理步骤来生成高质量的输出。

       大多数用于图像字幕和VQA的传统视觉注意机制都是自上而下的。它们一般被训练为只是选择性地关注CNN输出中的某一层或某几层。然而,这种方法很少考虑如何确定受注意的图像区域。

       

       本文提出了一种自下而上和自上而下结合的视觉注意机制。

       自下而上(Bottom-Up)机制提取出了一组显著图像区域,每个区域由一个汇集的卷积特征向量表示。使用Faster R-CNN实现自下而上的注意,它代表了自下而上注意机制的自然表达。

       自上而下(Top-Down)的机制使用任务特定的上下文(context来预测图像区域的注意力分布。然后,将参与的特征向量计算为所有区域图像特征的加权平均值。

三、相关工作

       大量基于注意力的深度神经网络被提出用于图像字幕和VQA。通常,这些模型可以被描述为自顶向下(Top-Down)的方法。

       这些方法确定图像区域的最佳数量时总是需要在粗和细的细节水平之间进行无法取胜的权衡。此外,区域相对于图像内容的任意定位可能使得难以检测与区域对齐不良的物体,并难以绑定与同一物体相关的视觉概念。

      以前的工作相对较少考虑将注意力应用到突出的图像区域。

       本文利用了Faster R-CNN,在视觉和语言任务与物体检测的当前进展之间建立了更紧密的联系。

       通过这种方法,能够在目标检测数据集上预先训练区域建议(region proposals)。从概念上讲,这种优势应该类似于在ImageNet上进行预先训练的视觉表示,并且能够显著利用更大的跨领域知识。

四、方法

        给定一个图像I,我们的图像字幕模型和视觉问答模型都将一个可能大小不等的k个图像特征集作为输入,使得每个图像特征对图像的一个突出区域进行编码。空间图像特征V可以定义为自下而上(Bottom-Up)注意力模型的输出,或者按照标准做法,定义为卷积神经网络(CNN)的空间输出层。本文中的注意力机制,都使用的是简单的one-pass注意力机制(这里的one-pass机制有待了解)。

4.1 自下而上(Bottom-Up)的注意力模型

        根据边界框来定义空间区域,并使用Faster R-CNN实现自下而上的注意力。

        Faster R-CNN是一个对象检测模型,设计用于识别属于特定类的对象实例,并使用边界框对其进行定位。

        Faster R-CNN检测物体分两个阶段。第一阶段被称为区域候选网络(RPN),预测候选区域。一个小的网络在CNN的中间水平(level)的特征上滑动。在每个空间位置上,网络预测一个类未知的目标评分(class-agnostic objectness score)和一个经过边界框优化的多个尺度和长宽比的锚盒(anchor box)。采用贪心非最极大值抑制和交叉过并(intersection-over-union (IoU))阈值,选择最优的边界框提议作为第二阶段的输入。

       在第二阶段,使用感兴趣区域(RoI)池为每个框提案提取一个小的特征图(例如14×14)。然后将这些特征映射批处理在一起,作为CNN最终层的输入。模型的最终输出包括类标签上的softmax分布和针对每个框提议的特定于类(class-specific)的包围框的优化。

       在这项工作中,我们将Faster R-CNNResNet-101 CNN结合使用。为了生成用于图像字幕或视觉问答的图像特征输出集V,我们获取模型的最终输出,并使用IoU阈值对每个对象类执行非最大抑制。然后,我们选择类检测概率超过置信阈值的所有区域。对于每个选定的区域i, vi定义为来自该区域的均值池卷积特征,使图像特征向量的维数D2048。以这种方式使用,Faster R-CNN有效地发挥了注意机制的作用,因为从大量可能的配置中只选择了相对较少的图像包围框特征。

       为了对自底向上(bottom-up)注意力模型进行预训练,我们首先使用预训练的ResNet-101ImageNet上初始化Faster R-CNN。然后我们在Visual Genome数据集上进行训练。为了帮助学习更好的特征表达,我们添加了一个额外的训练输出来预测属性类(除了对象类)。为了预测区域i的属性,我们将平均池化卷积特征vi与学习到的ground-truth的对象类embedding连接起来,并将其输入额外的输出层,在每个属性类和无属性类上定义一个softmax分布。(也就是能够得出区域i的属性在各种属性类别的概率分布)

       原始的Faster R-CNN多任务损失函数包含四个组件,RPN的锚框分类、回归计算,以及最终的物体包围框分类、回归计算。我们保留这些成分,并添加一个额外的多类损失成分来训练属性预测器。

 4.3 VQA Model

        给定一组空间图像特征V,我们提出的VQA模型还使用“软的”自顶向下的注意机制来对每个特征进行加权,使用问题表示作为上下文。

图4. VQA模型的概述。深度神经网络实现了问题和图像特征{v1,…, vk}的联合嵌入。这些特征可以定义为CNN的空间输出,或者遵循我们的方法,使用自下而上的注意力生成。输出是由对固定的候选答案集操作的多标签分类器生成的。灰色数字表示层与层之间的向量表示的维度。黄色元素使用学习到的参数。

1.Question embedding
       首先,输入的问题会被标记化:首先使用标点符号和空格将其分成单词,这里为了计算的效率,一个问题最多被修剪成14个单词,多余的单词会被丢弃(整个数据集中只有0.25%的问题超过了14个单词)。使用Wikipedia/Gigaword语料库上Glove公开版本来进行词特征向量化,对于少于14个词的,使用end-padded进行补零操作。每个单词都被转换为带有查找表的矢量表示,而其表项是在训练期间沿着其他参数学习的300维矢量表示,则一个问题可以被表述为14X300的矩阵。这个结果要经过GRU(Recurrent Gated Unit 循环门控单元),该循环门控单元有512维的内部状态,我们只用其最终状态,即在处理了14个字嵌入后,我们的结果问题嵌入为q,这个q是512维的。
2. Image features from bottom-up attention

      输入图像特征是上文中经过faster R-CNN处理的k个2048维的特征向量。

3. top-down attention on image features

        论文中的模型实现了大多数现代VQA模型中常见的经典的question-guided注意力机制,这个阶段被称为top-down attention(自上而下注意力机制)。在经过前面的Faster R-CNN后,图片被分为K个区域,每个区域都有一个特征向量Vi(V1,V2,V3,…Vi).Vi和问题嵌入q都分别经过一个非线性层,再经过一个线性层,去获得与对应的区域i有关的标量注意力权重αi,t。


(1)ai是指问题对第i个区域的注意力机制,fa指非线性层,Vi指与区域有关的特征向量,q是指嵌入的问题,Wa是指Learned parameter vector。

(2)所有的区域的注意力都经过softmax函数转为[0,1]之间的概率。

(3)αi与Vi的乘积代表第i个区域的加上了问题对图片的注意力的特征向量,公式(3)对每个区域的特征向量进行了一个加权求和,所得V-hat指的就是整个图片加上问题对图片的注意力的特征向量。

4. Multimodal fusion
       在多模式融合之前,问题向量q和图片特征向量V-hat分别经过了一个非线性层,这个非线性层的功能可以理解为改变维度,方便二者融合时矩阵元素相乘。此时二者的维度都为512维。fq(q)和fv(V-hat)经过Hadamard乘积进行融合(即元素乘法),结果向量由h表示,即h表示图片和问题的联合嵌入结果。接着这个结果被喂入分类器。

5.其他

  • 对提出的模型实现了问题和图片的多模态embedding,通过在候选答案中预测得分回归。
  • 这篇论文中,并不像其他模型中使用的ReLU激活函数,而是在所有的非线性层中使用了gated tanh activation作为激活函数:,参数a={W,W′,b,b′}:

    σ是sigmod激活函数,W,W′∈Rm×n(R为m行n列矩阵)是可学习的权重,b,b′∈Rn(R为n阶向量)是可学习的偏置,○是点乘。向量g作为中间激活y~d的门乘法。

6.损失函数为二元交叉熵损失函数,具体公式如下:

其中,M代表训练问题个数;N代表候选答案个数(3129个);Sij代表第i个训练问题的第j个候选答案的真实分数;Sij(hat)代表第i个训练问题的第j 个候选答案的预测分数。

 五、数据集

4.1.3 vqa v2.0数据库

       为了评估我们提出的VQA模型,我们使用了最近引入的VQA v2.0数据集,它试图通过平衡每个问题的答案来最小化学习数据集先验的有效性。该数据集被用作2017VQA挑战的基础,包含110万个问题,1110万个答案与MSCOCO图像有关。

       我们执行标准的问题文本预处理和标记化。为了计算效率,问题被精简到最多14个单词。候选答案集仅限于训练集中出现次数超过8次的正确答案,输出词汇量为3129。我们的VQA测试服务器提交的文件经过培训和验证集,以及来自Visual Genome的额外问题和答案。为了评估答案的质量,我们使用标准VQA度量报告准确性,这考虑到注释者之间对ground-truth答案的偶尔分歧。

4.4. VQA Results

        在表4中,我们报告了完整的自上而下VQA模型相对于VQA 2.0验证集上的几个ResNet基线的单一模型性能。尽管ResNet基线使用了大约两倍的卷积层,但自底向上注意的添加在所有问题类型的最佳ResNet基线之上提供了显著的改进。表5报告了官方VQA 2.0测试标准评估服务器上30个集成模型的性能,以及先前发布的基线结果和其他最高排名的条目。在提交的时候(201788),我们超过了所有其他测试服务器提交。我们的作品还获得了2017VQA挑战赛的第一名。

 六、代码复现

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Bottom-Up and Top-Down Attention for Image Captioning and Visual Question Answering 的相关文章

随机推荐

  • 【FreeRTOS学习计划】第五节 临界段的保护

    什么是临界段 临界段就是一段在执行的时候不能被内部中断打断的代码 FreeRTOS 里面 xff0c 这个临界段最常出现的就是对全局变量的操作 xff0c 全局变量就好像是一个枪把子 xff0c 谁都可以对他开枪 xff0c 但是我开枪的时
  • Proteus的安装和介绍及51单片机电路仿真

    Proteus入门教程及仿真 Proteus基本介绍Proteus功能Proteus特点Proteus界面Proteus元件库对应中文名称 Proteus 8的安装Proteus 51单片机的仿真生成 h文件Proteus模拟仿真 Prot
  • 如何使用 Docker 进行编译和开发

    简介 xff1a 本文主要为大家讲解不同环境下如何使用docker进行日常开发和编译 镜像下载 域名解析 时间同步请点击 阿里巴巴开源镜像站 一 Linux环境开发 适用于Linux环境开发者 xff0c 有专门代码服务器或虚拟机 1 安装
  • Altium Designer软件绘图

    使用Altium Designer软件绘制一个stm32最小系统的电路原理图 芯片的PCB和SCH封装自定义元器件PCB的封装自定义元器件SCH的封装绘制stm32最小系统原理图 芯片的PCB和SCH封装 新建一个工程 xff1a 新建PC
  • 利用原理图绘制PCB板

    利用原理图绘制PCB板 AHT封装PCB封装AHT SCH封装AHT 元件封装 AHT原理图添加PCB绘制BOM表网络表PCB板 AHT封装 PCB封装 1 打开之前设计好的stm32f103c8t6工程 xff0c 再打开PCB封装库 P
  • c语言结构体

    结构体 定义 xff1a 用于存储不同的数据类型 xff0c 存储在同一块内存空间里面 1 关键字 struct 2 标签 结构体名称 3 成员 例如 xff1a span class token keyword struct span s
  • css基础

    CSS基础 CSS的作用CSS的语法CSS的引用内部样式表外部样式颜色 xff0c 尺寸 xff0c 对齐盒子模型边框与边距定位溢出浮动透明度 CSS学习总结 CSS的作用 在我们写的html页面中 xff0c 所有的内容只能通过添加标记来
  • adaboost和朴素贝叶斯算法简述

    adaboost和朴素贝叶斯算法简述 adaboost原理基本步骤基本应用 朴素贝叶斯算法原理基本步骤基本应用 adaboost原理 前一个基本分类器分错的样本会得到加强 xff0c 加权后的全体样本再次被用来训练下一个基本分类器 同时 x
  • MDB基础

    MDB基础学习 页面结构页面导航条页面主题布局页面主体页面底部总结 页面结构 MDB 模板 在 code 中打开 index html文件你可看到常见的 HTML 文档结构 xff0c MDB 需要的 CSS 和 JS 文件 xff0c 我
  • 基于数电的交通灯控制器

    一 任务与要求 由一条主干道和一条支干道的汇合点形成十字交叉路口 xff0c 为确保车辆安全 迅速地通行 xff0c 在交叉路口的每个人口处设置了红 绿 黄三色信号灯 xff08 1 xff09 用红 绿 黄三色发光二极管作信号灯 xff0
  • STM32学习心得(第一天)

    作为一名刚接触STM32的初学者 xff0c 今天通过观看网站上的视频 xff0c 对STM32有了最基础的了解 xff0c 并学到了一些STM32的学习方法 xff0c 自我感觉收获不错 一 学习方法 1 两个学习网址 xff1a 开源电
  • STM32学习心得(第二天)

    我感觉今天的学习状态还是可以的 xff0c 进行了开发环境的搭载和怎样构建一个新项目 基于固件库 xff0c 学到了较多的新知识 xff0c 同时了解了STM32的启动模式 xff0c 程序下载的两种方法 xff08 1 ISP串口下载2
  • STM32学习心得(第三天)

    今天的状态还可以 xff0c 学习了新建工程模板 xff08 基于寄存器 xff09 和了解了GPIO工作原理 xff0c 昨天基于库函数新建工程模板学习的并不牢固 xff0c 今天还是无法自己创建出来 xff0c 正好借此机会再巩固一下
  • Ubuntu 快速更换阿里源

    简介 xff1a 本文主要给大家讲解如何为Ubuntu更换阿里源 xff0c 通过以下四个步骤即可快速实现换源 镜像下载 域名解析 时间同步请点击 阿里巴巴开源镜像站 一 查看ubuntu的Codename lsb release a gr
  • 【工作遇到的问题——已解决】pip3 install numpy失败

    问题描述 需求 xff1a 求出列表中90 的响应时间 xff1a import numpy as np span class token keyword for span i in finalvalues span class token
  • 7、CAS

    目录 1 CAS是什么 1 1 CAS基本知识 1 2 CAS基本思想 2 对原子类中使用的CAS进行分析 2 1 CAS demo 代码 2 2 源码分析 3 原子类 3 1 有那些属性 用AtomicInteger分析 3 2 Unsa
  • ubuntu设置网络代理在内网中使用 apt代理、docker代理

    ubuntu设置apt 代理 编辑apt 配置文件 span class token function sudo span span class token function vim span etc apt apt conf 添加以下内容
  • 通过VNC远程连接ubuntu桌面(多种客户端连接方式)

    背景 有些时候一些设备不带显示器和键盘鼠标 xff0c 我们来维护他 xff0c 是通过ssh远程连接进行操作 但可能有些维护需要有图形显示来操作 xff0c 这时候再用ssh就不是很合适了 我所遇的设备情况是 xff0c 经常要自己接入显
  • 选择悖论:开源网络操作系统(NOS)重启指南

    我们拥有的选择越多 xff0c 就越不满足 然而 xff0c 只有手握选择权 xff0c 才能在决策之时享受自由和自主 这就是众所周知的选择悖论 当你打算从亨氏旗下的57种薯片 xff08 我的美国朋友们把它叫做chips xff09 中挑
  • Bottom-Up and Top-Down Attention for Image Captioning and Visual Question Answering

    一 摘要 自下而上的机制 基于 Faster R CNN xff1a 提取出图像区域 xff0c 每个区域都有一个相关的特征向量 自上而下的机制 xff1a 确定特征权重 提出了一种自下而上和自上而下的结合注意力机制 xff0c 使注意力能