【ReID】Harmonious Attention Network for Person Re-Identification

【ReID】Harmonious Attention Network for Person Re-Identification

阅读了Harmonious Attention Network for Person Re-Identification[1]。总感觉是一篇做了很久的工作(当然了很短时间就能做出来的神牛我也是可以理解的(跪),毕竟通讯是2W+引用的大佬。),体现在文章的网络模型,由于我见识短浅,HA-CNN是我见过的最奇特的结构之一(读了3天才弄懂这种事情我才不会说呢╭(╯^╰)╮)。另外这篇文章的总体写作非常牛逼。

论文一览:

论文一览.png

文章主要提出了和谐注意力卷积神经网络(HA-CNN),用于以端到端的方式联合学习行人重识别注意力选择和特征表示。所提出的模型能够提取多个互补的注意力特征,并在轻量级的模型下最大化其对行人识别的潜在互补效果。文章展示了在CNN中共同学习注意力选择和特征表示的优势,且联合学习软像素级的注意力机制和硬区域级的注意力机制,以及特征表示的同时优化。

文章还引入了一种跨注意力交互学习机制,以进一步优化联合注意力选择和特征学习。文章在三个数据集基准上进行了实验,以验证HA-CNN各个模块和方案的有效性,并达到了当时的SOTA,且比同期的所有方法相比,网络模型复杂度都要低得多,FLOPs和模型参数量都很小。是一篇非常有代表性的工作。

ps:源码以及我的注释见:
CSDN
https://blog.csdn.net/fisherish/article/details/104451327
简书
https://www.jianshu.com/p/d620550325ba

本文结合源码食用更佳。

模型

为了后面表示HA-CNN方便,先给出网络模块化设计的基础单元,基本卷积单元记为ConvBlock,它依次由卷积层-BN-ReLU组成,如下图:

convblock.jpg

本文提出的模型HA-CNN结构如下图所示:

模型1.png

注意看左边输入图片尺寸为160 x 64 x 3,分别对应height x width x channel,它输入进一个(32, 3x3, 2)的方框,此即为刚刚提到的ConvBlock,32为卷积核数目(ConvBlock输出output的channel),3x3为卷积核大小,2为stride,padding默认是1。所以原图像通过第一个ConvBlock后输出尺寸为(80, 32, 32)。上路一条直线走下去的是全局分支global branch,最后输出的loss记为Loss_G。下面很多条并行路和红色汇合路的为局部分支local branch,最后输出loss为Loss_L。

卷积核大小3x3,stride为2,padding是1,我把它叫做“321”ConvBlock,它将特征图的尺寸降为原来的1/2,其他标识以此类推。如"311"ConvBlock,则卷积核大小3x3,stride为1,padding为1,它不会改变特征图尺寸。

d1为Inception A,结构如下:

InceptionA.jpg

(原谅我涂涂改改且字丑⁄(⁄ ⁄•⁄ω⁄•⁄ ⁄)⁄)Inception A分四路处理feature map,3路均为1x1ConvBlock–"311"ConvBlock,还有一路为"311"AvgPool–1x1ConvBlock,最后4路的特征图级联(concatenate),整个过程中,特征图尺寸没变,但是channel最后会有变化,new channel可以通过超参数进行调节,来得到你想要的channel。

d2为Inception B,结构如下:

InceptionB.jpg

如图,Inception B分为3路提取,左路为1x1ConvBlock–"321"ConvBlock,channel降为原来的1/4,height和width降为原来的1/2,中路为1x1ConvBlock–"311"ConvBlock–"321"ConvBlock,输出尺寸跟左路一样,右路为"321"MaxPool-1x1ConvBlock,channel降为原来的1/2,height和width降为原来的1/2,最后三个特征再级联,则通道数不变(想要变也是可以的),Inception B的output尺寸降为原来1/2。

其他按下不表,HA-CNN结构图中最重要的核心单元为HA(Harmonious Attention),也是文章题眼。HA模块结构如下:

模型2.png

HA包含了三条支路,其中左边两路会融合到一起,最后经过sigmoid,返回给网络,这就是(a)的过程,这个(a)为Soft attention模块,它通过构造像素层级的软注意力提升网络,而(d)为Hard attention模块,它通过区域层级的硬注意力提升网络,而且得到的特征不回global branch,而是转给了local branch。

我们先看soft attention模块,如下图:

Soft Attention.jpg

假设输入x尺寸为(b, c, h, w)即(batch, channel, height, width),分两路提取,左路为spatial attention,将x进行global cross channel averaging,即对x进行逐空间像素点取全通道平均,得到(b, 1, h, w)的特征图,后通过"321"ConvBlock降为成原尺寸1/2,再bilinear 上采样升为原尺寸,最后经过1x1ConvBlock,特征图尺寸此时还是(b, 1, h, w)。

右路为channel attention,将x通过global AveragePool,即逐通道对通道所有平面进行平均池化,得到(b, c, 1, 1)的特征向量,后经过一个由两个1x1ConvBlock组成的bottleneck结构,对channel降维再升维(目的是引入监督的同时尽可能减少参数量和冗余),channel不变,输出还是(b, c, 1, 1)。

然后(b, 1, h, w)张量和(b, c, 1, 1)张量点积得到(b, c, h, w),这一步还挺巧妙的,这样就实现引入attention的同时又保留x尺寸的attention map了。再经过1x1ConvBlock和sigmoid函数,把attention map的值映射成概率分布即可。

再看看Hard attention模块,其实很简单,如下图:

Hard Attention.jpg

根据soft attention结构我们知道,hard attention的输入是x经过了global average pooling的输出,得到(b, c, 1, 1)的特征向量,去维数得到(b, c),经过FC层,既引入监督,又把channel维锁定在8,值得一提的是这个FC层经过特殊的初始化,感兴趣可以看源码,我这里就不补充了。得到(b, 8)的特征向量之后,改维度得到(b, 4, 2)的特征图。

接下来把soft attention和hard attention结构拼起来就是Harmonious Attention(HA)了,如下图:

harmonious attention.jpg

这么说来HA有两个输出,这是它特别的地方,也是一般的attention模块所没有的,这种设计思路可以借鉴。

那么这两个attention输出怎么使用呢?再回到HA-CNN的结构来,我把它重新画了一下,如下图:

model.jpg

还记得上路一条直路为global branch,主要根据soft attention提取细粒度的全局信息,下面4个平行路为local branch,主要根据hard attention提取局域性的局部信息。

先说global branch,x出于习惯我写成了(batch, channel, height, width),x经过第一层卷积块"321"ConvBlock后变为(b, 32, 80, 32),后分别经过d1和d2,得到(b, 128, 40, 16),此时经过HA,soft attention输出的attention map与输入同尺寸,将得到的attention map再与输入进行逐元素相乘,即可得到新的feature map,尺寸还是(b, 128, 40, 16),这是global branch的第一个stage,一共3个stage,操作一样,接下来stage2输出(b, 256, 20, 8),stage3输出(b, 384, 10, 4)。

虚线往下为hard attention输出,为(b, 4, 2),相当于每个通道有一个(b, 1, 2),接下来的操作,每一个(b, 1, 2)都会分开进行(为了方便,我的图虚线只有一条,后来才分4条),将(b, 1, 2)用预设的2x2模板矩阵进行扩充,得到(b, 2, 3),将(b, 2, 3)和第一层"321"ConvBlock的(b, 32, 80, 32)的输出进行仿射变换(STN),对特征图引入更具辨别力的学习,降低attention搜索空间和优化复杂度,STN输出依然为(b, 32, 80, 32),后用bilinear upsample进行resize得到(b, 32, 24, 28),再通过d2(同一个d2,所以是shared)把尺寸降为原来的一半,同时是也在local branch引入监督,参与反向传播,此时channel数升为128,即(b, 128, 12, 14)。

刚刚说了hard attention的输出为(b, 4, 2),每个channel有一个(b, 1, 2),一共4个channel,所以local branch有4条分支都进行了刚刚的操作。这四个local feature就走完stage1了。

到stage2,这时stage2的hard attention输出同样经过刚刚的扩充和STN,resize后得到(b, 128, 12, 14),他们4个与stage1输出的4个local feature对应元素相加相融合,因此local branch融合了不同层次的regional feature,然后4个支路继续进行,循环往复。

local branch的stage2输出(b, 256, 6, 7),等3个stage结束,local branch的每个支路得到(b, 384, 3, 4),经过global average pooling和去维度得到(b, 384),4个(b, 384),将它们级联就是(b, 4*384=1536),将这个特征向量经过FC层,输出想要的channel(视分类数而定)即可。可以看到local branch过程有全局信息和局部信息的交互。

来看global branch,global branch的stage3最后得到(b, 384, 10, 4)的特征图,同样经过经过global average pooling和去维度,再经过FC层,最后给Loss函数即可。

local branch和global branch的联合学习在不同的注意力尺度上能够关注不同的互补信息,并对特征表征进行同时优化,以提高的信息辨别力。由此,整个HA-CNN的流程就很清晰了。

实验

HA-CNN在Market1501的SOTA实验如下:
experiment1.png

HA-CNN在DukeMTMC-ReID的SOTA实验如下:
expriment2.png

HA-CNN在CUHK03的SOTA实验如下:
experiment3.png

根据HA-CNN的分离试验结果如下:
experiment4.jpg

可以看到soft attention中spatial attention,channel attention和hard attention分离出来单独使用都会有提升。其中hard attention更是直接提了4个点。

不使用或使用跨注意力交互的分离试验结果如下:

experiment5.png

global分支和local分支的分离试验结果如下:

experiment6.png

最后是模型对比,HA-CNN的FLOPs第二小,参数量最小,深度也是比较深的:

experiment7.png

写作

这篇文章的写作堪称牛逼,眼光老辣,我这里只是随便捡一些来说,实际上精彩的地方比比皆是。
“”"
… whilst the HA-CNN exploits a much smaller sub-network by sharing the majority model learning with the target-task network using a multi-task learning design(Fig. 4), therefore superior in both higher efficiency and lower overfitting risk.
“”"
写得真好

“”“(Section 3 Harmonious Attention Network. 第一句)
Unlike most existing works that simply adopting a standard CNN network typically with a large number of model parameters (likely overfit given small size labelled data) and high computational cost in model deployment [17, 29, 33, 10],
“””
前半句,谈论自己工作优势之前先要“同行衬托”,明确指出其他工作的问题(且因为这个问题可能带来的一系列问题)。

“”“(Section 3 Harmonious Attention Network. 第一句)
we design a lightweight (less parameters) yet deep (maintaining strong discriminative power) CNN architecture by devising a holistic attention mechanism for locating the most discriminative pixels and regions in order to identify optimal visual patterns for re-id.
“””
后半句,再阐述自己工作的特点,和优点,“确定re-id的最佳视觉模式。”看看人家写得多好昂(星星眼)。

“”“((2) Channel Attention的Remarks第一句)
Remarks Our model is similar to Residual Attention (RA) [37] and Squeeze-and-Excitation (SE) [11] concepts but with a number of essential differences:
“””
介绍完channel attenion结构之后读者肯定觉得这个地方是用了SENet,所以作者立马写这段remarks解答了两者的不同,spatial attention里面也是,料定读者会想到STN,所以作者讲完spatial attention立马讲了它和STN的异同,你的问题刚萌生,我下一部分就把你的问题解答了,如此往复,等你把文章看完,所有的疑问都解开了。
这种带着读者思路走的写作才是真牛逼。非常值得学习~

问题

“”“(Page 6 Implementation Details 第4句)
Following [21], we use T = 4 regions for hard attention, e.g. a total of 4 local streams. In each stream, we fix the size of three levels of hard attention as 24×28, 12×14 and 6×7.
“””
hard attention的feature map size是怎么定?为什么是24×28, 12×14 and 6×7这三个尺寸?文章没有披露更多。

“”“(Page 6, Implementation Details 第5句)
We set the batch size to 32, epoch to 150, momentum to 0.9. Note, we do not adopt any data argumentation methods (e.g. scaling, rotation, flipping, and colour distortion), neither model pre-training.
“””
adam哪来的momentum,weight decay去哪了?疑笔误。

“”“(Page 6, 4.1. Comparisons to the StateoftheArt, Evaluation on Market-1501,最后一句)
These validate the significant advantage of our harmonious soft/hand attention joint and interaction learning over existing methods replying on either hard or soft attention at a single level.
“””
soft/hand attention?疑笔误(soft/hard attention)。

参考文献

[1] Li W, Zhu X, Gong S. Harmonious attention network for person re-identification[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2018: 2285-2294.

[2] Hu J, Shen L, Sun G. Squeeze-and-excitation networks[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2018: 7132-7141.

  • 7
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

锥栗

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

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

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

打赏作者

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

抵扣说明:

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

余额充值