CVPR 2019关于Attention导读与Bottom-up代码修改(已附github链接)

2023-05-16

本文为随笔,主要记录个人寒假的一些工作情况,其中2月份因病休息了两周

Contents

    • Things to do
    • Overview of the papers in CVPR 2019
    • The change of bottom-up-attention code

Things to do

  • Update the code of bottom-up-attention of Visual Question Answering
  • English prepration
  • Preprare the first draft of the paper and submit it to Arxiv
  • Follow the work in my paper list (4/7+1)
  • Build a homepage for myself

Overview of the papers in CVPR 2019

This list is filtered by one of the following keywords: attention, visual question answering

  1. Deep Modular Co-Attention Networks for Visual Question Answering
    这篇文章将Transformer的结构引入到VQA中,并设计了两个attention的模块:SA(self-attention)与GA(guided-attention), 如下图:
    tylukf Attention Module
    依照上图的module,可以组成更深度的attention模块。作者将该方法与dense attention的方法进行了比较(如BAN、MFH等),随着attention层数的递增,该方法的performance有更显著的提高。在此基础上,作者有提出了两种层数的叠加策略(inspired by the transformer):
    在这里插入图片描述
    另外作者做了三部分实验,值得我们参考:第一部分为MCAN(Modular Co-attention Network)的变种比较;第二部分为attention map的可视化分析;第三部分为performance的对比与当前state-of-the-art。实验充分,让这篇paper的质量有不少提高。

  2. Attention Branch Network: Learning of Attention Mechanism for Visual Explanation
    这篇文章和下篇文章均是关于CNN的可解释性的相关工作,这里简单介绍下这方面的related work:

    1. CAM机制(Class Activation Mapping):以Saliency Map的形式展示决策依据;利用GAP(Global Average Pooling,相当于一个size为整个特征图大小的pooling层,让每个feature-map特别对应于每个类别)取代了原本CNN的全连接层。如下图所示(上侧为原始CNN,下侧为采用GAP的模型):
      原始cnn分类模型
      采用GAP的模型
      有篇博客讲的很好,引用一下其中的一句话解释:

    很重要的一点是,在最后的mlpconv层(也就是最后一层卷积层)强制生成了和目标类别数量一致的特征图,经过GAP以后再通过softmax层得到结果,这样做就给每个特征图赋予了很明确的意义,也就是categories confidence map

    1. Grad-CAM机制:为了解决CAM机制的缺陷,即需要修改原模型并重新训练。这里再引用下一句话:CAM通过替换全连接层为GAP层,重新训练得到权重,而Grad-CAM另辟蹊径,用梯度的全局平均来计算权重。 具体这里不再赘述,感兴趣的请参考这篇博客。另外在VQA任务中,19年NIPS有篇文章也将Grad-CAM的机制引入,来确定image中各个区域对最后answer的影响因子,并利用ground-truth来引导模型达到:正确的image region对正确的answer影响大,并对错误的answer影响小。方法很简单明了,论文名:Self-Critical Reasoning for Robust Visual Question Answering


    在本文中,作者在CAM基础上,提出了新的网络结构。在不依赖back propagation的情况下,利用CAM结构引入attention mechanism,并提高CNN的准确率。(原始的CAM因为修改了CNN的最后结构,会导致performance下滑)。该模型与CAM比较,如下图所示:
    CAM与ABN

  3. Attention-based Dropout Layer for Weakly Supervised Object Localization
    首先介绍下weekly supervised object localization,即只给定label(object的名字),但要求模型能够完整的定位这个object,类似于segmentation。在这个task下,为了定位完整的object,常见的方法是mask图像中most discriminative的区域,然后让模型继续在mask后的图像中进一步寻找discriminative的区域,最终组合成完整的object。关于这个task的论文很多,但基本思路都大体不变,即如上所述。
    在这篇文章中,作者将传统的mask-and-seek机制,替换为了dropout layer,在不引入新的参数的同时,减少了计算量并提高了性能。模型图如下:
    attention dropout layer
    在上图模型中,作者通过对‘self-attention map’进行threshold和sigmoid操作得到了drop mask与importance map,再通过随机选择这二者之一,应用到原feature map,得到最终结果。注:1)这里是针对每个feature-map进行操作,也就是它对应的mask和importance是针对细度的feature。而传统的mask-and-seek是指对image的区域进行mask。2)随机选择的目的是为了保证模型能利用好most discriminative的feature来预测结果,同时也能让模型学会利用less discriminative的feature。

  4. Dynamic Fusion with Intra- and Inter-modality AttentionFlow for Visual Question Answering
    这篇文章针对多模态的fusion方式,Motivation:现有的VQA任务的模型几乎都是基于inter-modality的关系进行fusion,虽然也有部分基于intra-modality的模型,但是inter与intra却未曾同时考虑过。下面是模型框架:
    inter and intra)
    从上图看出,第一步为inter-fusion,第二步为intra-fusion。同时,这篇论文还指出dynamic-intra-modality-fusion在boost performance上起到了重要作用。注:这篇论文也是将transformer架构引入VQA任务中的一项工作,不过选择了一个好的角度(从两种modality切入,不过个人认为并不是superior insight)。下图为dynamic-intra-modality-fusion的架构图:
    在这里插入图片描述
    关于为什么采用dynamic-intra-modality-fusion的方式,作者做出了如下解释:所谓dynamic,其实是针对不同的question,应该有不同的intra-attention,也就是conditional的intra-fusion。具体来讲,对于同一张image,但是输入不同的question,modality内部各个region直接的关系应该在不同的question下存在差异。引用下作者原句:“Some relations are important but could only be identified conditioned on information from the other modality. For instance, even for the same input image, relations between different visual region pairs should be weighted differently according to different questions. ”

  5. Heterogeneous Memory Enhanced Multimodal Attention Model for Video Question Answering

  6. Learning Unsupervised Video Object Segmentation through Visual Attention

  7. Object detection with location-aware deformable convolution and backward attention filtering

The change of bottom-up-attention code

附上修改后的github链接:https://github.com/BierOne/bottom-up-attention-vqa,已更新

  • 数据预处理与数据读取改动:
    • 更新了image-rcnn的提取代码,并取消了img_id2idx文件的创建。
    • 更新了utils.py,进行更简洁的数据读取。
    • 对dataset.py进行了修改,对代码添加了test功能
    • 对训练时load_image进行了修改,将init dataset时打开image_feature.h5文件写到了函数中。因为在训练时会有多个线程运行,按照原始代码在init时打开h5会导致多个线程用同一个file object。而改到函数中,则有多个reader读取不同的file object,加快读取速度。
    • 调整了预处理文件的创建过程,可以更方便的进行数据集间的切换(v1, v2, cpv1, cpv2),现在只需第一次切换的时候预处理一次即可。
    • 对config.py进行了补充,并修剪了所有代码的有关部分
  • 对model部分进行了小的改动,进行了一些修剪。另外在转换python2到python3版本的时候,遇到了performance下滑的问题,不过已经分析处理原因,具体可以参考下面的博客。
  • 对代码进行了重新整理分类,规整化
  • 对train模块进行了较大的改动,参考自改源码,个人认为这份代码的训练模式较为优雅。
  • 模型采用0.3版本的pytorch,将其更新到1.0版本。

代码修改过程中的相关问题和一些知识见如下博客:

  • pytorch-由python版本切换引起weight_norm计算不一致?
  • pytorch-1.0.1-RNN相关
  • pytorch-rnn.flatten_parameters作用
  • python2.7与python3的一些常见差异
  • pytorch-dropout相关
  • pytorch-1.0.1-embedding相关问题
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CVPR 2019关于Attention导读与Bottom-up代码修改(已附github链接) 的相关文章

  • Note: Python_Matplotlib绘制平滑曲线和散点图

    给出横坐标纵坐标点 xff0c 即可连线绘图 import matplotlib 调用绘图工具包 给出x y点坐标 x y 61 1 2 3 4 5 6 5 9 3 4 7 5 绘图 matplotlib pyplot plot x y 这
  • Word论文中设置正文中的引用参考文献 按住Ctrl键+单击鼠标右键 实现跳转到论文参考文献的对应位置

    Word论文中设置正文中的引用参考文献 按住Ctrl键 43 单击鼠标右键 实现跳转到论文参考文献的对应位置 首先要确保文中参考文献排版是插入的编号 xff0c 而不是自己手敲的 1 2 在正文要引用参考文献的位置 点击上方菜单栏的 插入
  • NVM 安装node.js后没有npm

    我们在使用NVM管理工具安装一个新的node后 xff0c 发现没有npm可以使用 参考文档 是因为在使用NVM安装node的时候不会默认安装npm xff0c 所以需要我们自己下载后放到nvm对应的node目录下面 npm下载地址 xff
  • idea项目设置鼠标右键点击文件夹通过IDEA打开

    每次打开idea项目是每次都要打开idea再手动选择项目 xff0c 直接设置成右键打开会很方便 效果图 xff1a 1 首先 win 43 R 输入regedit 打开注册表 2 打开注册表后找到如下路径 xff1a 计算机 HKEY L
  • Java利用Stream统计List中每个元素的个数

    1 传统HashMap 新建HashMap然后for循环List去统计每个元素出现的次数的方法实现 public static Map lt String Integer gt frequencyOfListElements List it
  • Git操作一直要求输入用户名和密码

    通过如下命令配置 xff1a git config global credential helper store git config global user email git config global user name 配置好后再去
  • Linux下的简单线程池

    问题描述 xff1a 在我们的日常生活中 xff0c 如果我们现在要浏览一个网页或者频繁的打开一个执行时间较短的任务 xff0c 如果每次调用都创建一个线程 xff0c 使用结束后就立即释放 xff0c 那么这样的开销对于操作系统来说有点太
  • 对于MYSQL中左对齐右对齐的实现

    在查询表的时候 xff0c 因为是表格的形式 会想要让其左对齐和右对齐的形式 能够看起来舒服一点 书上写的是ltrim rtrim方法 但是具体实现起来并不是很理想 左对齐很快 一开始表格的显示形式就是左对齐 或者用ltrim 右对齐的话
  • 记录罗技键盘从win切换mac的经历

    罗技蓝牙键盘ALT和WIN键 OPT和CMD键 如何对调 今天一直正常使用的罗技K380蓝牙键盘 不知道怎么抽风了 opt键和cmd键位置对调了 也就是windows环境下alt键和win键对调了 在使用复制粘贴快捷键的时候 特别不方便 而
  • IDEA中@author模板的设置

    在设置中查找Editor中的File and Code Templates 具体如下图所示 Created by IntelliJ IDEA 64 Author USER 64 create DATE TIME
  • 解决Win10搜索框没有反应

    刚发现电脑搜索突然不好使 xff0c 这个办法一下就解决了 在状态栏左下角的搜索框搜索OneNote没有任何反应 xff0c 对 xff0c 就是这个地方 最后在另一篇博客上找到了答案 xff0c 那篇博客也是在知乎找到的答案 xff0c
  • mac终端走代理

    mac终端走代理 mac即使打开了代理可以正常上网 xff0c 但终端默认不走代理 xff0c 需要手动配置终端代理 mac终端走代理的方法 span class token operator span 方法一 xff1a xff08 推荐
  • 从数据集CLEVR来看视觉推理的发展

    一 视觉推理的发展 视觉推理 Visual Reasoning 概念的兴起是在Li Fei Fei组提出的 CLEVR 数据集后 xff0c 被大家广泛认识并且越来越多的人开始研究 xff0c 大家提出的各种模型都是为了让机器或者是神经网络
  • Xmanager安装与使用攻略

    文章目录 前言一 工具二 步骤 前言 Xmanager 是一款可以在自己的办公电脑Windows机器下 xff0c 用于远程连接控制服务器Linux UNIX的管理工具 本经验介绍如何在windows上安装xmanager 一 工具 XMa
  • tensorflow的tensor张量如何转化为numpy数组?

    比方说 xff0c a是一个已经定义好的tensor张量 那么直接 xff1a a numpy 即可
  • vnc登录不上解决办法

    备忘 xff01 环境介绍 xff1a ubantu16 04 xff0c 安装了anaconda xff0c QT xff0c cmake xff0c 乱七八糟一堆东西 环境变量也改了很多 xff0c 不知为何会影响vnc桌面的启动 解决
  • js删除数组中的指定对象

    文章目录 实现效果封装工具函数完整demo 实现效果 封装工具函数 思路就是 xff0c 遍历取到每个对象和对应下标 xff0c 通过自定义的函数判断该对象是否删除 xff0c span class token comment 删除数组中指
  • 用OpenCV储存视频时遇到的问题

    用 MJPG 格式储存 34 avi 34 格式时报错 cv2 error OpenCV 3 4 1 io opencv modules videoio src container avi cpp 737 error 215 pos lt
  • debian 10执行提示service: command not found(找不到service命令)解决方法

    debian 10 用 root 执行提示 bash service command not found xff08 找不到 service 命令 xff09 解决方法 问题 想要执行 service xff0c 发现找不到命令 xff0c
  • IAR平台进行编译时常见错误:

    1 IAR编辑时出现如下错误 xff1a Near constant start address 43 size must be less than 错误原因是 xff1a 代码对应的Device 芯片选型错误 解决方法 xff1a 将Ge

随机推荐