| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> 【Transformer】MetaFormer is Actually What You Need for Vision -> 正文阅读 |
|
[人工智能]【Transformer】MetaFormer is Actually What You Need for Vision |
论文链接:https://arxiv.org/pdf/2111.11418.pdf 一、背景和动机如图1a所示,Transformer 的 encoder 由两个部分组成:
所以,作者使用简单的 spatial pooling 模块替换了 attention 模块,来实现 token 之间的信息交互,称为 PoolFormer,也能达到很好的效果。 在 ImageNet-1K 上达到了 82.1% 的 top-1 acc。 作者使用 PoolFormer 证明了他们的猜想,并且提出了 “MetaFormer” 的概念,也就是一种从 Transformer 中抽象出来的结构,没有特殊的 token mixer 方式。 二、方法2.1 MetaFormerMetaFormer 其实是 Transformer 的一个抽象,其他部分和 Transformer 保持一致,token mixer 方式是不特殊指定的。 ① 首先,输入
I
I
I 经过 embedding: ② 然后,将 embedding token 输入 MetaFormer blocks,该 block 包含两个残差 sub-blocks
Y = T o k e n M i x e r ( N o r m ( X ) ) + X Y=TokenMixer(Norm(X))+X Y=TokenMixer(Norm(X))+X
2.2 PoolFormer作者为了证明猜想,使用了非常简单的 pooling 算子来实现 token mixer,没有任何可学习参数。 假设输入形式为 T ∈ R C × H × W T\in R^{C\times H \times W} T∈RC×H×W,channel 维度在前,则 pooling 操作如下, k k k 为 pooling 大小: 伪代码如下: 作者使用层级的方式来进行 pooling,如图 2 所示。 PoolFormer 共 4 个 stages,tokens 的大小分别为:
不同大小的模型使用不同的编码维度:
假设模型中共有 L L L 个 PoolFormer blocks,则 4 个 stages 中包含的 block 数量分别为:
MLP expansion ratio:4 五种不同大小的 PoolFormer 模型参数如表 1 所示: 三、效果1、分类 使用 pooling 操作,每个 token 都能从其邻近的 token 中平均的抽取特征,所以可以看做是最基本的 token mixing 方式,但 PoolFormer 仍然取得了很好的效果。 2、检测 作者将 PoolFormer 作为 RetinaNet 和 Mask RCNN 的主干网络,来证明 PoolFormer 的效果。 PoolFormer-based RetinaNet 超越了基于 ResNet 的效果, 3、语义分割 作者使用 PoolFormer 作为 Semantic FPN 的主干网络,使用 mmsegmentation 训练的结果如下。超越了基于 CNN 的网络。 4、消融实验 ① 为了证明使用 pooling 的效果,作者对该操作做了消融实验。 作者首先使用恒等映射来代替 pooling,发现仍能达到 74.3% 的top-1 acc,证明了作者认为的 Transformer 的结构的重要性。 然后对不同 pooling size 做了实验,当使用 3,5,7 的时候,效果都差不多。使用 9 的时候,性能下降了 0.5%,所以,作者使用了 3。 ② 多个 stage 的效果 关于 pooling、MLP、attention 这三种不同的 token mixer 方式。pooling 方式能够处理更长的输入序列,attention 和 MLP 更能捕捉全局信息,所以,这也是作者使用 pooling 在低层 stage 来解决长序列问题,在高层 stage 使用 attention 或 MLP 的原因。 为了验证这种方法的效果,作者使用 FC 或 attention 来代替低层的 pooling,如表 6 所示,效果也不错。但前两层用 pooling,最后两层用 attention 的方法达到了最好的效果。 四、代码
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/27 2:37:33- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |