首页 > 其他分享 >VOLO论文笔记

VOLO论文笔记

时间:2022-11-05 19:57:21浏览次数:55  
标签:论文 特征 reshape VOLO 位置 笔记 times 区域 Unfold

Outlook Attention

设给定输入为 \(X \in R^{H \times W \times C}\), 首先经过两个线性映射得到两个输出A 和 V,A叫做outlook weight \(A \in R^{H \times W \times K^4}\), V叫做value representation \(V \in R^{H \times W \times C}\). A对应下图绿色虚线框中左侧图形,直观上通道数由C变成了\(K^4\); V是图片中第二排中间那张图形。

outlook attention 模块是考虑\(K \times K\)区域内每个空间位置特征间关系。A经过reshape 得到尺寸为\(R^{H \times W \times K^2 \times K^2}\) ,其中每个空间位置值代表对应原始输入X对应空间位置点的局部\(K \times K\)区域内各个空间点特征之间两两相关性度量,由于区域有\(K^2\)个空间位置点,因此相关度量矩阵是\(R^{K^2 \times K^2}\)

attn = nn.Linear(C, k ** 4)
a = attn(x).reshape(H*W, K*K, K*K)

上述代码即表示绿色虚线框生成过程

v_pj = nn.Linear(C, C)
unfold = nn.Unfold(K, padding)
v = v_pj(x).permute(2, 1, 0)
v = unfold(v).reshape(C, K*K, H*W).permute(2, 1, 0)

上述代码块就是公式3 。是将特征V (value representation )使用\(K \times K\)在其上滑动时,同一平面内特征展开,不同平面特征依次拼接在其后;再将空间X-方向和Y-方向展开成一条。Unfold操作可以参考下面连接理解。可以理解为将原始特征X的局部区域\(K \times K\)内特征平铺开来。由于Unfold操作stride=1,因此unfold(v)的形状为\(R^{CK^2 \times HW}\)

a = a.softmax(dim=-1)
x = mul(a, v).permute(2, 1, 0).reshape(C*K*K, H*W)

此处的\(a \in R^{K^2 \times K^2}, v \in R^{K^2 \times C}\) ,忽略HW。\(a \in R^{K^2 \times K^2}\) 表示某个位置局部区域各个位置点与本区域内其它位置的特征相似性度量,而$v \in R{K2 \times C} $ 表示这个区域的特征,每个位置点的特征长度为C,有 \(K^2\) 个位置,因此二者相乘,每个位置点第i个通道处的特征值是该通道对应的\(K \times K\)区域内特征值的加权平均。

回到最开始关于Outlook Attention初衷/思考:

  • 每个空间位置的特征具有足够的代表性,可以生成注意力权重,用于局部聚合其相邻的特征
  • 密集和局部的空间聚合可以有效地编码更精细信息


参考

[1] Fold/Unfold 操作详解 https://blog.csdn.net/ViatorSun/article/details/119940759

标签:论文,特征,reshape,VOLO,位置,笔记,times,区域,Unfold
From: https://www.cnblogs.com/wolfling/p/16860939.html

相关文章

  • VIT论文笔记
    VITAnimageisworth16x16words:transformersforimagerecognitionatscale将transformer首次应用在视觉任务中,并取得了超过CNN方法的性能。标准的transformer接......
  • JAVAI学习笔记
    文件流什么是文件流?数据从一个地方流到另一个地方可读流(Readable):外部设备(磁盘,网卡,显卡,打印机等等)--->>>内存可写流(Writeable):内存--->>>外部设备(磁......
  • 学习笔记——自增长的键值问题、批处理
    2022-11-05 一、自增长的键值问题1、说明:将在数据库表单中添加数据的自增长的字段返回给用户2、使用方式:在预编译语句中,除了要传入sql语句外,还要传入一个参......
  • PyTorch笔记:Modules官方文档
    来自https://pytorch.org/docs/stable/notes/modules.htmlASimpleCustomModuleimporttorchfromtorchimportnnclassMyLinear(nn.Module):def__init__(se......
  • 数字逻辑笔记 全加器全减器8421BCD转余3
    二进制全加器全减器十进制加法8421BCD转余3码......
  • 学习笔记
    JavaScript学习BOM操作BOM是浏览器对象模型(BrowserObjectModel)。它使JavaScript有能力与浏览器进行“对话”。alert():警告弹窗confirm():确定弹窗prompt():提示弹框......
  • shell-函数学习笔记二
    shell函数的定义#方法一functionname{command...command}#方法二name(){command...command}函数的调用直接使用函数名调用,可以将函数......
  • Thinkphp6笔记十九:加载自定义配置
    适用场景:加载自己的某些配置1.创建配置文件app/config/test.php或者app/admin/test.php<?phpreturn['rule'=>['alibaba'=>[],'ebay'=>[],......
  • 学习笔记——元数据、blob类型的元素
    2022-11-04一、元数据1、元数据的说明:元数据就是指描述数据的数据,例如:数据有多少列、数据的列名称等。2、使用的代码:1ResultSetMetaDatametaData=rs.getMeta......
  • 《Unix/Linux系统编程》第十二章学习笔记 20201209戴骏
    第十二章、块设备I/O和缓冲区管理知识点归纳一、块设备I/O缓冲区I/O缓冲的基本原理非常简单。文件系统使用一系列I/O缓冲区作为块设备的缓存内存。当进程试图读取(dev,blk......