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

          深入剖析:為什么MobileNet及其變體(如ShuffleNet)會變快?

          共 5086字,需瀏覽 11分鐘

           ·

          2020-08-29 08:07

          ↑ 點擊藍字?關注極市平臺

          作者丨AI算法與圖像處理@知乎
          來源丨h(huán)ttps://zhuanlan.zhihu.com/p/158591662
          編輯丨極市平臺

          極市導讀

          ?

          MobileNet等CNN模型的組成部分出發(fā),本文剖析了它們如此高效的原因,并給出了大量清晰的原理圖。

          最近在看輕量級網(wǎng)絡的東西,發(fā)現(xiàn)這篇總結得非常的好,因此就翻譯過來。它總結各種變種,同時原理圖非常地清晰,希望能給大家一些啟發(fā)。
          原文鏈接:https://medium.com/@yu4u/why-mobilenet-and-its-variants-e-g-shufflenet-are-fast-1c7048b9618d

          Introduction

          在本文中,我概述了高效CNN模型(如MobileNet及其變體)使用的組成部分(building blocks),并解釋了它們如此高效的原因。特別地,我提供了關于如何在空間和通道域進行卷積的直觀說明。

          在高效的模型中使用的組成部分

          在解釋具體的高效CNN模型之前,我們先檢查一下高效CNN模型中使用的組成部分的計算量,看看卷積在空間和通道域中是如何進行的。
          假設 H x W 為輸出feature map的空間大小,N為輸入通道數(shù),K x K為卷積核的大小,M為輸出通道數(shù),則標準卷積的計算量為 HWNK2M 。
          這里重要的一點是,標準卷積的計算量與(1)輸出特征圖H x W的空間大小,(2)卷積核K的大小,(3)輸入輸出通道的數(shù)量N x M成正比。
          當在空間域和通道域進行卷積時,需要上述計算量。通過分解這個卷積,可以加速 CNNs,如圖所示。

          卷積

          首先,我提供了一個直觀的解釋,關于空間和通道域的卷積是如何對進行標準卷積的,它的計算量是HWNK2M 。
          我連接輸入和輸出之間的線,以可視化輸入和輸出之間的依賴關系。直線數(shù)量大致表示空間和通道域中卷積的計算量。
          例如,最常用的卷積——conv3x3,可以如上圖所示。我們可以看到,輸入和輸出在空間域是局部連接的,而在通道域是全連接的。

          接下來,如上所示用于改變通道數(shù)的conv1x1,或pointwise convolution。由于kernel的大小是1x1,所以這個卷積的計算代價是 HWNM,計算量比conv3x3降低了1/9。這種卷積被用來“混合”通道之間的信息。

          分組卷積(Grouped Convolution)

          分組卷積是卷積的一種變體,將輸入的feature map的通道分組,對每個分組的通道獨立地進行卷積。
          假設 G 表示組數(shù),分組卷積的計算量為 HWNK2M/G,計算量變成標準卷積的1/G。

          在conv3x3 而且 G=2的情況。我們可以看到,通道域中的連接數(shù)比標準卷積要小,說明計算量更小。

          在 conv3x3,G=3的情況下,連接變得更加稀疏。

          在 conv1x1,G=2的情況下,conv1x1也可以被分組。這種類型的卷積被用于ShuffleNet中。

          在 conv1x1,G=3的情況.

          深度可分離卷積(Depthwise Convolution)

          在深度卷積中,對每個輸入通道分別進行卷積。它也可以定義為分組卷積的一種特殊情況,其中輸入和輸出通道數(shù)相同,G等于通道數(shù)。

          如上所示,depthwise convolution 通過省略通道域中的卷積,大大降低了計算量。

          Channel Shuffle

          Channel shuffle是一種操作(層),它改變 ShuffleNet 中使用的通道的順序。這個操作是通過張量reshape和 transpose 來實現(xiàn)的。
          更準確地說,讓GN ' (=N) 表示輸入通道的數(shù)量,首先將輸入通道的維數(shù)reshape 為(G, N '),然后將(G, N ')轉置為(N ', G),最后將其flatten 成與輸入相同的形狀。這里G表示分組卷積的組數(shù),在ShuffleNet中與channel shuffle層一起使用。
          雖然ShuffleNet的計算代價不能用乘加操作(MACs)的數(shù)量來定義,但應該有一些開銷。

          G=2時的channel shuffle 情況。卷積不執(zhí)行,只是改變了通道的順序。

          這種情況下打亂的通道數(shù) G=3

          Efficient Models

          下面,對于高效的CNN模型,我將直觀地說明為什么它們是高效的,以及如何在空間和通道域進行卷積。

          ResNet (Bottleneck Version)

          ResNet 中使用的帶有bottleneck 架構的殘差單元是與其他模型進行進一步比較的良好起點。
          如上所示,具有bottleneck架構的殘差單元由conv1x1、conv3x3、conv1x1組成。第一個conv1x1減小了輸入通道的維數(shù),降低了隨后的conv3x3的計算量。最后的conv1x1恢復輸出通道的維數(shù)。

          ResNeXt

          ResNeXt是一個高效的CNN模型,可以看作是ResNet的一個特例,將conv3x3替換為成組的conv3x3。通過使用有效的分組conv,與ResNet相比,conv1x1的通道減少率變得適中,從而在相同的計算代價下獲得更好的精度。

          MobileNet (Separable Conv)

          MobileNet是一個可分離卷積模塊的堆疊,由depthwise conv和conv1x1 (pointwise conv)組成。
          可分離卷積在空間域和通道域獨立執(zhí)行卷積。這種卷積分解顯著降低了計算量,從 HWNK2M 降低到HWNK2 (depthwise) + HWNM (conv1x1), HWN(K2 + M) 。一般情況下,M>>K(如K=3和M≥32),減小率約為1/8-1/9。
          這里重要的一點是,計算量的bottleneck現(xiàn)在是conv1x1!

          ShuffleNet

          ShuffleNet的動機是如上所述,conv1x1是可分離卷積的瓶頸。雖然conv1x1已經(jīng)是有效的,似乎沒有改進的空間,分組conv1x1可以用于此目的!
          上圖說明了用于ShuffleNet的模塊。這里重要的building block是channel shuffle層,它在分組卷積中對通多在組間的順序進行“shuffles”。如果沒有channel shuffle,分組卷積的輸出在組之間就不會被利用,導致精度下降。

          MobileNet-v2

          MobileNet-v2采用類似ResNet中帶有bottleneck架構殘差單元的模塊架構;用深度可分離卷積(depthwise convolution)代替conv3x3,是殘差單元的改進版本。
          從上面可以看到,與標準的 bottleneck 架構相反,第一個conv1x1增加了通道維度,然后執(zhí)行depthwise conv,最后一個conv1x1減少了通道維度。
          通過如上所述對building blocks 進行重新排序,并將其與MobileNet-v1(可分離的conv)進行比較,我們可以看到這個體系結構是如何工作的(這種重新排序不會改變整個模型體系結構,因為MobileNet-v2是這個模塊的堆疊)。
          也就是說,上述模塊可以看作是可分離卷積的一個改進版本,其中可分離卷積中的單個conv1x1被分解為兩個conv1x1。讓T表示通道維數(shù)的擴展因子,兩個 conv1x1 的計算量為 2HWN2/T ,而可分離卷積下的conv1x1的計算量為 HWN2。在[5]中,使用T = 6,將 conv1x1 的計算成本降低了3倍(一般為T/2)。

          FD-MobileNet

          最后,介紹 Fast-Downsampling MobileNet (FD-MobileNet)[10]。在這個模型中,與MobileNet相比,下采樣在較早的層中執(zhí)行。這個簡單的技巧可以降低總的計算成本。其原因在于傳統(tǒng)的向下采樣策略和可分離變量的計算代價。
          從VGGNet開始,許多模型采用相同的下采樣策略:執(zhí)行向下采樣,然后將后續(xù)層的通道數(shù)增加一倍。對于標準卷積,下采樣后計算量不變,因為根據(jù)定義得 HWNK2M 。而對于可分離變量,下采樣后其計算量減小;由 HWN(K2 + M) 降為 H/2 W/2 2N(K2 + 2M) = HWN(K2/2 + M)。當M不是很大時(即較早的層),這是相對占優(yōu)勢的。
          下面是對全文的總結:


          參考資料

          [1] M. Lin, Q. Chen, and S. Yan, “Network in Network,” in Proc. of ICLR, 2014.
          [2] L. Sifre, “Rigid-motion Scattering for Image Classification, Ph.D. thesis, 2014.
          [3] L. Sifre and S. Mallat, “Rotation, Scaling and Deformation Invariant Scattering for Texture Discrimination,” in Proc. of CVPR, 2013.
          [4] F. Chollet, “Xception: Deep Learning with Depthwise Separable Convolutions,” in Proc. of CVPR, 2017.
          [5] X. Zhang, X. Zhou, M. Lin, and J. Sun, “ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices,” in arXiv:1707.01083, 2017.
          [6] K. He, X. Zhang, S. Ren, and J. Sun, “Deep Residual Learning for Image Recognition,” in Proc. of CVPR, 2016.
          [7] S. Xie, R. Girshick, P. Dolla?r, Z. Tu, and K. He, “Aggregated Residual Transformations for Deep Neural Networks,” in Proc. of CVPR, 2017.
          [8] A. G. Howard, M. Zhu, B. Chen, D. Kalenichenko, W. Wang, T. Weyand, M. Andreetto, and H. Adam, “Mobilenets: Efficient Convolutional Neural Networks for Mobile Vision Applications,” in arXiv:1704.04861, 2017.
          [9] M. Sandler, A. Howard, M. Zhu, A. Zhmoginov, and L. Chen, “MobileNetV2: Inverted Residuals and Linear Bottlenecks,” in arXiv:1801.04381v3, 2018.

          推薦閱讀

          還有3天!火焰/摔倒/頭盔識別等四個賽題即將截止報名


          添加極市小助手微信(ID : cvmart2),備注:姓名-學校/公司-研究方向-城市(如:小極-北大-目標檢測-深圳),即可申請加入極市目標檢測/圖像分割/工業(yè)檢測/人臉/醫(yī)學影像/3D/SLAM/自動駕駛/超分辨率/姿態(tài)估計/ReID/GAN/圖像增強/OCR/視頻理解等技術交流群:每月大咖直播分享、真實項目需求對接、求職內推、算法競賽、干貨資訊匯總、與?10000+來自港科大、北大、清華、中科院、CMU、騰訊、百度等名校名企視覺開發(fā)者互動交流~

          △長按添加極市小助手

          △長按關注極市平臺,獲取最新CV干貨

          覺得有用麻煩給個在看啦~??
          瀏覽 69
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <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>
                  国产超碰青青草 | 大屄 | 日韩va亚洲va欧美va清高 | 大香蕉伊人成人网 | 国产操操逼视频 |