来源: ICCV 2019
最近发现iccv19上的ReID文章好多啊!这篇文章感觉挺迷的;(
Motivation
针对于ReID中的misalignment问题,许多工作都利用的part信息进行匹配,但作者认为parts之间的相关关系并没有被充分挖掘,于是提出了Second-order non-local attention 网络(也就是本文的重点)。
本文个贡献点包含三个方面:
- SONA,二阶非局部注意力机制网络
- DropBox*,是对dropbox的细微改进
- 对backbone的改进,具体来说,一般reid方法在以resnet作为backbone时往往最后一个stage采用空洞卷积增大分辨率,总的下采样率为1/16,这里后两个stage都采用的空洞卷积,使得下采样率为1/8.
Second-order Non-local Attention Network
网络的整个结构如上图所示,输入是crop之后的目标patch,backbone是修改的resnet,可以发现resnet的stage3和stage4的分辨率大小是相同的,但是channel数依次增大为2倍,作者认为这样能够使得位置信息更加精确。
backbone之后分成了两个分支,一个分支利用GAP和1x1的卷积核(包括bn和relu)得到特征向量,使用三元组损失和交叉熵损失进行训练;另一个分支先经过resnet的一个bottleneck结构,然后使用DropBlock*得到的mask对该featmap进行dropout处理,对处理后的特征进行GMP操作,最后相似的降维操作使用三元组损失和交叉熵损失进行训练。
这里的DropBlock*其实就是DropBlock中使得被遮挡的区域的边长可变的改进,DropBlock的动机是认为一般的dropout操作对结构性区域的影响微乎其微,很难使模型减少区域依赖,所以采用的整块block的dropout。
整个框架还包含本文提出的SONA模块,该模块可以放在不同的stage后,文章中放置在stage2和stage3上,实验证明了放在较靠后的stage上反而降低性能,作者分析认为SONA是对细节特征的处理,stage太靠后,特征抽象的太厉害反而成了累赘。
SONA
网络整体结构很好理解,唯一需要介绍的也就是本文重点SONA模块。该模块如下图所示:
我们对比下一阶的Non-local attention模块,如下:
区别在哪?主要是相关矩阵的计算,在SONA中相似度是特征的协方差矩阵,当然具有一个尺度变换,而PAM中相关矩阵是经过两种变换后的特征的相关性的计算。
作者认为2阶特征要优于1阶特征。还针对SONA举了个例子:给定义一张pedestrian的图像,在(p, q)和(p',q')处有两个显著信号,那么这两个信号的相关性可以蕴含在协方差矩阵中。通过这种机制,显式的告诉深度网络1) 这两个位置之间有关系;2)后面的层应该在该位置投入更多的注意力;3) 深层学习模型中的后一层将学习在何种情况下这种相关性与图像中显示的人的身份信息相关(或不相关)。
Experiments
实验部分没啥好说的,因为最想知道的和Non-local attention的对比完全没提。。。
- DropBlock* 由于DropBlock
- SONA一般加在backbone的较低层,加在高语义层反而性能下降。
This is because the purpose of the second-order non-local attention module is to capture the nonlocal
correlation in early stages, which contains more fine-grained information.
这个解释还是有点懵逼的。
Conclusions
这篇文章直到怎么做的,不知道为啥这么做?不知道这么做具体有什么提升?为什么会提升?。。。然而他中了iccv。。。哭笑不得