<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          MLP再添新磚,F(xiàn)acebook入局!ResMLP:完全建立在MLP上的圖像分類架構(gòu)

          共 14463字,需瀏覽 29分鐘

           ·

          2021-05-11 02:39

          ↑ 點擊藍字 關(guān)注極市平臺

          作者丨h(huán)appy
          審稿丨鄧富城
          編輯丨極市平臺

          極市導讀

           

          繼谷歌MLP-Mixer引爆CV圈后,各高校也紛紛入場,facebook也不例外,在今天提出一種完全建立在MLP上的架構(gòu)ResMLP用于圖像分類,得出了與MLP-Mixer相似的結(jié)論。 >>本周二(5月11日)【極市直播】張新宇:CVPR 2021-Alpha Refine:通過精確的邊界框估計提高跟蹤性能

          paper: https://arxiv.org/abs/2105.03404

          code1: https://github.com/lucidrains/res-mlp-pytorch(第三方)

          code2: https://github.com/facebookresearch/deit(大概開源在此)

          繼上周谷歌的MLP-Mixer引爆CV圈后,清華大學、牛津大學刊出關(guān)于MLP的嘗試,大有MLP->CNN->Transformer->MLP輪回之趨勢。今天Facebook同樣入局,提出了ResMLP,得出了與MLP-Mixer相似的結(jié)論。

          前景回顧

          在前幾天(也就是5月5日)谷歌一記重拳MLP-Mixer引爆了CV圈,挖了新坑:“移除掉自注意力與卷積后的網(wǎng)絡(luò),僅僅采用MLP仍可取得與CNN、Transformer相媲美的性能”。筆者曾對其有初步的解讀,感興趣者可移步:谷歌最新提出無需卷積、注意力 ,純MLP構(gòu)成的視覺架構(gòu)!網(wǎng)友:MLP is All You Need ?

          次日(即5月6日),清華大學丁霄漢博士(重參數(shù)方案ACNet、RepVGG、DBB等方案的一作)提交了MLP相關(guān)的文章,揭示了“將重參數(shù)卷積嵌入圈連接層同樣可以取得非常不錯的效果”。

          同日,清華大學胡事民團隊也提交了其團隊關(guān)于自注意力的探索,提出了一種新的注意力機制:External Attention,基于兩個外部的、小的、可學習的和共享的存儲器,只用兩個級聯(lián)的線性層和歸一化層就可以取代了現(xiàn)有流行的學習架構(gòu)中的“Self-attention”,揭示了線性層和注意力機制之間的關(guān)系。

          當天“哭暈在廁所”的牛津小伙(Luke)先在github上提交了他關(guān)于MLP的實驗code與預訓練模型(https://github.com/lukemelas/do-you-even-need-attention),后在arxiv上看出了Do You Even Need Attention?一文。再一次說明:“即使不使用注意力機制,純MLP也可以取得非常強的性能”。也就是說,ViT的強大性能可能不是源自注意力機制,而是其他因素。關(guān)于MLP的爭論與介紹可參見AI科技評論的報道:CV圈殺瘋了!繼谷歌后,清華、牛津等學者又發(fā)表三篇MLP相關(guān)論文,LeCun也在發(fā)聲

          今天,F(xiàn)acebook(DeiT、CaiT的作者團隊)同樣入局MLP,提出了ResMLP,得出了與前文類似的結(jié)論。

          Abstract

          本文提出一種完全建立在MLP上的架構(gòu)ResMLP用于圖像分類。它是一種交替執(zhí)行如下兩個模塊的簡單殘差網(wǎng)絡(luò):(1) 一個作用于圖像塊的線性層,獨立于通道;(2) 一個作用于通道的兩層前饋網(wǎng)絡(luò),獨立于圖像塊。

          當采用先進的訓練策略(重度數(shù)據(jù)增廣、可選知識蒸餾)進行訓練時,所提方法在ImageNet上取得了令人驚訝的精度-復雜度均衡結(jié)果。

          Introduction

          最近,源自自然語言處理的Transformer在CV圈攪翻了天!當采用充分大的數(shù)據(jù)訓練時,ViT在ImageNet上取得了與CNN相當甚至更優(yōu)的性能。為什么會攪翻天呢?自然2021年AlexNet以來,為了提升ImageNet上的性能,全世界的研究員設(shè)計了大量的架構(gòu),引入了諸多的先驗信息,甚至還采用NAS等技術(shù)才將ImageNet的精度提升到了80+%;然而外來戶Transformer輕松的就達到了這個精度,且不需理會卷積架構(gòu)的內(nèi)在假設(shè)與平移不變性。真乃“一記重拳”!

          從Transformer角度來看,更長周期的訓練、更多的參數(shù)、更多的數(shù)據(jù)、更多的正則技術(shù)足以覆蓋ImageNet分類的重要先驗信息。

          本文則將上述趨勢進一步前推,提出了ResMLP(Residual Multi-Layer Perceptrons):一種純基于MLP的架構(gòu),見下圖。所提架構(gòu)極為簡單:它采用平展后的圖像塊作為輸入,通過線性層對其進行投影,然后采用前述所提兩個殘差操作對投影特征進行更新;最后將所得塊特征進行均值池化后進行分類。

          所提架構(gòu)受啟發(fā)于ViT,但更簡單,區(qū)別在于:沒有采用任何形式的注意力,僅僅包含線性層與GELU非線性激活函數(shù)。由于所提架構(gòu)比Trasnformer的訓練更為穩(wěn)定,我們不需要與batch或者跨通道相關(guān)的操作,比如BatchNorm、GroupNorm、LayrNorm等。所提方案的訓練過程基本延續(xù)了DeiT與CaiT的訓練方式。

          由于所提方案的線性特性,該模型中的塊交互易于可視化、可解釋。盡管第一層學習到的交互模式與卷積濾波器非常類似,但在更深的層我們觀察到塊間更微妙的交互作用:包含軸向濾波器形式、長期依賴性等。

          總而言之,本文貢獻包含以下幾點:

          • 盡管簡單,無需額外數(shù)據(jù)、規(guī)范化(如BN)技術(shù),ResMLP可以在ImageNet上取得令人經(jīng)驗的精度-復雜度均衡
          • 這些模型可以從蒸餾方法中受益進而繼續(xù)提升模型性能;
          • 由于塊間簡單的線性通信,我們可以網(wǎng)絡(luò)從不同層之間學習何種類型的空域交互。

          Method

          所提ResMLP架構(gòu)以 非重疊塊作為輸入,這些塊將獨立的經(jīng)由線性層處理并構(gòu)成 維嵌入特征;所得嵌入特征將送入后續(xù)一系列殘差多層感知器層中生成 維輸出嵌入特征;將上述輸出嵌入特征進行平均得到 維圖像表達;最后將上述圖像表達送入線性分類層預測圖像對應(yīng)的標簽。訓練過程中采用交叉熵損失。

          Residual Multi-Perceptron Layer 所提網(wǎng)絡(luò)由一系列具有相同結(jié)構(gòu)的層(線性層后接前饋層)構(gòu)成。類似Transformer層,每個子層采用了跳過連接并行,但并未采用LayerNorm,這是因為采用如下仿射變換訓練已經(jīng)非常穩(wěn)定:

          其中, 表示可學習向量。需要注意的是:該層推理無耗時,因其參數(shù)可與前接線性層合并。 獨立的作用于X的每一列,盡管與BatchNorm、LayerNorm非常類似,但該操作不依賴任何batch統(tǒng)計;它與近期提出的LayerScale非常接近,但LayerScale沒有偏置項。

          總而言之,所提 層將 維輸入特征堆疊為 矩陣X,輸出 維輸出特征,計算公式如下:

          其中, 表示主要的學習參數(shù)。參數(shù)矩陣 的維度維 ,用于混合所有位置的信息,而前饋層則作用于每個位置。因此,中間激活矩陣Z具有與矩陣X、Y相同的維度。最后參數(shù)矩陣B和C的維度類似Transformer層,即 。

          所提方法與Transformer層的主要區(qū)別在于:我們采用線性交互替換自注意力;自注意力具有數(shù)據(jù)依賴性,而所提線性層則不具備。相比卷積的局部感受野、權(quán)值共享特性,所提線性層具有全局感受野,參數(shù)不共享,空域獨立于通道實施。

          相比ViT,本文所提方法主要有以下幾點區(qū)別:

          • 不包含任何自注意力模塊;
          • 不包含額外的classtoken;
          • 不包含任何形式的位置嵌入信息;
          • 移除了LayerNorm,引入了一種簡單的可學習仿射變換。

          除了均值池化外,我們還引入CaiT中的class-attention:它包含兩層與Transformer相同的結(jié)構(gòu),但僅僅class token基于凍結(jié)的塊嵌入進行更新。我們將其引入到所提方案中并進行了適配:采用線性層替換了注意力交互。這種方式可以進一步提升模型性能,但同時也會增加額外的參數(shù)量、計算量。我們將這種方案稱之為class-MLP。

          Experiments

          Experimental setting

          Datasets 訓練數(shù)據(jù)為ImageNet,除了ImageNet本身的驗證集外,我們還在ImageNet-real、ImageNet-v2數(shù)據(jù)集上進行了驗證測試。

          Training paradigms 訓練方式考慮了以下兩種形式:

          • 監(jiān)督學習:采用softmax分類+交叉熵損失訓練,本文主要聚焦于此;
          • 知識蒸餾:采用ConvNet通過知識蒸餾方式引導ResMLP訓練。

          Hyper-parameter setting 在監(jiān)督學習中,我們采用Lamb羽化期,學習率為 ,權(quán)值衰減0.2。超參設(shè)置于DeiT類似,知識蒸餾時的老師模型為RegNety-16GF。

          Main Results

          上表對比了所提方法與ConvNet、Transformer在監(jiān)督學習框架下的性能。從表中對比可以看到:

          • 盡管ResMLP在精度、FLOPs以及吞吐量的均衡方面不如ConvNet、Transformer,但其性能仍非常優(yōu)異;
          • 事實上,這里所對比的ConvNet經(jīng)過了多年的研究與精心優(yōu)化才達到了如此好的性能;而本文所提方法只是最簡單的適配,未經(jīng)過多的優(yōu)化。

          上表對比了知識蒸餾的影響性。從中可以看到:

          • 類似于DeiT,ResMLP同樣能從ConvNet受益;
          • 表中結(jié)果表明:前饋網(wǎng)絡(luò)仍存在過擬合問題。額外的正則技術(shù)與蒸餾可以進一步提升模型的性能。

          上表對比了ResMLP在遷移學習方面的性能。從中可以看到:

          • 相比現(xiàn)有架構(gòu),ResMLP極具競爭力。
          • 采用充分大的數(shù)據(jù)、正則技術(shù)可以極大的降低模型過擬合的趨勢。

          全文到此結(jié)束,更多消融實驗與分析建議查看原文。

          參考code

          
              
          # No norm layerclass Affine(nn.Module):    def __init__(self, dim):        super().__init__()        self.alpha = nn.Parameter(torch.ones(dim))        self.beta = nn.Parameter(torch.zeros(dim))    def forward(self, x):        return self.alpha * x + self.beta
          # MLP on channelsclass Mlp(nn.Module): def __init__(self, dim): super().__init__() self.fc1 = nn.Linear(dim, 4 * dim) self.act = nn.GELU() self.fc2 = nn.Linear(4 * dim, dim) def forward(self, x): x = self.fc1(x) x = self.act(x) x = self.fc2(x) return x
          # ResMLP blocks: a linear between patches + a MLP to process them independentlyclass ResMLP_BLocks(nn.Module): def __init__(self, nb_patches ,dim, layerscale_init): super().__init__() self.affine_1 = Affine(dim) self.affine_2 = Affine(dim) self.linear_patches = nn.Linear(nb_patches, nb_patches) #Linear layer on patches self.mlp_channels = Mlp(dim) #MLP on channels self.layerscale_1 = nn.Parameter(layerscale_init * torch.ones(dim)) #LayerScale self.layerscale_2 = nn.Parameter(layerscale_init * torch.ones(dim)) # parameters
          def forward(self, x): res_1 = self.linear_patches(self.affine_1(x).transpose(1,2)).transpose(1,2) x = x + self.layerscale_1 * res_1 res_2 = self.mlp_channels(self.affine_2(x)) x = x + self.layerscale_2 * res_2 return x
          # ResMLP model: Stacking the full networkclass ResMLP_models(nn.Module): def __init__(self, dim, depth, nb_patches, layerscale_init, num_classes): super().__init__() self.patch_projector = Patch_projector() self.blocks = nn.ModuleList([ ResMLP_BLocks(nb_patches ,dim, layerscale_init) for i in range(depth)]) self.affine = Affine(dim) self.linear_classifier = nn.Linear(dim, num_classes) def forward(self, x): B, C, H, W = x.shape x = self.patch_projector(x) for blk in self.blocks: x = blk(x) x = self.affine(x) x = x.mean(dim=1).reshape(B,-1) #average pooling return self.linear_classifier(x)

          本文亮點總結(jié)


          1.本文提出一種完全建立在MLP上的架構(gòu)ResMLP用于圖像分類。它是一種交替執(zhí)行如下兩個模塊的簡單殘差網(wǎng)絡(luò):(1) 一個作用于圖像塊的線性層,獨立于通道;(2) 一個作用于通道的兩層前饋網(wǎng)絡(luò),獨立于圖像塊。

          2.本文貢獻包含以下幾點:
          • 盡管簡單,無需額外數(shù)據(jù)、規(guī)范化(如BN)技術(shù),ResMLP可以在ImageNet上取得令人經(jīng)驗的精度-復雜度均衡;
          • 這些模型可以從蒸餾方法中受益進而繼續(xù)提升模型性能;
          • 由于塊間簡單的線性通信,我們可以網(wǎng)絡(luò)從不同層之間學習何種類型的空域交互。


          如果覺得有用,就請分享到朋友圈吧!

          △點擊卡片關(guān)注極市平臺,獲取最新CV干貨

          公眾號后臺回復“RegNet”獲取資源鏈接~


          極市干貨

          頂會干貨CVPR 二十年,影響力最大的 10 篇論文! CVPR2021 最新18篇 Oral 論文學術(shù)論文投稿與Rebuttal經(jīng)驗分享

          實操教程PyTorch自定義CUDA算子教程與運行時間分析pytorch中使用detach并不能阻止參數(shù)更新

          招聘面經(jīng)秋招計算機視覺匯總面經(jīng)分享算法工程師面試題匯總

          最新CV競賽:2021 高通人工智能應(yīng)用創(chuàng)新大賽CVPR 2021 | Short-video Face Parsing Challenge


          極市原創(chuàng)作者激勵計劃 #


          極市平臺深耕CV開發(fā)者領(lǐng)域近5年,擁有一大批優(yōu)質(zhì)CV開發(fā)者受眾,覆蓋微信、知乎、B站、微博等多個渠道。通過極市平臺,您的文章的觀點和看法能分享至更多CV開發(fā)者,既能體現(xiàn)文章的價值,又能讓文章在視覺圈內(nèi)得到更大程度上的推廣。

          對于優(yōu)質(zhì)內(nèi)容開發(fā)者,極市可推薦至國內(nèi)優(yōu)秀出版社合作出書,同時為開發(fā)者引薦行業(yè)大牛,組織個人分享交流會,推薦名企就業(yè)機會,打造個人品牌 IP。

          投稿須知:
          1.作者保證投稿作品為自己的原創(chuàng)作品。
          2.極市平臺尊重原作者署名權(quán),并支付相應(yīng)稿費。文章發(fā)布后,版權(quán)仍屬于原作者。
          3.原作者可以將文章發(fā)在其他平臺的個人賬號,但需要在文章頂部標明首發(fā)于極市平臺

          投稿方式:
          添加小編微信Fengcall(微信號:fengcall19),備注:姓名-投稿
          △長按添加極市平臺小編


          覺得有用麻煩給個在看啦~  
          瀏覽 59
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  91麻豆网站 | 黄色一级片A | 做爱的网站 | 被操的视频在线观看免费网站 | 用力艹骚逼 |