0002 Edge-aware Graph Representation Learning and Reasoning for Face Parsing

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 结论

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,919评论 6 502
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,567评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,316评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,294评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,318评论 6 390
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,245评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,120评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,964评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,376评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,592评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,764评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,460评论 5 344
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,070评论 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,697评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,846评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,819评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,665评论 2 354