AI研習(xí)圖書館,發(fā)現(xiàn)不一樣的精彩世界
由于應(yīng)用設(shè)備內(nèi)存以及計(jì)算資源限制,將常規(guī)的CNN架構(gòu)部署到移動(dòng)設(shè)備是件非常困難的事。在將深度神經(jīng)網(wǎng)絡(luò)運(yùn)用到移動(dòng)設(shè)備的過程中,怎么保證性能不減,且計(jì)算量變得更少,成為研究的重點(diǎn)之一。常用的方法有剪枝、量化、蒸餾以及設(shè)計(jì)一些高效輕量的神經(jīng)網(wǎng)絡(luò)等。目前已經(jīng)出現(xiàn)很多經(jīng)典高效的輕量形卷積神經(jīng)網(wǎng)絡(luò),例如MobileNet,ShuffleNet等。 近年來,雖然涌現(xiàn)了許多移動(dòng)端網(wǎng)絡(luò)架構(gòu)設(shè)計(jì),但是大部分都是從減少卷積計(jì)算量的思路出發(fā),例如:谷歌出品的Mobilenet系列是提出了「Depthwise+Pointwise卷積」來減少計(jì)算量,曠視則是提出「通道混洗」,利用轉(zhuǎn)置操作,均勻的shuffle各個(gè)通道進(jìn)行卷積。Mixnet是在Mobilenet基礎(chǔ)上,關(guān)注了卷積核的大小,通過「不同大小卷積核」所生成的卷積圖在不增加計(jì)算量前提下進(jìn)一步提高精度。 而華為的Ghostnet則是聚焦于「特征圖冗余」,希望通過少量的計(jì)算(即文中的cheap operation)得到大量特征圖。而Ghostnet在相同計(jì)算量下,精度超越了Mobilenetv3,達(dá)到了75.7%分類準(zhǔn)確率( ImageNet ILSVRC-2012)。 何為特征圖冗余?在將深度神經(jīng)網(wǎng)絡(luò)應(yīng)用到移動(dòng)設(shè)備的浪潮中,怎么保證性能不減,且計(jì)算量變得更少,成為研究的重點(diǎn)之一。深度卷積神經(jīng)網(wǎng)絡(luò)通常是由大量的卷積塊所組成的,導(dǎo)致大量的計(jì)算成本。盡管最近的工作,例如MobileNet和ShuffleNet引入了深度可分離卷積或混洗操作,以使用較小的卷積核(浮點(diǎn)運(yùn)算)來構(gòu)建有效的CNN,其余1x1卷積層仍將占用大量內(nèi)存和FLOPs。 華為諾亞方舟實(shí)驗(yàn)室的團(tuán)隊(duì)沒有沿著這條路繼續(xù)前進(jìn),而是另辟蹊徑: “特征圖對”中的一個(gè)特征圖,可以通過廉價(jià)操作由另一特征圖變換而獲得,則可以認(rèn)為其中一個(gè)特征圖是另一個(gè)的“幻影”。 這是不是意味著,并非所有特征圖都要用卷積操作來得到?“幻影”特征圖,也可以用更廉價(jià)的操作來生成? 于是,就有了GhostNet的基礎(chǔ)——Ghost模塊,用更少的參數(shù),生成與普通卷積層相同數(shù)量的特征圖,其需要的算力資源,要比普通卷積層要低,集成到現(xiàn)有設(shè)計(jì)好的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)中,則能夠降低計(jì)算成本。 因此,本文提出了一種更高效的輕量形卷積神經(jīng)網(wǎng)絡(luò)GhostNet,其核心思想是用更少的參數(shù)生成更多的特征圖。 1. Ghost 模塊 ![]() ![]() ![]() ![]() 如上圖所示,先通過常規(guī)卷積,生成部分特征圖。再在這特征圖基礎(chǔ)上得到新的特征圖。最后兩部分特征圖在通道維度上連結(jié),生成最終的output。 下面講解一下作者是如何進(jìn)行操作的。 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() 這里, ![]() ![]() ![]() Ghost本質(zhì)可以理解為depth wise convolution 和 point wise convolution的重新組合。Ghost module 中的primary conv是一個(gè)point wise convolution;;Ghost module的cheap opration 是一個(gè)depth wise convolution。 Ghost bottleneck主要由兩個(gè)堆疊的Ghost模塊組成。第一個(gè)用作擴(kuò)展層,增加了通道數(shù)。第二個(gè)用于減少通道數(shù),以與shortcut路徑匹配。然后,使用shortcut連接這兩個(gè)Ghost模塊的輸入和輸出。 研究團(tuán)隊(duì)表示,這里借鑒了MobileNetV2中的思路:第二個(gè)Ghost模塊之后不使用ReLU,其他層在每層之后都應(yīng)用了批量歸一化(BN)和ReLU非線性激活。 這里說的Ghost bottleneck,適用于上圖Stride= 1情況。對于Stride = 2的情況,shortcut路徑由下采樣層和Stride = 2的深度卷積來實(shí)現(xiàn)。此外,而且出于效率考慮,Ghost模塊中的初始卷積是點(diǎn)卷積。 在Ghost bottleneck的基礎(chǔ)上,研究團(tuán)隊(duì)提出了GhostNet——遵循MobileNetV3的基本體系結(jié)構(gòu)的優(yōu)勢,用Ghost bottleneck替換MobileNetV3中的bottleneck。 網(wǎng)絡(luò)第一層是具有16個(gè)卷積核的標(biāo)準(zhǔn)卷積層,然后是一系列Ghost bottleneck,通道逐漸增加。Ghost bottleneck根據(jù)輸入特征圖的大小分為不同的階段,除了每個(gè)階段的最后一個(gè)Ghost bottleneck是Stride = 2,其他所有Ghost bottleneck都以Stride = 1進(jìn)行應(yīng)用。通過兩個(gè)ghost module與原始輸入(shortcut)相加得到最終輸出,若shortcut維度不一致,則需要用1x1卷積來調(diào)整通道數(shù)。并且引入了SElayer,增加了特征圖注意力機(jī)制。 最后,會(huì)利用全局平均池和卷積層將特征圖轉(zhuǎn)換為1280維特征向量以進(jìn)行最終分類。SE模塊也用在了某些Ghost bottleneck中的殘留層。與MobileNetV3相比,這里用ReLU換掉了Hard-swish激活函數(shù)。 研究團(tuán)隊(duì)表示,這里的架構(gòu)只是一個(gè)基本的設(shè)計(jì)參考,進(jìn)一步的超參數(shù)調(diào)整或基于自動(dòng)架構(gòu)搜索的Ghost模塊將進(jìn)一步提高性能。 如此思路設(shè)計(jì)出來的神經(jīng)網(wǎng)絡(luò)架構(gòu),性能到底如何?研究團(tuán)隊(duì)從各個(gè)方面進(jìn)行了驗(yàn)證。 1. 分類任務(wù) 研究團(tuán)隊(duì)表示,盡管生成的特征圖來自原始特征圖,但它們之間確實(shí)存在顯著差異,這意味著生成的特征足夠靈活,可以滿足特定任務(wù)的需求。 2. 檢測任務(wù) 論文在一階段檢測器RetinaNet和二階段檢測器Faster R-CNN上都做了實(shí)驗(yàn),在COCO數(shù)據(jù)集上達(dá)到相同的map精度時(shí),Backbone FLOPs都低于MobibleNet V2 和 V3。 為了減少深度神經(jīng)網(wǎng)絡(luò)的計(jì)算成本,本文提出了一種用于構(gòu)建有效神經(jīng)體系結(jié)構(gòu)的新型Ghost模塊。基本的Ghost模塊將原始的卷積層分為兩個(gè)部分,并使用較少的過濾器來生成多個(gè)固有特征圖。 然后,進(jìn)一步應(yīng)用一定數(shù)量的廉價(jià)變換操作以有效地生成重影特征圖。在基準(zhǔn)模型和數(shù)據(jù)集上進(jìn)行的實(shí)驗(yàn)表明,該方法是一種即插即用模塊,用于將原始模型轉(zhuǎn)換為緊湊模型,同時(shí)保持可比的性能。此外,使用本文提出的新模塊構(gòu)建的GhostNet在效率和準(zhǔn)確性方面均優(yōu)于最新的輕量型神經(jīng)體系結(jié)構(gòu)。 GhostNet,即插即用,歡迎嘗試~~ 參考文獻(xiàn)
![]() |
|