zoukankan      html  css  js  c++  java
  • 【论文笔记】Iterative Visual Reasoning Beyond Convolutions

    论文笔记

    Iterative Visual Reasoning Beyond Convolutions

    Introduction

    以往的卷积神经网络在很多视觉任务中取得了良好的效果,CNN可以在很大程度上提取像素级的信息。但CNN获取Global Context的能力仅仅来源于其较大的感受野,无法像人类一样通过视觉来注意到空间位置关系和语义关系。因此,此文提出了一种能处理空间关系和语义关系的迭代视觉推理系统。

    该系统主要分为局部和全局两个模块,局部模块主要使用spatial memory实现,可以提取像素级信息,全局模块则是基于图结构的关系推理。

    作者提到,以往的关系推理方法都具有两点局限性。第一,他们往往使用卷积网络来执行局部的推理,这样的推理往往是像素级的,不论是空间关系还是语义关系都是隐性的,且对全局信息的利用十分薄弱,尤其体现在较远的区域无法直接相互影响,也无法传递信息。第二,该种方法无法利用人类的常识性知识辅助,只能从数据中学习类别之间的关系。而这种关系随类别增长指数性增长,因此很难有足够的数据训练这样的语义关系。

    因此,该模型在全局模块中通过有效利用人类常识性知识图来直接为语义关系提供参考,且显式地标识出区域与区域间的空间关系,更好地利用了这些关系信息。

    Local Module

    作者对局部模块相对于spatial memory有着一些优化,使用了并行更新的方式极大地提升了效率。

    Global Module

    全局模块使用了超越卷积之外的处理方法,基于图结构且具有对关系的分析能力。该模块并非图卷积网络,因为关系都是有向图组成,不具有正定性,则并没有用到图上的卷积运算,因此该模块在类别较多的情况下的参数数量或许会较高。

    关系图主要由三个部分组成,区域图、知识图和分配图。其节点分为区域节点和类节点,区域节点表示某一图像中的框,类节点表示在数据集中出现的每一类别。

    Region Graph

    在区域图中,作者首先用空间关系的类别对空间关系进行分类,如A在B上/下、在C左/右等等。但实际操作时,使用的是框之间的像素级的距离,并将该距离使用核函数标准化,旨在使较近的区域间有着更高的相关度,并将该值直接作为区域图的邻接矩阵的权重。

    另外,作者对框重叠的情况作了特殊处理,利用到了IoU编码该种情况,但没有进一步的详细说明。

    Knowledge Graph

    知识图主要包含了不同种类的语义关系,如A是B的一部分,A是一种B,A相似与B等等,即人类的常识类信息。该种信息可以从不同的方式获得,比如在数据集中通过脚本分析不同类别在一张图中同时出现的次数,该次数较高者之间有语义关系,或者可以通过常识性的知识库来直接获取。

    Assignment Graph

    分配图的宗旨是将图像上的区域和类别一一对应起来。通过分配图,信息得以从区域图流通到知识图中,再通过知识图流回区域图。即分配图具有从区域到类别,从类别到区域的两种边。而且,边不只是单纯的One Hot编码,而是具有概率意义的Soft-max分布,使某一区域依置信度和多种类别相连,以获得更好的鲁棒性。

    全局模块具有空间和语义两条数据通路。

    空间通路中输入为 (M_{r} in mathbb{R}^{R imes D}),其中 (R) 对应图像的区域数,而 (D) 是特征通道数,此文取为512。(A_{e} in mathbb{R}^{r imes r}),为区域图的邻接矩阵。(W_{e} in mathbb{R}^{d imes d}) 为权重矩阵。

    [G_{r}^{s p a t i a l}=sum_{e in mathcal{E}_{r ightarrow r}} A_{e} M_{r} W_{e} ]

    语义通路中,首先将区域图信息 (M_{r}) 通过 (A_{e_{r ightarrow c}})(W_{e_{r ightarrow c}}) 映射到知识图形成中间特征,与知识图信息的特征 (M_{c} W_{c}) 结合后,通过激活函数激活后,形成语义特征。

    [G_{c}^{s e m a n t i c}=sum_{e in mathcal{E}_{c ightarrow c}} A_{e} sigmaleft(A_{e_{r ightarrow c}} M_{r} W_{e_{r ightarrow c}}+M_{c} W_{c} ight) W_{e} ]

    最后,全局模块的输出为(G_{r}),是将语义特征变换回区域图后,与区域特征结合后输出。

    [G_{r}=sigmaleft(G_{r}^{s p a t i a l}+sigmaleft(A_{e_{c} ightarrow r} G_{c}^{s e m a n t i c} W_{e_{c} ightarrow r} ight) ight) ]

    Iterative Reasoning and Attention

    视觉推理的关键是迭代地建立估计,那么就需要之前的信息传递到下一次迭代。作者是通过显式存储(explicit memory)存储之前每次迭代的历史记录的。

    在某一次迭代之后,local模块和global模块都可以独自生成一个预测,这个预测被显式存储储存后,还可以作为高层次的特征作为下一次迭代的输入。虽然两模块独自即可生成预测,但为了让局部模块获得来自图结构的全局信息的指导,且让全局模块获得细节的像素级信息,要将二者的输出经过cross-feed后流向下一次迭代,这里作者使用的方法类似于GRU。

    同时,每次迭代都会为两个模块各自生成一个注意力参数,该参数和预测信息同时被显式存储储存,表示这一预测与其他轮次或模块输出的预测相比的置信程度。在最终输出时将每一轮次不同模块的预测结果,再加上网络开始的卷积部分输出的预测,共 (n=2i+1) 次预测通过注意力机制结合起来并生成最终的预测值。

    [f=sum_{n} w_{n} f_{n}, quad ext { where } quad w_{n}=frac{exp left(-a_{n} ight)}{sum_{n^{prime}} exp left(-a_{n^{prime}} ight)} ]

    公式中的 (f_{n}) 即代表每一次预测的预测值,这里的预测值是在Soft-max之前的输出值,而非具有概率性质的 (p_{n})

    Training

    整个框架是端到端训练的,最终的loss由四部分组成,普通卷积部分的loss,局部模块的loss,全局模块的loss和经过注意力机制后的最终预测结果的loss。

    虽然注意力机制中的最终结果已经包含了前三部分的预测,但直接加入它们的loss有助于对它们进行直接训练,这样最终预测结果的loss可以更好地优化注意力参数,同时有整体优化的作用。

    对于普通卷积和最终输出的loss,使用softmax即可简单得出。但对于局部和全局模块的loss,作者认为模型应注重于对较难样例的训练。因此,每一轮迭代的loss都依据上一轮的预测结果重新分配了权重,使用的交叉熵loss的公式如下:

    [mathcal{L}_{i}(r)=frac{max left(1 .-p_{i-1}(r), eta ight)}{sum_{r^{prime}} max left(1 .-p_{i-1}left(r^{prime} ight), eta ight)} log left(p_{i}(r) ight) ]

    (eta) 在这里是控制权重分配的熵的参数。(p_{i-1}(r))这里不会被传导梯度,对它的训练会在 (mathcal{L}_{i-1}(r)) 中完成,它只是用来分配权重。

  • 相关阅读:
    关于静态链接库(Lib,.A)与动态链接库(DLL,.SO)
    #pragma once
    动态链接库和静态链接库的区别
    C++编写、生成、调用动态链接库
    cmake 命令行
    Build Slicer application--Compiling and installing Slicer from source
    3DSlicer开发之路——Extensions(九)
    3DSlicer开发之路——Extensions(八)
    3DSlicer开发之路——Extensions(七)
    placeholder文字颜色与是否显示兼容性
  • 原文地址:https://www.cnblogs.com/SephyFine/p/12340461.html
Copyright © 2011-2022 走看看