本文提出了一种 ParameterNet 的方案来解决低 FLOPs 陷阱的通用设计原则,ParameterNet-600M 可以达到比 Swin Transformer 更高的精度 (81.6% v.s. 80.9%),并且 FLOPs 要低得多 (0.6G v.s. 4.5G)。
大规模的视觉预训练可以提高视觉大模型的性能,但是本文作者观察到:这个良好的性质对于低 FLOPs 的小模型并不适用,并将这种观察到的现象命名为 low FLOPs pitfall。为了解决这个问题,本文提出了一种通用设计原则 ParameterNet,即:对小模型进行大规模视觉预训练时,在保持小模型的低 FLOPs 的同时为模型添加更多参数。那么如何做到这一点,比如可以通过动态卷积,在只略微增加 FLOPs 的情况下为网络加入更多的参数。ParameterNet 使得低 FLOPs 网络也能够从大规模视觉预训练中受益。比如,ParameterNet-600M 可以达到比 Swin Transformer 更高的精度 (81.6% v.s. 80.9%),并且 FLOPs 要低得多 (0.6G v.s. 4.5G)。
ParameterNet:低计算量小模型也能从视觉大规模预训练中获益
论文名称:ParameterNet: Parameters Are All You Need for Large-scale Visual Pretraining of Mobile Networks
论文地址:
https://arxiv.org/pdf/2306.14525.pdf
代码地址:
https://github.com/huawei-noah/Efficient-AI-Backbones
大规模视觉预训练技术
由于近些年来硬件算力的提升和数据工程的发展,我们的训练数据越来越多了,算力越来越强了,大规模视觉预训练技术取得了令人瞩目的进展。预训练的视觉基础模型可以视为是一个表征学习器,它可以比较方便地迁移到图像识别和检测等下游任务上面。
大规模视觉预训练技术通常需要大量的资源,这些资源包括:
- 数据
- 参数
- FLOPs
这三个关键因素基本根据 Scaling Law[1] 决定着预训练模型的性能。大规模视觉预训练技术也在不断发展,之前大家使用 1000 类,包含约 1.3M 张图的 ImageNet-1K 预训练视觉模型,并在下游任务上面微调。随着 21841 类,包含约 14M 张图片的 ImageNet-22K[2] 的提出,大家在训练视觉模型的时候一般先在 ImageNet-22K 上预训练,再在 ImageNet-1K 和下游任务数据集上做微调。为了更好地拟合大数据集,近年来模型大小 (包括参数和 FLOPs) 也越来越大,例如 ViT-G/14 模型有 1.8B 参数和 965B FLOPs。
在移动设备上的视觉应用通常需要模型具有快速推理的属性,因此不希望这些模型的 FLOPs 过大,因为过大 FLOPs 的模型在端侧很难有较快的推理速度。作者在本文里面就是去研究低 FLOPs 的端侧模型的视觉预训练。
端侧模型的视觉预训练的问题:低 FLOPs 陷阱
大规模视觉预训练技术的流程是: 模型选择 Transformer 和 CNN 模型,先在 ImageNet-22K 上做大规模预训练,再在 ImageNet-1K 上做微调得到最终的模型。端侧模型的视觉预训练的问题可以归结为图1和2所示。
如下图1所示是 Swin Transformer[3] (一种代表性的视觉 Transformer) 的结果,作者在 ImageNet-22K 和 ImageNet-1K 上预训练不同 FLOPs 的 Swin Transformer。可以看到,当模型 FLOPs 逐渐增加时,模型精度持续增加。对于高 FLOP (>10G) 模型,22K 预训练模型优于 1K 模型。然而,低 FLOPs (<4G) 模型不能从大规模预训练中受益。
图1:ImageNet-1K 验证集上的 Swin Transformer 结果。红色和蓝色线分别表示 ImageNet-21K 和 ImageNet-1K 预训练的精度
如下图2所示是 EfficientNetV2[4] (一种代表性的 CNN) 的结果,作者在 ImageNet-22K 和 ImageNet-1K 上预训练不同 FLOPs 的 EfficientNetV2。可以看到,当模型 FLOPs 逐渐增加时,模型精度持续增加。同时也可以观察到与 Swin Transformer 相似的趋势,比如在 ImageNet-22K 上的 2G FLOPs 预训练的 EfficientNetV2 模型精度不如在 ImageNet-1K 上预训练的精度。
从 Transformer 和 CNN 网络的观察中,我们得出了一个经验结论,即:低 FLOP 模型无法从大规模预训练中受益,作者将这种现象命名为低 FLOPs 陷阱 (low FLOPs pitfall)。
图2:ImageNet-1K 验证集上的 EfficientNetV2 结果。红色和蓝色线分别表示 ImageNet-21K 和 ImageNet-1K 预训练的精度
ParameterNet:小模型从大规模预训练中获益的方法
模型选择
作者从 2023.6 的 Paperwithcode 网站上收集到了一系列具有 ImageNet-22K 预训练和 ImageNet-1K 微调的 ImageNet-1K 验证集精度结果,如下图3所示。可以看到,当 FLOP 高于 5G FLOPs 时,基于 Transformer 的模型始终优于具有相似计算成本的 CNN。对于较小的模型,尤其是 600M FLOPs 内的移动级模型,基于 CNN 的模型,因其归纳偏置,即局部性和平移等变性的作用始终优于具有相似计算成本的 Transformer。
图3:带有 ImageNet-22K 预训练和 ImageNet-1K 微调的 ImageNet-1K 验证集精度曲线
ParameterNet
本文作者提出了一种 ParameterNet 的方案来解决这个低 FLOPs 陷阱 (low FLOPs pitfall) 的通用设计原则,即:在为模型添加更多的参数的同时尽量维持其低 FLOPs 的特性。有各种各样的方法具有更多的参数和较低的FLOPs。例如,这里主要考虑高效的动态卷积 (Dynamic Convolution),它可以增加参数的数量,而几乎没有带来额外的 FLOPs。
复杂度分析
计算动态卷积和普通卷积的参数量之比:
实验结果
训练策略
如下图4所示是本文实验的预训练策略。ImageNet-1K 训练直接300 Epochs,ImageNet-22K 预训练先训练90 Epochs,再在 ImageNet-1K 上面微调30 Epochs,遵循 Swin 等的做法。
图4:训练策略
实验结果
模型基于 GhostNet-300M,是 GhostNet 1.45× 的版本,ParameterNet-300M 是通过将 GhostNet-300M 中传统的卷积层替换为动态卷积构造的。动态卷积专家的数量默认设置为 4。对于 GhostNet,在 ImageNet-22K 上进行预训练无助于性能提升,ImageNet-22K 预训练 ParameterNets 与常规 ImageNet-1K 训练相比可以将性能提高约 +2%,如下图5和6所示。
图5:ImageNet-1K 精度,原始的 GhostNet 存在低 FLOPs 陷阱。所提出的 ParameterNet 克服了这个
图6:ImageNet-1K 精度,原始的 GhostNet 存在低 FLOPs 陷阱。所提出的 ParameterNet 克服了这个问题
与 SOTA 对比
作者将 ParameterNet 与其他在 ImageNet-22K 或更大的数据集 (如 JFT-300M[5]和 IG-1B-Targeted[6]) 上预训练的代表性模型进行比较。从图7中的结果可以看出,ParameterNet 的 FLOPs 较少,但优于其他在大规模数据集上预训练的模型。例如,ParameterNet-600M 实现了 81.6% 的 top-1 准确率,其 FLOPs 比 ResNet50 或 Swin-T 低约 7倍。
图7:与 SOTA 对比结果
推理速度
作者评估了 ParameterNet 和其他代表性模型的推断速度进行比较。作者使用 ONNX 工具包在具有单线程模式的 Intel Xeon Platinum 8378C CPU 上运行模型。如图8所示,ParameterNet 的性能优于广泛使用的 ResNet 和 Swin Transformer,以获得更好的精度-延迟权衡。
图8:推理速度比较结果