本文提出一种应用 Self-Attention 的感受野扩大方法,用于 Sence Parsing 的任务。
该文的作者是 Yuhui Yuan, Jingdong Wang,Microsoft Research。
Sence Parsing
Sence Parsing 其实跟分割很像,如图所示,看起来就是每个像素都分一个 label 的分割。
Approach
该文的方法非常简单,思路就是估算每个像素和全局所有的像素的相似度,把这个相似度当作权重,然后根据权重,把全局所有的特征向量乘上权重加在一起汇集到当前像素的特征向量。以此方法,可以有效的汇集所有的类似区域的特征向量,扩大感受野。
那么最大的问题就是如何估算这个相似度了。
该文采用的是 self-attention 的方式:
其中 Z 为归一化常数。该公式可以算出来 q 位置和 i 位置的两个像素特征向量的相似度,也就是权重。
这个就是标准的 self-attention。那么为什么这个公式就可以算相似度呢?
如图所示,假设有三个二维向量,分别是 (1, 2),(1.5, 1.5),(-1, -2)。按照计算公式,实际上核心是两个向量的相乘。我们假设(1, 2)是一个基准向量,和其他相乘分别得到 5, 4.5, -5。归一化之后就是下面的数字,我们可以看到,和自己相乘最大,和相近的相乘也很大,和反向的相乘非常小。所以这就代表了一种相似度。
Pipeline
这个是该网络的结构,首先通过卷积网络得到特征图,然后送入 OC 模块,然后把融合之后的特征图再去做像素分类。
作者设计了三种 OC 模块,分别是最简单的,和 PSPNet 结合,和 ASPP 结合的。关于 PSP 和 ASPP,请见对应的论文。
Experiments
实验结果当然是最好啦,到目前为止,在 Cityscapes 上都是排名第一的。
该网络还用了一些技术,比如 OHEM 等,最后发现提升最大的是和 Val 验证集一起训练提升的最高,可以看出对于深度学习模型,数据还是最重要的。
OHEM
OHEM 很简单,意思就是,当整个网络分的还不错的时候,由于正确的像素太多了,占整个图的比例太大,导致 loss 很小,网络就会忽略掉那些少有的错误地方,但是我们想继续优化这部分像素点。那么就需要一个机制,剔除掉已经分类很好的区域,保留那些还不够好的地方,然后只训练这部分区域。