拆解PVT中的SRA模块

文章讨论了PVT模型如何通过Transformer结构减少计算参数,特别是SRA模块的原理,以及PVTv2版本中通过替换卷积为池化进一步减小参数。内容涉及自注意力机制、Multi-HeadAttention和这两种技术在图像处理中的应用和效率提升。
摘要由CSDN通过智能技术生成

https://blog.csdn.net/pengxiang1998/article/details/130642249?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522171437727516800182116678%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=171437727516800182116678&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_click~default-2-130642249-null-null.142^v100^pc_search_result_base8&utm_term=PVT&spm=1018.2226.3001.4187icon-default.png?t=N7T8https://blog.csdn.net/pengxiang1998/article/details/130642249?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522171437727516800182116678%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=171437727516800182116678&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_click~default-2-130642249-null-null.142%5Ev100%5Epc_search_result_base8&utm_term=PVT&spm=1018.2226.3001.4187https://blog.csdn.net/zhe470719/article/details/124807854?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522171437727516800182116678%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=171437727516800182116678&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-124807854-null-null.142^v100^pc_search_result_base8&utm_term=PVT&spm=1018.2226.3001.4187icon-default.png?t=N7T8https://blog.csdn.net/zhe470719/article/details/124807854?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522171437727516800182116678%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=171437727516800182116678&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-124807854-null-null.142%5Ev100%5Epc_search_result_base8&utm_term=PVT&spm=1018.2226.3001.4187以上是两篇参考博客,对于理解SRA“减少Transformer计算参数但是不改变输入输出形态”有帮助。

1 PVT

fig. 1. PVT-Net

        我们单刀直入,直接看PVT模型结构:RGB图像输入模型,经过四个Stage,最后得到形状为HW/32**C的张量,张量作为特征提取的结果,在其后加上全连接可以用于分类任务,在其后加上decode可以用于分割任务(作者称为密集预测任务)。其中每一个stage都会实现对输入张量的"降size增channels"操作,不同于CNN使用Conv,PVT使用Transformer实现目的,所以作者也称其为"pure Transformer"。

2 SRA

fig. 2. SRA module

        解释SRA之前,我们有必要先解释Multi-Head Attention模块。本着“不重复造轮子”的理念,我们贴出几篇有较为通俗解释的博客:Self-Attention 和 Multi-Head Attention 的区别——附最通俗理解!!_multihead attention和self attention-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/leonardotu/article/details/135886678?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522171444308316800222866094%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=171444308316800222866094&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-2-135886678-null-null.142%5Ev100%5Epc_search_result_base8&utm_term=multi-head%20self%20attention&spm=1018.2226.3001.4187

自注意力机制(Self-Attention)-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/Michale_L/article/details/126549946?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522171437915916800185880673%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=171437915916800185880673&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-126549946-null-null.142%5Ev100%5Epc_search_result_base8&utm_term=self-attention&spm=1018.2226.3001.4187

自注意力(Self-Attention)与Multi-Head Attention机制详解_multi-head self-attention-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/weixin_60737527/article/details/127141542?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522171444308316800222866094%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=171444308316800222866094&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_click~default-1-127141542-null-null.142%5Ev100%5Epc_search_result_base8&utm_term=multi-head%20self%20attention&spm=1018.2226.3001.4187

        Transformer中,qkv的大小都是根据patch embed来确定,之后q*^{}k^{T},再之后(q*^{}k^{T})*v。根据线代知识,矩阵的相乘只需要满足“左矩阵的列数=右矩阵的行数”,最后得到的矩阵大小为“左矩阵的行,右矩阵的列”。

        SRA中,为了在保证feature map分辨率和全局感受野的同时降低计算量,key(K)和value(V)的长和宽分别缩小到以前的1/R_i。通过这种方法,可以以一个较小的代价处理4-stride,和8-stride的feature map了。对kv缩小后,首先q*^{}k^{T}会因为k的形态由[3136, 64]-->[64, HW/R**],导致这个操作进行后输出的张量形态变成了[3136, HW/R**],而恰好v的形态也经过了压缩得到[64, HW/R**],所以经过[3136, HW/R**]*^{}v^{T}得到的最后张量为[3136, 64],这和不对kv压缩得到的结果是一样的,但是实现过程却减少了很多计算量,所以我们说SRA大大减少了计算量!

3 PVT2 中的SRA

fig. 3. SRA2

         在一年后由原团队提出的《PVT v2: Improved baselines with Pyramid Vision Transformer》中,对SRA做了进一步的优化:即将SRA的实现由原来的卷积Conv改为了池化pooling,这样又进一步的减少了参数,因为“卷积操作有参数,而池化操作无需参数”(这里设计到卷积池化的一些理论知识,可以参考卷积和池化_池化降维处理-CSDN博客)。至此,SRA模块大成!

  • 31
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值