Mona:参数高效微调方法,超越CV微调性能瓶颈

Mona:一种新型视觉适配器微调方法,仅调整 5% 的参数,在多个视觉任务中超越全参数微调,为视觉模型的高效微调提供了新的思路。

原文标题:CVPR 2025 | CV 微调卷出天际,Mona:我小、我强、我省资源

原文作者:机器之心

冷月清谈:

Mona(Multi-cognitive Visual Adapter)是一种新型视觉适配器微调方法,通过引入多认知视觉滤波器和优化输入分布,仅调整 5% 的骨干网络参数,就能在实例分割、目标检测、旋转目标检测等多个经典视觉任务中超越全参数微调的效果。Mona 的核心在于通过深度可分离卷积和多尺度卷积核来增强适配器对视觉信号的处理能力,并利用分布适配层优化输入特征的分布,从而提高微调效率。实验结果表明,Mona 在多个视觉任务中均优于全参数微调和其他 PEFT 方法,且收敛速度更快。Mona 的开源代码将进一步推动这一领域的研究和应用,已被复旦、中科大、南大、武大等多家单位的工作视为 SOTA 方法。

怜星夜思:

1、Mona 通过调整不到 5% 的参数就能超越全参数微调,这种参数高效微调方法在实际应用中还可能带来哪些好处?除了降低计算和存储成本,是否还有其他潜在优势?
2、Mona 方法中提到的“多认知视觉滤波器”具体是如何提升模型对视觉信息的理解能力的?与传统的卷积操作相比,它的优势体现在哪些方面?
3、文章提到 Mona 在少样本情况下表现出色,这对于实际应用有什么意义?在数据匮乏的场景下,Mona 相比其他微调方法有哪些优势?

原文内容


合作单位包括清华、国科大、上海交大、阿里巴巴。本文第一作者为殷东硕,清华大学计算机系「水木学者」博后,中科院博士,曾以一作身份在 Nature Communications、IEEE CVPR、IEEE ICCV、ACM MM、IEEE TITS 等国际期刊/会议发表论文,并任 NeurIPS、CVPR、ICCV、ICLR、IEEE TIP、IEEE TMM 等会议期刊审稿人。曾获「中国科学院院长奖」,并与微软亚洲研究院 MSRA 和阿里巴巴集团进行科研合作。研究方向包括计算机视觉、参数高效微调、视频生成、多模态以及遥感图像解译等。


Mona(Multi-cognitive Visual Adapter)是一种新型视觉适配器微调方法,旨在打破传统全参数微调(full fine-tuning)在视觉识别任务中的性能瓶颈



  • 论文标题:5%>100%: Breaking Performance Shackles of Full Fine-Tuning on Visual Recognition Tasks

  • 论文地址:https://arxiv.org/pdf/2408.08345

  • 代码地址:https://github.com/Leiyi-Hu/mona


Mona 方法通过引入多认知视觉滤波器和优化输入分布,仅调整 5% 的骨干网络参数,就能在实例分割、目标检测、旋转目标检测等多个经典视觉任务中超越全参数微调的效果,显著降低了适配和存储成本,为视觉模型的高效微调提供了新的思路。


论文亮点

随着现代深度学习的发展,训练数据和模型规模的增加成为模型性能的重要增长点,但随之而来的是模型的垂直应用和微调成本和难度的提升。


传统全量微调需要更新模型所有参数(如 GPT-3 的 1750 亿参数),计算成本极高。即使以早期的 BERT 为例,单卡训练 100 万数据也需 5-7 小时,对硬件资源和时间的要求限制了研究复现和实际应用。


同时,随着模型参数从亿级迈向万亿级,直接微调不仅成本高昂,还可能因过拟合导致性能下降。此外,多任务场景下需为每个任务保存完整模型副本,存储成本剧增。


参数高效微调(Parameter Efficient Fine-Tuning,PEFT)通过保持预训练模型参数冻结,仅调整少量参数就可实现大模型在垂直应用领域的高效适配。但目前大多数 PEFT 方法,尤其是视觉领域的 PEFT 方法的性能相较于全量微调而言还存在劣势。


Mona 通过更适合视觉信号处理的设计以及对预训练特征分布的动态优化,在小于 5% 的参数成本下首次突破了全量微调的性能枷锁,为视觉微调提供了新的解决方案。


本文的核心在于强调:(1)PEFT 对于视觉模型性能上限的提升(尤其是参数量较大的模型);(2)视觉模型在全微调(尤其是少样本情况)会存在严重的过拟合问题;(3)1×LVM + n×Adapter 模式在实际业务中潜在的性能和效率优势。


对于具体业务来说,有些用到 LVM 或者多模态大模型(如 OCR 等任务)的任务会对视觉编码器部分进行固定或仅微调 linear 层来适应下游数据。Mona 的存在理论上可以进一步提升 LVM、多模态大模型对视觉特征的理解和重构,尤其是对于一些少样本 post-training 问题。


方法

Mona 包含降维、多认知视觉滤波器、激活函数和升维等模块,并在适配器内部加入了跳跃连接(Skip-Connections),以增强模型的适应能力。这种结构设计使得 Mona 能够在保持高效的同时,显著提升视觉任务的性能。



多认知视觉滤波器

Mona 方法的核心在于引入了多认知视觉滤波器,这些滤波器通过深度可分离卷积(Depth-Wise Convolution)和多尺度卷积核(3×3、5×5、7×7)来增强适配器对视觉信号的处理能力。与传统的线性适配器不同,Mona 专门针对视觉任务设计,能够更好地处理二维视觉特征,通过多尺度特征融合提升模型对视觉信息的理解能力。


输入优化

Mona 在适配器的前端加入了分布适配层(Scaled LayerNorm),用于调整输入特征的分布。这种设计能够优化从固定层传递过来的特征分布,使其更适合适配器的处理,从而提高微调效率。


实验结果

实验设置

论文在多个代表性视觉任务上进行了实验,包括:


  • 实例分割(COCO)

  • 语义分割(ADE20K)

  • 目标检测(Pascal VOC)

  • 旋转目标检测(DOTA/STAR)

  • 图像分类(Flowers102、Oxford-IIIT Pet、VOC2007)

实验使用了 SwinTransformer 系列作为骨干网络,并基于 ImageNet-22k 数据集进行预训练。



性能对比


  • 在 COCO 数据集上,Mona 方法相比全参数微调提升了 1% 的 mAP,仅调整了不到 5% 的参数。



  • 在 ADE20K 数据集上,Mona 提升了 0.18% 的 mIoU,表现出色。

  • 在 Pascal VOC 数据集上,Mona 提升了 3.6% 的 APbox,显示出显著的性能提升。



  • 在旋转目标检测任务(DOTA/STAR)中,Mona 在多个框架下均优于其他方法。



  • 在图像分类任务上,Mona 也有不俗的性能。


收敛性分析

在所有方法中,Mona 收敛速度更快,并且明显超过了全微调。


即插即用模块


import torch.nn as nn
import torch.nn.functional as F

------------------------------ Mona 模块 ------------------------------

INNER_DIM = 64

class MonaOp(nn.Module):
    def init(self, in_features):
        super().init()
        self.conv1 = nn.Conv2d(in_features, in_features, kernel_size=3, padding=3 // 2, groups=in_features)
        self.conv2 = nn.Conv2d(in_features, in_features, kernel_size=5, padding=5 // 2, groups=in_features)
        self.conv3 = nn.Conv2d(in_features, in_features, kernel_size=7, padding=7 // 2, groups=in_features)

        self.projector = nn.Conv2d(in_features, in_features, kernel_size=1, )

    def forward(self, x):
        identity = x
        conv1_x = self.conv1(x)
        conv2_x = self.conv2(x)
        conv3_x = self.conv3(x)

        x = (conv1_x + conv2_x + conv3_x) / 3.0 + identity

        identity = x

        x = self.projector(x)

        return identity + x

class Mona(BaseModule):
    def init(self,
                 in_dim,
                 factor=4):
        super().init()

        self.project1 = nn.Linear(in_dim, INNER_DIM)
        self.nonlinear = F.gelu
        self.project2 = nn.Linear(INNER_DIM, in_dim)

        self.dropout = nn.Dropout(p=0.1)

        self.adapter_conv = MonaOp(INNER_DIM)

        self.norm = nn.LayerNorm(in_dim)
        self.gamma = nn.Parameter(torch.ones(in_dim) * 1e-6)
        self.gammax = nn.Parameter(torch.ones(in_dim))

    def forward(self, x, hw_shapes=None):
        identity = x

        x = self.norm(x) * self.gamma + x * self.gammax

        project1 = self.project1(x)

        b, n, c = project1.shape
        h, w = hw_shapes
        project1 = project1.reshape(b, h, w, c).permute(0, 3, 1, 2)
        project1 = self.adapter_conv(project1)
        project1 = project1.permute(0, 2, 3, 1).reshape(b, n, c)

        nonlinear = self.nonlinear(project1)
        nonlinear = self.dropout(nonlinear)
        project2 = self.project2(nonlinear)

        return 


结论

Mona 方法通过多认知视觉滤波器和输入优化,显著提升了视觉任务的微调性能,同时大幅减少了参数调整量。这一方法不仅在多个视觉任务中超越了传统全参数微调,还为未来视觉模型的高效微调提供了新的方向。


预印版期间,Mona 已被复旦、中科大、南大、武大等多家单位的工作视为 SOTA 方法运用在医学、遥感等领域。Mona 的开源代码将进一步推动这一领域的研究和应用。


© THE END 

转载请联系本公众号获得授权

投稿或寻求报道:liyazhou@jiqizhixin.com

楼上说的有道理!我补充一点,参数高效微调在保护模型隐私方面也有潜力。全参数微调相当于把整个模型都暴露给了新任务的数据,容易泄露原始预训练数据的敏感信息。而参数高效微调只改动一小部分参数,可以有效降低这种风险,对于金融、医疗等对数据安全要求高的领域来说,这一点非常重要。

从学术角度看,参数高效微调的意义在于它提供了一种研究模型内部结构的视角。通过只调整少量参数,我们实际上是在寻找模型中最关键的部分,这些部分对特定任务的学习至关重要。深入研究这些关键参数,或许能帮助我们更好地理解深度学习模型的本质,甚至设计出更高效的网络结构。

少样本学习,简直是救星啊!在很多实际应用场景里,我们很难收集到大量标注数据,比如罕见疾病的医学影像识别、特定物种的动植物识别等等。这时候,Mona 这种能在少量数据上也能取得好效果的方法,就能派上大用场了。这意味着我们可以用更少的成本,解决更多的问题,想想就很激动!

除了论文里提到的降低计算和存储成本,我觉得参数高效微调还有潜力提高模型的可移植性和部署效率。想象一下,在一个资源受限的边缘设备上,部署一个庞大的全参数微调模型简直是噩梦,但如果用 Mona 这种方法,就能轻轻松松搞定啦。而且,参数量小也意味着模型更容易进行压缩和优化,说不定还能在移动端跑出更快的速度!

从理论上讲,Mona 的优势在于它能够在保持模型泛化能力的同时,充分利用少量的训练数据。全参数微调容易在少样本情况下过拟合,导致模型在训练集上表现很好,但在测试集上却一塌糊涂。而 Mona 通过只调整少量参数,并对输入特征进行优化,可以有效避免过拟合,提高模型的鲁棒性。

多认知视觉滤波器,听起来挺玄乎的哈。我的理解是,它通过不同尺度的卷积核(3x3、5x5、7x7)来捕捉图像中不同大小的特征。小卷积核关注细节,大卷积核关注整体结构,这样就能让模型更全面地理解视觉信息。就像我们看东西一样,既要看清楚每个细节,也要把握整体轮廓,才能理解它的含义。

楼上说的很专业!我补充一下,多认知视觉滤波器还可以看作是一种注意力机制。不同的卷积核可以看作是不同的“专家”,它们分别关注图像的不同方面,然后模型会根据任务的需要,为不同的“专家”分配不同的权重。这样,模型就能更有效地利用各种视觉信息,提高性能。

从信号处理的角度来看,多尺度卷积核相当于对图像信号进行多频段的分析。不同的卷积核对应不同的频率,通过融合这些频率的信息,可以更好地还原原始信号,从而提升模型对视觉信息的理解能力。而且,深度可分离卷积还能降低计算复杂度,提高效率,算是一个不错的trade-off。

我理解是在少样本的情况下,全参数微调就像是让模型“背书”,数据量少容易死记硬背,换个场景可能就懵了。而Mona更像是“理解”,它会抓住少量样本中的关键特征,学习到更本质的东西,所以能更好地泛化到新的场景。简单来说,就是“授人以鱼不如授人以渔”。