Learning Human-Object Interactions by Graph Parsing Neural Networks阅读笔记

前言

这是一篇2018年发表在ECCV上得paper,论文原文点这里
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

笔记

  1. 说实话刚看到这篇文章还是有点唬人的,文中作者提出了一个网络模型叫GPNN,图解析神经网络,我以为是跟GNN有关系,花了一些时间去看了近些年GCN的一些发展回头又读这篇文章的时候把GCN的思想带进去发现怎么都读不懂,后来才发现这篇文章仅仅是用了图的“结构”,后边的网络仍然是正常的Conv2D卷积。
  2. 作者介绍,其提出了GPNN,一个可以结合结构知识和深度神经网络的学习能力的端到端的模型框架。对于给定的情景(一张图片),GPNN的输出是一个解析图,这里解析图就是两部分,一个是HOI的图结构,其用邻接矩阵来表示(这里的邻接矩阵不是传统意义上的邻接矩阵,其可以通过训练自我迭代),另外一个就是节点标签。作者在三个数据集上评估了模型的performance,前两个是之前文章中提到过的V-COCO和HICO-DET,最后一个是用来做video recognition的CAD-120。而且本篇论文的代码是开源的。
  3. 图一是GPNN在一张静止图中检测HOI的过程,其首先将邻接矩阵全部初始化为1,然后通过信息传递联合推理得到最终的解析图,也就是这个邻接矩阵在训练过程中也是会被优化的,最终哪些object的交互作用明显,其边的权值就大,那些作用不明显的边在训练的过程中权值会变小。
  4. 在第三节中,作者透漏了部分的细节,首先一幅图片中的人和物体会被当做节点(label就是名称),它们之间的关系被定义为边(label就是V-O pair)。输入的HOI graph包含了图上所有可能物体,和他们之间的关系(这里我不清楚物体和物体之间的关系作者是如何来标定的),就是通过这样一个图,然后得到一个解析图作为输出,这个解析图保持了有意义的边的连接(邻接矩阵中边的权值较大),并且给出节点的label。
    在这里插入图片描述
  5. 这里作者介绍了输入的complete HOI graph的数学形式,其中节点的值从1到节点的总数。边用一对元组表示。并且每一个节点v都有一个输出的标签y(是action中的一个,比如riding)。这里说的节点的特征和边的特征其实就是图片中的roi(经过卷积得到的feature map),边就是两个节点(目标)的roi取并集,通过给出这些特征,就可以推断出最优的解析图(这里不是很清楚,作者在训练的时候除了给特征还应该给出ground true,比如如果是两个无关物体之间的label是什么?),公式1就是根据后验概率最大来优化网络。根据公式有两个待优化项,一项是要优化图的结构,也就是作者强调的自动学习图结构,另一项是使得解析图中节点的概率最大,也就是最符合我们给定的label。
    在这里插入图片描述
  6. 作者接下来在向前传播的过程中设计了四个独立得function,分别是link、message、update、readout function。link function得输入是边的特征,并且推断节点之间得连接。因此邻接矩阵被构建用来作为消息在节点间边传递的权值。对于一个节点来说,到来的信息是message function的汇总,从图上看,这个信息包括了相邻节点的信息和自身的信息。update function利用这些信息来更新节点的状态(节点的特征?)。最后的readout function倒是和GCN中的一样,是计算每一个结点的输出,其实就是一个FC层。
  7. 接下来作者对这四个函数的具体实现细节做了说明,这里一个一个来讲:在这里插入图片描述首先是link function,这个东西主要是用来计算邻接矩阵的。这个L,接受节点和边的特征作为输入,并且输出一个邻接矩阵(其中矩阵的值被sigmod函数限制在0-1)。对于这个矩阵中的每个值,都由矩阵中的这个点对应的两个notes和它们之间边的特征来计算,这里作者仍然没告诉这个L到底怎么算,后边有,其实就是直接concate。
    在这里插入图片描述
    接着是计算信息和更新节点的函数,采用消息传递算法对节点的label(?)进行推断。在传播过程中,节点的隐藏状态会使用它相邻的节点信息迭代的进行更新。message function M其实就是总结其它节点的信息然后对当前节点进行操作,更新函数U根据算出来的信息更新节点的状态,其实我们要的就是不停的更新节点的状态,然后再通过更新后节点的状态来计算新的状态,如此迭代下去。在某一次第S步迭代,通过公式3和公式4计算,mvs就是节点v在第s次迭代时要到来的信息,hvs是节点v在第s次迭代的隐藏状态。作者一直再说的表示节点连接状态的邻接矩阵A控制着信息的流动在公式3中表示的很清楚,就是Avw会乘上后边和节点V相连接的节点计算出来的信息,只有值比较大的Avw对应的w节点的信息才会被传递。作者还说这个信息传递会在运行S步后收敛?在刚开始的时候,这个节点的隐藏状态hv0使用节点的特征值进行初始化。
    在这里插入图片描述
    最后的readout层,接受的是每个节点最后迭代收敛的隐藏状态,并且输出的是一个label,其实这个就是一个FC层。
  8. 在作者后边的叙述中,A也是在不断优化的,A中的值Avw会由上一步得出的节点v和w的hidden state,以及他们之间的信息mvw进行更新。所以公式3被重新表达成如下形式:
    在这里插入图片描述
  9. 在3.2节作者开始详细的说明上边我们用大写字母表示的那些function到底是什么,如何用neural network来表示: 在这里插入图片描述
    仍然首先是link function,使用dV和dE表示节点和边的维度。在第S次迭代中,我们首先concatenate所有的(两个V和W)节点的feature(hidden states hvs)和所有的边的特征(这里指的就是message,刚开始第一次是union box feature之后就计算成为了message),形成一个特征矩阵Fs(维度为VV2dV+dE,两个点,一条边)。终于到重点了,这个link function就是卷积层,其有1*1的卷积核(为了匹配F的维度,每一组卷积核也有2dV+dE个),并且使用sigmoid作为激活函数(目的是使得Avw的值归一化到0-1)。公式8就表示了邻接矩阵A是如何计算得到的,其中的WL就是可以学习的参数(卷积核的参数)。对于在video中使用的是convLSTMs,这里可以去看引用的文献。
    在这里插入图片描述
    接下来是信息函数,仍然是concatenate操作,它concatenate所有的经过了线性变换的hv,hm和
    边的特征信息。
    在这里插入图片描述
    更新函数update function使用的是GRU,他比LSTM使用更少的参数,是RNN的一种变种。hvs就是隐藏状态控制门,mvs就是输入的特征。
    在这里插入图片描述
    最终的readout函数就是一个全连接层,非常简单,它的输入维度就是hvs的dimension,输出就是针对不同任务最后得到的结果类别数目,比如HICE-DET中有117个action categories那输出的维度就是117。
  10. 再后边就是作者的一些实验结果,说明了他提出的GPNN在目前的大型数据集上均达到了最佳的性能
    在这里插入图片描述
    并且还做了ablation study,发现他的设计对与提升performance都非常重要,无论去除掉哪个design都会导致性能的下降。
  11. 最后作者做了总结,提出了GPNN,他是一个端到端的框架,可以被分成四个独立的函数部分。GPNN提供了HOI的一个通用的表示,可以同时用在空间和时空域中(静止图片和视频)。并且这个模型在三个数据集上均得到了显著的性能提升证明了所提出框架的有效性。
  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值