1 RepGhost:重參數(shù)化技術(shù)構(gòu)建硬件高效的 Ghost 模塊
GhostNetV2 解讀:NeurIPS'22 Spotlight|華為諾亞GhostNetV2出爐:長距離注意力機制增強廉價操作
G-GhostNet 解讀:想要一個適配GPU端的輕量級網(wǎng)絡(luò)?安排!華為諾亞帶著 G-GhostNet 走來
1.1.1 特征復用技術(shù)和本文動機
特征復用技術(shù)是指:通過簡單地連接來自不同層的已有的一些特征圖,來額外獲得一些其他的特征。比如在 DenseNet[1] 中,在一個 Stage 內(nèi),前面層的特征圖被重復使用并被饋送到它們的后續(xù)層,從而產(chǎn)生越來越多的特征圖?;蛘咴?GhostNet 中,作者通過一些廉價的操作來生成更多的特征圖,并將它們與原始特征圖 Concat 起來,從而產(chǎn)生越來越多的特征圖。它們都通過 Concat 操作,利用特征復用技術(shù),來擴大 channel 數(shù)量和網(wǎng)絡(luò)容量,同時保持一個比較低的 FLOPs。似乎 Concat 操作已經(jīng)成為特性復用的標準操作。
Concat 操作確實是一種 0 Params,0 FLOPs 的操作。但是,它在硬件設(shè)備上的計算成本是不可忽略的。 因為參數(shù)量和 FLOPs 不是機器學習模型實際運行時性能的直接成本指標。作者發(fā)現(xiàn),在硬件設(shè)備上,由于復雜的內(nèi)存復制,Concat 操作比加法操作效率低得多。因此,值得探索一種更好的、硬件效率更高的方法,以更好地適配特征復用技術(shù)。
因此,作者考慮引入結(jié)構(gòu)重參數(shù)化方法,這個系列方法的有效性在 CNN 體系結(jié)構(gòu)設(shè)計中得到了驗證。具體而言,模型訓練時是一個復雜的結(jié)構(gòu),享受高復雜度的結(jié)構(gòu)帶來的性能優(yōu)勢,訓練好之后再等價轉(zhuǎn)換為簡單的推理結(jié)構(gòu),且不需要任何時間成本。受此啟發(fā),作者希望借助結(jié)構(gòu)重參數(shù)化方法來實現(xiàn)特征的隱式重用,以實現(xiàn)硬件高效的架構(gòu)設(shè)計。
所以本文作者希望通過結(jié)構(gòu)重新參數(shù)化技術(shù)開發(fā)一種硬件高效的 RepGhost 模塊,以實現(xiàn)特征的隱式重用。如前文所述,要把 Concat 操作去掉,同時修改現(xiàn)有結(jié)構(gòu)以滿足重參數(shù)化的規(guī)則。因此,在推斷之前,特征重用過程可以從特征空間轉(zhuǎn)移到權(quán)重空間,使 RepGhost 模塊高效。
1.1.2 Concat 操作的計算成本
作者將 GhostNet 1.0x 中的所有 Concat 操作替換成了 Add 操作,Add 操作也是一種處理不同特征的簡單操作,且成本較低。這兩個運算符作用于形狀完全相同的張量上。如下圖1所示為對應(yīng)網(wǎng)絡(luò)中所有32個對應(yīng)運算符的累計運行時間。Concat 操作的成本是 Add 操作的2倍。

圖1:在基于 ARM 的手機上 Concat 操作和 Add 操作處理不同 Batch Size 的數(shù)據(jù)的運行時間
圖2:每個操作符在整個網(wǎng)絡(luò)中的運行時間的百分比。Diff:Concat 操作和 Add 操作的差值的百分比
1.1.3 Concat 操作和 Add 操作


式中, 代表 Concat 操作。它只保留現(xiàn)有的特征映射,將信息處理留給下面的層。例如,在 Concat 操作之后通常會有一個 1×1 卷積來處理信道信息。但是,Concat 操作的成本問題促使作者尋找一種更有效的方法。
通過 Add 操作進行特征復用的過程可以寫成:

式中, 代表 Add 操作。與 Concat 操作不同,Add 操作還具有特征融合的作用,而且特征融合過程是在權(quán)值空間中完成的,不會引入額外的推理時間。
基于此,作者提出了以下 RepGhost 模塊。
1.1.4 RepGhost 模塊
這一小節(jié)介紹如何通過重參數(shù)化技術(shù)來進行特征復用,具體而言介紹如何從一個原始的 Ghost 模塊演變成 RepGhost 模塊。如下圖3所示,從 Ghost 模塊開始:

圖3:從一個原始的 Ghost 模塊演變成 RepGhost 模塊的過程
(a) 原始的 Ghost 模塊,這里省去了第一步的 1×1 卷積。
(b) 把原始的 Ghost 模塊的 Concat 操作換成 Add 操作,以求更高的效率。
(c) 把 ReLU 移到 Add 操作之后,這種移動使得模塊滿足結(jié)構(gòu)重新參數(shù)化規(guī)則,從而可用于快速推理。
(d) 在恒等映射 Identity Mapping 分支中添加 BN 操作,使得在訓練過程中帶來非線性,并且可以被融合用于快速推斷。
(e) 模塊 (d) 可以被融合成模塊 (e),用于快速推斷。RepGhost 模塊有一個簡單的推理結(jié)構(gòu),它只包含規(guī)則的卷積層和ReLU,這使得它具有較高的硬件效率。特征融合的過程是在權(quán)重空間,而不是在特征空間中進行,然后把兩個分支的參數(shù)進行融合產(chǎn)生快速推理的結(jié)構(gòu)。
與 Ghost 模塊的對比
作用:
Ghost 模塊提出從廉價的操作中生成更多的特征圖,因此可以以低成本的方式擴大模型的容量。
RepGhost 模塊提出了一種更有效的方法,通過重參數(shù)化來生成和融合不同的特征圖。與 Ghost 模塊不同,RepGhost 模塊去掉了低效的 Concat 操作,節(jié)省了大量推理時間。并且信息融合過程由 Add 操作以隱含的方式執(zhí)行,而不是留給其他卷積層。

1.1.5 RepGhostNet 網(wǎng)絡(luò)


圖4:(a) GhostNet 網(wǎng)絡(luò)的一個 Block。(b) RepGhost 網(wǎng)絡(luò)訓練時的一個 Block。(c) RepGhost 網(wǎng)絡(luò)推理時的一個 Block
下圖5所示是 RepGhostNet 的網(wǎng)絡(luò)架構(gòu)。首先是一個輸出通道為16的卷積層處理輸入數(shù)據(jù)。一堆正常的 1×1 卷積和 AvgPool 預測最終輸出。根據(jù)輸入大小將 RepGhost Bottleneck 分成5組,并且為每組中除最后一個 Bottleneck 之外的最后一個 Bottleneck 設(shè)置 stride=2。

圖5:RepGhost 網(wǎng)絡(luò)架構(gòu)
1.1.6 實驗結(jié)果
ImageNet-1K 實驗結(jié)果
如下圖所示是 ImageNet-1K 圖像分類任務(wù)的實驗結(jié)果。NVIDIA V100 GPUs ×8 作為訓練設(shè)備,Batch size 開到1024,優(yōu)化器 SGD (0.9 momentum),基本學習率為 0.6,Epoch 數(shù)為 300,weight decay 為1e-5,并且使用衰減系數(shù)為0.9999的 EMA (Exponential Moving Average) 權(quán)重衰減。數(shù)據(jù)增強使用 timm 庫的圖像裁剪和翻轉(zhuǎn),prob 0.2 的隨機擦除。對于更大的模型 RepGhostNet 1.3×,額外使用 auto augment。

圖6:ImageNet-1K 實驗結(jié)果
實驗結(jié)果如上圖6所示。根據(jù) FLOPs,所有模型被分為3個級別。在基于 ARM 的手機上評估每個模型的相應(yīng)延遲。圖1描繪了所有模型的延遲和精度??梢钥吹?,在準確性-延遲權(quán)衡方面,RepGhostNet 優(yōu)于其他手動設(shè)計和基于 NAS 的模型。
RepGhostNet 實現(xiàn)了與其他先進的輕量級 CNN 相當甚至更好的準確性,而且延遲低得多。例如,RepGhostNet 0.5× 比 GhostNet 0.5× 快 20%,Top-1 準確性高 0.5%,RepGhostNet 1.0× 比 MobileNetV3 Large 0.75× 快 14%,Top-1 準確性高 0.7%。在延遲相當?shù)那闆r下,RepGhostNet 在所有三個量級大小的模型上面都超過所有對手模型。比如,RepGhostNet 0.58× 比 GhostNet 0.5× 高 2.5%,RepGhostNet 1.11× 比MobileNetV3 Large 0.75× 高 1.6%。
目標檢測和實例分割實驗結(jié)果
使用 RetinaNet 和 Mask RCNN分別用于目標檢測任務(wù)和實例分割任務(wù)。僅替換 ImageNet 預訓練的主干,并在8個 NVIDIA V100 GPUs 中訓練12個時期的模型結(jié)果如下圖7所示。RepGhostNet 在兩個任務(wù)上都優(yōu)于MobileNetV2,MobileNetV3 和 GhostNet,且推理速度更快。例如,在延遲相當?shù)那闆r下,RepGhostNet 1.3× 在這兩項任務(wù)中比 GhostNet 1.1× 高出 1% 以上,RepGhostNet 1.5× 比 MobileNetV2 1.0× 高出 2% 以上。

圖7:目標檢測和實例分割實驗結(jié)果
消融實驗1:與 Ghost-Res50 的對比
為了驗證大模型的 RepGhost 模塊的泛化性,作者將其與 GhostNet 模型 Ghost-Res50 進行了比較。用 RepGhost 模塊替換 Ghost-Res50 中的 Ghost 模塊,得到 RepGhost-Res50。所有模型都使用相同的訓練設(shè)置進行訓練。對于 MNN 延時,與圖6結(jié)果使用相同的手機測得。對于 TRT 延遲,作者首先將模型轉(zhuǎn)換為 TensorRT,然后在 Batch size 為32的 T4 GPU 上運行框架上的每個模型100次,并報告平均延遲。
結(jié)果如下圖8所示。可以看到,RepGhost-Res50 在 CPU 和 GPU 上都明顯快于 Ghost-Res50,但精度相當。特別地,在 MNN 推理和 TensorRT 推理中,RepGhost-Res50 (s=2) 比 Ghost-Res50 (s=4) 分別獲得了 22% 和44% 的加速比。

圖8:與 Ghost-Res50 的對比
消融實驗2:重參數(shù)化結(jié)構(gòu)
為了驗證重新參數(shù)化結(jié)構(gòu),作者在 RepGhostNet 0.5× 上進行消融實驗,方法是在圖 3(c) 所示的模塊的恒等映射分支中交替使用 BN,1×1 Depth-wise Convolution 和恒等映射本身。結(jié)果如下圖9所示??梢钥吹?,帶有 BN 重參數(shù)化的 RepGhostNet 0.5× 達到了最好的性能。作者將其作為所有其他 RepGhostNet 的默認重新參數(shù)化結(jié)構(gòu)。
作者將這種改善歸因于 BN 的非線性,它提供了比恒等映射更多的信息。1×1 Depth-wise Convolution 之后也是 BN,因此,由于后面的歸一化,其參數(shù)對特征不起作用,并且可能使 BN 統(tǒng)計不穩(wěn)定,作者推測這導致了較差的性能。

圖9:重新參數(shù)化結(jié)構(gòu)消融實驗
消融實驗3:Shortcut 的必要性
盡管 會增加內(nèi)存訪問成本 (從而影響運行時性能),但對于計算受限的移動設(shè)備來說,這種影響可以忽略不計,如表所示。7.考慮到所有這些,我們確認快捷方式對于輕量級CNN是必要的,并在我們的RepGhostNet中保留快捷方式。mageNet 數(shù)據(jù)集上的準確性,結(jié)果如下圖顯示了使用和不使用快捷方式時 RepGhostNet 的準確性和延遲。
很明顯,Shortcut 不會嚴重影響實際運行的延時,但有助于優(yōu)化過程。另一方面,大模型去掉 Shortcut 對 Latency 的影響要小于小模型,這可能意味著 Shortcut 對于輕量級 CNN 比大型模型更重要,例如 RepVGG 和 MobileOne。
盡管 Shortcut 會增加內(nèi)存訪問成本 (從而影響運行時性能),但對于計算受限的移動設(shè)備來說,這種影響可以忽略不計。考慮到所有這些,我們認為 Shortcut 對于輕量級 CNN 是必要的,并在 RepGhostNet 中保留了 Shortcut 操作。

圖10:Shortcut 的必要性消融實驗結(jié)果
總結(jié)
GhostNet 通過一些廉價的操作來生成更多的特征圖,并將它們與原始特征圖 Concat 起來,從而產(chǎn)生越來越多的特征圖,它利用特征復用技術(shù),來擴大 channel 數(shù)量和網(wǎng)絡(luò)容量,同時保持一個比較低的 FLOPs。似乎 Concat 操作已經(jīng)成為特性復用的標準操作。Concat 操作確實是一種 0 Params,0 FLOPs 的操作。
但是,它在硬件設(shè)備上的計算成本是不可忽略的。所以本文作者希望通過結(jié)構(gòu)重新參數(shù)化技術(shù)開發(fā)一種硬件高效的 RepGhost 模塊,以實現(xiàn)特征的隱式重用。RepGhostNet 把 Concat 操作去掉,同時修改現(xiàn)有結(jié)構(gòu)以滿足重參數(shù)化的規(guī)則。最終得到的 RepGhostNet 是一個高效的輕量級 CNN,在幾個視覺任務(wù)中都展示出了移動設(shè)備的精度-延遲權(quán)衡方面良好的技術(shù)水平。
審核編輯:劉清
-
gpu
+關(guān)注
關(guān)注
28文章
5053瀏覽量
134036 -
機器學習
+關(guān)注
關(guān)注
66文章
8533瀏覽量
136024 -
cnn
+關(guān)注
關(guān)注
3文章
355瀏覽量
23178 -
ema
+關(guān)注
關(guān)注
0文章
4瀏覽量
2484
原文標題:輕量級CNN模塊!RepGhost:重參數(shù)化實現(xiàn)硬件高效的Ghost模塊
文章出處:【微信號:CVer,微信公眾號:CVer】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄

術(shù)開發(fā)一種硬件高效的RepGhost模塊
評論