1 RepGhost:重參數(shù)化技術(shù)構(gòu)建硬件高效的 Ghost 模塊
GhostNetV2 解讀:NeurIPS'22 Spotlight|華為諾亞GhostNetV2出爐:長距離注意力機(jī)制增強(qiáng)廉價(jià)操作
G-GhostNet 解讀:想要一個(gè)適配GPU端的輕量級網(wǎng)絡(luò)?安排!華為諾亞帶著 G-GhostNet 走來
1.1.1 特征復(fù)用技術(shù)和本文動(dòng)機(jī)
特征復(fù)用技術(shù)是指:通過簡單地連接來自不同層的已有的一些特征圖,來額外獲得一些其他的特征。比如在 DenseNet[1] 中,在一個(gè) Stage 內(nèi),前面層的特征圖被重復(fù)使用并被饋送到它們的后續(xù)層,從而產(chǎn)生越來越多的特征圖?;蛘咴?GhostNet 中,作者通過一些廉價(jià)的操作來生成更多的特征圖,并將它們與原始特征圖 Concat 起來,從而產(chǎn)生越來越多的特征圖。它們都通過 Concat 操作,利用特征復(fù)用技術(shù),來擴(kuò)大 channel 數(shù)量和網(wǎng)絡(luò)容量,同時(shí)保持一個(gè)比較低的 FLOPs。似乎 Concat 操作已經(jīng)成為特性復(fù)用的標(biāo)準(zhǔn)操作。
Concat 操作確實(shí)是一種 0 Params,0 FLOPs 的操作。但是,它在硬件設(shè)備上的計(jì)算成本是不可忽略的。 因?yàn)閰?shù)量和 FLOPs 不是機(jī)器學(xué)習(xí)模型實(shí)際運(yùn)行時(shí)性能的直接成本指標(biāo)。作者發(fā)現(xiàn),在硬件設(shè)備上,由于復(fù)雜的內(nèi)存復(fù)制,Concat 操作比加法操作效率低得多。因此,值得探索一種更好的、硬件效率更高的方法,以更好地適配特征復(fù)用技術(shù)。
因此,作者考慮引入結(jié)構(gòu)重參數(shù)化方法,這個(gè)系列方法的有效性在 CNN 體系結(jié)構(gòu)設(shè)計(jì)中得到了驗(yàn)證。具體而言,模型訓(xùn)練時(shí)是一個(gè)復(fù)雜的結(jié)構(gòu),享受高復(fù)雜度的結(jié)構(gòu)帶來的性能優(yōu)勢,訓(xùn)練好之后再等價(jià)轉(zhuǎn)換為簡單的推理結(jié)構(gòu),且不需要任何時(shí)間成本。受此啟發(fā),作者希望借助結(jié)構(gòu)重參數(shù)化方法來實(shí)現(xiàn)特征的隱式重用,以實(shí)現(xiàn)硬件高效的架構(gòu)設(shè)計(jì)。
所以本文作者希望通過結(jié)構(gòu)重新參數(shù)化技術(shù)開發(fā)一種硬件高效的 RepGhost 模塊,以實(shí)現(xiàn)特征的隱式重用。如前文所述,要把 Concat 操作去掉,同時(shí)修改現(xiàn)有結(jié)構(gòu)以滿足重參數(shù)化的規(guī)則。因此,在推斷之前,特征重用過程可以從特征空間轉(zhuǎn)移到權(quán)重空間,使 RepGhost 模塊高效。
1.1.2 Concat 操作的計(jì)算成本
作者將 GhostNet 1.0x 中的所有 Concat 操作替換成了 Add 操作,Add 操作也是一種處理不同特征的簡單操作,且成本較低。這兩個(gè)運(yùn)算符作用于形狀完全相同的張量上。如下圖1所示為對應(yīng)網(wǎng)絡(luò)中所有32個(gè)對應(yīng)運(yùn)算符的累計(jì)運(yùn)行時(shí)間。Concat 操作的成本是 Add 操作的2倍。
圖1:在基于 ARM 的手機(jī)上 Concat 操作和 Add 操作處理不同 Batch Size 的數(shù)據(jù)的運(yùn)行時(shí)間
圖2:每個(gè)操作符在整個(gè)網(wǎng)絡(luò)中的運(yùn)行時(shí)間的百分比。Diff:Concat 操作和 Add 操作的差值的百分比
1.1.3 Concat 操作和 Add 操作
式中, 代表 Concat 操作。它只保留現(xiàn)有的特征映射,將信息處理留給下面的層。例如,在 Concat 操作之后通常會(huì)有一個(gè) 1×1 卷積來處理信道信息。但是,Concat 操作的成本問題促使作者尋找一種更有效的方法。
通過 Add 操作進(jìn)行特征復(fù)用的過程可以寫成:
式中, 代表 Add 操作。與 Concat 操作不同,Add 操作還具有特征融合的作用,而且特征融合過程是在權(quán)值空間中完成的,不會(huì)引入額外的推理時(shí)間。
基于此,作者提出了以下 RepGhost 模塊。
1.1.4 RepGhost 模塊
這一小節(jié)介紹如何通過重參數(shù)化技術(shù)來進(jìn)行特征復(fù)用,具體而言介紹如何從一個(gè)原始的 Ghost 模塊演變成 RepGhost 模塊。如下圖3所示,從 Ghost 模塊開始:
圖3:從一個(gè)原始的 Ghost 模塊演變成 RepGhost 模塊的過程
(a) 原始的 Ghost 模塊,這里省去了第一步的 1×1 卷積。
(b) 把原始的 Ghost 模塊的 Concat 操作換成 Add 操作,以求更高的效率。
(c) 把 ReLU 移到 Add 操作之后,這種移動(dòng)使得模塊滿足結(jié)構(gòu)重新參數(shù)化規(guī)則,從而可用于快速推理。
(d) 在恒等映射 Identity Mapping 分支中添加 BN 操作,使得在訓(xùn)練過程中帶來非線性,并且可以被融合用于快速推斷。
(e) 模塊 (d) 可以被融合成模塊 (e),用于快速推斷。RepGhost 模塊有一個(gè)簡單的推理結(jié)構(gòu),它只包含規(guī)則的卷積層和ReLU,這使得它具有較高的硬件效率。特征融合的過程是在權(quán)重空間,而不是在特征空間中進(jìn)行,然后把兩個(gè)分支的參數(shù)進(jìn)行融合產(chǎn)生快速推理的結(jié)構(gòu)。
與 Ghost 模塊的對比
作用:
Ghost 模塊提出從廉價(jià)的操作中生成更多的特征圖,因此可以以低成本的方式擴(kuò)大模型的容量。
RepGhost 模塊提出了一種更有效的方法,通過重參數(shù)化來生成和融合不同的特征圖。與 Ghost 模塊不同,RepGhost 模塊去掉了低效的 Concat 操作,節(jié)省了大量推理時(shí)間。并且信息融合過程由 Add 操作以隱含的方式執(zhí)行,而不是留給其他卷積層。
1.1.5 RepGhostNet 網(wǎng)絡(luò)
圖4:(a) GhostNet 網(wǎng)絡(luò)的一個(gè) Block。(b) RepGhost 網(wǎng)絡(luò)訓(xùn)練時(shí)的一個(gè) Block。(c) RepGhost 網(wǎng)絡(luò)推理時(shí)的一個(gè) Block
下圖5所示是 RepGhostNet 的網(wǎng)絡(luò)架構(gòu)。首先是一個(gè)輸出通道為16的卷積層處理輸入數(shù)據(jù)。一堆正常的 1×1 卷積和 AvgPool 預(yù)測最終輸出。根據(jù)輸入大小將 RepGhost Bottleneck 分成5組,并且為每組中除最后一個(gè) Bottleneck 之外的最后一個(gè) Bottleneck 設(shè)置 stride=2。
圖5:RepGhost 網(wǎng)絡(luò)架構(gòu)
1.1.6 實(shí)驗(yàn)結(jié)果
ImageNet-1K 實(shí)驗(yàn)結(jié)果
如下圖所示是 ImageNet-1K 圖像分類任務(wù)的實(shí)驗(yàn)結(jié)果。NVIDIA V100 GPUs ×8 作為訓(xùn)練設(shè)備,Batch size 開到1024,優(yōu)化器 SGD (0.9 momentum),基本學(xué)習(xí)率為 0.6,Epoch 數(shù)為 300,weight decay 為1e-5,并且使用衰減系數(shù)為0.9999的 EMA (Exponential Moving Average) 權(quán)重衰減。數(shù)據(jù)增強(qiáng)使用 timm 庫的圖像裁剪和翻轉(zhuǎn),prob 0.2 的隨機(jī)擦除。對于更大的模型 RepGhostNet 1.3×,額外使用 auto augment。
圖6:ImageNet-1K 實(shí)驗(yàn)結(jié)果
實(shí)驗(yàn)結(jié)果如上圖6所示。根據(jù) FLOPs,所有模型被分為3個(gè)級別。在基于 ARM 的手機(jī)上評估每個(gè)模型的相應(yīng)延遲。圖1描繪了所有模型的延遲和精度。可以看到,在準(zhǔn)確性-延遲權(quán)衡方面,RepGhostNet 優(yōu)于其他手動(dòng)設(shè)計(jì)和基于 NAS 的模型。
RepGhostNet 實(shí)現(xiàn)了與其他先進(jìn)的輕量級 CNN 相當(dāng)甚至更好的準(zhǔn)確性,而且延遲低得多。例如,RepGhostNet 0.5× 比 GhostNet 0.5× 快 20%,Top-1 準(zhǔn)確性高 0.5%,RepGhostNet 1.0× 比 MobileNetV3 Large 0.75× 快 14%,Top-1 準(zhǔn)確性高 0.7%。在延遲相當(dāng)?shù)那闆r下,RepGhostNet 在所有三個(gè)量級大小的模型上面都超過所有對手模型。比如,RepGhostNet 0.58× 比 GhostNet 0.5× 高 2.5%,RepGhostNet 1.11× 比MobileNetV3 Large 0.75× 高 1.6%。
目標(biāo)檢測和實(shí)例分割實(shí)驗(yàn)結(jié)果
使用 RetinaNet 和 Mask RCNN分別用于目標(biāo)檢測任務(wù)和實(shí)例分割任務(wù)。僅替換 ImageNet 預(yù)訓(xùn)練的主干,并在8個(gè) NVIDIA V100 GPUs 中訓(xùn)練12個(gè)時(shí)期的模型結(jié)果如下圖7所示。RepGhostNet 在兩個(gè)任務(wù)上都優(yōu)于MobileNetV2,MobileNetV3 和 GhostNet,且推理速度更快。例如,在延遲相當(dāng)?shù)那闆r下,RepGhostNet 1.3× 在這兩項(xiàng)任務(wù)中比 GhostNet 1.1× 高出 1% 以上,RepGhostNet 1.5× 比 MobileNetV2 1.0× 高出 2% 以上。
圖7:目標(biāo)檢測和實(shí)例分割實(shí)驗(yàn)結(jié)果
消融實(shí)驗(yàn)1:與 Ghost-Res50 的對比
為了驗(yàn)證大模型的 RepGhost 模塊的泛化性,作者將其與 GhostNet 模型 Ghost-Res50 進(jìn)行了比較。用 RepGhost 模塊替換 Ghost-Res50 中的 Ghost 模塊,得到 RepGhost-Res50。所有模型都使用相同的訓(xùn)練設(shè)置進(jìn)行訓(xùn)練。對于 MNN 延時(shí),與圖6結(jié)果使用相同的手機(jī)測得。對于 TRT 延遲,作者首先將模型轉(zhuǎn)換為 TensorRT,然后在 Batch size 為32的 T4 GPU 上運(yùn)行框架上的每個(gè)模型100次,并報(bào)告平均延遲。
結(jié)果如下圖8所示。可以看到,RepGhost-Res50 在 CPU 和 GPU 上都明顯快于 Ghost-Res50,但精度相當(dāng)。特別地,在 MNN 推理和 TensorRT 推理中,RepGhost-Res50 (s=2) 比 Ghost-Res50 (s=4) 分別獲得了 22% 和44% 的加速比。
圖8:與 Ghost-Res50 的對比
消融實(shí)驗(yàn)2:重參數(shù)化結(jié)構(gòu)
為了驗(yàn)證重新參數(shù)化結(jié)構(gòu),作者在 RepGhostNet 0.5× 上進(jìn)行消融實(shí)驗(yàn),方法是在圖 3(c) 所示的模塊的恒等映射分支中交替使用 BN,1×1 Depth-wise Convolution 和恒等映射本身。結(jié)果如下圖9所示??梢钥吹剑瑤в?BN 重參數(shù)化的 RepGhostNet 0.5× 達(dá)到了最好的性能。作者將其作為所有其他 RepGhostNet 的默認(rèn)重新參數(shù)化結(jié)構(gòu)。
作者將這種改善歸因于 BN 的非線性,它提供了比恒等映射更多的信息。1×1 Depth-wise Convolution 之后也是 BN,因此,由于后面的歸一化,其參數(shù)對特征不起作用,并且可能使 BN 統(tǒng)計(jì)不穩(wěn)定,作者推測這導(dǎo)致了較差的性能。
圖9:重新參數(shù)化結(jié)構(gòu)消融實(shí)驗(yàn)
消融實(shí)驗(yàn)3:Shortcut 的必要性
盡管 會(huì)增加內(nèi)存訪問成本 (從而影響運(yùn)行時(shí)性能),但對于計(jì)算受限的移動(dòng)設(shè)備來說,這種影響可以忽略不計(jì),如表所示。7.考慮到所有這些,我們確認(rèn)快捷方式對于輕量級CNN是必要的,并在我們的RepGhostNet中保留快捷方式。mageNet 數(shù)據(jù)集上的準(zhǔn)確性,結(jié)果如下圖顯示了使用和不使用快捷方式時(shí) RepGhostNet 的準(zhǔn)確性和延遲。
很明顯,Shortcut 不會(huì)嚴(yán)重影響實(shí)際運(yùn)行的延時(shí),但有助于優(yōu)化過程。另一方面,大模型去掉 Shortcut 對 Latency 的影響要小于小模型,這可能意味著 Shortcut 對于輕量級 CNN 比大型模型更重要,例如 RepVGG 和 MobileOne。
盡管 Shortcut 會(huì)增加內(nèi)存訪問成本 (從而影響運(yùn)行時(shí)性能),但對于計(jì)算受限的移動(dòng)設(shè)備來說,這種影響可以忽略不計(jì)。考慮到所有這些,我們認(rèn)為 Shortcut 對于輕量級 CNN 是必要的,并在 RepGhostNet 中保留了 Shortcut 操作。
圖10:Shortcut 的必要性消融實(shí)驗(yàn)結(jié)果
總結(jié)
GhostNet 通過一些廉價(jià)的操作來生成更多的特征圖,并將它們與原始特征圖 Concat 起來,從而產(chǎn)生越來越多的特征圖,它利用特征復(fù)用技術(shù),來擴(kuò)大 channel 數(shù)量和網(wǎng)絡(luò)容量,同時(shí)保持一個(gè)比較低的 FLOPs。似乎 Concat 操作已經(jīng)成為特性復(fù)用的標(biāo)準(zhǔn)操作。Concat 操作確實(shí)是一種 0 Params,0 FLOPs 的操作。
但是,它在硬件設(shè)備上的計(jì)算成本是不可忽略的。所以本文作者希望通過結(jié)構(gòu)重新參數(shù)化技術(shù)開發(fā)一種硬件高效的 RepGhost 模塊,以實(shí)現(xiàn)特征的隱式重用。RepGhostNet 把 Concat 操作去掉,同時(shí)修改現(xiàn)有結(jié)構(gòu)以滿足重參數(shù)化的規(guī)則。最終得到的 RepGhostNet 是一個(gè)高效的輕量級 CNN,在幾個(gè)視覺任務(wù)中都展示出了移動(dòng)設(shè)備的精度-延遲權(quán)衡方面良好的技術(shù)水平。
審核編輯:劉清
-
gpu
+關(guān)注
關(guān)注
28文章
4740瀏覽量
128951 -
機(jī)器學(xué)習(xí)
+關(guān)注
關(guān)注
66文章
8418瀏覽量
132646 -
cnn
+關(guān)注
關(guān)注
3文章
352瀏覽量
22215 -
ema
+關(guān)注
關(guān)注
0文章
3瀏覽量
2397
原文標(biāo)題:輕量級CNN模塊!RepGhost:重參數(shù)化實(shí)現(xiàn)硬件高效的Ghost模塊
文章出處:【微信號:CVer,微信公眾號:CVer】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論