成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

CVPR2025 | 即插即用!清華國科大等推出視覺微調框架,僅需調整5%骨干網絡參數

人工智能 新聞
他們提出了Mona(Multi-cognitive Visual Adapter)這種新型視覺適配器微調方法,目標是打破傳統全參數微調(full fine-tuning)在視覺識別任務中的性能瓶頸。

僅調整5%的骨干網絡參數,就能超越全參數微調效果?!

還是在實例分割、目標檢測、旋轉目標檢測這樣的經典視覺任務場景。

這是來自清華、國科大、上海交大、阿里巴巴的一項研究,相關論文已被CVPR2025接受。

圖片

他們提出了Mona(Multi-cognitive Visual Adapter)這種新型視覺適配器微調方法,目標是打破傳統全參數微調(full fine-tuning)在視覺識別任務中的性能瓶頸。

Mona方法通過引入多認知視覺濾波器和優化輸入分布,僅調整5%的骨干網絡參數,就能在實例分割、目標檢測、旋轉目標檢測等多個經典視覺任務中超越全參數微調的效果

這一方法顯著降低了適配和存儲成本,為視覺模型的高效微調提供了新的思路。

Mona首次突破了全量微調性能枷鎖

隨著現代深度學習的發展,訓練數據和模型規模的增加成為模型性能的重要增長點,但隨之而來的是模型的垂直應用和微調成本和難度的提升。

傳統全量微調需要更新模型所有參數(如GPT-3的1750億參數 ),計算成本極高。即使以早期的BERT為例,單卡訓練100萬數據也需5-7小時,對硬件資源和時間的要求限制了研究復現和實際應用。

同時,隨著模型參數從億級邁向萬億級,直接微調不僅成本高昂,還可能因過擬合導致性能下降。此外,多任務場景下需為每個任務保存完整模型副本,存儲成本劇增加。

參數高效微調(Parameter Efficient Fine-Tuning,PEFT)通過保持預訓練模型參數凍結,僅調整少量參數就可實現大模型在垂直應用領域的高效適配。

但目前大多數PEFT方法,尤其是視覺領域的PEFT方法的性能相較于全量微調而言還存在劣勢。

Mona通過更適合視覺信號處理的設計以及對預訓練特征分布的動態優化,在小于5%的參數成本下首次突破了全量微調的性能枷鎖,為視覺微調提供了新的解決方案。

團隊核心想通過研究強調:

(1)PEFT對于視覺模型性能上限的提升(尤其是參數量較大的模型);(2)視覺模型在全微調(尤其是少樣本情況)會存在嚴重的過擬合問題;(3)1LVM+nAdapter模式在實際業務中潛在的性能和效率優勢。

對于具體業務來說,有些用到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收斂速度更快,并且明顯超過了全微調。

圖片

以下為Mona即插即用模塊:

import torch.nn asnn
importtorch.nn.functionalasF
# ------------------------------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 identity + project2
#------------------------------插入模式------------------------------
#此處省略部分 Swin組件實現,僅提供 Mona插入模式。
class SwinBlock(BaseModule):
""""
Args:
embed_dims (int): The feature dimension.
num_heads (int): Parallel attention heads.
feedforward_channels (int): The hidden dimension for FFNs.
window_size (int, optional): The local window scale. Default: 7.
shift (bool, optional): whether to shift window or not. Default False.
qkv_bias (bool, optional): enable bias for qkv if True. Default: True.
qk_scale (float | None, optional): Override default qk scale of
head_dim ** -0.5 if set. Default: None.
drop_rate (float, optional): Dropout rate. Default: 0.
attn_drop_rate (float, optional): Attention dropout rate. Default: 0.
drop_path_rate (float, optional): Stochastic depth rate. Default: 0.
act_cfg (dict, optional): The config dict of activation function.
Default: dict(type='GELU').
norm_cfg (dict, optional): The config dict of normalization.
Default: dict(type='LN').
with_cp (bool, optional): Use checkpoint or not. Using checkpoint
will save some memory while slowing down the training speed.
Default: False.
init_cfg (dict | list | None, optional): The init config.
Default: None.
"""
def __init__(self,
embed_dims,
num_heads,
feedforward_channels,
window_size=7,
shift=False,
qkv_bias=True,
qk_scale=None,
drop_rate=0.,
attn_drop_rate=0.,
drop_path_rate=0.,
act_cfg=dict(type='GELU'),
norm_cfg=dict(type='LN'),
with_cp=False,
init_cfg=None):
super(SwinBlock, self).__init__()
self.init_cfg = init_cfg
self.with_cp = with_cp
self.norm1 = build_norm_layer(norm_cfg, embed_dims)[1]
self.attn = ShiftWindowMSA(
embed_dims=embed_dims,
num_heads=num_heads,
window_size=window_size,
shift_size=window_size // 2 if shift else 0,
qkv_bias=qkv_bias,
qk_scale=qk_scale,
attn_drop_rate=attn_drop_rate,
proj_drop_rate=drop_rate,
dropout_layer=dict(type='DropPath', drop_prob=drop_path_rate),
init_cfg=None)
self.norm2 = build_norm_layer(norm_cfg, embed_dims)[1]
self.ffn = FFN(
embed_dims=embed_dims,
feedforward_channels=feedforward_channels,
num_fcs=2,
ffn_drop=drop_rate,
dropout_layer=dict(type='DropPath', drop_prob=drop_path_rate),
act_cfg=act_cfg,
add_identity=True,
init_cfg=None)
self.mona1 = Mona(embed_dims, 8)
self.mona2 = Mona(embed_dims, 8)
def forward(self, x, hw_shape):
def _inner_forward(x):
identity = x
x = self.norm1(x)
x = self.attn(x, hw_shape)
x = x + identity
x = self.mona1(x, hw_shape)
identity = x
x = self.norm2(x)
x = self.ffn(x, identity=identity)
x = self.mona2(x, hw_shape)
return x
if self.with_cp and x.requires_grad:
x = cp.checkpoint(_inner_forward, x)
else:
x = _inner_forward(x)
return x

最后小結一下,Mona方法通過多認知視覺濾波器和輸入優化,顯著提升了視覺任務的微調性能,同時大幅減少了參數調整量。

這一方法不僅在多個視覺任務中超越了傳統全參數微調,還為未來視覺模型的高效微調提供了新的方向。

預印版期間,Mona已被復旦、中科大、南大、武大等多家單位的工作視為SOTA方法運用在醫學、遙感等領域。

Mona的開源代碼將進一步推動這一領域的研究和應用。

附論文引用格式:

@misc{yin20245100breakingperformanceshackles,
      title={5%>100%: Breaking Performance Shackles of Full Fine-Tuning on Visual Recognition Tasks}, 
      author={Dongshuo Yin and Leiyi Hu and Bin Li and Youqun Zhang and Xue Yang},
      year={2024},
      eprint={2408.08345},
      archivePrefix={arXiv},
      primaryClass={cs.CV},
      url={https://arxiv.org/abs/2408.08345}, 
}

論文地址:https://arxiv.org/pdf/2408.08345
代碼:https://github.com/Leiyi-Hu/mona

責任編輯:張燕妮 來源: 量子位
相關推薦

2025-06-05 02:15:00

Mamba視覺網絡

2025-03-10 08:47:00

模型AI訓練

2025-03-14 10:26:58

2021-07-08 15:39:50

機器學習人工智能計算

2021-10-13 17:28:33

AI 數據人工智能

2021-07-14 07:30:51

網絡建設互聯網骨干網絡

2024-07-22 08:17:00

模型性能

2024-11-11 09:00:00

2012-03-27 16:40:54

2013-09-18 09:24:47

2009-06-30 19:12:16

云計算SOAIT

2025-05-19 08:25:00

2010-08-20 15:06:38

2012-03-24 14:04:37

2025-05-23 09:12:00

2024-11-21 10:58:05

模型AI

2025-06-18 08:49:00

模型系統AI

2015-05-22 11:26:02

網絡全面提速中國農業銀行華為

2010-06-02 15:09:37

IPv6網絡地址

2011-04-12 15:06:34

IDC浪潮移動
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲经典一区 | 久久成人一区 | 亚洲精品久久久一区二区三区 | 久久成人一区二区三区 | 日韩色图视频 | 久久精品国产亚洲一区二区三区 | 99精品国自产在线观看 | 99亚洲精品 | 韩日在线 | 在线伊人 | 国产在线视频在线观看 | 欧美激情精品久久久久久 | 特级黄一级播放 | 国产精品一区二区在线 | 欧美黄色大片在线观看 | 亚洲欧美一区二区三区国产精品 | 久久99精品国产自在现线小黄鸭 | 国产伊人久久久 | 欧美中文字幕一区二区三区亚洲 | 久久精品一区二区三区四区 | 国产在线一区二区三区 | 青青草华人在线视频 | 国产精品久久国产愉拍 | 天堂久久av | 综合自拍 | 日韩成人在线播放 | 日韩成人免费av | 国产蜜臀97一区二区三区 | 国产成人精品一区二区三区四区 | 草草在线观看 | 人人澡人人爱 | 国产视频不卡一区 | 国产亚洲精品久久久久久牛牛 | 黄色三级免费网站 | 九九热精 | 精品免费视频 | 日日干夜夜操 | 亚洲精品久久久久久久久久久 | 99国产精品99久久久久久粉嫩 | 美女黄网 | 黑人巨大精品欧美一区二区一视频 |