美文网首页
0002 Edge-aware Graph Representa

0002 Edge-aware Graph Representa

作者: yuerxiaoshui | 来源:发表于2020-07-27 16:16 被阅读0次

    2020.07.27 开始阅读
    代号 0002
    2020 ECCV
    Edge-aware Graph Representation Learning and Reasoning for Face Parsing
    Gusi Te, Yinglu Liu, Wei Hu, Hailin Shi and Tao Mei

    摘要

    以前的方法忽略了不同人脸区域间的关联,但这些关联是有关容貌、姿态、表情的重要的线索,我们应该在人脸解析时考虑这些关联。
    我们提出了一个模型,该模型对区域间关系进行建模与推断(以图的方式来表达区域间关系),同时,利用区域间的边缘信息来优化抽象的区域。
    我们将一幅人脸图像编码为一个全局的图表示,图中的节点代表一个区域,所有拥有相似特征的区域都被映射到这个节点。
    我们的模型学习并推断区域间的关系,通过在图的节点上传播信息的方式。
    同时,我们将边缘信息与像素级的特征整合进节点,这加强了边缘附近的特征,有助于精细分割。
    最终学习到的图表示被映射到像素网格上用于人脸的解析。
    我们的模型在 Helen 数据集、CelebAMask-HQ数据集,LaPa 数据集上进行了实验。
    代码开源在 https://github.com/tegusi/EAGRNet

    1 引言

    人脸各组件的表观之间有着强烈的相关。例如,当人微笑时,眼睛、嘴巴、眉毛会更弯曲;光线较暗时,脸部皮肤与其它组件都会比较暗。

    脸部组件之间的关联是人脸图像重要的线索,应该在人脸解析中予以考虑。
    我们使用图结构,将一个区域用图中的节点来表示,同时利用边缘分割来对区域进行精细分割。

    具体来讲,我们首先利用 ResNet 来提取高层与低层特征图。
    然后,我们建立一个映射矩阵,该矩阵将一堆具有相似特征的像素点映射到图中的一个节点。其中,边缘像素点处特征被赋予更大的权重,我们通过一个边缘掩膜(edge mask)来实现这一点。
    接着,我们通过图卷积(graph convolutuon)来学习与推断节点之间的关系,从而进一步提取全局语义特征。
    最后,学习到的特征被映射回像素级别的特征图。

    本文三贡献:

    1. 提出了一模型,建模人脸区域间关系。
    2. 介绍了边缘注意,可精确分割区域。
    3. 在几个数据集上效果好。

    2 相关工作

    2.1 人脸解析

    2.2 注意力机制

    2.3 图推理(Graph Reasoning)

    graph convolutional network (GCN)


    3 方法

    3.1 综述

    framework.PNG
    • 特征提取与边缘提取
      我们使用 ResNet 作为特征提取的基架,应用空间金字塔池化操作(spatial pyramid pooling operation)来学习多尺度上下文信息。
      使用一个边缘感知模块来得到边缘图。
    • 边缘敏感的图推断(Edge Aware Graph Reasoning)
      我们将提取的特征图与边缘图输入给边缘敏感的图推断模块(Edge Aware Graph Reasoning module),该模块致力于学习区域间关系的内部图表示。
      EAGR 模块由三部分组成:图映射,图推断,图重映射。
    • 语义解码

    3.2 边缘敏感的图推断

    EAGR.PNG

    边缘敏感的图映射
    首先回顾以下典型的非局部模块。
    特征图 \mathbf{X}\in\mathbb{R}^{HW\times C},典型的非局部模块用公式表达为:
    \tilde{\mathbf{X}}=\text{softmax}\left(\theta(\mathbf{X})\varphi^T(\mathbf{X})\right)\gamma(\mathbf{X})=\mathbf{V}\gamma(\mathbf{X}) \quad (1)
    其中 \theta,\ \varphi,\ \gamma 都是核大小为 1\times 1大小的卷积操作。\mathbf{V}\in\mathbb{R}^{HW\times HW} 被看作注意力图(用于建模长程依赖)。
    然而,上述 \mathbf{V} 的计算复杂度为 \mathcal{O}(H^2W^2C),该值随着像素点个数 HW 的增大呈现非线性。为了解决这个问题,我们提出了一个简单但却有效的边缘敏感的图映射操作来消除特征的冗余。

    输入特征图 \mathbf{X}\in\mathbb{R}^{HW\times C} 与 边缘特征图 \mathbf{Y}\in\mathbb{R}^{HW\times 1},我们构建一个映射矩阵 \mathbf{P},该矩阵在 \mathbf{Y} 作为先验的条件下,将 \mathbf{X} 映射到一个图的节点。
    具体地说,我们首先对 \mathbf{X} 进行降维(使用核大小为 1\times 1\varphi 卷积操作),即 \varphi(\mathbf{X})\in\mathbb{R}^{HW\times T}, T<C。然后,我们将边缘图 \mathbf{Y} 复制到与 \varphi(\mathbf{X}) 的维度(为了计算方便的缘故)。
    我们将通过对 \varphi(\mathbf{X})Y 做 Hadamard Product \color{blue}{就是矩阵对应点相乘} 的方式将边缘信息整合到映射中。
    因为边缘图 \mathbf{Y} 编码了一个像素点是边缘的概率,Hadamard Product 给每个像素的特征赋予了一个权重,当该像素为边缘像素时,其特征具有更大权重。
    接着,我们采用步长为 s 的平均池化操作 \mathcal{P}(\cdot) 来获得节点的锚点。这些锚点代表每个区域的中心,然后我们将锚点信息与 \varphi(\mathbf{X}) 相乘来获得锚点与每个像素的相似性。
    最后我们应用一个 softmax 函数来正则化结果。
    将上述描述公式化之后,我们得到的映射矩阵为:
    \mathbf{P}=\text{softmax}\left(\mathcal{P}(\varphi(\mathbf{X})\odot\mathbf{Y})\ \cdot\ \varphi(\mathbf{X})^T\right) \quad (2)
    其中 \odot 代表 Hadamard Product,\mathbf{P}\in\mathbb{R}^{HW/s^2\times HW}

    池化操作有两个作用:一方面通过求平均减少了冗余,另一方面将计算复杂度从 \mathcal{O}(H^2W^2C) 减少到了 \mathcal{O}(H^2W^2C/s^2)

    在获得了映射矩阵 \mathbf{P} 之后,我们将像素级特征 \mathbf{X} 映射到图域:
    \mathbf{X}_G=\mathbf{P}\theta(\mathbf{X}) \quad (3)
    其中 \theta 是一个核大小为 1\times1 的卷积操作,该操作的目的是为了减少 \mathbf{X} 的维度,\theta(\mathbf{X})\in\mathbb{R}^{HW\times K}, K<C
    这个映射将具有相似特征的像素点整合到一个锚点(对应一个节点),所以每个节点对应着人脸图像的一个区域。
    通过上述的方式,我们通过我们提出的边缘敏感图映射,在像素与每个区域之间建立了联系,生成了图 \mathbf{X}_G\in\mathbb{R}^{HW/s^2\times K} 上映射节点的特征。

    图推断
    接下来,我们学习 \mathbf{X}_G 节点间的连接性。同时,我们通在过在节点间传播信息来对节点间的关系进行推断,从而学习到高层的语义信息。这可以通过单层的图卷积网络(Graph Convolution Network, GCN) 来实现。
    具体地说,我们将节点特征 \mathbf{X}_G 输入到光谱图卷积的一阶近似中。输出特征图 \hat{\mathbf{X}}_G\in\mathbb{R}^{HW/s^2\times K} 为:
    \hat{\mathbf{X}}_G=\text{ReLU}[(\mathbf{I}-\mathbf{A})\mathbf{X}_G\mathbf{W}_G]=\text{ReLU}[(\mathbf{I}-\mathbf{A})\mathbf{P}\theta(\mathbf{X})\mathbf{W}_G] \quad (4)
    其中 \mathbf{A} 代表连接矩阵,该矩阵编码学习到的图连接性,\mathbf{W}_G\in\mathbb{R}^{K\times K} 代表 GCN 的权重,ReLU 为激活函数。
    特征 \hat{\mathbf{X}}_G 通过节点间的交互(与 (\mathbf{I}-\mathbf{A}) 相乘)和通道间的交互(与 \mathbf{W}_G 相乘)来获得。

    与最初的一层 GCN 【32】不同,在【32】中,\mathbf{A} 是手工标注的,在我们的文章中,我们对 \mathbf{A} 随机初始化并从节点特征中来学习到它。
    并且,我们还加了一个残差的连接来保留粗节点的特征。
    基于学习到的图,在所有节点间传播的信息在最后导致我们推断出区域间的关系。
    在图推断之后,每个节点中的像素点都共享由图卷积建模的上下文特征。
    我们将输出通道与输入通道设置为一样,这样可以保持一致性,使得模块可以与接下来的处理过程相容。

    图重映射
    为了与现存框架相匹配,我们将提取的图域的节点特征重映射到原始的像素网格。
    给出学习到的 \hat{\mathbf{X}}_G\in\mathbb{R}^{HW/s^2\times K},我们的目标是计算一个矩阵 \mathbf{V}\in\mathbb{R}^{HW\times HW/s^2},该矩阵将 \hat{\mathbf{X}}_G 映射到像素空间。
    然而这是不可行的,因为 \mathbf{P} 不是一个方阵。为了解决这个问题,我们采用 \mathbf{P}^T 来作为重映射矩阵【27】,其中 \mathbf{P}_{ij}^T 反映了节点 i 与像素 j 的相关性。 这个操作的限制是 \mathbf{P}^T 中的行向量不是正则化的。

    在重映射之后,我们使用一个 1\times1 的卷积操作 \sigma 来增加特征通道数使得其与输入特征 \mathbf{X} 的通道数一致。
    然后,我们将重映射矫正后的特征与原始特征图相加作为最后的特征。
    最终的像素级特征图 \mathbf{Z}\in\mathbb{R}^{HW\times C} 有下式得到:
    \mathbf{Z}=\mathbf{X}+\sigma(\mathbf{P}^T\hat{\mathbf{X}}_G) \quad (5)

    3.3 损失函数

    为了进一步加强我们提出的边缘敏感图推断的效果,我们引进了边界注意损失(boundary-attention loss, BA-Loss),该损失受【33】启发,而非传统交叉熵损失(用于预测的解析图与边缘图)。
    BA-Loss 只在边缘像素计算预测标签与真实标签之间的损失,因而提高了重要边界像素(其很难区分)的分割精度。
    使用数学语言,BA-Loss 被写为:
    \mathcal{L}_{BA}=\sum_{i=1}^{HW}\sum_{j=1}^{N}[e_i=1]y_{ij}\log\,p_{ij} \quad (6)
    其中 i 是像素的索引,j 为类别的索引,N 为标签类别的数量。e_i 表示边缘标签,y_{ij} 表示人脸解析的真实标签,p_{ij} 表示预测的解析标签。[\cdot] 为 Iverson bracket,其表示括号内表达式符合条件为1,否则为0。

    整个损失函数被定义为:
    \mathcal{L}=\mathcal{L}_{\text{parsing}}+\lambda_1\mathcal{L}_{\text{edge}}+\lambda_2\mathcal{L}_{BA} \quad (7)
    其中 \mathcal{L}_{\text{parsing}}\mathcal{L}_{\text{edge}} 分别为人脸解析图与边缘图的交叉熵损失。\lambda_1\lambda_2 为使得损失函数平衡的超参数。

    3.4 分析

    因为非局部模块与基于图的方法引起了研究人员极大的兴趣,因而在这里分析我们方法与先前方法的异同是有趣的。

    与非局部化模块比较
    典型地,传统的非局部化模块对像素级的相关性进行建模(利用特征相似性)\color{blue}{(我的理解就是 1\times1 卷积核的通道间融合})
    然而,这种方法无法捕捉到区域间的更高层次的相关性。
    与这种传统方法相对比,我们通过提出的图映射与图推断探索了不同区域间的相关性。
    每个节点不仅嵌入了区域的局部上下文,还嵌入了全局的特征。
    我们通过图卷积进一步的学习和推断了区域间的关系,这抓住了不同脸部区域间的语义关系。

    与基于图的模型比较

    4 实验

    4.1 数据集和评价指标

    • Helen
    • CelebAMask-HQ
    • LaPa

    在训练阶段,我们对图像进行了旋转与尺度缩放。
    旋转角度是从 (-30^\circ,30^\circ) 范围中随机选择的,尺度因子从 (0.75, 1.25) 范围中随机选择。
    边缘模板是根据语义标签图提取的。如果一个像素与它周围的四个像素点值不同,我们就将该像素视作边缘像素。
    对 Helen 数据集,与【4】相似,我们将人脸对齐作为一个预处理步骤,然后再评价阶段我们将对齐的结果再重映射回去。

    我们使用了三个评价指标。

    • pixel accuracy
    • mIoU
    • F1 score

    4.2 实现细节

    我们的骨架网络是 ResNet-101【7】的修改版本,其扔掉了平均池化层,并且 Conv1 块改为 3 个 3\times3 的卷积层。
    对金字塔池化模块,我们仿照【35】的实现来对全局上下文信息进行探索。池化因子为 \{1,2,3,6\}
    与【36】类似,边缘感知模块预测一个两通道的边缘图(基于 ResNet101 中 Conv2, Conv3, Conv4 的输出)。
    Conv1 的输出用作低层特征图,金字塔池化的输出用作高层特征图。他们都分别被输入 EAGR 模块用作图表示学习。

    至于 EAGR 模块,我们将池化尺寸设置为 6\times6
    为了将中心放在脸部组件上,我们只使用了中央的 4\times4 的锚用作图构建。
    特征维度 KT 被设置为 128 与 64.

    使用 SGD 来优化目标函数。
    我们使用再 ImageNet 预训练的模型来初始化网络。
    输入尺寸为 473\times473,batch size 为 28。
    学习率为 0.001 并伴随 0.0005 的权重衰减。
    batch normalization 使用 In-Place Activated Batch Norm【37】。

    4.3 消融实验

    Ablation study.PNG

    4.4 与其它方法的比较

    4.5 图映射的可视化

    5 结论

    相关文章

      网友评论

          本文标题:0002 Edge-aware Graph Representa

          本文链接:https://www.haomeiwen.com/subject/eigzlktx.html