Mobilenet 系列論文

0. 前言

  • 論文包括:
    • MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications
      • 提出使用 Depth Seperable Convolution 替代普通卷積操作。
    • MobileNetV2: Inverted Residuals and Linear Bottlenecks
    • MobileNetV3: Searching for MobileNetV3

1. MobileNet V1

  • arxiv
  • 本節配圖如無說明都是來自 這篇文章
    • 這配圖真的好
  • 要解決什麼問題?
    • 當時的模型都比較大,輕量化網絡的工作並不太多。
  • 用什麼方法解決?
    • 引入了 Depthwise Separable Convolution 來替代普通卷積。
      • 論文的配圖沒有下面這幾張好。
    • 普通卷積:
      • 輸入尺寸是 [in_height, in_width, in_channels]
      • 輸出尺寸是 [out_height, out_width, out_channels]
      • 卷積核尺寸是 [kernel_height, kernel_width, in_channels, out_channels]
      • image_1dulvsrdo19ej9ukgln1fsm1bpr9.png-145.1kB
    • Depthwise Convolution
      • 特點:
        • 卷積核的尺寸是三維的。
        • 一層輸入對應一層卷積核,因此輸入與輸出通道數相同
      • 輸入尺寸是 [in_height, in_width, in_channels]
      • 輸出尺寸是 [out_height, out_width, in_channels]
      • 卷積核尺寸是 [kernel_height, kernel_width, in_channels]
      • image_1dum02fbe1g876i618pe1vrbtabm.png-126.3kB
    • Pointwise Convolution
      • 特點:
        • 感覺就是卷積核爲1 * 1的普通卷積。
        • 輸入與輸出的卷積核長寬保持不變,改變的只有通道數量。
      • 輸入尺寸是 [in_height, in_width, in_channels]
      • 輸出尺寸是 [in_height, in_width, out_channels]
      • 卷積核尺寸是 [1, 1, in_channels, out_channels]
      • image_1dum1488115bn43c1fs6ek61vi413.png-107.3kB
    • Depth Separable Convolution
      • 其實就是用一次 Depthwise Convolution 與一次 Pointwise Convolution 來替代普通卷積。
      • 假設
        • 輸入特徵圖尺寸爲 [in_height, in_width, in_channels]
        • 輸出特徵圖尺寸爲 [out_height, out_wdith, out_channels]
        • 普通卷積核的尺寸爲 [kernel_height, kernel_width, in_channels, out_channels]
      • 參數對比:
        • 普通卷積參數數量爲 kernel_height * kernel_width * in_channels * out_channels
        • Depth Separable Convlution的參數數量是
          • Depthwise Convolution:kernel_height * kernel_width * in_channels
          • Pointwise Convolution:1 * 1 * in_channels * out_channels
        • 所以兩者的比值就是 1/out_channels + 1/kernel_height*kernel_width
    • 網絡結構還引入了幾個超參數,從而控制網絡的大小。這一點在後面幾代中也會用到。
  • 效果如何?
    • 基本上不用了,也就不提了。
  • 還存在什麼問題?
    • Depthwise Convolution 雖然能夠減少參數數量與計算量,但不一定能夠真正的減少模型運行時間。
    • 按照作者的說法,這篇論文相關內容其實在論文發表前1年就有了,是看沒人佔坑才發出來的。
    • MobileNetV1的總體結構並沒有什麼大不了的,也沒有引入residual,後面也基本上不用了,所以就不介紹了。

2. MobileNet V2

  • arxiv
  • 知乎討論參考筆記
  • 要解決什麼問題?
    • MobileNetV1的結構中引入了Depthwise Separable Convolution,但其中的 Depthwise Convolution 可能會導致kernel訓練廢掉(這個是別人的說法,感覺意思就是特徵退化,也就是得到的大量特徵都是0,啥都沒學到)。
    • 另外,MobileNetV1的總體結構太一般了,類似於VGG的結構,而沒有引入resnet densenet這些的新研。
  • 用什麼方法解決?
    • MobileNetV2主要用到的技術包括:
      • Depthwise Separable Convolutions:這個與MobileNetV1相同,所以就不詳細說明了。
      • Linear Bottlenecks
      • Inverted residuals
    • Linear Bottlenecks
      • 意思是在Bottlenecks中,不使用Relu而使用Linear。
      • 在卷積神經網絡中有一個假設:
        • "manifold of interest"可以通過一個更低緯度的子空間表示。
        • 關於 manifold of interest 我不知道確切含義,也不知道該怎麼翻譯,可能是“關鍵信息”的意思?
        • 猜測整體意思就是,神經網絡中流轉的信息可以通過更低緯度的特徵圖來表示(比如resnet中的bottleneck結構,就會先對特徵圖進行降維然後升維,那降維也不會導致信息丟失太多),但低緯度信息在訓練過程中不容易保存,所以通過高緯度來表示。
      • 通過上面的假設,雖然低緯度可以保存信息,但通過Relu後保存的信息會有很大部分丟失,所以就不使用Relu而使用Linear。
      • 論文的這個配圖要好好說道說道,開始看得我要哭了
        • A圖是普通的卷積操作,注意,單次卷積操作是同時對所有channel進行操作的,所以紅色的立方體包含了所有的輸入channel。
        • B圖是Depthwise Separable Convolution,包括一次 depthwise convolution 和一次 pointwise convolution。對於depthwise,其實是對每個channel單獨做了一次 3*3*1*1 的卷積操作,所以輸入數據中的紅色只有一層,表示爲一個平面(而不是A圖中所有channel,表示爲一個長方體)。pointwise convolution本質就是一次普通的 1*1 卷積,輸入數據是對所有 channel 進行操作的,所以圖中顯示的是一個細長的長方體。
        • C圖是bottleneck結構的separable convolution with linear,大概意思就是先進行depthwise convolution(包含relu),再進行pointwise convolution(包含relu),最後在進行一次1*1卷積(不包含relu,而是使用linear)進行升維。整體結構就是一個bottleneck,即channel數量先減少再增加。
        • D圖的本質與C圖一樣,如果有多個C圖結構連接起來,那中間截取一段就如圖D一樣。這個在後面介紹
        • image_1eb3a1ipd1a931d511kdl4f5120n9.png-120.6kB
    • Inverted residuals
      • 意思就是不是普通的bottleneck結構(channel數量先減少再增加),而是 inverted residual(channel數量先增加再減少)。
      • 細節就如下圖,channel數量先增加再減少。
      • channel數量增加多少就通過一個參數 expansion 決定。
      • image_1eb3am4fslqp25u1jdbqie1046m.png-97.5kB
    • 這篇筆記裏有幾個很不錯的圖,推薦大家看看。
      • image_1eb3b09tj1qhav9592hadar8913.png-89.5kBimage_1eb3b0ed67gs19ph12u31l1mo0l1g.png-24.2kBimage_1eb3b0khu1usbpm31fnu18b8hd81t.png-53.1kB
    • 整體模型結構
      • image_1eb3b90dt1t1b1sjt1qafool1lt32a.png-86.8kB
    • 論文本身還提供了結構對比image_1eb3ban8i2iqausr11dv1co034.png-148.3kB
  • 效果如何?
    • 後來一直都在使用,應該屬於應用比較多的輕量化網絡了,說明效果肯定不錯。
    • 當時的準確率啥的沒有啥代表性了,所以也就不放了
  • 還存在什麼問題?
    • 不過也屬於兩年前的東西,最新的一些技術還沒有融合進去。
    • 手工設計的網絡,跟NAS比可能還是稍微差一點。

3. MobileNet V3

  • arxiv

  • 知乎討論

  • 要解決什麼問題?

    • MobileNet系列都是爲了在邊緣端設備上運行爲而實際的。MobileNetV3突出了自己是爲了在手機CPU上運行的。
      • 模型能在手機上運行解決隱私權的問題,畢竟數據沒有流轉,都是在用戶自己手上。
      • 模型小了,不僅能夠運行速度快、在更多型號上運行,而且還能降低電池消耗。
    • MobileNetV2的提出是在18年1月,到MobileNetV3提出(19.5)已經過了很長時間,所以有很多新技術出現,MobilNetV3就融合了很多新技術。
  • 用什麼方法解決?

    • 簡單說,MobileNetV3就是在MobileNetV2的基礎上融合新技術而成。MobileNetV2在上面介紹了,這裏就不多說了。下面就羅列下用到的新技術。
    • NASNet不瞭解,不管了。
    • Squeeze-and-Exciteimage_1eb3gfthd4v41vca1u9h19s1r2m4b.png-78.2kB
    • h-swishimage_1eb3gff1613gmgmk74tiuo1t8s3u.png-6.4kB
    • 網絡結構的優化:
      • image_1eb3ftnes1b0mogc164018fp1m7h3h.png-62.3kB
    • 總體結構
      • image_1eb3gi0ss1ui51f6e1vub1pco1h0s4o.png-146.1kB
      • image_1eb3gi8i4hgr1svv1qq8kju9mv55.png-102.1kB
  • 效果如何?

    • image_1eb3gjjk5our2jkkag6dd1cp25i.png-209.8kB
  • 還存在什麼問題?

    • 不知道在CPU上性能如何。
    • 論文本身感覺不是特別出彩,但結果就是很好。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章