当前位置: 首页 > news >正文

【论文笔记】An Image Patch is a Wave: Phase-Aware Vision MLP

声明

不定期更新自己精度论文,通俗易懂,初级小白也可以理解

涉及范围:深度学习方向,包括 CV、NLP、Data Fusion、Digital Twin

论文标题:An Image Patch is a Wave: Phase-Aware Vision MLP

论文链接:https://arxiv.org/abs/2111.12294

论文代码:http://The shttps: //github.com/huawei-noah/CV-Backbones/ tree/master/wavemlp_pytorch

发表时间: 2022年4月

创新点

1、将 patch 以一种动态形式 (wave) 输入,以此实现不同的 patch 之间的非线性联系

Abstract

在计算机视觉领域,最近的工作表明,主要由全连接层堆叠的纯 MLP 架构可以实现与 CNN 和 Transformer 竞争的性能。视觉 MLP 的输入图像通常被拆分为多个令牌(补丁),而现有的 MLP 模型直接将它们以固定的权重聚合,忽略了来自不同图像的令牌的不同语义信息。为了动态聚合令牌,我们建议将每个令牌表示为具有振幅和相位两部分的波函数。幅度是原始特征,相位项是根据输入图像的语义内容而变化的复数值。引入相位项可以动态调节 MLP 中令牌和固定权重之间的关系。基于类波令牌表示,我们为视觉任务建立了一种新颖的 WaveMLP 架构。大量实验表明,在图像分类、对象检测和语义分割等各种视觉任务上,所提出的 Wave-MLP 优于最先进的 MLP 架构。

Method

通俗上讲,CV 领域的发展历程是从卷积到 Transformer 的。而 Transformer 的核心原理是把图片分解成每一个 patch,然后计算所有的 patch 之间的相似度,相近的则权重变大,而 MLP 也是在做同样一件事,不过 MLP 模型聚合了具有固定权重的不同 patch(或token),导致会忽略他们之间的差异特征,作者基于此,将 patch 以波的形式输入,初相可以理解成原始特征,振幅,表示非线性的差异特征,解决上述问题。

作为为什么会有这个思想呢?作者受到量子力学的启发,这个地方就不在这里细说了,感兴趣的可以查看原文,参看参考文献。

相位和振幅的概念,属于数学中,复数或三角函数的理解。(属于个人理解)

PATM 的构造分为 Real Part(实部),Imaginary Part(虚部),上图结构图很简单,这里属于一种数学运算,

我个人理解:Real Part 可以理解成 MLP 聚合的权重信息,而 Imaginary Part 可以理解成为他们之间的差异关系。

附,计算公式,如下图

感兴趣的同学们,可以自行看一下原文,我没看太仔细看

zj:表示输入的向量

Wc:表示一个可以学习的权重,意义为 MLP 进行权重学习


Wt:表示第 j 个的 patch 的混合权重(可以理解为虚部的权重特征) 


 zj:上文提过,是真实的特征向量

ei:是一个周期函数,这里逐元素相乘,我理解是给每一特征加上波的概念,增加虚部(差异特征)


一系列的数学运算,数学好的,可以在评论区,写上自己的理解 


xj:是作为 patch 的输入,上文的 zj 是作为每个函数的自变量的意思 


Experiments

实验目标:将提出的 Wave-MLP 架构与 ImageNet 上现有的视觉 MLP 模型进行比较

实验结果:有明显优势


实验目标:表 2. 提出的 Wave-MLP 架构与 ImageNet 上的 SOTA 模型的比较

实验结果:结果与最先进的 transformer 模型,有略微优势


实验目标:COCO val 2017 上的对象检测和实例分割结果

实验结果:效果最好


实验目标:ADE20K 验证集上不同主干的语义分​​割结果

实验结果:效果最好

 写在最后

Wave-MLP 可以理解成,一种新的 MLP 结构,可以直接应用在我们的神经网络之中,北大和华为方舟,真是大牛云集呀!!!

相关文章:

  • 【前端升全栈】 五分钟了解Node.js
  • 部署若依springboot-vue前后端分离项目(Nginx反向代理 2022)
  • Kafka 优化问题
  • 【opencv-c++】windows10系统VisualStudio2022配置opencv_contrib-4.6.0
  • windows安装动力学仿真软件Frost并计算cassie机器人运动学和动力学
  • 使用 SolidJS 和 TypeScript 构建任务跟踪器
  • 【C++】list的模拟实现
  • 【Kotlin基础系列】第4章 类型
  • Vm虚拟机安装Linux系统教程
  • Java设计模式-单列模式
  • 算法 | 算法是什么?深入精讲
  • C++虚函数具体实现机制以及纯虚函数和抽象类(对多态的补充)
  • Trusted Applications介绍
  • Python函数与参数
  • C++发布订阅模式
  • 网络传输文件的问题
  • [ JavaScript ] 数据结构与算法 —— 链表
  • 08.Android之View事件问题
  • Android 架构优化~MVP 架构改造
  • Apache的80端口被占用以及访问时报错403
  • C++回声服务器_9-epoll边缘触发模式版本服务器
  • Computed property XXX was assigned to but it has no setter
  • crontab执行失败的多种原因
  • CSS实用技巧
  • Java 实战开发之spring、logback配置及chrome开发神器(六)
  • Java比较器对数组,集合排序
  • MYSQL 的 IF 函数
  • MySQL用户中的%到底包不包括localhost?
  • NSTimer学习笔记
  • PHP 7 修改了什么呢 -- 2
  • React Transition Group -- Transition 组件
  • React-Native - 收藏集 - 掘金
  • React-redux的原理以及使用
  • text-decoration与color属性
  • 基于axios的vue插件,让http请求更简单
  • 检测对象或数组
  • 如何编写一个可升级的智能合约
  • 三分钟教你同步 Visual Studio Code 设置
  • 世界上最简单的无等待算法(getAndIncrement)
  • 小程序 setData 学问多
  •  一套莫尔斯电报听写、翻译系统
  • 怎么把视频里的音乐提取出来
  • 怎样选择前端框架
  • 中文输入法与React文本输入框的问题与解决方案
  • #vue3 实现前端下载excel文件模板功能
  • (31)对象的克隆
  • (Bean工厂的后处理器入门)学习Spring的第七天
  • (C语言版)链表(三)——实现双向链表创建、删除、插入、释放内存等简单操作...
  • (ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY)讲解
  • (附源码)php投票系统 毕业设计 121500
  • (附源码)springboot电竞专题网站 毕业设计 641314
  • (紀錄)[ASP.NET MVC][jQuery]-2 純手工打造屬於自己的 jQuery GridView (含完整程式碼下載)...
  • (理论篇)httpmoudle和httphandler一览
  • (力扣记录)1448. 统计二叉树中好节点的数目
  • (学习日记)2024.04.04:UCOSIII第三十二节:计数信号量实验