CVPR2025|CV微調卷出天際,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 nnimport torch.nn.functional as F# ------------------------------ Mona 模組 ------------------------------INNER_DIM = 64classMonaOp(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, )defforward(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 + xclassMona(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))defforward(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(0312)        project1 = self.adapter_conv(project1)        project1 = project1.permute(0231).reshape(b, n, c)        nonlinear = self.nonlinear(project1)        nonlinear = self.dropout(nonlinear)        project2 = self.project2(nonlinear)return

結論

Mona 方法透過多認知視覺濾波器和輸入最佳化,顯著提升了視覺任務的微調效能,同時大幅減少了引數調整量。這一方法不僅在多個視覺任務中超越了傳統全引數微調,還為未來視覺模型的高效微調提供了新的方向。
預印版期間,Mona 已被複旦、中科大、南大、武大等多家單位的工作視為 SOTA 方法運用在醫學、遙感等領域。Mona 的開原始碼將進一步推動這一領域的研究和應用。
© THE END 
轉載請聯絡本公眾號獲得授權
投稿或尋求報道:[email protected]


相關文章