【ReID】Harmonious Attention Network for Person Re-Identification

  • 模型
  • 实验
  • 写作
  • 问题
  • 参考文献

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

论文一览:

文章主要提出了和谐注意力卷积神经网络(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组成,如下图:

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

注意看左边输入图片尺寸为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,结构如下:

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

d2为Inception B,结构如下:

如图,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模块结构如下:

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

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

假设输入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模块,其实很简单,如下图:

根据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)了,如下图:

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

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

还记得上路一条直路为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实验如下:

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

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

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

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

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

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

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

写作

这篇文章的写作堪称牛逼,眼光老辣,我这里只是随便捡一些来说,实际上精彩的地方比比皆是。
“”"
… 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.

【ReID】Harmonious Attention Network for Person Re-Identification相关推荐

  1. 【ARXIV2202】Visual Attention Network

    [ARXIV2202]Visual Attention Network 论文地址:https://arxiv.org/abs/2202.09741 代码地址:https://github.com/Vi ...

  2. 【注意力模型】Harmonious Attention Network for Person Re-Identification

    文章目录 Abstract 1 Introduction 2 Related Work 3 Harmonious Attention Network 3.1 Harmonious Attention ...

  3. 【ReID】Beyond Part Models: Person Retrieval with Refined Part Pooling (and A Strong Convolutional...

    [ReID]Beyond Part Models: Person Retrieval with Refined Part Pooling (and A Strong Convolutional Bas ...

  4. 【ReID】AlignedReID: Surpassing Human-Level Performance in Person Re-Identification

    [ReID]AlignedReID: Surpassing Human-Level Performance in Person Re-Identification 模型 实验 写作 问题 参考文献 阅 ...

  5. Harmonious Attention Network for Person Re-Identification

    Harmonious Attention Network for Person Re-Identification 1.介绍 2.作者的方法 3.实验细节 4.实验结果 1.介绍 现有的行人重识别算法 ...

  6. 【ReID】【代码注释】HA-CNN的网络模型 deep-person-reid/models/HACNN.py

    源码URL: https://github.com/michuanhaohao/deep-person-reid/blob/master/models/HACNN.py HA-CNN的网络模型的代码注 ...

  7. 【ReID】AlignedReID ++ : Dynamically matching local information for person re-identification

    [ReID]AlignedReID ++ : Dynamically matching local information for person re-identification 模型 实验 问题 ...

  8. 【Attention】Visual Attention Network

    文章目录 一.背景 二.动机 三.方法 3.1 Large Kernel Attention 3.2 VAN 四.效果 4.1 分类 4.2 目标检测 4.3 语义分割 论文链接:https://ar ...

  9. 【论文笔记】Multi-Interactive Attention Network for Fine-grained Feature Learning in CTR Prediction

    <Multi-Interactive Attention Network for Fine-grained Feature Learning in CTR Prediction>论文学习 ...

最新文章

  1. 从用户需求看互联网基础设施服务商www.shzhenai.com
  2. SAP Fiori应用中事务锁的实现 - Transaction Lock实现机制
  3. linux 镜像错误,VituralBox 使用已有镜像文件报错:E_INVALIDARG (0x80070057)
  4. Linux下 查找大文件
  5. 《Scikit-Learn与TensorFlow机器学习实用指南》第8章 降维
  6. 【干货】60 余家免费正版图片网站
  7. 服务器装系统提示获取分区失败,u盘安装系统分区错误解决方法
  8. Pr 入门教程,如何确保剪辑保持同步?
  9. java链表实现多项式的运算
  10. 清华大学计算机学院张远,计算机系2019-2020学年度学生代表大会顺利召开
  11. 图书-旅行-十年徒步中国:《信念:十年徒步中国》
  12. php中baseasset,放映员资料库 ~ 影院之家 | The projectionist database - CineAsset 5.2.11 for Win 下载...
  13. 微信小程序原生上传图片封装
  14. 滑动差分倒谱系数 matlab,【网安学术】基于音频特征参数的多语种分类算法
  15. OpenCV学完基础知识不知道做什么?!我不相信这是真的
  16. vs 没法f12_键盘快捷键 - F12不再适用于Visual Studio
  17. 时间序列分析|基本概念
  18. Arthas阿尔萨斯的使用安装详细教程
  19. win11 引用的账户当前已锁定,且可能无法登录
  20. 空调开高一度觉得热、开低一度觉得冷的问题原因,DIY外加温控器解决

热门文章

  1. Java期末作业-各种系统设计
  2. 主板前置音频线接法几例(转)
  3. R3 3200G和R3 2200G性能差距 锐龙R33200G和R32200G对比
  4. 用友开发者中心全新升级,YonBuilder移动开发入门指南
  5. HZNUOJ 2058 凯撒密码
  6. 怎么根据快递单号批量查询物流信息?
  7. python pptx 关于在ppt里插入表格,调整合并单元格的问题
  8. U盘删除附带的CD驱动器内的数据
  9. 聊天文字在气泡背景图片上的展示
  10. USACO Palindromic Squares 回文平方数