论文阅读笔记 | MLP系列——CycleMLP

简介: 论文阅读笔记 | MLP系列——CycleMLP

paper:CycleMLP: A MLP-like Architecture for Dense Prediction

code:https://github.com/ShoufaChen/CycleMLP

image.png

摘要:


CycleMLP是AS-MLP之外的另外一个可以作为通用骨架的MLP架构(AS-MLP是首个迁移到下游任务的 MLP 架构),MLP-Mixer, ResMLP 与gMLP架构与图像大小相关,因为其不能作为下游任务的通用骨干。


与现在的MLP方法相比,CycleMLP有两个优点:

1)可以处理各种图像大小

2)利用局部窗口实现图像大小的线性计算复杂度。相比之下,以往的mlp具有二次计算复杂度,因为它们空间上的全连接。


作者扩展了MLP架构的适用性,使其成为密集预测任务的通用主干。性能效果:


  • 83.2% accuracy on ImageNet-1K classification ( Swin Transformer 83.3%)
  • achieves 45.1 mIoU on ADE20K val(Swin 45.2 mIOU)


1. Introduction


尽管在视觉识别任务中得到了很好的结果,但由于两个原因,这些mlp类模型不能用于其他下游任务(比如目标检测与语义分割):

1)这样的模型由具有相同架构的块组成,导致在低分辨率下具有单一尺度的特征。因此,非层次结构使得模型无法提供金字塔特征表示。

2)这些模型无法处理灵活的输入尺度,因此在训练和验证阶段都需要一个固定的输入规模。

3)Spatial FC的计算复杂度是图像大小的平方,这使得现有的mlp类模型难以在高分辨率图像上实现。


对于第一个问题,作者构建了一个层次结构来生成金字塔特征表示。对于第二三个问题,作者提出了一个全连接层的新变种,命名为循环全连接层(Cycle FC),Cycle FC能够处理可变的图像尺度,对图像大小具有线性的计算复杂度。


对于Spatial FC来说,由于需要限定patch的HW大小,所以无法做到可变处理,但是感受野较大,复杂度也较大;而Channel FC,由于线性投影的维度是可以设定的,没有信息交互的过程,但是复杂度较小,所以可以做到可变处理。


为此,Cycle FC的出发点是继承这个优点,接受任意分辨率的输入和线性计算复杂度,同时扩大上下文聚合的感受野。为此,Cycle FC沿着通道维度以周期性的方式采样点。通过这种方式,Cycle FC具有与Channels FC相同的复杂性,同时增加了感受野范围。使用Cycle FC代替Spatial FC进行空间上下文聚合(即token-mixing操作),并构建了一系列mlp类模型用于识别和密集预测任务。

image.png


2. CycleMLP Architecture


2.1 Overall Architecture

类似的,对于输入图像为HxWxC的图像,通过带有重叠的卷积变成一系列的patch(卷积核为7,步长为4,带重叠的卷积效果会更好),然后对channel进行一个线性投影成(H/4)x(W/4)xC。然后,依次在patch tokens上应用几个Cycle FC block,具有相同架构的block被堆叠成一个Stage。在每个Stage中维护token的数量(特征规模)。而在每个阶段转换中,在tokens数量减少的同时,所处理的tokens的channel维度得到扩展。通过该策略有效降低了空间分辨率的复杂性。


2.2 CycleFC Block

Cycle FC block由三个并行的Cycle FC算子组成,然后是一个具有两个线性层和中间一个GELU非线性的channel mlp。

image.png

Channel FC由特定层的内外通道维度配置。它的结构与图像的尺度无关。因此它是一种尺度不可知的操作,可以处理输入图像的可变尺度,这对于密集预测任务是必不可少的。此外,信道FC的另一个优点是它对图像尺度的线性计算复杂度。然而,它的感受野有限,不能聚合足够的上下文,Channel FC由于缺乏上下文信息而产生较差的结果。


为了在保持计算复杂度的同时扩大感受野,Cycle FC被设计成与Channels FC一样沿着Channels维度进行全连接,但是并不是采样点都位于相同空间位置,而是以阶梯式风格采样点。


本质上还是一个移动特征图的操作

image.png

ps:当伪内核大小配置为1×1时,Cycle FC退化为普通Channels FC


3. Result


image.png

5c7e660f0e5e4287b16625a1ba8e4191.png

image.png

目录
相关文章
|
机器人
如何查询OpenAI账户余额?ChatGPT怎么查看账户余额的方法
ChatGPT是美国OpenAI研发的聊天机器人程序,也是最近火爆全网的热门应用和话题之王。很多用户在使用openai的时候不知道如何查询OpenAI账户余额?
2932 0
|
机器学习/深度学习 监控 算法
yolov8+多算法多目标追踪+实例分割+目标检测+姿态估计(代码+教程)
yolov8+多算法多目标追踪+实例分割+目标检测+姿态估计(代码+教程)
|
11月前
|
机器学习/深度学习
知识蒸馏技术原理详解:从软标签到模型压缩的实现机制
**知识蒸馏**是一种通过性能与模型规模的权衡来实现模型压缩的技术。其核心思想是将较大规模模型(称为教师模型)中的知识迁移到规模较小的模型(称为学生模型)中。本文将深入探讨知识迁移的具体实现机制。
1177 12
知识蒸馏技术原理详解:从软标签到模型压缩的实现机制
|
算法 安全 Linux
如何在 Python 中生成随机数
【8月更文挑战第29天】
1151 6
|
11月前
|
机器学习/深度学习 人工智能 数据挖掘
《当高斯数据库邂逅人工智能:数据处理的效率革命》
在数字化浪潮中,数据呈爆炸式增长,企业对数据处理和分析效率的要求日益严苛。高斯数据库通过与人工智能深度融合,克服了传统查询优化、数据清洗及实时分析的困境,实现了智能查询优化、自动数据清洗、实时数据分析与预测以及动态资源管理,显著提升了数据处理效率。尽管面临数据隐私和模型可解释性等挑战,但高斯数据库与AI的结合为企业带来了前所未有的机遇,助力各行业实现高效决策和创新发展。
274 16
|
安全 物联网 大数据
基于开元鸿蒙(OpenHarmony)的【智能药房与药品管理综合应用系统
基于开元鸿蒙(OpenHarmony)的【智能药房与药品管理综合应用系统
373 7
|
JSON Shell 数据格式
在Docker中,如何查看镜像支持的环境变量?
在Docker中,如何查看镜像支持的环境变量?
|
JavaScript 应用服务中间件 Linux
宝塔面板部署Vue项目、服务端Node___配置域名
本文介绍了如何使用宝塔面板在阿里云服务器上部署Vue项目和Node服务端项目,并配置域名。文章详细解释了安装宝塔面板、上传项目文件、使用pm2启动Node项目、Vue项目打包上传、以及通过Nginx配置域名和反向代理的步骤。
4240 1
宝塔面板部署Vue项目、服务端Node___配置域名
|
消息中间件 安全 NoSQL
「架构」SOA(面向服务的架构)
**SOA**是构建灵活企业IT系统的架构模式,基于服务组件进行设计。它强调服务的自包含、模块化,通过服务识别、抽象、组合和交互实现业务流程。特点包括松耦合、重用性、互操作性和标准化。优点是灵活性、可维护性、可扩展性和成本效益,但也有复杂性、性能和治理问题。设计策略涉及业务能力识别、服务契约定义和服务目录建立。技术栈涵盖Java EE、.NET、SOAP、REST、服务治理工具和各种数据库、消息队列及安全标准。SOA旨在适应变化,但也需妥善管理和规划。
821 0
|
网络协议 网络安全 Android开发
公网使用SSH远程连接安卓手机Termux - Android手机服务器
公网使用SSH远程连接安卓手机Termux - Android手机服务器
676 0
公网使用SSH远程连接安卓手机Termux - Android手机服务器