7

Visual Question Answering 简介 + 近年文章

 3 years ago
source link: https://bbs.cvmart.net/articles/391
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

写在前面:一直以来,极市得到了许许多多开发者的关注和支持,极市的成长离不开各位开发者的见证,为此我们特开设极市开发者祝愿帖,期待听到您真实的心声和建议~φ (> ω<*) :

极市开发者祝愿活动 (有奖回馈)

作者:北海牧羊人
来源:https://zhuanlan.zhihu.com/p/57207832


刚刚做了个VQA的组会,所以把PPT分享下。
这里我们讨论的是类似VQA 2.0这样的真实数据集VQA而不是CLEVR这样的人造生成数据集。

如果对真实数据的VQA感兴趣的话,我复现了大多数近年的State-of-the-art文章,代码可以参考我的Git项目。这篇文章整理的比较随意,基本就是放下PPT,如果对VQA感兴趣建议直接去看代码:

真实数据集VQA任务简介:

file

常用数据集:

目前最常用的其实还是VQA 2.0

file
    1. Visual Dialogue: 对于一张图片问一连串相关的问题,而不是只问一个问题
    1. 人工生成的VQA数据集:例如CLEVR。和真实图片的VQA,不同,人工数据集的物体种类有限,问题的模式非常有迹可循(生成的),背景也很干净。所以支持非常复杂的推理,例如模块网络,但真实数据集上,因为包含信息种类太过复杂,背景也不干净,其实模块网络这种复杂的模型效果往往非常差。
    1. 基于常识的VQA:除了图片和问题,还提供了一段常识问题,辅助推理。
file
file
file

常见传统方法(2015左右):

这里我只列出了4个,不过传统方法大多大同小异。

1. iBOWIMG: GoogleNet 提视觉特征,Bag-of-word 模型提问题特征。

file
2. 全CNN网络: 不仅用CNN提视觉特征,连问题特征,和特征融合都用sequence CNN。(浮夸大于实际意义)
file
3. Vis-LSTM:这个直接用视觉特征作为问题特征的LSTM初始化,这样就不用显性的做特征融合了。
file
4. 动态参数:其实所谓的动态参数就是:一个全联接FC的参数,本身是另一个全联接的输出。这个东西其实就是个Bilinear Layer。这东西参数非常多,所以这篇DPPnet还做了个模型压缩,用hash映射。
file

目前VQA中常见的技术

  • 1、 Attention (毋庸置疑)
  • 2、 Module Network (常见于人工生成的数据集,但我觉得这东西潜力很大,所以仍然单独列出)
  • 3、 Graph-Structure Representation/Feature updating,用一个图结构,来更新视觉特征 / 问题特征。(其实目前VQA上的Graph都很扯)
  • 4、 Bottom-up Top-down特征,(非常实用,现在很多方法都默认使用这个特征)
  • 5、 Counting 问题优化

关于Attention, 我这先列出三篇文章,但其实目前大部分方法,都多多少少用了attention。

1、 Where to Look:非常暴力直接的,算question和每个visual region的attention,然后酸楚attended 的visual feature。

file
2、Recurrent Spatial Attention: 不同于前文只用一个Attention,他把算Attention放在Question的LSTM上,LSTM没一步接收一个word时,都会算个新的attented visual feature。
file
3、 stacked attention network:和上文差不多,就是多部attention,不过他直接每一步都是类似where to look一样的结构。
file

Neural Module Network: 这个自己就可以单独开一个专题了(主要之前组会另一个同学讲过了,所以我这里先不整理了)

file

Graph Structure现在在visual relationship和scene graph上用的比较多,其实VQA上用的还不多,用的两篇效果也不怎么样。

file
Bottom-Up Top-Down:简单来说,就是提了个更好的feature,关注到物体上,而不是feature map上每一个均匀分布的grid。总的来说,这个方法work本质还是feature更好了。
file

Count问题是现在VQA中最大的难点,主要因为常用的softmax attention,本质上就无法做counting,假设图中有两只猫,问有几只。softmax attention 给每个猫0.5的权重,和为1。完全看不出有几个。

这篇文章的方法挺有意思的,建议看原文。现在很多方法,都会额外的把这个counting 模块加上作为额外的feature,因为他只用了bounding box,所以和bottom-up top-down的visual feature算是互补吧

file

目前的State-of-the-art:这里我主要讲四篇

  • 1、Bottom-Up Top-Down
  • 2、Learning To Count
  • 3、Bilinear Attention Network
  • 4、Inter- Intra- Modality

1、Bottom-Up Top-Down的网络结构其实非常简单。看下面的图基本就可以理解了

file
2、 Learning to Count:这篇文章就是在bottom-up的基础上设计了个counting模块,作为额外的counting bias。
file
3、 Bilinear Attention Networks:就是用了个low rank的bilinear attention,是目前开源代码中效果最高的。
file
4、 Intra- Inter- Modality这篇文章其实就是用了Transformer的结构,做了self-attention 和co-attention。
file

可解释性的VQA:目前也就两种方式

  • 1、 Visualize Attention
  • 2、Neural Module Network

Visualize 物体的Self-Attention这个说是可解释的VQA,我觉得挺扯的。效果其实也不好

file
file
第二种可解释的方法当然就是模块网络大法啦!!我个人觉得,模块网络才是VQA最优雅的解决方案,虽然现在在真实数据上的效果不好,但我觉得这不是他本身的问题,只是CV的底层任务做的还不够好。
file

其实总结就一个问题:现在的所有模型真的可以解决general的VQA吗?

我觉得答案是No,现在所有的真实数据VQA其实都只做了一件事,就是pattern matching,就是监测到特定的visual feature+特定的question question,就直接给出answer,没有任何推理。(模块网络除外)

file

其实我组会还做了其中一些模型的公式推导,但是我太懒了,所以就不打出来了。有兴趣的话可以看我下面列的几页笔记(乱的不行)总的来说,VQA这个task突出了一个字:扯!

file
file
file
file
file
file
file

微信公众号: 极市平台(ID: extrememart )
每天推送最新CV干货


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK