由上海大学发表在2020年的IEEE Access期刊上的论文《Global Relation Reasoning Graph Convolutional Networks for Human Pose Estimation》,使用了GCN实现全局关系推理,用于人体姿态估计任务。
概述
GRR-GCN (Global Relation Reasoning Graph Convolutional Networks) 是一个通用的"plug-and-play module",可以嵌入到现有的human pose estimation网络中,通过引入GCN实现"global relation reasoning"。
创新点
-
Projection between feature space & graph space
使得GCN方法用于pixel level的Human Pose Estimation任务成为可能
-
Global Relation Reasoning
使用GCN建立了joints之间的全局推理,每个node中存储了对应关节点的feature信息
Motivation
Human Pose Estimation任务中的一个难点是occlusion等问题,需要joints之间做reasoning。现有方法的解决思路通常是采用多个stages的思路,在前几个stages先predict出"simple" body joints,后面几个stages通过不断增加receptive field来提取joints之间的relationship从而predict "hard" joints。
Related works
(1) CPN的做法,GlobalNet先走了simple joints,然后RefineNet使用了GlobalNet上的pyramid features,对于"hard" joints经过了更deep的网络结构。
(2) Stacked Hourglass则是implicitly的做法,通过intermediate supervision来训练网络隐式的提取joints relationship。
注:上述方法全部使用纯CNN来实现joints relationship reasoning。
使用纯CNN方法reasoning的缺陷
关节点之间的距离在RGB空间可能比较远,纯CNN的结构需要经过非常deep的网络才能使得receptive field足够大,计算量非常大,同时也会introduce进来一些noise信息。
现有的GCN主要用于行为识别和场景理解等classification问题,对于pixel-level computer vision tasks目前仍缺少GCN的解决方法。
因此在本工作中通过projection和reverse projection的操作,架起了CNN的Euclidian space和GCN的graph space的桥梁,从而把Global Relation Reasoning运用到pixel-level的Human Pose Estimation任务中。
Projection between feature space & graph space
研究意义
使得在Euclidean space无法直接进行的GCN推理成为可能,这对于检测skeleton joints来说更方便对关节点之间的相关性建模。推理完之后reverse projection到原来的domain,可以让skeleton joints推理后的信息反过来帮助网络在图上正确检测关节点。
实现方式如下:
From feature space to graph space
网络对skeleton joints提特征得到feature map后,如果使用GCN进行推理,需要先把domain从feature space变换到graph space,这里的feature map的维度: (分别表示输入feature map的宽高和channel数)
由于GCN需要对整个人的skeleton进行整体推理,因此projection的过程需要receptive field到全图。这里使用了weighted global pooling来实现,获得graph space的,其中weight的维度,得到的,其中表示skeleton joint的个数。
实际上具体实现时为了减少输入维度和网络参数量,使用了一个的卷积来对进行预处理为,因此上式应写成: 。
From graph space back to feature space
从graph space使用GCN做完推理后,还需要mapping回原来Euclidean space的feature map,这里设GCN输出的feature map的维度,这个reverse projection也是使用linear mapping来实现:,这里逆变换的系数矩阵使用正变换的transpose:。这里系数D复用的好处是减少了训练的参数量和网络计算量。
Global Relation Reasoning
GCN中的每个node为了代表对应的skeleton joint,整个GCN的功能是建立关节点之间的推理,也就是说让各个node之间的feature相互联系。
这部分为了让所有的关节点之间都可以建立联系(实现Global Relation Reasoning),采用了全连接的方式,即对N个node采用了的adjacency matrix。
具体实现的流程如下图。
从原始的feature space的经过projection (图中右侧的那个)得到graph space,同时本身通过一个的conv进行压缩(减少输入维度和网络参数量)到,这两路做element-wise sum,得到 ,这里编码了所有N个node的feature,每个node表示对应的那个skeleton joint,此时使用一个全连接的graph (adjacency matrix的维度是) 用来实现nodes之间的信息传递(实际实现的时候是用一维卷积来实现)。
然后使用了一维卷积来实现state update function,GCN得到的结果如下:
其中和这两个adjacency matrix的weights是随机初始化,然后通过end-to-end方法进行训练。
实验效果
分别使用了HR-Net和Simple-Baseline的方法作为基础网络。
COCO数据集上,AP提升了0.2 (HR-Net: 74.9 --> 75.1)和0.3 (Simple-Baseline: 71.5 --> 71.8)
MPII数据集上,PCKh@0.5提升了0.1 (HR-Net: 91.2 --> 91.3)
提升的地方主要在于partially occluded的person检测的更准确。
一些疑问
文中所提出的方法为什么没有使用人体skeleton的自然连接方式对GCN的adjacency matrix做初始化,而是random初始化?
-
Global Relation Reasoning这部分,经过压缩的feature 与投影后graph空间的融合方式为什么是相乘?
融合后的feature 为什么要减去他本身经过fully-connected graph 的结果?
为什么能实现state update function?
最后reverse projection后的结果与GRR部分的输入又做了一次相加的意义何在?
对于这一块的实现方式我表示有很多问号。
实验结果只提升了很少,但是对于不同的pose estimation方法,要分别设置GCN的引入位置,花了这么多设计的代价换来很少的准确率提升值得吗?
-
文章的审稿质量并不敢完全保证很好,即使在publication的版本中,仍有英语语法错误,例如Sec. III-A中,
"However, because convolution operations can only model local relations, so most of the state-of-theart methods have to inefficiently build deep network layers to capture global relations between different human keypoints."
由此推测作者可能是先写了中文草稿然后翻译投稿的。
Reference
- R Wang, C Huang, X Wang. "Global Relation Reasoning Graph Convolutional Networks for Human Pose Estimation", IEEE Access, 2020.