<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>

          yyds!EfficientNetV2:更小,更快!

          共 3846字,需瀏覽 8分鐘

           ·

          2021-10-21 21:58

          點藍(lán)色字關(guān)注“機(jī)器學(xué)習(xí)算法工程師

          設(shè)為星標(biāo),干貨直達(dá)!

          上篇文章谷歌打怪升級之路:從EfficientNet到EfficientNetV2(上)講了EfficientNet,這篇文章講解EfficientNetV2。

          EfficientNetV2

          谷歌在2021年4月份提出了EfficientNet的改進(jìn)版EfficientNetV2: Smaller Models and Faster Training。從題目上就可以看出V2版本相比V1,模型參數(shù)量更小,訓(xùn)練速度更快。從下圖中可以看到EfficientNetV2比其它模型訓(xùn)練速度快5x~11x,而參數(shù)量卻少6.8x(表中相比ResNet-RS)。

          要改進(jìn)EfficientNet,首先要分析存在的問題,論文中共指出三個方面的訓(xùn)練瓶頸問題。首先是** training with very large image sizes is slow**,EfficientNet在較大的圖像輸入時會使用較多的顯存,如果GPU/TPU總顯存固定,此時就要降低訓(xùn)練的batch size,這會大大降低訓(xùn)練速度。一種解決方案就是像FixRes那樣,采用較小的圖像尺寸訓(xùn)練,但是推理時采用較大的圖像尺寸。比如EfficientNet-B6的訓(xùn)練size采用380相比512效果是相當(dāng)?shù)模ㄍ评韘ize為528),但是可以采用更大的batch size,而且計算量更小,訓(xùn)練速度提升2.2x(與FixRes不同的是,這里沒有在推理size下進(jìn)行finetune)。但是論文中提出了一種更高級的訓(xùn)練技巧:progressive Learning,這個后面再敘述。第二個問題是depthwise convolutions are slow in early layers but effective in later stages。EfficientNet中大量使用depthwise conv,相比常規(guī)conv,它的好處是參數(shù)量和 FLOPs更小,但是它并不能較好地利用現(xiàn)代加速器(GPU/TPU)。谷歌在EfficientNet-EdgeTPU提出了Fused-MBConv,這里是把MBconv中的depthwise conv3x3和expansion conv1x1替換成一個常規(guī)的conv3x3,在Edge TPU測試發(fā)現(xiàn)雖然前者的參數(shù)量和計算量更少,但是由于常規(guī)的conv更能較好地利用TPU,反而后者的執(zhí)行速度更快。這里逐漸將EfficientNet-B4的MBConv替換成Fused-MBConv,發(fā)現(xiàn)如果將stage1~3替換為Fused-MBConv此時訓(xùn)練速度提升,但是所有stage均替換,此時參數(shù)量和FLOPs大幅度提升,但是訓(xùn)練速度反而下降。這說明適當(dāng)?shù)亟M合MBConv和Fused-MBConv才能取得最佳效果,后面用NAS來進(jìn)行自動搜索。第三個問題是equally scaling up every stage is sub-optimal。EfficientNet的各個stage均采用一個復(fù)合縮放策略,比如depth系數(shù)為2時,各個stage的層數(shù)均加倍。但是各個stage對訓(xùn)練速度和參數(shù)量的影響并不是一致的,同等縮放所有stage會得到次優(yōu)結(jié)果。EfficientNetV2采用的是非一致的縮放策略,后面的stages增加更多的layers。同時EfficientNet也不斷地增大圖像大小,由于導(dǎo)致較大的顯存消耗而影響訓(xùn)練速度,所以EfficientNetV2設(shè)定了最大圖像size限制。

          基于上述的三個問題分析,為了提升訓(xùn)練速度,EfficientNetV2采用training-aware NAS來設(shè)計,優(yōu)化目標(biāo)包括accuracy,parameter efficiency和training efficiency,搜索的卷積單元包括MBConv和Fused MBConv。論文中給出了搜索得到的EfficientNetV2-S模型,結(jié)構(gòu)如下所示。相比V1結(jié)構(gòu),V2在前1~3個stage采用Fused MBConv;另外可以看出前面stage的MBConv的expansion ratio較小,而V1的各個stage的expansion ratio幾乎都是6;V1部分stage采用了5x5卷積核,而V2只采用了3x3卷積核,但包含更多l(xiāng)ayers來彌補(bǔ)感受野;V2中也沒有V1中的最后的 stride-1的stage。這些區(qū)別讓EfficientNetV2參數(shù)量更少,顯存消耗也更少。對EfficientNetV2-S進(jìn)行縮放,可以進(jìn)一步得到另外兩個更大的模型:EfficientNetV2-M和EfficientNetV2-L。前面已經(jīng)說過,V2縮放規(guī)則相比V1增加兩個額外的約束,一個是限制圖像最大size(最大480),二是后面的stage的layers更大。這兩個模型的具體配置從開源的代碼effnetv2_configs中找到,后兩個較大的模型的輸入size均為480。

          下圖給出了EfficientNetV2模型在ImageNet上top-1 acc和train step time,這里的訓(xùn)練采用固定的圖像大小,不過比推理時圖像大小降低30%,而圖中的EffNet(reprod)也是采用這樣的訓(xùn)練策略,可以看到比baseline訓(xùn)練速度和效果均有明顯提升,而EfficientNetV2在訓(xùn)練速度和效果上有進(jìn)一步地提升。

          除了模型設(shè)計優(yōu)化,論文還提出了一種progressive learning策略來進(jìn)一步提升EfficientNetV2的訓(xùn)練速度,簡單來說就訓(xùn)練過程漸進(jìn)地增大圖像大小,但在增大圖像同時也采用更強(qiáng)的正則化策略,訓(xùn)練的正則化策略包括數(shù)據(jù)增強(qiáng)和dropout等,這里更強(qiáng)的正則化指的是采用更大的dropout rate,RandAugment magnitude和mixup ratio。不同的圖像輸入采用不同的正則化策略,這不難理解,因為圖像輸入越大,模型容量越大,此時應(yīng)該采用更強(qiáng)的正則化來防止過擬合,而小的輸入模型容量小,應(yīng)該采用較輕的正則化策略以防止欠擬合。從下表中可以看到,大的圖像輸入要采用更強(qiáng)的數(shù)據(jù)增強(qiáng),而小的圖像輸入要采用較輕的數(shù)據(jù)增強(qiáng)才能訓(xùn)出最優(yōu)模型效果。在實現(xiàn)上,首先對模型設(shè)定訓(xùn)練過程的輸入圖像大小以及數(shù)據(jù)增強(qiáng)的范圍,然后將訓(xùn)練過程分成4個階段(每個階段87個epoch),每進(jìn)入一個階段,圖像大小以及數(shù)據(jù)增強(qiáng)均線性提升。EfficientNetV2的訓(xùn)練設(shè)置如下所示(這里的訓(xùn)練最大image size大約比推理時小30%:380 vs 480):EfficientNetV2在ImageNet上與其它模型對比如下表所示,可以看到無論是參數(shù)量,F(xiàn)LOPs,推理速度還是訓(xùn)練速度上,EfficientNetV2均有明顯的優(yōu)勢。額外一點是,如果用ImageNet21K進(jìn)行預(yù)訓(xùn)練,模型可以取得更好的效果,比如不用預(yù)訓(xùn)練,EfficientNetV2-L比EfficientNetV2-M效果僅提升了0.6個點,僅達(dá)到85.7%,但是預(yù)訓(xùn)練后EfficientNetV2-M效果就達(dá)到了86.2%,所以論文中說:scaling up data size is more effective than simply scaling up model size in high-accuracy regime。

          從EfficientNet到EfficientNetV2,背后不僅僅是一次簡單的迭代,而是包含了谷歌多年來各種工作的堆疊。

          參考

          1. EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks
          2. EfficientNetV2: Smaller Models and Faster Training
          3. google/automl/efficientnetv2



          推薦閱讀

          CPVT:一個卷積就可以隱式編碼位置信息

          SOTA模型Swin Transformer是如何煉成的!

          谷歌AI用30億數(shù)據(jù)訓(xùn)練了一個20億參數(shù)Vision Transformer模型,在ImageNet上達(dá)到新的SOTA!

          BatchNorm的避坑指南(上)

          BatchNorm的避坑指南(下)

          目標(biāo)跟蹤入門篇-相關(guān)濾波

          SOTA模型Swin Transformer是如何煉成的!

          MoCo V3:我并不是你想的那樣!

          Transformer在語義分割上的應(yīng)用

          "未來"的經(jīng)典之作ViT:transformer is all you need!

          PVT:可用于密集任務(wù)backbone的金字塔視覺transformer!

          漲點神器FixRes:兩次超越ImageNet數(shù)據(jù)集上的SOTA

          Transformer為何能闖入CV界秒殺CNN?

          不妨試試MoCo,來替換ImageNet上pretrain模型!


          機(jī)器學(xué)習(xí)算法工程師


          ? ??? ? ? ? ? ? ? ? ? ? ????????? ??一個用心的公眾號


          瀏覽 71
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

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

          手機(jī)掃一掃分享

          分享
          舉報
          <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>
                  夜夜爽人妻 | 亚洲黄色自拍 | 免费黄色国产视频 | 黄片子视频| 日骚逼网 |