- 论文 - 《BoTTA: Benchmarking on-device Test Time Adaptation》
- 关键词 - TTA 、分布偏移、边缘设备、基准测试论文
摘要
- 研究背景:尽管已有研究从算法复杂性、数据和类别分布偏移、模型架构以及离线与连续学习等角度探索了TTA,但针对移动设备和边缘设备的具体约束条件的研究仍然不足。
- 本文工作 - BoTTA
- 一个旨在评估TTA方法在移动和边缘设备实际约束下的基准测试工具。BoTTA 评估聚焦于资源受限和使用条件下引发的四个关键挑战:(i) 有限的测试样本,(ii) 类别暴露的局限性,(iii) 多样化的分布偏移,(iv) 样本内的重叠偏移。
- 作者使用基准数据集在这些场景下评估了当前最先进的TTA方法,并在一个真实测试平台上报告了系统级指标。
- 此外,与以往工作不同的是,我们通过提倡周期性自适应而非持续的推理时自适应,契合了设备端的需求。
- 实验发现
- 许多最新的TTA算法在小数据集上表现不佳,难以泛化到未见过的类别,并且对分布偏移的多样性和复杂性存在依赖性。
- BoTTA还报告了设备特定的资源使用情况。例如,尽管SHOT在使用512个自适应样本时将准确率提高了2.25倍,但它在Raspberry Pi上的峰值内存使用量比基础模型高出1.08倍。
1 引言
- 移动设备对于 TTA 的约束
- 许多TTA方法的一个常见假设是目标数据的大批量可用性 [25, 35],但在内存有限且使用受限的资源受限设备上,这种假设可能是不可行的。一些方法通过要求额外的内存存储或模型编码器的多个副本来进一步加剧了这一问题。
- 标准的TTA评估协议假设自适应与推理同时进行,即模型在测试时持续更新的同时进行预测 [13, 35]。然而,在实际的边缘部署中,自适应机会可能是零星的,由资源可用性或用户交互驱动,而不是在每次推理步骤中都发生。
- 现有综述研究的局限
- 许多最新的研究尝试通过考虑算法复杂性、领域和类别分布以及模型架构的影响等因素来对TTA方法进行基准测试。这些基准测试成功识别了一些关键限制,包括高超参数敏感性、对源模型架构的强依赖性,以及对数据和类别分布偏移的鲁棒性有限等问题。
- 然而,这些研究均未系统性地评估TTA方法在移动和边缘设备约束下的表现。
- 本文贡献
- 作者引入了 BoTTA ,旨在针对真实世界边缘部署挑战的场景下对最先进的TTA方法进行基准测试。
- 设计了一组多样化的评估条件,以反映真实的约束,包括基于有限数量目标样本的自适应、不完整类别覆盖的自适应、不同程度和类型的领域偏移,以及单个样本内的重叠损坏。
- 此外,摒弃了在连续自适应过程中评估TTA模型的标准做法,转而评估它们在周期性自适应中的有效性——这是一种更符合移动设备实际情况的设置,因为在这些设备中,自适应机会是间歇性的。
2 动机和背景
2.1 设备端模型自适应动机
- 随着边缘设备在关键应用中的广泛使用,由于目标域偏移导致的性能下降可能会对健康、经济和社会造成严重后果。例如:脉搏血氧仪、基于机器学习的数字分类计数、用于医院诊疗的语音识别技术,都有可能产生偏移。
- 传统上,为了解决领域偏移问题,模型参数会在服务器上进行调整,但是具有以下缺点:
- a) 由于上述过程固有的延迟,设备端模型并不总是保持准确。由于设备端模型的推理结果直接传递给用户或其他系统,这种不准确性可能带来高昂的代价。
- b) 边缘设备上的敏感数据需要流向可能不受信任的服务器,从而引发隐私问题。
- 因此,边缘端自适应具有很大的需求,理论上可行,但是仍存在诸多挑战。
2.2 TTA 现有工作
作者回顾了很多 TTA 方法,在这里略,只介绍高效 TTA。
- 一些 TTA 研究开始设计高效的 TTA 方法
- 考虑了更小的批量大小 [43]、类别不平衡 [32]、灾难性遗忘 [28]、内存效率 [31]、基于微控制器的架构 [21]、非参数分类器 [41] 和模型鲁棒性 [19]。
- 虽然这些工作讨论了 TTA 方法在设备端的效率,但它们通常考虑了不同的模型架构或设置,偏离了经典的 TTA 设定。 例如,TinyTTA [21] 假设了提前退出架构,并未考虑通用深度神经网络(DNN)的自适应。
- 在 BoTTA 中,我们没有对这些算法进行基准测试,因为它们需要额外的假设,而这对于边缘和移动设备来说可能是不现实的。
2.3 TTA 问题定义
熟悉TTA的读者可以跳过。
【表1】
一个在源训练数据集 D_S = \{X_S^{(i)}, y_S^{(i)}\} 上训练的分类模型 \theta_S,通常部署到边缘设备上进行设备端推理。在实际应用中,该模型被要求对目标数据集 D_T = \{X_T^{(i)}\} 进行预测,其中目标分布 X_T^{(i)} \sim \mathcal{X}_T 与源分布 X_S^{(i)} \sim \mathcal{X}_S 不同,这通常被称为 协变量偏移(covariate shift)。虽然这种偏移本质上改变了联合分布 \mathcal{D}_S \sim (X_S^{(i)}, y_S^{(i)}) ,但在本文中,我们仅考虑输入数据分布的变化,这与典型的 TTA 文献 [35] 一致。此外,我们只关注分类问题,其中源数据和目标数据的类别集合保持不变。
假设 \mathcal{S}(D) 表示数据集 D 中的域集合。进一步地,可以将偏移建模为一个假设函数 \chi: X_S^{(i)} \times \tau \times \mu \to X_T^{(i)} ,根据某种损坏类型 \tau 和严重程度 \mu 将干净的数据样本 X_S^{(i)} 转换为目标数据样本。在实践中,这样的 \chi 是未知的,并且没有封闭形式,这是模型自适应成为复杂问题的主要原因。
需要注意的是,目标数据集 D_T 是未标注的。因此,TTA 方法可以表示为以下映射: \mathcal{A}: \theta_S \times D_T \to \theta_{D_T} 。
考虑一个用于评估模型性能的度量 \xi ,定义为从模型 \theta 到数据集 D 的映射 \xi: \theta \times D \to \mathbb{R} ,例如准确率。任何 TTA 方法的目标是生成一个模型 \theta_{D_T} ,使得 \xi(\theta_{D_T}, D_T) > \xi(\theta_S, D_T) 。通常,人们感兴趣的是与准确率相关的度量,但由于目标数据集 D_T 缺乏真实标签 y_T ,直接计算 \xi 是不可能的。因此,TTA 方法通常优化一个代理目标,例如最小化目标样本 X_T 的类别分布熵 \mathcal{L}_{ent} 。这些方法使用流行的梯度下降算法更新神经网络中的选定部分,以找到以下形式的目标函数的最小值: \theta_T = \argmin_{\theta} \mathcal{L}_{ent}(X_T) 。
3 BoTTA 基准测试
本节定义了BoTTA基准测试场景及其与边缘设备应用相关的理由,随后介绍了评估所用的数据和模型设置。
3.1 关键基准测试场景
以下每个场景都针对领域自适应问题的特定方面。它们都在给定一个自适应数据集 \Delta_T \subseteq D_T 的情况下,考察 TTA 方法的行为。这些场景在 \Delta_T 的选择方式上有所不同:包括 \Delta_T 的大小(|\Delta_T|)、\Delta_T 中可用的类别、\Delta_T 中分布偏移的多样性以及分布偏移的复杂性。
3.1.1 场景 1:有限的目标样本
省流:边缘模型的目标域样本数量很少,请求的速度很慢。应该评估 TTA 方法对少量样本进行自适应时的性能。
- 理由
- 边缘应用要么通过用户的主动参与生成数据,要么通过自动感知生成数据。需要长时间才能记录到一个大规模的目标数据集。
- 即使某些应用能够以较快的速度生成大规模数据集,由于边缘设备的存储空间有限,可用于自适应的目标样本数量仍然受限。
需要注意的是,这一考虑不同于连续测试时自适应的文献,也不同于典型的 TTA 方法对自适应模型的评估方式:即使用同一批样本来评估和自适应。**这些方法都假设可以通过流式或随机访问获得大规模数据集。**相比之下,我们认为边缘设备只能随机访问一个小规模的目标数据集。
- 定义
- 使用不同的 TTA 方法 \mathcal{A} 在目标数据集 \Delta_T \subseteq D_T 上对预训练模型 \theta_S 进行自适应,即 \mathcal{A}: \theta_S \times \Delta_T \to \theta_{\Delta_T},并随后使用准确率在 \Delta_T 和 D_T 上报告 \theta_{\Delta_T} 的性能。
- 由于 |\Delta_T| 依赖于应用和设备的具体情况,我们使用多个值进行基准测试。我们基于两个测试集测量准确率:\Delta_T 和 D_T,其中前者代表 TTA 文献中的典型评估策略,后者则通过一个较大的测试集来呈现模型泛化能力的典型测试方式。
3.1.2 场景 2:有限的类别
省流:边缘设备的测试样本中的标签分布,与源样本的标签数量和分布都不一致。但是 TTA 方法应该利用这种部分标签的样本来实现泛化。评估在测试样本中部分标签进行自适应的性能。
-
理由
- 在所有 TTA 算法中,一个重要的假设是目标数据包含与源数据相同的全部类别,即 C(D_S) = C(\Delta_T) 。
- 上述假设并不符合边缘设备的设置,因为设备用户通常对世界的接触有限,这会限制 \Delta_T 中的类别数量。例如,在识别自然物体的任务中,\Delta_T 的类别集合 C(\Delta_T) 将受到用户地理位置的限制。因此,一个合理的应用假设是用户通过将模型自适应到包含部分类别的数据集来实现泛化模型。
- 从技术上讲,由于协变量偏移(covariate shift)被假设为对所有数据类别的影响相似(例如,当天气有雾时,每种类型的户外图像都会受到类似的影响),可以合理地期望 \theta_{\Delta_T} 在所有类别上都保持准确性,无论这些类别是否用于自适应。
-
定义
- 使用不同的 TTA 方法 \mathcal{A} 在目标数据集 \Delta_T \subseteq D_T 上对源模型 \theta_S 进行自适应,使得 C(\Delta_T) \subseteq C(D_T),并随后使用准确率在 \Delta_T、D_T 和 \Delta_{OOD} 上报告 \theta_{\Delta_T} 的性能。
- 其中,\Delta_{OOD} 表示在类别方面超出分布的数据,形式上满足 C(\Delta_{OOD}) \cap C(\Delta_T) = \phi,其中 \phi 表示空集。C(\Delta_T) 是应用相关的,因此我们测试了不同的组合。
3.1.3 场景 3:\Delta_T 中的多样化分布偏移
省流:边缘设备的样本会遇到各种领域偏移,而不是相同类型的偏移。因此应该评估来自不同分布偏移的测试样本。(这个场景不是持续TTA中有吗~不过好像没那么“混合”)
-
理由
- 在所有 TTA 方法中,一个常见的假设是认为 \Delta_T 中的所有样本都遭受相同类型的领域偏移。
- 然而,这一假设对于边缘设备来说是不合理的。例如,户外照片会根据天气的不同而出现各种类型的偏移,如雪、雨和雾。因此,我们设计了一种新的评估场景,其中 \Delta_T 包含来自不同分布偏移的数据样本。
-
定义
- 给定一组具有不同类型和程度分布偏移的域集合 \mathcal{S}_j,设备包含一个自适应数据集,满足 \mathcal{S}(\Delta_T) \subseteq \mathcal{S}(D_T)。使用不同的 TTA 方法 \mathcal{A} 在 \Delta_T 上对预训练模型 \theta_S 进行自适应,即 \mathcal{A}: \theta_S \times \Delta_T \to \theta_{\Delta_T},并随后使用准确率在三个测试集 D_T、\Delta_T 和 \Delta_{OOD} 上报告 \theta_{\Delta_T} 的性能。
- 其中,\Delta_{OOD} 表示在域方面超出分布的数据,形式上满足 \mathcal{S}(\Delta_{OOD}) \cap \mathcal{S}(\Delta_T) = \phi。\mathcal{S}(\Delta_T) 是应用相关的,因此我们测试了不同的组合。
3.1.4 场景 4:\Delta_T 中的重叠分布偏移
省流:同时多个损坏类型,例如下雪加运动模糊、下雪加起雾。
-
理由
- 在所有 TTA 方法中,另一个简化假设是认为 \Delta_T 中的所有样本都具有相同类型的领域偏移和相同的严重程度。
- 在边缘设备设置中,单个数据样本可能会遭受一组重叠的损坏,例如,一张户外照片可能在雾天拍摄,并且存在运动模糊。因此,在这种场景下,我们认为一个数据样本可能会遭受多种损坏。
-
定义
- 给定一组损坏类型 \{\tau_j\} 和严重程度 \{\mu_j\},设备包含一个自适应数据集,表示为 \Delta_T = \chi(\cdots \chi(\mathcal{D}_S, \tau_0, \mu_0), \tau_1, \mu_1), \cdots, \tau_n, \mu_n)。使用不同的 TTA 方法 \mathcal{A} 在 \Delta_T 上对预训练模型 \theta_S 进行自适应,即 \mathcal{A}: \theta_S \times \Delta_T \to \theta_{\Delta_T},并随后使用准确率在 D_T 上报告 \theta_{\Delta_T} 的性能,其中 D_T 包含比 \Delta_T 更多的样本,但遵循相同的分布,即相同的损坏组合。
3.1.5 场景 5:设备端系统资源评估
省流:评估CPU/GPU 使用率,内存消耗。
- 作者使用两个流行的边缘开发平台——Raspberry Pi(Model 4B)和 NVIDIA Jetson Orin,来评估在 CPU 和 GPU 驱动的边缘设备上部署设备端 TTA 的实用性。
- 监控以下内容:
- CPU/GPU 使用率:在不同 TTA 方法下,模型自适应过程中 CPU/GPU 的利用率百分比。
- 内存消耗:自适应过程使用的内存总量,突出不同方法之间的内存效率。
3.2 数据集与设置
具体选择理由解释省略。
- 数据集:CIFAR-10C、PACS
- 评估的TTA方法:Tent\SAR\SHOT\NOTE\T3A
- 模型:ResNet-26\ResNet-50\ViT-S-16
- 评估策略
- 不同于过去边适应边推理,本文采用周期性适应。设备会缓冲目标数据样本,以便在下一次适应机会中使用。(节省资源)
- 三种测试场景:(i) \Delta_T,(ii) D_T,以及 (iii) 超出 \Delta_T 分布的数据,即 \Delta_{OOD}。
4 场景 1:有限的目标样本
-
实验说明
- 根据第 4.1.1 节中定义的场景 1 对 TTA 算法进行评估,该场景假设可用于自适应的目标样本数量有限。
- CIFAR-10C+ResNet-26 和 ViT+高斯噪声和雾+严重级别5
-
在 D_T 上的评估
- 图 3(a, b) 使用与 \Delta_T 同一领域的全部 10k 样本,分别是高斯噪声和雾。
- SHOT 在图 3(a, b) 中测试的所有 |\Delta_T| 值下始终表现最佳。
- 观察到 TENT 和 SAR 表现相似。即使在使用大规模数据集(|\Delta_T| = 8192)时,准确率仍然较低,值得注意的是,在两种损坏类型中,当 |\Delta_T| \leq 512 时,它们并未表现出模型改进。
- 无需反向传播的自适应方法 T3A 无法超越源模型的准确率。这表明,虽然它可以在数据分布偏移较轻微时提高准确率,但其简单的分类器调整策略在偏移严重时显得不足。
-
在 \Delta_T 上的评估
- 在图 3(c, d) 中省略了 |\Delta_T| < 64 的曲线部分,因为在测试数据较小时存在较高的不确定性。
- 与图3(a,b) 之间基本保持一致,准确率会更高。
【图3】
- ViT的结果
- 使用ViT模型在 CIFAR-10 数据集上预训练,并适应到 CIFAR-10C 中的高斯噪声域。
- 图 5 的结果进一步证实了模型架构对自适应准确率的影响显著。例如,当 |\Delta_T| = 8192 时,TENT 分别使用 ViT 和 ResNet-26 架构分别达到了 78.48%(图 5(a))和 46.33%(图 3(a))的准确率。然而,其他趋势与 ResNet-26 架构类似。
- TENT 能够在 |\Delta_T| > 4096 时提升模型性能,并取得最佳结果,将源模型的准确率提升了 1.15 倍。NOTE 的表现也与 ResNet-26 实验中的趋势相似。
- T3A 无法提升模型准确率,这表明即使使用更复杂的编码器(如 ViT),仅调整分类器是不够的。
- 对于 SHOT 来说,当 |\Delta_T| 较小时(\leq 32),其准确率会下降,之后则呈现线性增长。此外,当 |\Delta_T| = 4096 和 |\Delta_T| = 8192 时,其准确率从80%显著下降到72%。
【图5】
5 场景2: 有限的类别
-
实验说明
- 在此,我们根据第 3.1.2 节中定义的场景 2 对 TTA 算法进行评估。我们随机选择 k 个类别用于自适应。 在使用 CIFAR-10C 数据集时,从每个选定类别中随机选择 960 个样本;在使用 PACS 数据集时,从每个选定类别中随机选择 124 个样本,以构成 \Delta_T。因此,\Delta_T 的大小也会随着类别的数量增加而增大。
- 每个实验运行 5 次,且这些实验的样本是预先选择的,即每次运行中的 \Delta_T 是固定的。不同运行之间的唯一随机因素是不同执行之间的批次选择。
-
三种测试设置中进行评估
- 在 D_T 上的评估
- 图 7(a) 和 (d) 展示了在 CIFAR-10C 和 PACS 上的结果。
- 随着 |C(\Delta_T)| 的增加,所有方法的准确率通常都会提高,这表明这些方法需要来自所有类别的表示才能在这些类别上泛化。
- SHOT 在两个数据集上始终表现出最佳性能。
- 注意在 PACS 数据集中,TENT和SAR等方法相对于源模型没有提高,而在 CIFAR-10C上却提高了,作者将这个现象归因于采样方法:随着 |C(\Delta_T)| 的增加,\Delta_T 中的样本数量也随之增加。由于在 CIFAR-10C 中从每个类别选择的样本数量比 PACS 更多,因此准确率的提升在 CIFAR-10C 中更为显著。
- 在 \Delta_T 上的评估
- 图 7(b) 展示了在 CIFAR-10C 上的结果。
- 随着 |C(\Delta_T)| 的增加,准确率有所提高。当 |C(\Delta_T)| \leq 5 时,NOTE 方法在较小类别数量下表现最佳;而当 |C(\Delta_T)| > 5 时,SHOT 成为最优方法。
- 当 |C(\Delta_T)| = 3 时,准确率出现了一个令人意外的峰值。背后的原因是 C(\Delta_T) 中具体类别的选择。
- 如果预训练的 ResNet-26 模型在 C(\Delta_T) 中包含“青蛙”(Frog)类别,则该模型会错误地将大量样本预测为“青蛙”(如图 8 所示),从而导致模型准确率虚假提升。
- 这一现象揭示了模型对特定类别分布偏差的敏感性。
- 在 \Delta_{OOD} 上的评估
- 图 7(c) 展示了在未用于自适应的分布外(OOD)类别上的性能.
- SHOT 和 NOTE 仍然优于其他方法,且准确率随着 |C(\Delta_T)| 的增加而稳步提升。
- 在 |C(\Delta_T)| = 8 时,准确率出现了一个峰值,这与上述解释类似,是由于对“青蛙”类别的预测比例失衡所导致的效果。
- 在 D_T 上的评估
【图7】【图8】
- SHOT 在有限类别下的泛化能力
- SHOT 在测试集 \Delta_{OOD} 和 \Delta_T 上的准确率都取得了最好的性能,证明其在有限类别下的泛化能力非常优秀。
- 这一现象归因于 SHOT 中基于聚类的伪标签机制,它可以修复来自 C(\Delta_{OOD}) 的嵌入向量结构,从而更好地泛化到分布外数据。