Class-wise Dynamic Graph Convolution for Semantic Segmentation(ECCV 2020)详解

论文地址:https://arxiv.org/pdf/2007.09690.pdf
PPT:https://wenku.baidu.com/view/ffaeebc8ce1755270722192e453610661fd95a4f.html
讲稿:https://wenku.baidu.com/view/9a670cab1cd9ad51f01dc281e53a580217fc504f.html

一、背景

       近年来语义分割出现了很多利用上下文信息,也就是context information的一个方法,最具代表性的主要包括几种,作者总结的第一种是利用空洞卷积的ASPP模块的deeplab系列,第二种是利用金字塔池化的PSPNet,还有就是自注意力机制,代表工作包括DANet,CCNet,OCNet等等。
在这里插入图片描述

二、动机

       这篇论文的动机就是刚才这些方法在融合上下文信息时都面临着一些问题,比如说deeplab系列的方法还有PSPNet方法它们在融合上下文信息时都不够自适应,就是说可能会融合到错误的信息,从而对分割产生一些不好的影响。而利用自注意力机制的Non-local block的工作则是把全局的信息都融合进来,但是这样就会融入很多多余的语义信息。所以为了更好地进行上下文信息的学习和融合,作者选择图卷积来实现这一目的。一方面图卷积的邻接矩阵可以用来描述两个结点之间的连接关系,另一方面图卷积可以很好地利用结点之间的关系来进行图推理,因此呢可以通过设计邻接矩阵来进行特定的feature的融合过程。

       下图是作者使用该文章中提出来的图卷积方式做的一个语义分割效果可视化,从上到下从左到右依次为:原始图像,groundtruth,deeplabV3结果,作者的CDGCNet结果。可以看出,作者的方法保留了更多的上下文细节,并使边界分割得更准确。
在这里插入图片描述

三、主要贡献

       这篇文章的主要贡献有两个,一个是class-wise learning strategy,也就是一个逐类别的学习策略,它的意思就是说我们要在类别层面上进行构图然后去做图卷积优化;另一个是Dynamic Sampling,叫动态采样,因为是逐类别进行,所以在采样过程中可能会采样到一些困难样本,也就是把本来是错误的结果采样进来,这个错误结果作者称为hard negative,所以为了解决这个问题作者采用一种叫做动态采样的方法去挖掘这个困难样本,然后去优化这个图卷积过程。这两个方法组合在一起就是这个文章提出来的Class-wise dynamic graph convolution,简称CDGC,类动态图卷积。


四、方法

1. Coarse-to-fine Framework

       下图是这篇文章设计的一个整体框架,采用了Coarse-to-fine(从粗到精)的框架。首先用一个basic network(可以是任何最新的语义分割架构,文章中用的deeplabV3)去生成一个粗略的分割结果,以及对应的一个feature,称作coarse feature,然后再把这个coarse feature 放入CDGC模块去做refine过程,然后将reasoned feature和之前的coarse feature 二者concat起来或者是sum起来,然后再使用1*1卷积得到最终的预测结果。
在这里插入图片描述
2. Class-wise Graph Convolution

       下图是CDGC模块的详细结构,它主要包含两步,一步是图构建,一步是图卷积。构图时将经过一个backbone(resnet101),将降采样后的feature map上的每个点作为图的结点。和前人工作不同的是作者的图卷积过程是逐类别进行的,就是刚才说的class-wise learning strategy,主要就是想把属于同一类别的点进行构图,防止属于其它类别的点对这一类别的学习过程进行干扰,因此就需要basic network 预测出来的分割结果作为一个过滤器,去采样不同类别的对应的点来构图。然后在构图过程中就会采样到困难样本,然后为了缓解这一问题文章就提出采用Dynamic Sampling来去对这个困难样本进行一个优化。然后经过图卷积过程就得到了reasoned feature,然后再做一个1*1卷积得到一个和之前的coarse feature相同的形状,这样的话方便之后的结合和预测。
在这里插入图片描述
       下面通过公式具体介绍一下这篇文章中的图构建和图卷积。

       第一种构图方式:Similarity Graph

       利用结点间的相似度作为邻接矩阵的边的权值。因为在图卷积里构图其实就是在构邻接矩阵。具体来说就是假如对于两个结点的feature, x i x_i xi x j x_j xj,定义两个可以学习的线性变换, ϕ \phi ϕ ϕ ’ \phi’ ϕ 来衡量这两个feature的相似度,就得出公式:

                                           F ( x i , x j ) = ϕ ( x i ) T ϕ ′ ( x j ) F(x_{i},x_{j}) = \phi(x_{i})^{\scriptscriptstyle T}\phi'(x_{j}) F(xi,xj)=ϕ(xi)Tϕ(xj)

       这两个线性变换是可以学习的,相当于一个动态学习的构图方式,之后然后再进行一个softmax归一化就得到了邻接矩阵,公式如下:

                                           A i j = e x p ( F ( x i , x j ) ) ∑ j = 1 N e x p ( F ( x i , x j ) ) A_{ij} = \frac{exp(F(x_{i},x_{j}))}{\sum_{j=1}^{N}{exp(F(x_{i},x_{j}))}} Aij=j=1Nexp(F(xi,xj))exp(F(xi,xj))

       这种构图方式是一个非常朴素的构图方式,在实现中就是对于同类别的点来进行全连接的一个构图。

       第二种构图方式:Dynamic Sampling

       在Similarity Graph的基础上这篇文章采用了一种动态采样的方法来选点构图,在训练过程中同时利用在基础网络预测出来的预测map(记作C)和groundtruth mask(记作G)来选点,这样的话呢,这个叫Sampled的式子就是采样的一些类别:

               S a m p l e d = C − C ∩ G + G − C ∩ G + r a t i o ⋅ C ∩ G Sampled=C-C\cap G+G-C\cap G+ratio\cdot C\cap G Sampled=CCG+GCG+ratioCG

                                 = C ∪ G − ( 1 − r a t i o ) ⋅ C ∩ G =C\cup G-(1-ratio)\cdot C\cap G =CG(1ratio)CG

       第一项 C − C ∩ G C-C\cap G CCG 叫做hard negative,就是本不属于这一类的点却给它采样进来了;第二项 G − C ∩ G G-C\cap G GCG 叫做hard positive,就是本应该属于这一类的点却没有被采样进来;最后一项 C ∩ G C\cap G CG 叫做easy positive,就是属于这一类的点并且也给采样出来了,也就是简单样本。所以从这个公式可以看出在选点的时候就是把所有困难样本点先全部选出来,然后再有一定比率地去选择简单样本来辅助这个训练过程。

       具体示意图如下图,以“骑车的人”作为一个目标类别,图中红色和绿色的点就代表困难样本和简单样本。困难样本从图上可以看到,主要是在远的物体上和边界上,远的物体因为非常小然后经过降采样之后就很难去识别;边界的话是非常模棱两可的一个东西,它可能会划分到别的物体上。从这张图中我们可以看出远处有骑车的人和行人,所以被分类错误的远处的骑车的人和骑车人的边界(图中大部分红点)叫做hard positive。而远处的行人将它识别出来了但它本不属于“骑车的人”这一个类别,叫做hard negative。动态采样就是在这两个困难样本(红点)和简单样本(绿点)上采出来的点之间进行构图。
在这里插入图片描述
       在构图完毕后就可以进行图卷积,在图卷积的时候本文采用了一个非常标准的形式:

                                                  Z = σ ( A X W ) Z=\sigma(AXW) Z=σ(AXW)

       A是邻接矩阵,X是输入的一个feature map,W是要学习的网络参数, σ \sigma σ 是非线性激活函数,本文采用的是ReLU,Z是经过图卷积之后的一个feature。


五、实验

在这里插入图片描述
       为了证明文章提出的CDGC模块的有效性,作者在Cityscapes数据集上进行了一系列的消融实验,首先是验证了class-wise学习方式的有效性(第一个表格),主要是比较class-wise GCN和plain GCN的表现,plain-GCN就是单纯在feature map上进行图卷积,而resnet101 baseline指的是在backbone基础上再加一个1*1卷积去预测,可以看出采用class-wise的方式带来的mIOU的提升是最大的,也就是直接说明了class-wise learning strategy的有效性。

       在第二个表格中作者直接验证整体CDGC模块的有效性,第一行还是之前的baseline,第二行是resnet101加上一个ASPP就是代表deeplabV3,可以看出来单独加了CDGC也比单独加ASPP要表现得好一点,然后最后两行是在ASPP基础上再加上CDGC,相当于有一个更好的基础网络然后再去做一个coarse-to-fine的一个优化,可以看到这样取得了一个更好的精度,而其中sum和concat主要是两类feature的一个叠加方式。

       第三个表格主要是比较一下不同构图方式的表现,首先第一行是一个baseline,然后第二行是用一个简单的刚才说的Similarity来构图的一个方式,可以看到仅仅用相似度这种方法去构图也可以带来提升,然后之后的几行是用本文提出的Dynamic Sampling去构图,后面的值是对简单样本的一个采样率,由低到高的,可以看到当这个采样率超过0.4的时候就已经超过了用相似度来构图的方式,然后当这个采样率越来越高,它表现也是越来越高,当采样率达到1的时候也就是全采出来之后它的表现是最好的,达到在Cityscapes验证集的81.1的mIOU。

       表4是验证挖掘困难样本是否有效的一个实验,在训练的时候作者主要挖掘了hard positive和hard negative这两类困难样本来优化学习过程,从表中可以看到这两类困难样本的选择确实可以带来mIOU的提升。

       除了Cityscapes数据集,作者还在PASCAL VOC 2012数据集和COCO Stuff数据集上进行了实验,从表中可以看到CDGCNet在三个语义分割常用的数据集上取得了更好的结果。
在这里插入图片描述
       下图是一个class-wise feature的可视化,作者选取了几个特定的类别来看,从上到下是车子、植被和行人,可以看到基础网络识别出来的feature(第二列)有一些不确定的点或者识别错误的点,但是通过图卷积(第三列)直接可以把不确定的点或者错误的点把它给强化或者纠正掉,这样就会直接带来一个精度上的提升,也说明CDGCNet的有效性。
在这里插入图片描述
       然后下面这个图是一个更加广义的效果图,作者直接在验证集上挑了一些比较困难的样本去做一个分割可视化,也可以看到CDGCNet(第三列)确实要比基础网络deeplabV3(第二列)的识别效果要好一些。
在这里插入图片描述

"Channel-wise Topology Refinement Graph Convolution for Skeleton-Based Action Recognition" 是一篇关于基于骨架的动作识别的论文。如果要提出改进方法,可以考虑以下几个方向: 1. 模型结构改进:可以尝试改进论文中提出的Channel-wise Topology Refinement Graph Convolution模块。例如,可以探索更复杂的卷积模型结构,引入更多的注意力机制或者跨层连接,以提高模型对骨架数据的建模能力。 2. 数据增强和预处理:骨架数据可能存在缺失或者噪声,可以尝试使用数据增强技术(如旋转、平移、缩放)来增加数据的多样性和鲁棒性,或者使用预处理技术(如滤波、插值)来处理数据中的噪声和缺失。 3. 结构优化:可以尝试优化骨架数据的结构表示。例如,可以使用剪枝算法来去除冗余的边或节点,或者使用生成算法来自动构建更准确的结构。 4. 跨模态信息融合:可以考虑将骨架数据与其他传感器数据(如深度像或RGB像)进行融合。通过融合不同模态的信息,可以提高对动作的理解和识别能力。 5. 模型训练优化:可以探索更有效的模型训练方法,例如引入更合适的损失函数或者优化算法。此外,可以尝试使用迁移学习或领域自适应的方法,将从其他相关任务或领域中学到的知识迁移到骨架动作识别任务中。 以上是一些可能的改进方向,具体的改进方法需要根据具体问题和实验结果来确定。同时,也可以参考相关领域的最新研究和技术进展,以获取更多的启发和创新点。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Lil Wing

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值