AI瘋狂進階——Depthwise Separable Conv is all you need?

2021-01-12 AI瘋狂進階

本文作者專注於AI進階算法,正在推出AI瘋狂進階之基礎理論進階篇,如有興趣可持續關注我。

核心導讀:

1.Depthwise Separable Convolution為什麼高效?

2.Depthwise Separable Convolution比普通卷積差?

3.Depthwise Separable Convolution is all you need?

隨著深度學習的發展,卷積神經網絡變得越來越普遍。之前很長一段時間,大家都把注意力放在通過更深和更複雜的網絡來得到更高的精度,比如很多刷榜的算法都是運用了非常複雜的技巧(實際中可能毛用都沒,這裡鄙視下那些純粹為了刷榜而刷榜的,浪費時間和精力為了個虛名而已),但是這種網絡往往在模型大小和運行速度上沒多大優勢,在實際的工程應用中可能因為應用成本太大而很難大規模商用,例如一些嵌入式平臺上的應用比如機器人和自動駕駛,手機端的一些AI應用比如人臉識別或者文字識別,它們的硬體資源有限,就十分需要一種輕量級、低延遲的網絡模型,而本文所講得深度可分離卷積(Depthwise Separable Convolution)即是在這樣的背景下面應運而生。

1.Depthwise Separable Convolution為什麼高效?

Depthwise Separable Convolution將傳統的卷積分解為一個深度卷積(depthwise convolution)+ 一個 1×1的卷積(pointwise convolution)。如下圖所示,(a)是傳統卷積,(b)、(c)分別對應深度可分離卷積的深度卷積和 1×1的卷積:

假設輸入特徵圖大小為 D_F×D_F×M,輸出特徵圖大小為 D_F×D_F×N,卷積核大小為 D_K×D_K,則傳統卷積的計算量為:D_K×D_K×M×N×D_F×D_F

參數量為:D_K×D_K×M×N

深度可分離卷積的計算量為深度卷積和 1×1 卷積的計算量之和:D_K×D_K×M×D_F×D_F+M×N×D_F×D_F

參數量為:D_K×D_K×M+ M×N

當卷積核大小為 3×3的時候,深度可分離卷積的計算量縮減為傳統卷積的 1/8~1/9 ,參數量也減少較多,但精度下降很低,甚至不會下降。Depthwise Separable Convolution目前已經廣泛應用於各種輕量化卷積神經網絡中,如Mobilenet系列,Shufflenet系列,Nasnet系列,Efficientnet系列,MixNet等,幾乎已經成為一種標配或者潮流。

2.Depthwise Separable Convolution比普通卷積差?

Efficient系列的文章告訴了我們答案。《EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks》是谷歌2019年最新的研究,該文在mNasnet的基礎單元基礎上用AUTO ML搜索出一系列輕量化網絡B0-B7,具體精度如下圖,而mNasnet基礎單元主要是由Depthwise Separable Convolution和1*1 Convolution組成。從數據可以看出,最大的Efficient-B7僅僅只用了66M的參數就達到了大模型Gpipe 557M的精度,而我們常用的Resnet-50網絡,Efficient-B0僅僅只用5.3M的參數就可以達到同樣的精度。當然,數據如此驚悚的另一大原因就是用了TPU(炫富,不信去看看谷歌TPU的服務價格!)+AUTOML(有很多人認為這算是一種過擬合,但我想說的是,我們現在很多實際應用項目就是需要在特定的場景下面過擬合,根本就不太需要很高的泛化能力)。這數據背後其實可以反應出一個很明顯的問題,Depthwise Separable Convolution比普通卷積的精度會低嗎?答案很明顯,不會,並且本文作者認為隨著技術進一步的發展,普通卷積會慢慢消失,這種輕量化卷積將會成為主流。

3.Depthwise Separable Convolution is all you need?

本文作者目前基本已經不怎麼用普通卷積,而目前所有的項目中都是用的Depthwise Separable Convolution,通過AUTO ML經常能找到比普通卷積堆積的巨大網絡精度還高的小型網絡,當然,為什麼會出現這種情況,目前理論上還沒辦法證明,本文作者也在持續探索這一塊的內容,有進展會第一時間發出來。

相關焦點

  • Best Advice: The 10 Common Characteristics Of Wise People.
    The more experience you gain, the wiser you will become.But wisdom also relies on internal and external factors, not just skills and experience.
  • 一步步解析Attention is All You Need!
    本文將通過細節剖析以及代碼相結合的方式,來一步步解析Attention is all you need這篇文章。
  • Distribution is all you need:這裡有12種做ML不可不知的分布
    項目地址:https://github.com/graykode/distribution-is-all-you-need下面讓我們先看看總體上概率分布都有什麼吧:非常有意思的是,上圖每一種分布都是有聯繫的。比如說伯努利分布,它重複幾次就是二項分布,如果再擴展到多類別,就成為了多項式分布。
  • If I didn't have you
    If I didn't have youharder to crack,I'd be an atom without a bomb,A dot without the com,And I probably still live with my mom,And he'd probably still live with his mom,Ever since I met you
  • 最深情的R&B | The Way I Still Love You
    it's no use但仍然無濟於事Don't know what's going on with me我不知道自己究竟是怎麼了But all I know it's haunting me但我清楚的是你仍縈繞我心頭I need your love to set me free我需要你的愛讓我自由Listen to me請聽我說
  • AI瘋狂進階——激活函數篇
    本文作者專注於AI進階算法,正在推出AI瘋狂進階之基礎理論進階篇,如有興趣可持續關注我。核心導讀:1. 神經網絡激活函數的作用是什麼?2. 如何評價激活函數的好壞?3. ReLU存在哪些問題?4.本文在激活函數上進行了進階總結,下面一一闡述:1.如何評價激活函數的好壞?
  • 一知影視傳媒工作室:I need you,期待與你的強強聯合!
    如果您來影棚製作拍攝,我們的staff也由您指揮需要您: 有自己的原創節目或者有完整的策劃案 可以與我們」和藹可親」討論、協商 良好的合作精神和職業素養你可以: 是個有才藝的個人 享受鏡頭的個人 有自己的創意社團(相聲、舞蹈、二次元……)03I need
  • All you just have to see in Muscat, the mighty Omani capital...
    Across the intervening millennia, the region (which would ultimately become modern-day Oman) was dominated by the Assyrians, the Babylonians and the Persians, all
  • 單目深度估計論文筆記:FastDepth(1903.03273)
    使用depthwise分解進一步降低所有卷積層的複雜度,得到一個既薄又快的解碼器;跳躍連接。為了讓高解析度特徵圖上所有的細節都能映射到解碼器上與解碼器內的特徵圖合併,作者使用了跳躍連接,這有助於解碼器重建更細節的密集輸出,這是在U-Net和DeeperLab中都使用並且被證明有效的技術。這裡編碼器的特徵圖是通過加法而不是並列的方式合併到解碼器的特徵圖上,這樣可以避免增加解碼層的特徵圖通道數。
  • need的用法(包含Need to do與need doing的區別)
    一.need的定義及用法:need 表示「需要;必要」,既可以做情態動詞,又可以做實義動詞。1.need用作情態動詞時,後接動詞原形,此時其沒有人稱和數的變化,通常用於否定句和疑問句中。例如:Need I come back home now?我現在需要回家嗎?