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

          【深度學(xué)習(xí)】縱覽輕量化卷積神經(jīng)網(wǎng)絡(luò):SqueezeNet、MobileNet、ShuffleNet、Xception

          共 12846字,需瀏覽 26分鐘

           ·

          2022-08-29 10:12

          推薦關(guān)注↓

          轉(zhuǎn)自 | 機(jī)器之心


          本文就近年提出的四個(gè)輕量化模型進(jìn)行學(xué)習(xí)和對比,四個(gè)模型分別是:SqueezeNet、MobileNet、ShuffleNet、Xception。

          目錄


          一、引言 

          二、輕量化模型 

              2.1 SqueezeNet

              2.2 MobileNet

              2.3 ShuffleNet

              2.4 Xception

          三、網(wǎng)絡(luò)對比 


          一、引言


          自 2012 年 AlexNet 以來,卷積神經(jīng)網(wǎng)絡(luò)(簡稱 CNN)在圖像分類、圖像分割、目標(biāo)檢測等領(lǐng)域獲得廣泛應(yīng)用。隨著性能要求越來越高,AlexNet 已經(jīng)無法滿足大家的需求,于是乎各路大牛紛紛提出性能更優(yōu)越的 CNN 網(wǎng)絡(luò),如 VGG、GoogLeNet、ResNet、DenseNet 等。由于神經(jīng)網(wǎng)絡(luò)的性質(zhì),為了獲得更好的性能,網(wǎng)絡(luò)層數(shù)不斷增加,從 7 層 AlexNet 到 16 層 VGG,再從 16 層 VGG 到 GoogLeNet 的 22 層,再到 152 層 ResNet,更有上千層的 ResNet 和 DenseNet。雖然網(wǎng)絡(luò)性能得到了提高,但隨之而來的就是效率問題。

           

          效率問題主要是模型的存儲問題和模型進(jìn)行預(yù)測的速度問題(以下簡稱速度問題)


          • 第一,存儲問題。數(shù)百層網(wǎng)絡(luò)有著大量的權(quán)值參數(shù),保存大量權(quán)值參數(shù)對設(shè)備的內(nèi)存要求很高;


          • 第二,速度問題。在實(shí)際應(yīng)用中,往往是毫秒級別,為了達(dá)到實(shí)際應(yīng)用標(biāo)準(zhǔn),要么提高處理器性能(看英特爾的提高速度就知道了,這點(diǎn)暫時(shí)不指望),要么就減少計(jì)算量。

           

          只有解決 CNN 效率問題,才能讓 CNN 走出實(shí)驗(yàn)室,更廣泛的應(yīng)用于移動端。對于效率問題,通常的方法是進(jìn)行模型壓縮(Model Compression),即在已經(jīng)訓(xùn)練好的模型上進(jìn)行壓縮,使得網(wǎng)絡(luò)攜帶更少的網(wǎng)絡(luò)參數(shù),從而解決內(nèi)存問題,同時(shí)可以解決速度問題。


          相比于在已經(jīng)訓(xùn)練好的模型上進(jìn)行處理,輕量化模型模型設(shè)計(jì)則是另辟蹊徑。輕量化模型設(shè)計(jì)主要思想在于設(shè)計(jì)更高效的「網(wǎng)絡(luò)計(jì)算方式」(主要針對卷積方式),從而使網(wǎng)絡(luò)參數(shù)減少的同時(shí),不損失網(wǎng)絡(luò)性能。

           

          本文就近年提出的四個(gè)輕量化模型進(jìn)行學(xué)習(xí)和對比,四個(gè)模型分別是:SqueezeNet、MobileNet、ShuffleNet、Xception。


          (PS:以上四種均不是模型壓縮方法?。。?/span>

           

          以下是四個(gè)模型的作者團(tuán)隊(duì)及發(fā)表時(shí)間



          其中 ShuffleNet 論文中引用了 SqueezeNet;Xception 論文中引用了 MobileNet


          二、輕量化模型


          由于這四種輕量化模型僅是在卷積方式上做了改變,因此本文僅對輕量化模型的創(chuàng)新點(diǎn)進(jìn)行詳細(xì)描述,對實(shí)驗(yàn)以及實(shí)現(xiàn)的細(xì)節(jié)感興趣的朋友,請到論文中詳細(xì)閱讀。


          2.1 SqueezeNet


          SqueezeNet 由伯克利&斯坦福的研究人員合作發(fā)表于 ICLR-2017,論文標(biāo)題:

          《SqueezeNet:AlexNet-level accuracy with 50x fewer parameters and <0.5MB》

           

          命名:


          從名字——SqueezeNet 就知道,本文的新意是 squeeze,squeeze 在 SqueezeNet 中表示一個(gè) squeeze 層,該層采用 1*1 卷積核對上一層 feature map 進(jìn)行卷積,主要目的是減少 feature map 的維數(shù)(維數(shù)即通道數(shù),就是一個(gè)立方體的 feature map,切成一片一片的,一共有幾片)。


          創(chuàng)新點(diǎn):


          1. 采用不同于傳統(tǒng)的卷積方式,提出 fire module;fire module 包含兩部分:squeeze 層+expand 層

           

          創(chuàng)新點(diǎn)與 inception 系列的思想非常接近!首先 squeeze 層,就是 1*1 卷積,其卷積核數(shù)要少于上一層 feature map 數(shù),這個(gè)操作從 inception 系列開始就有了,并美其名曰壓縮,個(gè)人覺得「壓縮」更為妥當(dāng)。


          Expand 層分別用 1*1 和 3*3 卷積,然后 concat,這個(gè)操作在 inception 系列里面也有。


          SqueezeNet 的核心在于 Fire module,F(xiàn)ire module 由兩層構(gòu)成,分別是 squeeze 層+expand 層,如下圖 1 所示,squeeze 層是一個(gè) 1*1 卷積核的卷積層,expand 層是 1*1 和 3*3 卷積核的卷積層,expand 層中,把 1*1 和 3*3 得到的 feature map 進(jìn)行 concat。



          具體操作情況如下圖所示:



          Fire module 輸入的 feature map 為 H*W*M 的,輸出的 feature map 為 H*M*(e1+e3),可以看到 feature map 的分辨率是不變的,變的僅是維數(shù),也就是通道數(shù),這一點(diǎn)和 VGG 的思想一致。


          首先,H*W*M 的 feature map 經(jīng)過 Squeeze 層,得到 S1 個(gè) feature map,這里的 S1 均是小于 M 的,以達(dá)到「壓縮」的目的,詳細(xì)思想可參考 Google 的 Inception 系列。

           

          其次,H*W*S1 的特征圖輸入到 Expand 層,分別經(jīng)過 1*1 卷積層和 3*3 卷積層進(jìn)行卷積,再將結(jié)果進(jìn)行 concat,得到 Fire module 的輸出,為 H*M*(e1+e3) 的 feature map。

           

          fire 模塊有三個(gè)可調(diào)參數(shù):S1,e1,e3,分別代表卷積核的個(gè)數(shù),同時(shí)也表示對應(yīng)輸出 feature map 的維數(shù),在文中提出的 SqueezeNet 結(jié)構(gòu)中,e1=e3=4s1。

           

          講完 SqueezeNet 的核心——Fire module,看看 SqueezeNet 的網(wǎng)絡(luò)結(jié)構(gòu),如下圖所示:

           


          網(wǎng)絡(luò)結(jié)構(gòu)設(shè)計(jì)思想,同樣與 VGG 的類似,堆疊的使用卷積操作,只不過這里堆疊的使用本文提出的 Fire module(圖中用紅框部分)


          看看 Squezeenet 的參數(shù)數(shù)量以及性能:



          在這里可以看到,論文題目中提到的小于 0.5M,是采用了 Deep Compression 進(jìn)行模型壓縮之后的結(jié)果!!

           

          看了上圖再回頭看一看論文題目: 


          SqueezeNet :AlexNet-level accuracy with 50x fewer parameters and <0.5MB


          標(biāo)!題!黨!SqueezeNet < 0.5MB, 這個(gè)是用了別的模型壓縮技術(shù)獲得的,很容易讓人誤以為 SqueezeNet 可以壓縮模型!!

           

          SqueezeNet 小結(jié):

           

          1 Fire module 與 GoogLeNet 思想類似,采用 1*1 卷積對 feature map 的維數(shù)進(jìn)行「壓縮」,從而達(dá)到減少權(quán)值參數(shù)的目的;


          2 采用與 VGG 類似的思想——堆疊的使用卷積,這里堆疊的使用 Fire module

           

          SqueezeNet 與 GoogLeNet 和 VGG 的關(guān)系很大!


          2.2 MobileNet


          MobileNet 由 Google 團(tuán)隊(duì)提出,發(fā)表于 CVPR-2017,論文標(biāo)題:

          《MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications》

           

          命名:


          MobileNet 的命名是從它的應(yīng)用場景考慮的,顧名思義就是能夠在移動端使用的網(wǎng)絡(luò)模型。

           

          創(chuàng)新點(diǎn):


          1. 采用名為 depth-wise separable convolution 的卷積方式代替?zhèn)鹘y(tǒng)卷積方式,以達(dá)到減少網(wǎng)絡(luò)權(quán)值參數(shù)的目的。

           

          通過采用 depth-wise convolution 的卷積方式,達(dá)到:1. 減少參數(shù)數(shù)量 2. 提升運(yùn)算速度。(這兩點(diǎn)是要區(qū)別開的,參數(shù)少的不一定運(yùn)算速度快!還要看計(jì)算方式?。?/span>

           

          depth-wise convolution 不是 MobileNet 提出來的,也是借鑒,文中給的參考文獻(xiàn)是 2014 年的博士論文——《L. Sifre. Rigid-motion scattering for image classification. hD thesis, Ph. D. thesis, 2014》

           

          depth-wise convolution 和 group convolution 是類似的,depth-wise convolution 是一個(gè)卷積核負(fù)責(zé)一部分 feature map,每個(gè) feature map 只被一個(gè)卷積核卷積;group convolution 是一組卷積核負(fù)責(zé)一組 feature map,每組 feature map 只被一組卷積核卷積。Depth-wise convolution 可以看成是特殊的 group convolution,即每一個(gè)通道是一組。


          MobileNets 精華在于卷積方式——depth-wise separable convolution;采用 depth-wise separable convolution,會涉及兩個(gè)超參:Width Multiplier 和 Resolution Multiplier 這兩個(gè)超參只是方便于設(shè)置要網(wǎng)絡(luò)要設(shè)計(jì)為多小,方便于量化模型大小。

           

          MobileNet 將標(biāo)準(zhǔn)卷積分成兩步:


          • 第一步 Depth-wise convolution, 即逐通道的卷積,一個(gè)卷積核負(fù)責(zé)一個(gè)通道,一個(gè)通道只被一個(gè)卷積核「濾波」;


          • 第二步,Pointwise convolution,將 depth-wise convolution 得到的 feature map 再「串」起來,注意這個(gè)「串」是很重要的。「串」作何解?為什么還需要 pointwise convolution?作者說:However it only filters input channels, it does not combine them to create new features. Soan additional layer that computes a linear combination ofthe output of depth-wise convolution via 1 × 1 convolutionis needed in order to generate these new features。

           

          從另外一個(gè)角度考慮,其實(shí)就是:輸出的每一個(gè) feature map 要包含輸入層所有 feature map 的信息。然而僅采用 depth-wise convolution,是沒辦法做到這點(diǎn),因此需要 pointwise convolution 的輔助。

           

          輸出的每一個(gè) feature map 要包含輸入層所有 feature map 的信息」這個(gè)是所有采用 depth-wise convolution 操作的網(wǎng)絡(luò)都要去解決的問題,ShuffleNet 中的命名就和這個(gè)有關(guān)!詳細(xì)請看 2.3

           

          Standard convolution、depth-wise convolution 和 pointwise convolution 示意圖如下:

           

           


          其中輸入的 feature map 有 M 個(gè),輸出的 feature map 有 N 個(gè)。


          對 Standard convolution 而言,是采用 N 個(gè)大小為 DK*DK 的卷積核進(jìn)行操作(注意卷積核大小是 DK*DK, DK*DK*M 是具體運(yùn)算時(shí)一個(gè)卷積核的大小?。?/span>

           

          而 depth-wise convolution + pointwise convolution 需要的卷積核呢?

           

          Depth-wise convolution :一個(gè)卷積核負(fù)責(zé)一個(gè)通道,一個(gè)通道只被一個(gè)卷積核卷積;則這里有 M 個(gè) DK*DK 的卷積核; 

           

          Pointwise convolution:為了達(dá)到輸出 N 個(gè) feature map 的操作,所以采用 N 個(gè) 1*1 的卷積核進(jìn)行卷積,這里的卷積方式和傳統(tǒng)的卷積方式是一樣的,只不過采用了 1*1 的卷積核;其目的就是讓新的每一個(gè) feature map 包含有上一層各個(gè) feature map 的信息!在此理解為將 depth-wise convolution 的輸出進(jìn)行「串」起來。


          下面舉例講解 Standard convolution、depth-wise convolution 和 pointwise convolution。


          假設(shè)輸入的 feature map 是兩個(gè) 5*5 的,即 5*5*2;輸出 feature map 數(shù)量為 3,大小是 3*3(因?yàn)檫@里采用 3*3 卷積核)即 3*3*3。

           

          標(biāo)準(zhǔn)卷積是將一個(gè)卷積核(3*3)復(fù)制 M 份(M=2), 讓二維的卷積核(面包片)拓展到與輸入 feature map 一樣的面包塊形狀。


          Standard 過程如下圖,X 表示卷積,+表示對應(yīng)像素點(diǎn)相加,可以看到對于 O1 來說,其與輸入的每一個(gè) feature map 都「發(fā)生關(guān)系」,包含輸入的各個(gè) feature map 的信息。

           


          Depth-wise 過程如下圖,可以看到 depth-wise convolution 得出的兩個(gè) feature map——fd1 和 fd2 分別只與 i1 和 i2「發(fā)生關(guān)系」,這就導(dǎo)致違背上面所承認(rèn)的觀點(diǎn)「輸出的每一個(gè) feature map 要包含輸入層所有 feature map 的信息」,因而要引入 pointwise convolution。

           


          那么計(jì)算量減少了多少呢?通過如下公式計(jì)算: 

           


          其中 DK 為標(biāo)準(zhǔn)卷積核大小,M 是輸入 feature map 通道數(shù),DF 為輸入 feature map 大小,N 是輸出 feature map 大小。本例中,DK=3,M=2,DF=5,N=3,參數(shù)的減少量主要就與卷積核大小 DK 有關(guān)。在本文 MobileNet 的卷積核采用 DK=3,則大約減少了 8~9 倍計(jì)算量。

           

          看看 MobileNet 的網(wǎng)絡(luò)結(jié)構(gòu),MobileNet 共 28 層,可以發(fā)現(xiàn)這里下采樣的方式?jīng)]有采用池化層,而是利用 depth-wise convolution 的時(shí)候?qū)⒉介L設(shè)置為 2,達(dá)到下采樣的目的。

           


          1.0 MobileNet-224 與 GoogLeNet 及 VGG-16 的對比:

           


          可以發(fā)現(xiàn),相較于 GoogLeNet,雖然參數(shù)差不多,都是一個(gè)量級的,但是在運(yùn)算量上卻小于 GoogLeNet 一個(gè)量級,這就得益于 depth-wise convolution!

           

          MobileNet 小結(jié):


          • 1. 核心思想是采用 depth-wise convolution 操作,在相同的權(quán)值參數(shù)數(shù)量的情況下,相較于 standard convolution 操作,可以減少數(shù)倍的計(jì)算量,從而達(dá)到提升網(wǎng)絡(luò)運(yùn)算速度的目的。


          • 2. depth-wise convolution 的思想非首創(chuàng),借鑒于 2014 年一篇博士論文:《L. Sifre. Rigid-motion scattering for image classification. hD thesis, Ph. D. thesis, 2014》


          • 3. 采用 depth-wise convolution 會有一個(gè)問題,就是導(dǎo)致「信息流通不暢」,即輸出的 feature map 僅包含輸入的 feature map 的一部分,在這里,MobileNet 采用了 point-wise convolution 解決這個(gè)問題。在后來,ShuffleNet 采用同樣的思想對網(wǎng)絡(luò)進(jìn)行改進(jìn),只不過把 point-wise convolution 換成了 channel shuffle,然后給網(wǎng)絡(luò)美其名曰 ShuffleNet,欲知后事如何,請看 2.3 ShuffleNet


          2.3 ShuffleNet


          ShuffleNet 是 Face++團(tuán)隊(duì)提出的,與 MobileNet 一樣,發(fā)表于 CVPR-2017,但晚于 MobileNet 兩個(gè)月才在 arXiv 上公開。論文標(biāo)題:

          《ShuffleNet:An Extremely Efficient Convolutional Neural Network for Mobile Devices》

           

          命名:


          一看名字 ShuffleNet,就知道 shuffle 是本文的重點(diǎn),那么 shuffle 是什么?為什么要進(jìn)行 shuffle?

           

          shuffle 具體來說是 channel shuffle,是將各部分的 feature map 的 channel 進(jìn)行有序的打亂,構(gòu)成新的 feature map,以解決 group convolution 帶來的「信息流通不暢」問題。(MobileNet 是用 point-wise convolution 解決的這個(gè)問題)


          因此可知道 shuffle 不是什么網(wǎng)絡(luò)都需要用的,是有一個(gè)前提,就是采用了 group convolution,才有可能需要 shuffle??!為什么說是有可能呢?因?yàn)榭梢杂?point-wise convolution 來解決這個(gè)問題。

           

          創(chuàng)新點(diǎn):


          1. 利用 group convolution 和 channel shuffle 這兩個(gè)操作來設(shè)計(jì)卷積神經(jīng)網(wǎng)絡(luò)模型, 以減少模型使用的參數(shù)數(shù)量。

           

          其中 group convolutiosn 非原創(chuàng),而 channel shuffle 是原創(chuàng)。channel shuffle 因 group convolution 而起,正如論文中 3.1 標(biāo)題:. Channel Shuffle for Group Convolution; 

           

          采用 group convolution 會導(dǎo)致信息流通不當(dāng),因此提出 channel shuffle,所以 channel shuffle 是有前提的,使用的話要注意!

           

          對比一下 MobileNet,采用 shuffle 替換掉 1*1 卷積,這樣可以減少權(quán)值參數(shù),而且是減少大量權(quán)值參數(shù),因?yàn)樵?MobileNet 中,1*1 卷積層有較多的卷積核,并且計(jì)算量巨大,MobileNet 每層的參數(shù)量和運(yùn)算量如下圖所示:

           


          ShuffleNet 的創(chuàng)新點(diǎn)在于利用了 group convolution 和 channel shuffle,那么有必要看看 group convolution 和 channel shuffle。

           

          Group convolution 


          Group convolution 自 Alexnet 就有,當(dāng)時(shí)因?yàn)橛布拗贫捎梅纸M卷積;之后在 2016 年的 ResNeXt 中,表明采用 group convolution 可獲得高效的網(wǎng)絡(luò);再有 Xception 和 MobileNet 均采用 depth-wise convolution, 這些都是最近出來的一系列輕量化網(wǎng)絡(luò)模型。depth-wise convolution 具體操作可見 2.2 MobileNet 里邊有簡介。

           

          如下圖 (a) 所示, 為了提升模型效率,采用 group convolution,但會有一個(gè)副作用,即:「outputs from a certain channel are only derived from a small fraction of input channels.」


          于是采用 channel shuffle 來改善各組間「信息流通不暢」問題,如下圖 (b) 所示。


          具體方法為:把各組的 channel 平均分為 g(下圖 g=3)份,然后依次序的重新構(gòu)成 feature map



          Channel shuffle 的操作非常簡單,接下來看看 ShuffleNet,ShuffleNet 借鑒了 Resnet 的思想,從基本的 resnet 的 bottleneck unit 逐步演變得到 ShuffleNet 的 bottleneck unit,然后堆疊的使用 ShuffleNet bottleneck unit 獲得 ShuffleNet;

           

          下圖展示了 ShuffleNet unit 的演化過程 


          • 圖 (a):是一個(gè)帶有 depth-wise convolution 的 bottleneck unit; 


          • 圖 (b):作者在 (a) 的基礎(chǔ)上進(jìn)行變化,對 1*1 conv 換成 1*1 Gconv,并在第一個(gè) 1*1 Gconv 之后增加一個(gè) channel shuffle 操作; 


          • 圖 (c):在旁路增加了 AVG pool,目的是為了減小 feature map 的分辨率;因?yàn)榉直媛市×?,于是乎最后不采?Add,而是 concat,從而「彌補(bǔ)」了分辨率減小而帶來的信息損失。



          文中提到兩次,對于小型網(wǎng)絡(luò),多多使用通道,會比較好。


          「this is critical for small networks, as tiny networks usually have an insufficient number of channels to process the information」


          所以,以后若涉及小型網(wǎng)絡(luò),可考慮如何提升通道使用效率

           

          至于實(shí)驗(yàn)比較,并沒有給出模型參數(shù)量的大小比較,而是采用了 Complexity (MFLOPs) 指標(biāo),在相同的 Complexity (MFLOPs) 下,比較 ShuffleNet 和各個(gè)網(wǎng)絡(luò),還專門和 MobileNet 進(jìn)行對比,由于 ShuffleNet 相較于 MobileNet 少了 1*1 卷積層,所以效率大大提高了嘛,貼個(gè)對比圖隨意感受一下好了

           


          ShuffleNet 小結(jié):


          • 1. 與 MobileNet 一樣采用了 depth-wise convolution,但是針對 depth-wise convolution 帶來的副作用——「信息流通不暢」,ShuffleNet 采用了一個(gè) channel shuffle 操作來解決。


          • 2. 在網(wǎng)絡(luò)拓?fù)浞矫?,ShuffleNet 采用的是 resnet 的思想,而 mobielnet 采用的是 VGG 的思想,2.1 SqueezeNet 也是采用 VGG 的堆疊思想


          2.4 Xception


          Xception 并不是真正意義上的輕量化模型,只是其借鑒 depth-wise convolution,而 depth-wise convolution 又是上述幾個(gè)輕量化模型的關(guān)鍵點(diǎn),所以在此一并介紹,其思想非常值得借鑒。

           

          Xception 是 Google 提出的,arXiv 的 V1 版本 于 2016 年 10 月公開。論文標(biāo)題:

          《Xception: Deep Learning with Depth-wise Separable Convolutions》

           

          命名:


          Xception 是基于 Inception-V3 的,而 X 表示 Extreme,為什么是 Extreme 呢?因?yàn)?Xception 做了一個(gè)加強(qiáng)的假設(shè),這個(gè)假設(shè)就是: 

          we make the following hypothesis: that the mapping of cross-channels correlations and spatial correlations in the feature maps of convolutional neural networks can be entirely decoupled

           

          創(chuàng)新點(diǎn):


          1. 借鑒(非采用)depth-wise convolution 改進(jìn) Inception V3

           

          既然是改進(jìn)了 Inception v3,那就得提一提關(guān)于 inception 的一下假設(shè)(思想)了。

          「the fundamental hypothesis behind Inception is that cross-channel correlations and spatial correlations are sufficiently decoupled that it is preferable not to map them jointly」


          簡單理解就是說,卷積的時(shí)候要將通道的卷積與空間的卷積進(jìn)行分離,這樣會比較好。(沒有理論證明,只有實(shí)驗(yàn)證明,就當(dāng)它是定理,接受就好了,現(xiàn)在大多數(shù)神經(jīng)網(wǎng)絡(luò)的論文都這樣。


          既然是在 Inception V3 上進(jìn)行改進(jìn)的,那么 Xception 是如何一步一步的從 Inception V3 演變而來。

           

          下圖 1 是 Inception module,圖 2 是作者簡化了的 inception module(就是只保留 1*1 的那條「路」,如果帶著 avg pool,后面怎么進(jìn)一步假設(shè)嘛~) 

           

           



          假設(shè)出一個(gè)簡化版 inception module 之后,再進(jìn)一步假設(shè),把第一部分的 3 個(gè) 1*1 卷積核統(tǒng)一起來,變成一個(gè) 1*1 的,后面的 3 個(gè) 3*3 的分別「負(fù)責(zé)」一部分通道,如圖 3 所示;最后提出「extreme」version of an Inception,module Xception 登場,,先用 1*1 卷積核對各通道之間(cross-channel)進(jìn)行卷積,如圖 4 所示,

           


           

          作者說了,這種卷積方式和 depth-wise convolution 幾乎一樣。Depth-wise convolution 較早用于網(wǎng)絡(luò)設(shè)計(jì)是來自:Rigid-Motion Scatteringfor Image Classification,但是具體是哪一年提出,不得而知;至少 2012 年就有相關(guān)研究,再比如說 AlexNet,由于內(nèi)存原因,AlexNet 分成兩組卷積 ;想深入了解 Depth-wise convolution 的可以查閱本論文 2.Prior work,里面有詳細(xì)介紹。

           

          Xception 是借鑒 Rigid-Motion Scatteringfor Image Classification 的 Depth-wise convolution,是因?yàn)?Xception 與原版的 Depth-wise convolution 有兩個(gè)不同之處 


          • 第一個(gè):原版 Depth-wise convolution,先逐通道卷積,再 1*1 卷積; 而 Xception 是反過來,先 1*1 卷積,再逐通道卷積; 


          • 第二個(gè):原版 Depth-wise convolution 的兩個(gè)卷積之間是不帶激活函數(shù)的,而 Xception 在經(jīng)過 1*1 卷積之后會帶上一個(gè) Relu 的非線性激活函數(shù);

           


          Xception 結(jié)構(gòu)如上圖所示,共計(jì) 36 層分為 Entry flow;Middle flow;Exit flow。。


          Entry flow 包含 8 個(gè) conv;Middle flow 包含 3*8 =24 個(gè) conv;Exit flow 包含 4 個(gè) conv,所以 Xception 共計(jì) 36 層。

           

          文中 Xception 實(shí)驗(yàn)部分是非常詳細(xì)的,實(shí)現(xiàn)細(xì)節(jié)可參見論文。

           


          Xception 小結(jié):


          Xception 是基于 Inception-V3,并結(jié)合了 depth-wise convolution,這樣做的好處是提高網(wǎng)絡(luò)效率,以及在同等參數(shù)量的情況下,在大規(guī)模數(shù)據(jù)集上,效果要優(yōu)于 Inception-V3。這也提供了另外一種「輕量化」的思路:在硬件資源給定的情況下,盡可能的增加網(wǎng)絡(luò)效率和性能,也可以理解為充分利用硬件資源。


          三、網(wǎng)絡(luò)對比


          本文簡單介紹了四個(gè)輕量化網(wǎng)絡(luò)模型,分別是 SqueezeNet、 MobileNet、 ShuffleNet 和 Xception,前三個(gè)是真正意義上的輕量化網(wǎng)絡(luò),而 Xception 是為提升網(wǎng)絡(luò)效率,在同等參數(shù)數(shù)量條件下獲得更高的性能。

           

          在此列出表格,對比四種網(wǎng)絡(luò)是如何達(dá)到網(wǎng)絡(luò)輕量化的。


          實(shí)現(xiàn)輕量化技巧



          這么一看就發(fā)現(xiàn),輕量化主要得益于 depth-wise convolution,因此大家可以考慮采用 depth-wise convolution 來設(shè)計(jì)自己的輕量化網(wǎng)絡(luò),但是要注意「信息流通不暢問題」。


          解決「信息流通不暢」的問題,MobileNet 采用了 point-wise convolution,ShuffleNet 采用的是 channel shuffle。MobileNet 相較于 ShuffleNet 使用了更多的卷積,計(jì)算量和參數(shù)量上是劣勢,但是增加了非線性層數(shù),理論上特征更抽象,更高級了;ShuffleNet 則省去 point-wise convolution,采用 channel shuffle,簡單明了,省去卷積步驟,減少了參數(shù)量。

           

          學(xué)習(xí)了幾個(gè)輕量化網(wǎng)絡(luò)的設(shè)計(jì)思想,可以看到,并沒有突破性的進(jìn)展,都是借鑒或直接使用前幾年的研究成果。希望廣大研究人員可以設(shè)計(jì)出更實(shí)在的輕量化網(wǎng)絡(luò)。

           

          通過這幾篇論文的創(chuàng)新點(diǎn),得出以下可認(rèn)為是發(fā) (Shui) 論文的 idea:


          • 1. 采用 depth-wise convolution,再設(shè)計(jì)一個(gè)方法解決「信息流通不暢」問題,然后冠以美名 XX-Net。(看看 ShuffleNet 就是)


          • 2. 針對 depth-wise convolution 作文章,卷積方式不是千奇百怪么?各種卷積方式可參考 Github(https://github.com/vdumoulin/conv_arithmetic),挑一個(gè)或者幾個(gè),結(jié)合起來,只要參數(shù)量少,實(shí)驗(yàn)效果好,就可以發(fā) (Shui) 論文。


          • 3. 接著第 2,如果設(shè)計(jì)出來一個(gè)新的卷積方式,如果也存在一些「副作用」,再想一個(gè)方法解決這個(gè)副作用,再美其名曰 XX-Net。就是自己「挖」個(gè)坑,自己再填上去。

          長按或掃描下方二維碼,后臺回復(fù):加群,即可申請入群。一定要備注:來源+研究方向+學(xué)校/公司,否則不拉入群中,見諒!

          長按三秒,進(jìn)入后臺


          推薦閱讀

          瀏覽 93
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <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>
                  久久高清无码视频 | 大香焦伊人网 | 欧美午夜精品一区二区三区 | 成人无码一区二区 | 欧美成人午夜 |