MLP 又又又升级了!港大&商汤开源首个用于检测与分割任务的MLP架构
极市导读
本文针对MLP-Mixer等已有方案存在的分辨率相关、不便于向下游任务迁移的问题,提出了一种新颖的CycleFC操作,并由此构建了CycleMLP架构。本文非常漂亮的一个操作:通过对ChannelFC的采样点引入更高感受野升级为CycleFC,提升感受野的同时保持计算量不变。 >>加入极市CV技术交流群,走在计算机视觉的最前沿
paper: https://arxiv.org/abs/2107.10224
Code: https://github.com/ShoufaChen/CycleMLP
本文是香港大学&商汤科技在MLP架构方面的探索,针对MLP-Mixer等已有方案存在的分辨率相关、不便于向下游任务迁移的问题,提出了一种新颖的CycleFC操作,并由此构建了CycleMLP架构。所提CycleMLP在ImageNet分类、COCO检测以及ADE20K语义分割等任务上均取得了优于其他MLP架构的性能,同时具有与Swin相当甚至更佳的性能。本文非常漂亮的一个操作:通过对ChannelFC的采样点引入更高感受野升级为CycleFC,提升感受野的同时保持计算量不变。
Abstract
本文提出一种简单的MLP架构CycleMLP用于视觉识别与稠密预测。现有MLP架构(比如MLP-Mixer、ResMLP、gMLP)由于与图像尺寸相关,导致它们难以向下游任务迁移。相比已有方法,CycleMLP具有以下两个优势:
可以处理可变图像尺寸; 通过采用局部窗口,其计算复杂度与图像尺寸成线性关系。
我们构建一类MLP架构CycleMLP超越了现有MLP方案并在ImageNet上取得了83.2%的top1精度,具有与Swin相当的性能但参数量与FLOPs更低。我们对CycleMLP进行扩展并使其作为下游任务的骨干网络,CycleMLP可以为目标检测、实例分割以及语义分割等领域提供极具竞争力的基线模型。比如,CycleMLP在ADE20K数据集上取得了45.1mIoU指标,与Swin的45.2mIoU相当。精度-FLOPs性能曲线对比可参见下图。
本文主要贡献包含以下几点:
提出了一种新的MLP模块:CycleFC,它是一个广义的即插即用操作,可用于替换MLP-Mixer中的token mixing MLP操作;此外,CycleFC计算复杂度与图像分辨率成线性关系; 基于所提CycleFC,我们构建了用于提取分层特征的MLP架构:CycleMLP,首个用于检测与分割任务的MLP架构; 在ImageNet、COCO以及ADE20K等数据集上的充分的验证,所提CycleMLP取得了优于其他MLP的性能,同时在下游任务上取得了与CNN、Transformer相当的性能。
Method
上图给出了所提CycleMLP的宏观架构信息,其设计原则受Swin与PVT启发而得到。通过这种方式,我们构建了一个分层架构,而这对于稠密预测任务非常重要。
给定尺寸为输入图像,首先采用patch embedding
模块将其拆分为块,每个块视作“token”(即词)。具体来说,我们参考PVTv2采用了重叠块嵌入模块,窗口尺寸为7,步长为4。原始图像块进一步投影到更高维,因此块投影模块的输出为。
然后,我们顺序将前述特征送入到多个CycleFC模块中进行处理,CycleFC模块参考ResNet的stage进行配置。注:每个阶段内部词数量保持不变,每个阶段包含一个transition进行分辨率降维、通道升维。总而言之,整个模型包含四个stage,最后stage的输出特征维度为。这些stage的设置已被广泛应用于CNN、Transformer模型,故所提CycleMLP是一种广义的模型候选。
Cycle FC Block
上图b给出了本文所提CycleFC模块示意图,相比已有MLP-Mixer(见上图a),主要区别在于:所提Cycle Fully-Connected Layer(CycleFC)用于进行空域投影并促进模型进行上下文聚合与信息通道。具体来说,CycleFC模块包含三个并行CycleFC操作后接一个channel-MLP。公式描述如下:
上述模块设计与ViT类似,区别仅在与我们采用CycleFC替换了多头自注意力模块。因此,所提CycleFC模块可以作为现有Transformer或者MLP架构的即插即用候选模块。
Cycle Fully-Connected Layer
接下来,我们对CycleFC的细节进行介绍分析。其背后的动机在于:使MLP类模型能处理可变图像尺寸。如上图a所示,Channel-FC仅与输入输出维度有关,而与图像尺寸无关。因此,Channel-FC是一种尺度无关操作,可以处理可变输入尺寸。此外,Channel-FC的计算复杂度与图像输入尺寸成线性关系。然而,Channel-FC的局限性在于:感受野有限,无法聚合充分的上下文信息。下图表中数据也表明:由于缺乏上下文信息,channel-FC具有比较差的性能。
为提升感受野同时保持计算复杂度,我们提出了一种新颖的操作CycleFC,见上图c。类似ChannelFC,CycleFC沿通道维进行全连接;与ChannelFC不同之处在于:空域采样点采用了stair
风格。受益于这种简单而有效的设计,CycleFC具有与ChannelFC严格相等的复杂度;但CycleFC的感受野则得到了放大:从点扩展为pseudo-kernel。
Pseudo-kernel 在这里,我们将引入pseudo-kernel
(伪核)概念,见上图。我们将CycleFC的采样点(即橙色块)投影到空域平面并定位投影区域为伪核尺寸。假设输入特征为,常规ChannelFC的输出表示如下:
注:分别表示空域与通道索引。而CycleFC的核心在于:**我们将X沿通道维的采样点从固定点i调整为伪核窗口,其感受野为。**因此,CycleFC的操作定义如下:
其中,为伪核尺寸。
Discussion CycleFC可以接收近邻上下文信息同时保持与ChannelFC相同复杂度(包含参数量与FLOPs)。因此,CycleFC是一种可促进空域上下文聚合的广义、即插即用的操作。注:当伪核尺寸为时,CycleFC则退化为ChannelFC。
Architecture Variants
类似其他Transformer、MLP模型,我们定义了不同计算量的模型,从2.1G到12.3GFLOPs。我们定义三路并行CycleFC的伪核尺寸分别为。通过调整一下超参得到了CycleMLP-B1到CycleMLP-B5等模型:
: 阶段i中transition层的stride; :阶段i的通道维度; :阶段i的模块数; :阶段i的扩展比例。
关于不同模型更详细的超参信息请查看前面的Table1.
Experiments
ImageNet Classification
上表对比所提CycleMLP与其他MLP架构在ImageNet数据集上的性能对比,从中可以看到:
所提CycleMLP的精度-FLOPs均衡显著优于其他MLP架构; 相比gMLP,CycleMLP-B2取得了与gMLP-B相同的精度,但计算量减低3x; 相比ViP,CycleMLP-B5仅需ViP-Large/7一半FLOPs即可取得相同精度。
上表对比了所提CycleMLP与CNN、Transformer以及MLP等SOTA模型的性能对比,从中可以看到:
CycleMLP取得了与Swin相当的性能,比如CycleMLP-B5取得了与Swin-B相当精度同时具有较少参数量与FLOPs; 同期的GFNet(它采用快速傅里叶变换进行空域信息交互)取得了与CycleMLP相当的性能,然而GFNet的架构与输入分辨率相关,不便于下游任务迁移。
Object Detection and Instance Segmentation
上表对比了所提方案在COCO数据上的性能,从中可以看到:
以RetinaNet作为框架,所提CycleMLP取得了优于ResNet、ResNeXt以及PVT的高性能,这说明:CycleMLP是一种非常优秀的骨干架构;比如RetinaNet+CycleMLP-B4取得了比PVT-Large高0.6AP的性能,同时具有更少的参数量。 以Mask R-CNN作为框架,CycleMLP取得了类似的性能。
Semantic Segmentation
上表对比了CycleMLP在ADE20K语义分割任务上的性能对比,从中可以看到:
在相似参数量下,CycleMLP取得比了ResNet、PVT更佳的性能; 相比Swin,CycleMLP可以取得相当甚至更好的性能。CycleMLP-B2取得了比Swin-T高0.9mIoU的指标,同时具有更少参数量。
本文亮点总结
提出了一种新的MLP模块:CycleFC,它是一个广义的即插即用操作,可用于替换MLP-Mixer中的token mixing MLP操作;此外,CycleFC计算复杂度与图像分辨率成线性关系; 基于所提CycleFC,我们构建了用于提取分层特征的MLP架构:CycleMLP,首个用于检测与分割任务的MLP架构; 在ImageNet、COCO以及ADE20K等数据集上的充分的验证,所提CycleMLP取得了优于其他MLP的性能,同时在下游任务上取得了与CNN、Transformer相当的性能。
如果觉得有用,就请分享到朋友圈吧!