论文地址:https://arxiv.org/abs/2307.09283
代码地址:https://github.com/THU-MIG/RepViT
RepViT 在移动端 ViT 架构中表现出色,展现出显著的优势。接下来,我们将探讨本研究的贡献所在。
MSHA
)可以让模型学习全局表示。然而,轻量级 ViTs 和轻量级 CNNs 之间的架构差异尚未得到充分研究。MobileNetV3
的移动友好性。这便衍生出一个新的纯轻量级 CNN 家族的诞生,即RepViT
。值得注意的是,尽管 RepViT 具有 MetaFormer 结构,但它完全由卷积组成。RepViT
超越了现有的最先进的轻量级 ViTs,并在各种视觉任务上显示出优于现有最先进轻量级ViTs的性能和效率,包括 ImageNet 分类、COCO-2017 上的目标检测和实例分割,以及 ADE20k 上的语义分割。特别地,在ImageNet
上,RepViT
在 iPhone 12
上达到了近乎 1ms 的延迟和超过 80% 的Top-1 准确率,这是轻量级模型的首次突破。好了,接下来大家应该关心的应该时“如何设计到如此低延迟但精度还很6的模型”出来呢?
再 ConvNeXt
中,作者们是基于 ResNet50
架构的基础上通过严谨的理论和实验分析,最终设计出一个非常优异的足以媲美 Swin-Transformer
的纯卷积神经网络架构。同样地,RepViT
也是主要通过将轻量级 ViTs 的架构设计逐步整合到标准轻量级 CNN,即MobileNetV3-L
,来对其进行针对性地改造(魔改)。在这个过程中,作者们考虑了不同粒度级别的设计元素,并通过一系列步骤达到优化的目标。
在論文中,新引入了一個用於衡量行動裝置上延遲的指標,並確保訓練策略與目前流行的輕量級ViTs 保持一致。這項措施的目的是為了確保模型訓練的一貫性,其中涉及延遲度量和訓練策略的調整兩個關鍵概念。
延遲度量指標
為了更準確地衡量模型在真實行動裝置上的效能,作者選擇了直接測量模型在裝置上的實際延遲,以此作為基準度量。這個度量方法不同於先前的研究,它們主要透過FLOPs
或模型大小等指標來優化模型的推理速度,這些指標並不總是能很好地反映在行動應用中的實際延遲。
訓練策略的對齊
這裡,將 MobileNetV3-L 的訓練策略調整以與其他輕量級 ViTs 模型對齊。這包括使用 AdamW
優化器【ViTs 模型必備的優化器】,進行 5 個 epoch 的預熱訓練,以及使用餘弦退火學習率調度進行 300 個 epoch 的訓練。儘管這種調整導致了模型準確率的略微下降,但可以保證公平性。
接下來,基於一致的訓練設置,作者們探索了最優的區塊設計。區塊設計是 CNN 架構中的重要組成部分,優化區塊設計有助於提高網路的效能。
分離Token 混音器和通道混合器
這塊主要是對 MobileNetV3-L
的塊結構進行了改進,分離了令牌混合器和通道混合器。原來的 MobileNetV3 區塊結構包含一個 1x1 擴張卷積,然後是一個深度卷積和一個 1x1 的投影層,然後透過殘差連接連接輸入和輸出。在此基礎上,RepViT 將深度卷積提前,使得通道混合器和令牌混合器能夠被分開。為了提高性能,還引入了結構重參數化來在訓練時為深度濾波器引入多分支拓撲。最終,作者們成功地在 MobileNetV3 區塊中分離了令牌混合器和通道混合器,並將這種區塊命名為 RepViT 區塊。
降低擴張比例並增加寬度
在通道混合器中,原本的擴張比例是4,這表示MLP 區塊的隱藏維度是輸入維度的四倍,消耗了大量的計算資源,對推理時間有很大的影響。為了緩解這個問題,我們可以將擴張比例降低到 2,從而減少了參數冗餘和延遲,使得 MobileNetV3-L 的延遲降低到 0.65ms。隨後,透過增加網路的寬度,即增加各階段的通道數量,Top-1 準確率提高到 73.5%,而延遲只增加到 0.89ms!
在這一步,本文進一步優化了MobileNetV3-L在行動裝置上的效能,主要從宏觀架構元素出發,包括stem,降採樣層,分類器以及整體階段比例。透過優化這些宏觀架構元素,模型的效能可以顯著提高。
淺層網路使用卷積擷取器
#圖片
ViTs 通常使用一個將輸入影像分割成非重疊補丁的 "patchify" 操作作為 stem。然而,這種方法在訓練優化性和對訓練配方的敏感度上存在問題。因此,作者們採用了早期卷積來代替,這種方法已經被許多輕量級 ViTs 所採納。對比之下,MobileNetV3-L 使用了一個更複雜的 stem 進行 4x 下採樣。這樣一來,雖然濾波器的初始數量增加到24,但總的延遲降低到0.86ms,同時 top-1 準確率提高到 73.9%。
在 ViTs 中,空間下取樣通常透過一個單獨的補丁合併層來實現。因此這裡我們可以採用一個單獨且更深的下採樣層,以增加網路深度並減少因解析度降低而帶來資訊損失的程度。具體地,作者們首先使用一個 1x1 卷積來調整通道維度,然後將兩個 1x1 卷積的輸入和輸出通過殘差連接,形成一個前饋網路。此外,他們還在前面增加了 RepViT 區塊以進一步加深下取樣層,這一步提高了 top-1 準確率到 75.4%,同時延遲為 0.96ms。
更簡單的分類器
#在輕量級ViTs 中,分類器通常由一個全域平均池化層後面接一個線性層組成。相比之下,MobileNetV3-L 使用了一個更複雜的分類器。因為現在最後的階段有更多的通道,所以作者們將它替換為一個簡單的分類器,即一個全域平均池化層和一個線性層,這一步將延遲降低到0.77ms,同時top-1 準確率為74.8%。
整體階段比例
階段比例代表了不同階段中區塊數量的比例,從而表示了計算在各階段中的分佈。論文選擇了一個更優的階段比例 1:1:7:1,然後增加網路深度到 2:2:14:2,從而實現了一個更深的佈局。這一步驟將 top-1 準確率提高到 76.9%,同時延遲為 1.02 ms。
接下來,RepViT 透過逐層微觀設計來調整輕量級CNN,這包括選擇合適的捲積核大小和優化擠壓-激勵(Squeeze- and-excitation,簡稱SE)層的位置。這兩種方法都能顯著改善模型效能。
卷積核大小的選擇
眾所周知,CNNs 的效能和延遲通常受到卷積核大小的影響。例如,為了建模像 MHSA 這樣的遠距離上下文依賴,ConvNeXt 使用了大卷積核,從而實現了顯著的效能提升。然而,大卷積核對於行動裝置並不友好,因為它的計算複雜性和記憶體存取成本。 MobileNetV3-L 主要使用 3x3 的捲積,有一部分區塊中使用 5x5 的捲積。作者們將它們替換為3x3的捲積,這導致延遲降低到 1.00ms,同時保持了76.9%的top-1準確率。
SE 層的位置
自註意力模組相對於卷積的一個優點是根據輸入調整權重的能力,這稱為資料驅動屬性。作為一個通道注意力模組,SE層可以彌補卷積在缺乏資料驅動屬性上的限制,從而帶來更好的效能。 MobileNetV3-L 在某些區塊中加入了SE層,主要集中在後兩個階段。然而,與分辨率較高的階段相比,分辨率較低的階段從SE提供的全局平均池化操作中獲得的準確率提升較小。作者們設計了一種策略,在所有階段以交叉塊的方式使用SE層,從而在最小的延遲增量下最大化準確率的提升,這一步將top-1準確率提升到77.4%,同時延遲降低到0.87ms。 【這點其實百度在很早前就已經做過實驗比對得到過這個結論了,SE 層放置在靠近深層的地方效果好】
最終,透過整合上述改進策略,我們便得到了模型RepViT
的整體架構,該模型有多個變種,例如RepViT-M1/ M2/M3
。同樣地,不同的變種主要透過每個階段的通道數和區塊數來區分。
本文透過引入輕量級ViT 的架構選擇,重新審視了輕量級CNNs 的高效設計。這導致了 RepViT 的出現,這是一種新的輕量級 CNNs 家族,專為資源受限的行動裝置設計。在各種視覺任務上,RepViT 超越了現有的最先進的輕量級 ViTs 和 CNNs,顯示出優越的性能和延遲。這突顯了純粹的輕量級 CNNs 對行動裝置的潛力。
以上是1.3ms耗時!清華最新開源行動裝置神經網路架構 RepViT的詳細內容。更多資訊請關注PHP中文網其他相關文章!