日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

shuffleNet_shuffer

發布時間:2023/12/24 综合教程 36 生活家
生活随笔 收集整理的這篇文章主要介紹了 shuffleNet_shuffer 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

分組卷積

分組卷積的矛盾——計算量

分組卷積的矛盾——特征通信

channel shuffle

ShuffleNet V1

ShuffleNet基本單元

ShuffleNet網絡結構

對比實驗

ShuffleNet V2

設計理念

網絡結構

對比實驗


分組卷積

Group convolution是將輸入層的不同特征圖進行分組,然后采用不同的卷積核再對各個組進行卷積,這樣會降低卷積的計算量。因為一般的卷積都是在所有的輸入特征圖上做卷積,可以說是全通道卷積,這是一種通道密集連接方式(channel dense connection),而group convolution相比則是一種通道稀疏連接方式(channel sparse connection)。

分組卷積的矛盾——計算量

使用group convolution的網絡有很多,如Xception,MobileNet,ResNeXt等。其中Xception和MobileNet采用了depthwise convolution,這是一種比較特殊的group convolution,此時分組數恰好等于通道數,意味著每個組只有一個特征圖。但這些網絡存在一個很大的弊端:采用了密集的1×1 pointwise convolution

這個問題可以解決:對1×1卷積采用channel sparse connection, 即分組卷積,那樣計算量就可以降下來了,但這就涉及到下面一個問題。

分組卷積的矛盾——特征通信

group convolution層另一個問題是不同組之間的特征圖需要通信,否則就好像分了幾個互不相干的路,大家各走各的,會降低網絡的特征提取能力,這也可以解釋為什么Xception,MobileNet等網絡采用密集的1×1 pointwise convolution,因為要保證group convolution之后不同組的特征圖之間的信息交流。

channel shuffle

為達到特征通信目的,我們不采用dense pointwise convolution,考慮其他的思路:channel shuffle。其含義就是對group convolution之后的特征圖進行“重組”,這樣可以保證接下了采用的group convolution其輸入來自不同的組,因此信息可以在不同組之間流轉。圖c進一步的展示了這一過程并隨機,其實是“均勻地打亂”。

ShuffleNet V1

ShuffleNet基本單元

下圖a展示了基本ResNet輕量級結構,這是一個包含3層的殘差單元:首先是1×1卷積,然后是3×3的depthwise convolution(DWConv,主要是為了降低計算量),緊接著是1×1卷積,最后是一個短路連接,將輸入直接加到輸出上。

下圖b展示了改進思路:將密集的1×1卷積替換成1×1的group convolution,不過在第一個1×1卷積之后增加了一個channel shuffle操作。值得注意的是3×3卷積后面沒有增加channel shuffle,按paper的意思,對于這樣一個殘差單元,一個channel shuffle操作是足夠了。還有就是3×3的depthwise convolution之后沒有使用ReLU激活函數。

下圖c的降采樣版本,對原輸入采用stride=2的3×3 avg pool,在depthwise convolution卷積處取stride=2保證兩個通路shape相同,然后將得到特征圖與輸出進行連接而不是相加。極致的降低計算量與參數大小。

ShuffleNet網絡結構

可以看到開始使用的普通的3×3的卷積和max pool層。然后是三個階段,每個階段都是重復堆積了幾個ShuffleNet的基本單元。對于每個階段,第一個基本單元采用的是stride=2,這樣特征圖width和height各降低一半,而通道數增加一倍。后面的基本單元都是stride=1,特征圖和通道數都保持不變。對于基本單元來說,其中瓶頸層,就是3×3卷積層的通道數為輸出通道數的1/4,這和殘差單元的設計理念是一樣的。

對比實驗

下表給出了不同g值(分組數)的ShuffleNet在ImageNet上的實驗結果。可以看到基本上當g越大時,效果越好,這是因為采用更多的分組后,在相同的計算約束下可以使用更多的通道數,或者說特征圖數量增加,網絡的特征提取能力增強,網絡性能得到提升。注意Shuffle 1x是基準模型,而0.5x和0.25x表示的是在基準模型上將通道數縮小為原來的0.5和0.25。

除此之外,作者還對比了不采用channle shuffle和采用之后的網絡性能對比,如下表的看到,采用channle shuffle之后,網絡性能更好,從而證明channle shuffle的有效性。

然后是ShuffleNet與MobileNet的對比,如下表ShuffleNet不僅計算復雜度更低,而且精度更好。

ShuffleNet V2

設計理念

目前衡量模型復雜度的一個通用指標是FLOPs,具體指的是multiply-add數量,但是這卻是一個間接指標,因為它不完全等同于速度。相同FLOPs的兩個模型,其速度可能存在差異。這種不一致主要歸結為兩個原因,首先影響速度的不僅僅是FLOPs,如內存使用量(memory access cost, MAC),這不能忽略,對于GPUs來說可能會是瓶頸。另外模型的并行程度也影響速度,并行度高的模型速度相對更快。另外一個原因,模型在不同平臺上的運行速度是有差異的,如GPU和ARM,而且采用不同的庫也會有影響。

據此,作者在特定的平臺下研究ShuffleNetv1和MobileNetv2的運行時間,并結合理論與實驗得到了4條實用的指導原則:

  • 同等輸入個輸出通道數能最小化內存訪問量

  • (G2)過量使用組卷積會增加MAC
  • (G3)網絡碎片化會降低并行度一些網絡如Inception,以及Auto ML自動產生的網絡NASNET-A,它們傾向于采用“多路”結構,即存在一個lock中很多不同的小卷積或者pooling,這很容易造成網絡碎片化,減低模型的并行度,相應速度會慢,這也可以通過實驗得到證明。
  • (G4)不能忽略元素級操作對于元素級(element-wise operators)比如ReLU和Add,雖然它們的FLOPs較小,但是卻需要較大的MAC。這里實驗發現如果將ResNet中殘差單元中的ReLU和shortcut移除的話,速度有20%的提升。

上面4條指導準則總結如下:

  • 1×1卷積進行平衡輸入和輸出的通道大小;
  • 組卷積要謹慎使用,注意分組數;
  • 避免網絡的碎片化;
  • 減少元素級運算。

網絡結構

根據前面的4條準則,作者分析了ShuffleNetv1設計的不足,并在此基礎上改進得到了ShuffleNetv2,兩者模塊上的對比如下圖所示:

在ShuffleNetv1的模塊中,大量使用了1×1組卷積,這違背了G2原則,另外v1采用了類似ResNet中的瓶頸層(bottleneck layer),輸入和輸出通道數不同,這違背了G1原則。同時使用過多的組,也違背了G3原則。短路連接中存在大量的元素級Add運算,這違背了G4原則。

為了改善v1的缺陷,v2版本引入了一種新的運算:channel split。具體來說,在開始時先將輸入特征圖在通道維度分成兩個分支:通道數分別為 c-c’和 c’.實際實現時。左邊分支做同等映射(即不改變,直接和后面層concat);右邊的分支包含3個連續的卷積,并且輸入和輸出通道相同,這符合G1。而且兩個1×1卷積不再是組卷積,這符合G2,另外兩個分支相當于已經分成兩組。兩個分支的輸出不再是Add元素,而是concat在一起,緊接著是對兩個分支concat結果進行channle shuffle,以保證兩個分支信息交流。其實concat和channel shuffle可以和下一個模塊單元的channel split合成一個元素級運算,這符合原則G4

對于下采樣模塊,不再有channel split,而是每個分支都是直接copy一份輸入,每個分支都有stride=2的下采樣,最后concat在一起后,特征圖空間大小減半,但是通道數翻倍。

ShuffleNetv2的整體結構如表2所示,基本與v1類似,其中設定每個block的channel數,如0.5x,1x,可以調整模型的復雜度。

值得注意的一點是,v2在全局pooling之前增加了個conv5卷積,這是與v1的一個區別。

對比實驗

最終的模型在ImageNet上的分類效果如表3所示:

可以看到,在同等條件下,ShuffleNetv2相比其他模型速度稍快,而且準確度也稍好一點。同時作者還設計了大的ShuffleNetv2網絡,相比ResNet結構,其效果照樣具有競爭力。

從一定程度上說,ShuffleNetv2借鑒了DenseNet網絡,把shortcut結構從Add換成了Concat,這實現了特征重用。但是不同于DenseNet,v2并不是密集地concat,而且concat之后有channel shuffle以混合特征,這或許是v2即快又好的一個重要原因。

參考:

『高性能模型』輕量級網絡ShuffleNet_v1及v2

ShuffleNetV2:輕量級CNN網絡中的桂冠

總結

以上是生活随笔為你收集整理的shuffleNet_shuffer的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。