0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何擴大卷積來消除與Transformer的性能差距

OpenCV學(xué)堂 ? 來源:機器之心 ? 作者:機器之心 ? 2022-07-26 15:14 ? 次閱讀

本文分析了是否可以通過策略性地擴大卷積來消除與Transformer的性能差距。

首先,先讓我 brainstorm 一下。當(dāng)你看到 neural network scaling 這個詞的時候你能想到什么?先不要看下文,把你想到的東西記下來。說不定這個簡單的 brainstorm 能讓你找到絕妙的 idea。

我想大多數(shù)人想到的應(yīng)該是模型大?。▽挾?+ 深度),數(shù)據(jù)大小,或者圖片像素等等。有沒有哪位小科學(xué)家曾經(jīng)想過去 scale convolutional kernels?scale 卷積核同樣能增大模型的參數(shù),但能帶來像寬度和深度一樣的增益嗎?我這篇文章從這個角度出發(fā)深入探究了超大卷積核對模型表現(xiàn)的影響。我發(fā)現(xiàn)現(xiàn)有的大卷積核訓(xùn)練方法的瓶頸:現(xiàn)有的方法都無法無損的將卷積核 scale 到 31x31 以上,更別說用更大的卷積來進一步獲得收益。

我這篇文章的貢獻可以總結(jié)為以下幾點:

(1)現(xiàn)有的方法可以將卷積核增大到 31x31。但在更大的卷積上,例如 51x51 和 61x61,開始出現(xiàn)明顯掉點的現(xiàn)象。(2)經(jīng)典的 CNN 網(wǎng)絡(luò),如 ResNet 和 ConvNeXt,stem cell 都采用了 4× 降采樣。所以對典型的 224×224 ImageNet 來說,51×51 的極端核已經(jīng)大致等于全局卷積。和全局注意力機制一樣,我推測全局卷積也存在著捕捉局部低級特征的能力不足的問題。(3)基于此觀察,我提出了一套訓(xùn)練極端卷積核的 recipe,能夠絲滑的將卷積核增大到 61x61,并進一步提高模型的表現(xiàn)。我的方法論主要是基于人類視覺系統(tǒng)中普遍存在的稀疏性提出來的。在微觀層面上,我將 1 個方形大卷積核分解為 2 個具有動態(tài)稀疏結(jié)構(gòu)的,平行的長方形卷積核,用來提高大卷積的可擴展性;在宏觀層面上,我構(gòu)建了一個純粹的稀疏網(wǎng)絡(luò),能夠在提升網(wǎng)絡(luò)容量的情況下保持著和稠密網(wǎng)絡(luò)一樣的參數(shù)和 FLOPs。(4)根據(jù)這個 recipe,我構(gòu)造了一個新型網(wǎng)絡(luò)結(jié)構(gòu) Sparse Large Kernel Network,簡稱 SLaK。SLaK 搭載著有史以來最大的 51x51 卷積核,能夠在相似的參數(shù)量和 FLOPs 的條件下,獲得比最新先進的 ConvNeXt,Swin Transformer 和 RepLKNet 更好的性能。(5)最后,作者認為本文最重要的貢獻是 sparsity,通常作為模型壓縮的“老伙計”,can be a promising tool to boost neural network scaling。

Pytorch 開源代碼:https://github.com/VITA-Group/SLaK

一、引言

隨著 vison transformer 在各個領(lǐng)域的大放異彩,CNN 和 Vision Transformer 的競爭也愈演愈烈。在愈發(fā)強大的各類 attention 變種的推進下,ViT 取代 CNN 這個視覺老大哥的野心已經(jīng)路人皆知。而 CNN 在全局和局部注意力的啟發(fā)下也帶著大卷積乘風(fēng)破浪回來。前浪有 ConvNeXts 配備著 7x7 卷積核和 swin transformer 精巧的模型設(shè)計,成功的超越了后者的表現(xiàn)。

d594f8ea-06a8-11ed-ba43-dac502259ad0.png

后浪中 RepLKNet 用結(jié)構(gòu)再參數(shù)化成功的克服了大卷積在訓(xùn)練上的困難,一度將卷積增大到了 31x31,并達到了和 Swin Transformer 相當(dāng)?shù)谋憩F(xiàn)。在下游任務(wù)上更是超過了后者。但與 Swin Transformer 等高級 ViT 的擴展趨勢相比,隨著卷積核的持續(xù)擴大,大卷積核有著明顯的疲軟趨勢。

d5c045f4-06a8-11ed-ba43-dac502259ad0.png

二、超越 31x31 超大卷積核的訓(xùn)練 recipe

本文主要想探究的問題是:是否可以通過采用極致大卷積核(超過 31x31)來進一步提高 CNNs 的表現(xiàn)?為了回答這個問題,我在最近大火的 ConvNeXt 上對大卷積進行了系統(tǒng)的研究。我采用了和 ConvNeXt 一模一樣的訓(xùn)練設(shè)定和超參并將卷積核放大到 31x31,51x51 和 61x61。受限于計算資源,我這里將模型訓(xùn)練到 120 個 epoch,僅僅用來觀察卷積增大的趨勢,得到了如下 3 個主要結(jié)論。

結(jié)論 1:現(xiàn)有的技術(shù)無法無損的將卷積核擴展到 31x31 以上

現(xiàn)有的大卷積核技術(shù)主要有兩個,一是直接暴力 scale up 卷積核的 ConvNeXt,二是增加一個額外的小卷積層來輔助大卷積的訓(xùn)練,訓(xùn)練完成之后再用結(jié)構(gòu)化再參數(shù)將小卷積核融入大卷積核里,即 RepLKNet。我分別測試了這兩種方法在極致大卷積上的表現(xiàn),如下表所示:

d5de8730-06a8-11ed-ba43-dac502259ad0.png

原始 ConvNeXt 采用的是 7x7 卷積核,ImageNet 上能達到 81.0% 的 top1 精度。但是當(dāng)卷積逐漸增大的時候,ConvNeXt 出現(xiàn)了明顯的掉點。相比之下,RepLKNet 成功的把卷積核增大到 31x31 并帶來了超過 0.5 個點的可觀提升。但是當(dāng)卷積核增大到 51x51 甚至是 61x61 的時候,RepLKNet 也逐漸乏力。尤其是在 61x61 上,RepLKNet 的 FLOPs 增加了兩倍,精度卻反而降低了 0.2%。

如果仔細分析 ConvNeXt 模型的特點,51x51 和 61x61 卷積核帶來的精度下降是可以理解的。如下圖所示,現(xiàn)階段最先進的模型的 stem cell 都不約而同的采用了 stride=4 的結(jié)構(gòu)將輸入圖片的分辨率縮減到了原來的 1/4。那么對經(jīng)典的 224x224 iamgenet 來說,通過 stem cell 之后,feature 的大小就只有 56x56 了。所有 51x51 和 61x61 規(guī)模的卷積核就已經(jīng)是全局水平的卷積核。一種合某些理想的特性,比如有效的局部特性。同樣的現(xiàn)象我在 ViTs 的類似機制中也觀察到過,即局部注意力通常優(yōu)于全局注意力。在此基礎(chǔ)上,我想到了通過引入局部性來解決這個問題的機會。

d683936a-06a8-11ed-ba43-dac502259ad0.png

結(jié)論 2:用兩個平行的,長方形卷積來代替方形大卷積可以絲滑的將卷積核擴展到 61x61

這里我采用的方法是將一個常用的 MxM 方形卷積核分解為兩個平行的 MxN+NxM 長方形卷積核。如下圖最右邊所示。這里經(jīng)驗性的設(shè)置 N=5。

d6a119e4-06a8-11ed-ba43-dac502259ad0.png

這種分解不僅繼承了大卷積捕獲遠程依賴關(guān)系的能力,而且可以利用短邊來提取局部上下文特征。我選用了兩個 parallel 卷積核相加而不是以往的兩個 sequential 卷積核相疊是因為先進行 MxN 卷積再進行 NxM 卷積可能會因為 N 過小而丟失一部分長距離的信息(有待于去驗證)。果然與預(yù)想的一樣,這樣分解可以讓我逆轉(zhuǎn)大卷積帶來精度下降的趨勢。由于該分解減少了 FLOPs,相比不分解(即 RepLKNet)在 31x31 卷積上會犧牲掉少量的精度 (0.2%)。但是,隨著卷積大小增加到全局卷積,它可以驚人地將 Kernel-size 擴展到 61x61 并帶來更好的性能指標(biāo)。

d6b7b046-06a8-11ed-ba43-dac502259ad0.png

更重要的是,隨著卷積核的增大,現(xiàn)有的大卷積訓(xùn)練技術(shù)的內(nèi)存和計算開銷會呈現(xiàn)二次方的增長。這種分解方式保持了線性增長的趨勢并且可以極大的減少大卷積核帶來的開銷。如下圖所示。在中等卷積 31x31 上,參數(shù)量和計算量基本豆差不多。但是繼續(xù)增大卷積核的時候,RepLKNet 的計算量二次方的增長,而我的方法能基本保持不變。不要小看這一點,因為現(xiàn)在已經(jīng)有很多工作指明了一個明顯的趨勢:高分辨率訓(xùn)練(Swin Transfermor V2 使用了高達 1536x1536 的像素)能夠帶來明顯的增益。這種極大分辨率上,51x51 分辨率明顯已經(jīng)不足以去獲得足夠大的感受野。我很可能需要 100 + 的卷積核去獲得足夠大的感受野。

d6ceebd0-06a8-11ed-ba43-dac502259ad0.png

結(jié)論 3:擁有動態(tài)稀疏性的卷積核極大的提高了模型的容量同時又不增加模型大小

最近提出的 ConvNeXt 重新訪問了 ResNeXt 中 “use more groups, expand width” 的準(zhǔn)則,使用增加寬度的 depth-wise 卷積來增加 model capacity。在本文中,我用 dynamic sparsity 進一步擴展的這一原則,即“use sparse groups, expand more”。關(guān)于 dynamic sparsity 的介紹,請移步 https://zhuanlan.zhihu.com/p/376304225 看我之前的分享。

d6e4d896-06a8-11ed-ba43-dac502259ad0.png

具體來說,我首先用稀疏卷積代替密集卷積,其中每一層的稀疏度是基于 SNIP 的稀疏比率提前決定的。構(gòu)建完成后,我采用了動態(tài)稀疏度方法來訓(xùn)練模型。具體來說就是在模型訓(xùn)練一段時間后我會采用參數(shù)剪枝的方法去 prune 掉一部分相對不重要的參數(shù),緊接著去隨機的漲同樣數(shù)量的參數(shù)來保證總體訓(xùn)練參數(shù)的固定。這樣做可以動態(tài)地適應(yīng)稀疏權(quán)值,從而獲得更好的局部特征。由于在整個訓(xùn)練過程中模型都是稀疏的,相應(yīng)的參數(shù)計數(shù)和訓(xùn)練 / 推理 FLOPs 只與模型的稀疏度成比例。為了評估,這里以 40% 的稀疏度稀疏化分解后的 kernel,并將其性能報告為 “稀疏分解” 組。可以在表 2 的中間一列中觀察到,動態(tài)稀疏性顯著降低了模型的 FLOPs(超過 2.0G),并導(dǎo)致了暫時的性能下降。

d7054b30-06a8-11ed-ba43-dac502259ad0.png

接下來,我展示了動態(tài)稀疏性的 high efficiency 可以有效地轉(zhuǎn)化成 high scalability。例如,使用相同的稀疏性(40%),我可以將模型寬度擴展 1.3 倍,但是總體的模型參數(shù)和 FLOPs 卻仍然和稠密網(wǎng)絡(luò)一樣,并顯著漲點。在極端的 51×51 卷積下,性能可以從 80.5% 直接提高到 81.6%。值得注意的是,配備了 61×61 的內(nèi)核之后,我的模型可以超越 RepLKNet 的精度,同時還節(jié)省了 55% 的 FLOPs。

d72782d6-06a8-11ed-ba43-dac502259ad0.png

三、Sparse Large Kernel Network - SLaK

我利用上面發(fā)現(xiàn)的 recipe 在 ConvNeXt 上直接加載了 51x51 的卷積核,得到了 SLaK-T/S/B 模型。在不改變?nèi)魏?ConvNeXt 原有的訓(xùn)練設(shè)置和超參的情況下,SLaK 在 ImageNet-1K 分類數(shù)據(jù)集,ADE20K 分割數(shù)據(jù)集、PASCAL VOC 2007 檢測數(shù)據(jù)集,都超過了 Swin Transformer,ConvNeXt,和 RepLKNet 的表現(xiàn)。實驗結(jié)果突出了極致卷積核在下游視覺任務(wù)中的關(guān)鍵作用。

d74cd5cc-06a8-11ed-ba43-dac502259ad0.png

d7659e40-06a8-11ed-ba43-dac502259ad0.png

d78e9908-06a8-11ed-ba43-dac502259ad0.png

四、感受野分析

前面我猜測新方法既能夠保證對遠距離相關(guān)性的獲取,又能夠捕捉到近距離重要的特征。接下來通過對感受野的分析來證明這種想法。我計算了輸入圖片的像素對不同模型決策的貢獻度,并把貢獻度加加回到 1024x1024 的圖片上。我可以發(fā)現(xiàn)原始的 ConvNeXt 用 7X7 卷積只用了中間很小一部分的像素來做決策;RepLKNet 用 31x31 的卷積把感受野擴大了許多;而 SLaK 進一步用 51x51 的卷積核幾乎達到了全局感受野。值得注意的在大的感受野之上,能明顯的看到一個小的正方形堆疊著,證明了我能捕捉小范圍的低級特征的猜想。

d7ade222-06a8-11ed-ba43-dac502259ad0.png

審核編輯:彭靜
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 數(shù)據(jù)
    +關(guān)注

    關(guān)注

    8

    文章

    6837

    瀏覽量

    88754
  • 網(wǎng)絡(luò)容量
    +關(guān)注

    關(guān)注

    0

    文章

    5

    瀏覽量

    6420
  • Transformer
    +關(guān)注

    關(guān)注

    0

    文章

    139

    瀏覽量

    5968

原文標(biāo)題:卷積核擴大到51x51,新型CNN架構(gòu)SLaK反擊Transformer

文章出處:【微信號:CVSCHOOL,微信公眾號:OpenCV學(xué)堂】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    基于卷積的基礎(chǔ)模型InternImage網(wǎng)絡(luò)技術(shù)分析

    近年來大規(guī)模視覺 Transformer 的蓬勃發(fā)展推動了計算機視覺領(lǐng)域的性能邊界。視覺 Transformer 模型通過擴大模型參數(shù)量和訓(xùn)練數(shù)據(jù)從而擊敗了
    發(fā)表于 11-18 10:49 ?680次閱讀
    基于<b class='flag-5'>卷積</b>的基礎(chǔ)模型InternImage網(wǎng)絡(luò)技術(shù)分析

    為什么transformer性能這么好?Transformer的上下文學(xué)習(xí)能力是哪來的?

    為什么 transformer 性能這么好?它給眾多大語言模型帶來的上下文學(xué)習(xí) (In-Context Learning) 能力是從何而來?在人工智能領(lǐng)域里,transformer 已成為深度學(xué)習(xí)中
    的頭像 發(fā)表于 09-25 12:05 ?1308次閱讀
    為什么<b class='flag-5'>transformer</b><b class='flag-5'>性能</b>這么好?<b class='flag-5'>Transformer</b>的上下文學(xué)習(xí)能力是哪來的?

    什么是卷積碼? 什么是卷積碼的約束長度?

    從此時刻收到的碼元中提取譯碼信息,而且還利用以后若干時刻收到的碼字提供有關(guān)信息。卷積碼的糾錯性能隨k 的增加而增大,而差錯率隨N 的增加而指數(shù)下降。由于卷積碼的編碼過程充分利用了碼字間的相關(guān)性,因此在碼率
    發(fā)表于 05-30 16:06

    卷積特性(卷積定理).zip

    卷積特性(卷積定理).zip
    發(fā)表于 10-04 11:36

    如何更改ABBYY PDF Transformer+界面語言

    在安裝ABBYY PDF Transformer+時會讓您選擇界面語言。此語言將用于所有消息、對話框、按鈕和菜單項。在特殊情況下,您可能需要在安裝完成后更改界面語言以適應(yīng)需求,方法其實很簡單,本文
    發(fā)表于 10-11 16:13

    omniCOOL系統(tǒng)是怎樣彌補滾珠版與滑動版軸承之間的差距的?

    滑動軸承的優(yōu)點以及缺點是什么?滾珠軸承的優(yōu)點以及缺點是什么?omniCOOL系統(tǒng)是怎樣彌補滾珠版與滑動版軸承之間的差距的?
    發(fā)表于 07-19 06:36

    OpenPPL Arm Server卷積實現(xiàn)及性能展示解析

    Part 1 OpenPPL ARM Server 簡介OpenPPL Arm Server 定義? 針對高性能 ARM 架構(gòu)服務(wù)器處理器優(yōu)化的深度學(xué)習(xí)推理引擎? 目前支持 FP32 及 FP16
    發(fā)表于 03-31 11:51

    利用卷積調(diào)制構(gòu)建一種新的ConvNet架構(gòu)Conv2Former

    構(gòu)建了一種新的ConvNet架構(gòu)Conv2Former。ImageNet分類、COCO檢測以及ADE20K分割任務(wù)上的實驗結(jié)果表明:所提Conv2Former取得了優(yōu)于主流ConvNet(如ConvNeXt)、ViT(如Swin Transformer)的性能。  本文方
    發(fā)表于 12-19 17:37

    我們可以使用transformer干什么?

    transformer是什么?transformer能干啥?為什么要用transformer?transformer能替代cnn嗎?怎么讓tran
    的頭像 發(fā)表于 04-22 10:49 ?1.2w次閱讀
    我們可以使用<b class='flag-5'>transformer</b><b class='flag-5'>來</b>干什么?

    如何使用Transformer做物體檢測?

    )是Facebook研究團隊巧妙地利用了Transformer 架構(gòu)開發(fā)的一個目標(biāo)檢測模型。在這篇文章中,我將通過分析DETR架構(gòu)的內(nèi)部工作方式幫助提供一些關(guān)于它的含義。下面,我將解釋一些結(jié)構(gòu),但是
    的頭像 發(fā)表于 04-25 10:45 ?2588次閱讀
    如何使用<b class='flag-5'>Transformer</b><b class='flag-5'>來</b>做物體檢測?

    基于膨脹卷積和稠密連接的煙霧圖像識別

    為更好地提取煙霧圖像的全局特征,提出一種基于膨脹卷積和稠密連接的煙霧識別方法。依次堆疊膨脹率不同的膨脹卷積,擴大卷積核的感受野,使得卷積核能夠感知更廣泛的煙霧圖像區(qū)域,在不同膨脹
    發(fā)表于 05-14 11:32 ?9次下載

    使用跨界模型Transformer做物體檢測!

    用了Transformer 架構(gòu)開發(fā)的一個目標(biāo)檢測模型。在這篇文章中,我將通過分析DETR架構(gòu)的內(nèi)部工作方式幫助提供一些關(guān)于它的直覺。 下面,我將解釋一些結(jié)構(gòu),但是如果你只是想了解如何使用模型,可以直接跳到代碼部分
    的頭像 發(fā)表于 06-10 16:04 ?2167次閱讀
    使用跨界模型<b class='flag-5'>Transformer</b><b class='flag-5'>來</b>做物體檢測!

    基于卷積的框架有效實現(xiàn)及視覺Transformer背后的關(guān)鍵成分

    來自清華大學(xué)和 Meta AI 的研究者證明了視覺 Transformer 的關(guān)鍵,即輸入自適應(yīng)、長程和高階空間交互,也可以通過基于卷積的框架有效實現(xiàn)。
    的頭像 發(fā)表于 09-09 15:44 ?1115次閱讀

    利用Transformer和CNN 各自的優(yōu)勢以獲得更好的分割性能

    Transformer 和 CNN 各自的優(yōu)勢以獲得更好的分割性能。 具體來說,PHTrans 沿用 U 形設(shè)計,在深層引入并行混合模塊,其中卷積塊和修改后的 3D Swin Transfo
    的頭像 發(fā)表于 11-05 11:38 ?6424次閱讀

    LargeKernel3D:在3D稀疏CNN中使用大卷積

    2D CNN 使用大卷積代替小卷積,增大了卷積核的感受野,捕獲到的特征更偏向于全局,效果也得到了提升,這表明較大的 kernel size 很重要
    的頭像 發(fā)表于 04-06 09:54 ?837次閱讀