点击下方卡片,关注
「集智书童」
公众号
导读
ViT在全局建模方面表现出色,但由于其注意力机制的二次计算复杂度,在资源受限的设备上部署面临挑战。为了解决这个问题,作者提出了语义感知聚类视觉Transformer(SAC-ViT),这是一种非迭代方法,旨在提高ViT的计算效率。SAC-ViT分为两个阶段:早期退出(EE)和语义感知聚类(SAC)。在EE阶段,对下采样输入图像进行处理,提取全局语义信息并生成初始推理结果。如果这些结果不符合EE终止标准,信息将被聚类为目标和非目标 Token 。在SAC阶段,目标 Token 被映射回原始图像,裁剪并嵌入。然后,这些目标 Token 与EE阶段重用的非目标 Token 相结合,并在每个聚类内部应用注意力机制。这种两阶段设计,通过端到端优化,减少了空间冗余并提高了计算效率,显著提升了ViT的整体性能。大量实验证明了SAC-ViT的有效性,将DeiT的FLOPs减少了62%,在性能不受影响的情况下实现了1.98倍的吞吐量。
1 引言
视觉Transformer(ViT)通过利用自注意力来捕捉长距离依赖和复杂模式,从而彻底改变了计算机视觉任务,如图像分类、目标检测和语义分割。这种能力使得ViT能够超越传统的卷积神经网络(CNNs),并在各种基准测试中实现最先进的结果。然而,注意力机制的二次计算复杂度给在资源受限设备上部署ViT带来了重大挑战。随着图像分辨率的提高,内存和处理能力的需求也随之增加,这不利于实时处理、能耗和延迟。因此,在不影响性能的前提下优化ViT的效率对于其在现实场景中的广泛应用至关重要。
研究行人探索了各种策略以减轻注意力机制的计算负担,包括Sparse注意力机制、低秩近似、高效的分词方法以及分词分组。分词分组将注意力范围限制在相邻的分词上,有效减少了计算注意力权重时的计算负担,并显著提高了效率。由于其简单性和有效性,分词分组已成为ViT中的一种流行优化技术。
例如,Swin-Transformer将 Token 划分为小窗口以实现局部注意力,而CSWin-Transformer采用交叉形分组策略以提供全局感受野。MaxViT整合了窗口和网格注意力,允许一个窗口中的 Token 关注其他窗口中的 Token 。然而,这些方法依赖于空间位置,忽略了语义上下文,这限制了自注意力机制建立语义依赖的能力。为了解决这个问题,DGT基于语义信息使用k-means聚类进行 Query 分组,从而提高了特征学习,但迭代聚类的效率降低。SECViT引入了一种语义均衡聚类方法,在单次迭代中将 Token 分组为等大小的簇,从而提高了并行计算效率。尽管取得了这些进展,但这些方法未能解决规模和空间冗余问题,导致计算资源在簇之间均匀分布,从而造成效率低下。
本文的目标是在不牺牲准确性的前提下降低 Token 分割方法的计算成本。作者观察到图像中存在显著的空间冗余。如表reftab:tab2所示,在ImageNet数据集上使用不同分辨率的DeiT-S进行训练表明,使用高分辨率(224×224)可以提高6.5%的准确率,但计算成本也增加了4.2倍。这表明,对于某些图像,可以使用低分辨率进行推理,允许提前退出以更快地终止过程。然而,对于需要更精细细节的复杂图像,仍然需要高分辨率。因此,作者认为最佳的 Token 分割方法应根据图像的语义内容自适应地聚类目标和非目标区域,并在每个簇内分别应用注意力机制以降低计算成本。
为此,作者提出了一种非迭代式语义感知聚类视觉Transformer(SAC-ViT),以解决空间冗余并提高计算效率。SAC-ViT分为两个阶段:早期退出(EE)和非迭代式语义感知聚类(SAC)。在EE阶段,SAC-ViT使用下采样图像提取全局语义信息并生成初始推理结果。如果结果满足EE终止条件,则返回。否则,它将语义信息聚类为目标和非目标 Token 。通过在低分辨率图像上操作,SAC-ViT最小化计算成本,实现效率提升。在SAC阶段,目标 Token 被映射回原始图像,裁剪并嵌入,而非目标 Token 被重用以形成两个簇。在每个簇内分别进行注意力计算,优化计算并减少空间冗余。
SAC-ViT的两个阶段使用相同的网络参数进行端到端优化,从而提高了推理效率。如表1所示,SAC-ViT在聚类过程中有效地考虑了 Token 语义和空间冗余。使用DeiT在ImageNet上的评估表明,SAC-ViT具有显著的效率提升。图1展示了SAC-ViT与最先进的自适应ViT优化方法的比较结果,表明SAC-ViT实现了更好的效率/精度平衡。
总结来说,作者的贡献如下:
- • 作者提出了SAC-ViT框架,该框架通过两阶段设计,首次将动态ViT压缩优化与基于语义的自适应 Token 分组相结合。这种方法减少了非目标区域的空间冗余,从而提高了ViT压缩和整体效率。
- • 作者在ImageNet数据集上进行了全面而严谨的实验,证明了SAC-ViT相较于最先进的方法在效率上有了显著提升。例如,SAC-ViT将DeiT的FLOPs减少了62%,同时在不影响性能的情况下实现了1.98倍的吞吐量。
2 预备知识
视觉Transformer(ViTs)通过将输入图像
划分为固定大小的
像素块,从而得到
个块。然后,每个块被展平并线性投影以形成块嵌入:
其中,
表示嵌入的块向量。为了保留空间信息,添加了位置编码
到块嵌入中。此外,一个分类 Token
被添加到嵌入块的序列之前,结果如下:
自注意力机制随后处理这些嵌入。对于每个嵌入
,计算 Query
、键
和值
矩阵:
和
均属于
的学习投影矩阵。随后计算注意力分数并进行归一化:
类注意力
代表整个图像。自注意力机制的输出是值的加权和:
。多头自注意力(MHSA)通过执行并行自注意力操作来捕捉不同的输入方面。然后,将所有头的输出连接起来并进行线性变换。
属于
,是输出投影矩阵。输出嵌入随后经过 FFN (FFN)处理。应用层归一化(LN)和残差连接以稳定和加速训练过程。
经过
层 MHSA-FFA 变换后的输出
被输入到分类器中,以获得最终的分类结果。
在MHSA-FFN转换中,MHSA和FFN的计算复杂度为:
作者可以看到,ViT的计算复杂度在嵌入维度
和 Token 数
上都是二次的。由于嵌入维度
是固定的,减少输入 Token 数可以有效降低ViT的复杂度,这也是本文的重点。
3 基于语义感知的早期退出视觉Transformer聚类
在本节中,作者正式介绍了一种具有早期退出的非迭代语义感知聚类视觉Transformer(SAC-ViT),以优化ViT的效率。作者的目标是:(1)通过最小化空间冗余来减少式(7)中的N的数量;(2)通过应用聚类感知的局部自注意力机制,将计算复杂度从
降低到
,其中M为目标token的数量。如图2所示,下采样后的低分辨率图像被输入到SAC-ViT中,以提取全局语义信息和生成初始推理结果。如果这些结果不符合EE终止标准,则将语义信息聚类为目标token和非目标token,随后进入语义感知聚类阶段。具体细节如下。
早期退出阶段
SAC-ViT从早期退出(EE)阶段开始提取全局语义信息。具体来说,对于输入图像
,SAC-ViT首先将其下采样到
。然后,这个下采样图像被输入到一个具有
个编码器的ViT网络中,以提取全局特征。每个编码器由一个多头自注意力(MHSA)机制和一个 FFN (FFN)组成。第
个编码器输出的分类 Token
被输入到分类器
中,以获得预测分布 p:
probability distribution over the classes. 其中
表示分类任务中的类别数量。在概率分布中,具有最高概率的类别
被视为预测的分类结果。
为了降低ViT的计算成本,作者引入了一种早期退出策略,用于终止易于识别样本的推理。具体来说,作者比较预测类别
的概率
与阈值
。如果
,作者立即终止推理并返回
作为最终结果。否则,作者继续进行语义感知聚类以区分目标 Token 和非目标 Token 。
语义感知聚类阶段
语义感知聚类。先前的研究表明,注意力分数
可以作为 Token 重要性的指标。受此启发,作者在EE阶段根据 Token 的注意力分数将 Token 聚类为目标 Token 和非目标 Token 。具体来说,作者使用整个网络中注意力分数的全局移动平均作为每个 Token 的平均分数:
其中
。在获得每个 Token 的分数后,作者对这些分数进行排序,并引入可调超参数
,将前
个 Token 聚类为目标 Token 集
,其余的
个 Token 作为非目标(背景) Token 集
,其中
。尽管SAC-ViT和之前的方法都使用注意力分数来指示 Token 的重要性,但作者的EE阶段将 Token 聚类为目标和非目标组,而之前的方法仅识别 Token 的重要性。与迭代聚类方法相比,SAC-ViT是非迭代的,并利用全局语义信息和早期退出终止策略,使其更高效。
一旦确定了
个目标 Token ,它们的定位将从
映射到 I。然后,作者裁剪这些区域并将它们嵌入,以获得目标 Token 的高分辨率 Token 表示。为了加速此过程,作者嵌入整个原始图像并根据索引选择 Token 。每个目标 Token 在原始图像中由四个 Token 表示,从而产生
个目标 Token 。对于目标 Token 集
中的每个 Token ,其索引为
的左上角 Token 表示为
。索引为
的 Token 的映射表示如下:
其中
,
,
为块大小。
作者将目标 Token 集
映射到表示原始图像中所有 Token 的集合
。为了最小化空间冗余,作者重用EE阶段的非目标背景 Token 集
,将T和
一起输入到ViT中进行局部MHSA计算。具体来说,对于目标 Token 集
和非目标 Token 集
,在每个编码器中的每个簇内执行MHSA,随后使用FFN整合 Token 的通道信息。请注意,类别 Token 在两个簇之间共享并更新。图2的底部显示了整个SAC阶段。
特征融合。特征融合(Mungoli 2023;Dai等,2021)是一种广泛采用的增强特征表示能力的技巧。与先前的研究(Chen等,2023;Hu等,2024)类似,作者旨在通过在EE阶段的目标 Token 和SAC阶段映射的目标 Token 之间进行特征融合,进一步改善SAC阶段的特征表示。由于SAC阶段的目标 Token 数量是EE阶段的四倍,作者首先使用MLP将集合
中的 Token 数量映射到与集合
相匹配的数量。然后,作者进行 Token Level 的加法操作以实现特征融合。
SAC-ViT 计算复杂度分析。与通用 ViT 模型的 MHSA 相比,SAC-ViT 在 EE 阶段通过一个因子减少了 token 的数量。在 SAC 阶段,每个簇内部执行局部 MHSA 计算。因此,SAC-ViT 优化了方程 7 到方程 12 中 MHSA 的计算复杂度:
阶
段
阶
段
目
标
符
阶
段
非
目
标
符
在此,
代表EE阶段的总token数量,而
表示目标token的数量,且满足
的条件。由于SAC-ViT在EE阶段采用了早期退出策略,如补充材料中图1所示的实验结果所示,大多数样本在此阶段被正确识别。只有少数困难样本会进入SAC计算。这个过程显著降低了图像的空间冗余,导致token数量的大幅减少。因此,计算负载大幅降低,提高了SAC-ViT的效率,同时保持了强大的特征表示能力。如图12所示,随着
的增大,SAC-ViT的效果更加明显,这在图1中对于
输入分辨率的实验结果中也得到了进一步验证。
训练目标
SAC-ViT的目标是在EE阶段最大化样本的准确识别,同时最小化计算成本,并确保在SAC阶段对所有样本进行准确识别。为实现这一目标,作者采用两步监督方法:在EE阶段使用软标签指导训练,在SAC阶段采用 GT (GT)标签进行监督,遵循既定方法(Chen等,2023;Lin等,2023;Hu等,2024)。损失函数定义为:
和
分别代表交叉熵损失和Kullback-Leibler散度。
、
和
分别表示EE阶段的输出、SAC阶段的输出和真实标签。
在训练过程中,将阈值
设置为 1 是至关重要的,以确保所有样本都参与 SAC-ViT 的两阶段训练。在推理过程中,调整
允许模型具有不同的准确性和计算成本。更高的
值会导致更多样本进入 SAC 阶段,从而增加计算成本但提高准确度。相反,更低的
值会导致更多样本在 EE 阶段早期退出,以牺牲准确度为代价降低计算成本。
4 实验
实现细节
作者在ImageNet-1K数据集上评估了作者的SAC-ViT模型,该模型基于Deit-S模型构建。SAC-ViT的 Patch 大小统一设置为
,默认参数
为0.5。为了在相似的计算成本(FLOPs)下进行比较,并展示SAC-ViT的优势,作者在
和
分辨率下实现了SAC-ViT,分别称为SAC-ViT和
。对于SAC-ViT,EE阶段输入图像分辨率为
,产生49个token。对于SAC-ViT*,EE阶段输入图像分辨率为
,产生81个token。
所有SAC-ViT的训练设置,包括学习率、数据增强策略、优化器和正则化,严格遵循Deit的默认设置。然而,SAC-ViT需要更长的训练时间,因此作者默认使用350个epoch。为了提高训练速度和加速收敛,作者在前200个epoch期间不使用语义感知聚类,而是对整个图像的token进行SAC阶段计算。仅在剩余的epoch中启用语义感知聚类优化,此时从EE阶段复用token用于非目标token,显著减少了token的数量。作者的SAC-ViT训练是在配备10个NVIDIA 4090 GPU的工作站上进行的。SAC-ViT在两个阶段中始终共享相同的网络参数,包括特征提取器编码器、位置嵌入和分类器。
实验结果
与 Backbone 模型比较。为了说明SAC-ViT的效率,作者首先将其与基础模型进行比较。与先前的方法一致(Chen等,2023;Hu等,2024),作者的评估指标包括模型的Top1准确率、计算成本(FLOPs)和吞吐量。吞吐量定义为在单个NVIDIA 4090 GPU上每秒处理的图像数量。具体来说,作者使用ImageNet的50,000张图像的验证集,以1024个批次的模式进行处理。作者记录总推理时间
,并计算吞吐量为
。
与SOTA ViT优化模型的比较。表4比较了SAC-ViT与最先进(SOTA)的ViT优化方法。SAC-ViT在准确率和计算效率之间取得了平衡。在较低的阈值(
)下,它将FLOPs降低到1.8G,同时保持Top-1准确率为
,与DeiT-S(
,4.6G FLOPs)、Dynamic ViT(
,2.9G FLOPs)和PS-ViT(
,2.1G FLOPs)相当。在较高的阈值(
)下,SAC-ViT实现了
的准确率,FLOPs为2.2G,超过了IA-RED?(
,3.2G FLOPs)、CF-ViT(
,3.3G FLOPs)和LF-ViT。使用更高分辨率(
),SAC-ViT在3.2G FLOPs下实现了
的准确率,优于CF-ViT(
,4.8G FLOPs)和LF-ViT(
,3.7G FLOPs)。
SAC-ViT的优越性能归因于其非迭代语义感知聚类策略,该策略通过允许简单样本提前退出以节省计算资源,并通过聚类后的局部自注意力减少困难样本的计算负担。通过聚类目标和非目标 Token ,SAC-ViT最小化了非目标 Token 对目标的影响,从而提高了效率。这种有效性得到了先前方法的支持,这些方法在减少 Token 数量的同时保持了或提高了准确性。
与SOTA自适应ViT优化方法比较。图1比较了作者的SAC-ViT与各种自适应ViT优化方法。结果表明,SAC-ViT不仅降低了计算成本,还保持了或提高了准确性,与其它方法相比,实现了效率和准确性之间的优越平衡。这种平衡使得SAC-ViT在计算资源和模型性能都至关重要的场景中特别有效。
SAC-ViT及其变体的比较。表5比较了SAC-ViT及其变体。其中,朴素聚类是随着模型深度的增加逐步对图像进行聚类,随机聚类则是随机选择一个token作为聚类中心,并计算其他token的KL距离进行聚类。聚类类别分别设置在第3层、第6层和第9层,分别为8、4和2。
表显示,SAC-ViT在准确率方面显著优于朴素聚类方法。这种改进主要归因于朴素方法在图像语义信息准确提取之前,在低分辨率EE阶段进行渐进式聚类。相比之下,SAC-ViT使用类别 Token 的全局移动平均值,这更好地反映了 Token 的重要性,从而也超越了随机聚类。这一发现与先前的研究一致,这些研究证明类别 Token 有效地指示了 Token 的重要性。
定量分析。图4展示了SAC-ViT在不同计算成本(FLOPs)下以及分配给早期退出(EE)阶段和语义感知聚类(SAC)阶段图像数量时的准确率。具体来说,随着计算成本的提高,SAC阶段的图像处理数量显著增加,这直接促进了模型整体准确率的提升。该图清楚地表明,随着计算资源的增加,更多的复杂图像被分配到SAC阶段进行处理,使模型能够充分利用额外的计算能力。例如,当计算成本为1.5 GFLOPs时,分配给EE阶段的图像数量为43,000,导致准确率达到78.8%。然而,当计算成本增加到2.5 GFLOPs时,分配给EE阶段的图像数量减少到28,000,而整体准确率上升到80.8%。这表明SAC-ViT可以根据不同的计算预算自适应地调整EE和SAC阶段之间的图像分配,在计算效率和准确率之间达到最佳平衡。这种灵活的分配机制不仅确保了高精度输出,还提高了系统的整体计算效率。此外,如主论文中的表1所示,这种两阶段识别方法显著降低了图像中的空间冗余,从而降低了计算资源的需求,并在实际部署期间极大地提高了模型资源利用率。这一发现表明,SAC-ViT在处理大规模图像数据集方面具有广泛的应用潜力,因为它可以在保持高准确率的同时有效地节约计算资源。
定性分析。在图5中,作者对SAC-ViT进行了定性分析。通过观察图中的示例,作者发现EE阶段识别的图像通常具有更简单的背景,目标物体占据图像的大部分区域,并且具有清晰且易于区分的轮廓。这类图像通常包含较少的信息,使得它们能够在资源有限的EE阶段快速且准确地被处理。相比之下,SAC阶段处理的图像更为复杂,背景信息丰富且杂乱,目标物体与背景之间的对比度较低,图像中目标物体的比例相对较小。这些复杂图像需要更高的计算能力和更复杂的模型处理,这也是为什么它们被分配到SAC阶段进行识别的原因。这种自动分配策略不仅优化了计算资源的使用,而且在处理简单和复杂图像时也确保了高识别精度。
此外,这种图像分配机制反映了SACViT在处理不同类型图像方面的适应性和灵活性。简单图像在EE阶段快速处理,减少计算开销,而复杂图像则在SAC阶段进行深入分析,以确保最终的识别精度。这种分层处理模型有效地平衡了计算资源和识别性能,进一步说明了SAC-ViT在处理现实应用中的多样化图像数据方面的实用性和可靠性。通过这一机制,SAC-ViT不仅为资源受限的环境提供了高效的解决方案,而且在处理复杂场景方面表现出卓越的性能,从而增强了模型广泛应用的潜力。
消融研究
每个设计要素的必要性。图3展示了通过单独移除每个设计要素,作者的SAC-ViT的性能变化。从结果中,作者可以观察到SAC-ViT的每个要素在其性能中都发挥着至关重要的作用。特征融合贡献了1%的准确率提升,而早期退出策略使得SAC-ViT能够根据计算需求自适应地调整准确率。
和
对 SAC-ViT 中 SAC 阶段的准确率的影响。在这里,
代表在计算全局移动平均注意力分数时浅层编码器的权重,而
表示 EE 阶段中目标 Token 与总 Token 的比例。在本文中,作者默认选择
和
以实现精度和成本之间的最佳平衡。
损失函数的影响。在利用公式13训练SACViT的过程中,作者使用交叉熵(CE)损失函数来监督SAC阶段的输出与真实标签(GT)之间的关系。对于EE阶段的输出,作者使用Kullback-Leibler(KL)损失函数,并使用SAC阶段的输出进行监督。为了进一步研究不同损失函数对SAC-ViT性能的影响,作者还采用CE损失函数,并使用真实标签来监督SAC-ViT的EE推理输出:
和
的影响。表6和表7展示了这些影响。
5 结论
本文介绍了SAC-ViT,这是一种针对视觉Transformer(ViT)的优化方法,通过早期退出(EE)策略和语义感知聚类(SAC)来提高效率。SAC-ViT分为两个阶段:EE和非迭代SAC。首先,输入图像进行下采样,ViT以较低的成本提取全局语义信息,生成初始推理。如果结果不符合EE标准,则将语义信息聚类为目标和非目标组。目标聚类映射回原始图像,裁剪,并与ViT一起处理,同时重用非目标聚类。这种两阶段方法减少了空间冗余,通过局部自注意力提高了效率,并在准确性和计算成本之间实现了良好的平衡。
参考
[1]. SAC-ViT: Semantic-Aware Clustering Vision Transformer with Early Exit
扫码加入👉
「集智书童」
交流群
(备注:
方向
学校/公司+
昵称
)