CNN 真的需要下採樣(上採樣)嗎?

2021-02-20 機器學習研究組訂閱
來源:https://zhuanlan.zhihu.com/p/94477174
本文來自知乎專欄,僅供學習參考使用,著作權歸作者所有。如有侵權,請私信刪除。背景介紹在常見的卷積神經網絡中,採樣幾乎無處不在,以前是max_pooling,現在是strided卷積。以vgg網絡為例,裡面使用到了相當多的max_pooling

輸入側在左面(下面是有padding的,上面是無padding的),可以看到網絡中用到了很多2x2的pooling

同樣,在做語義分割或者目標檢測的時候,我們用到了相當多的上採樣,或者轉置卷積

典型的fcn結構,注意紅色區分的decovolution

以前,我們在分類網絡的最後幾層使用fc,後來fc被證明參數量太大泛化性能不好,被global average pooling替代掉了,最早出現在network in network中,

GAP直接把每個通道對應空間特徵聚合成一個標量

從此,分類網絡的範式變為(Relu已經被隱式帶在了onv和deconv裡面),

Input-->Conv-->DownSample_x_2-->Conv-->DownSample_x_2-->Conv-->DownSample_x_2-->GAP-->Conv1x1-->Softmax-->Output

而分割網絡的範式變為(最近的一些文章也在考慮用upsample+conv_1x1代替deconv),

Input-->Conv-->DownSample_x_2-->Conv-->DownSample_x_2-->Conv-->DownSample_x_2-->Deconv_x_2-->Deconv_x_2-->Deconv_x_2-->Softmax-->Output

可是,我們不得不去想,下採樣,上採樣真的是必須的嗎?可不可能去掉呢?

空洞卷積和大卷積核的嘗試

一個很自然的想法,下採樣只是為了減小計算量和增大感受野,如果沒有下採樣,要成倍增大感受野,只有兩個選擇,空洞卷積和大卷積核。所以,第一步,在cifar10的分類上,我嘗試去掉了下採樣,將卷積改為空洞卷積,並且膨脹率分別遞增,模型結構如下所示,

這個網絡的卷積結構,注意最後用一個空間範圍的全局平均直接拉平為特徵向量,最後再跟一個10維的全連接層

這是一個典型的四層的VGG結構,每層卷積的dilation_rate分別為1,2,4,8。在訓練了80個epoch後,測試集準確率曲線如下所示 ,

四層VGG網絡,卷積的dilation_rate分別是1,2,4,8,可訓練參數量25474

最終的準確率達到了76%,相同參數的vgg結構的卷積網絡能夠達到的準確率基本就在這附近。

從另一種思路出發,為了擴大卷積的感受野,也可以直接增加卷積的kernel_size,與上面對比,保持dilationrate為1不變,同時逐層增大卷積的kernel_size,分別為3,5,7,9,訓練80個epoch後得到如下準確率曲線,

四層VGG網絡,卷積的kernel_size分別是3,5,7,9,可訓練參數量為172930

和之前改變dilation_rate的方式比較,收斂過程很一致,略微震蕩一點,但是最終的結果很一致,都在76%上下,這說明影響最終精度的因素只有感受野和每層的通道數。

為了說明下採樣在性能方面沒有提升,用有下採樣的網絡對對比。即在不修改其他任何參數的情況下,對原本使用dilation的卷積層使用下採樣,stride都設置為2,同樣訓練80個epoch,收斂結果如下,

四層VGG網絡,每層使用stride為2的卷積進行下採樣,可訓練參數量25474

最終收斂到了73%上下,比上面兩個實驗低了大約3個點,這說明下採樣的信息損失確實不利於CNN的學習。

把三種參數的結果放在一起對比,更能夠說明問題,

四層VGG網絡的對比結果,除了卷積層參數不同,其他參數均相同

為了驗證這種想法的通用性,使用resnet18結構的網絡,並在原本需要下採樣的卷積層使用dilation_rate不斷增大的空洞卷積替代。訓練80個epoch後,最終得到的準確率曲線如下 所示,

resnet18上的準確率曲線,網絡通過改變卷積層dilation_rate得到

在沒有其他任何調參的情況下,最後收斂到了87%的準確率。

小卷積核的嘗試

我們知道,大卷積核的感受野通常可以通過疊加多個小卷積核得到,vggnet首先發現5x5卷積可以用兩個3x3卷積代替,極大減少了參數量。

兩個3x3卷積的感受野和一個5x5卷積相同,但是參數少一半

同樣的7x7卷積可以用三個3x3卷積級聯,9x9可以用四個3x3卷積級聯。

為了獲得和上面四層卷積網絡相同的感受野,我設計了一個十層的只有3x3卷積的網絡,每層之間依然有非線性。因為層數多了很多,為了確定中間層的通道數,我做了幾組實驗。同時,為了不極大增加參數量,我又在卷積中間插入depthwise卷積,這樣保持對應感受野上的通道數不變,而參數量不至於增加很多。訓練結果,

實驗結果,後面的數字表示每層對於的通道數

可以看到,只有三個網絡結構在精度上優於之前的設計,而這三個網絡的參數量都是之前的數倍。使用depthwise卷積的網絡參數量並沒有增加太多,但是精度還是略低於之前的設計。

為了說明問題,增加每層的通道數,比如之前16-32-48-64的設計,改為64-128-256-512的設計,基本上對於這個深度的網絡來說,容量已經接近上界了,結果如下,

增加通道數的結果

可以看到,空洞卷積網絡依然以較小的參數領先於depthwise卷積和3x3卷積混合網絡,並以數倍更少的參數優勢,在精度上略低於3x3級聯網絡。

這個實驗表明,對於CNN而言,深度之外,感受野以及該感受野上的通道數,真正決定了網絡的性能。

這和語音中的wavenet是相似的,

通用wavenet

空洞wavenet

wavenet使用空洞因果卷積來降低計算量,原始wavenet的性能並沒有問題,但是計算量和參數量指數增長。

稀疏化方面的思考

小卷積核疊加和大卷積核的方法為了獲得和空洞卷積相同的性能,付出了參數上的巨大代價,而空洞卷積本身是稀疏的(大多數元素都是0),這促使我們思考,是否可以用稀疏化解決參數巨大的問題。

CNN的稀疏化最近研究很多,一般的卷積稀疏化見下圖,並注意到每層卷積的卷積參數都是四維的,即輸入通道數,輸出通道數,x方向的卷積尺寸,y方向的卷積尺寸。

四種不同的稀疏卷積,因為卷積核權重四維的,最左邊稀疏性是最不規則的,越向右規則的維度則越多,越有利於硬體加速

我們常見的其實是通道維度的稀疏化,這相當於減少通道數,也最容易加速,但是更有意義的稀疏化,我認為是卷積核內部的稀疏化,如下圖所示,

最左側沒有稀疏化,中間有零值(也就是稀疏化),最右側有1x2的塊狀稀疏化

這種稀疏化能減少參數量(因為零值是沒有意義的),但是因為不利於工程實現,所以目前沒有明顯的加速效果。

近期的研究表明,CNN裡大多數卷積核都是稀疏的,大約有50%以上都是稀疏的,也就是說有50%以上參數都是冗餘的。如果能去掉冗餘參數,那麼大卷積核和多層小卷積核也能證明在感受野和特定感受野上的通道數對CNN性能的決定性影響,在不增加額外模型參數的前提下。

儘管很容易預測,但是接下來,我們還會證明這兩種方法的參數冗餘。

10層3x3級聯網絡的可訓練參數量是86404,4層空洞卷積網絡參數量是25474,4層大卷積核網絡參數量是172930。使用tensorfllow內置的稀疏化功能,其官方github地址為model_optimization,原理即在訓練過程中,按一定的準則將卷積核的一些元素置為零,然後finetune。對於10層3x3級聯網絡,選擇稀疏率為25%,這樣稀疏化後的參數量為21601,對於大卷積核網絡,選擇常數稀疏率為15%,稀疏化的參數量為25940,這樣稀疏化後它們的參數都比空洞卷積網絡更少。為保證網絡不會繼續收斂了,訓練1000個epoch,稀疏化從第200個epoch開始,稀疏化後的訓練結果如下所示,

可以明顯的看到稀疏化後的3x3級聯網絡的性能是最好的,同時它的參數也是最少的,同時大卷積核的性能次之,這個時候空洞卷積的性能反而略低。

保持同樣的參數和稀疏度,在cifar100上訓練的結果如下所示,

這個時候級聯3x3網絡的性能已經遠超其他兩個網絡了(對於cifar100上的baseline取多少合適,大家可以參閱一些文章或博客)。

稀疏化極限的思考

我們上面的討論基本就是,只要能保住某個感受野,稀疏化也是可行的,但是又不禁想知道稀疏化的極限在哪裡,對於3x3的卷積核,在保住感受野的情況下,最少必須有兩個非零元素,但是這樣一來卷積核就退化了,從各向同性退化為各向異性,

前面兩個卷積核只有一個方向性(對角線方向),最後一個有兩個方向性

學過線性代數的同學都知道,在二維線性空間至少有兩個基底向量,才能合成各種方向的梯度。如果卷積核退化成前面兩個的情況下,卷積核的二維性質也許就損失掉了,但是同一層中只要有多個卷積核具有不同的方向性,那麼這一層依然可能是各向同性的,方向性也許也是感受野的一個重要描述。關於感受野的方向性,一個來自視覺皮層實驗的啟示如下:


人類視覺皮層中不同方位調諧的感受野分布

感受野的意義。只有大感受野才能感受到尺寸比較大的物體。感受野,深度和通道數,共同決定了cnn某一層的性能,一個衡量cnn性能的正確表述應該是網絡在某一層有多大的深度和感受野,同時有多少通道。深度決定了網絡的抽象能力或者說學習能力,感受野和通道決定了網絡學到了多少東西

maxpooling的額外討論這促使我們思考,採樣真的是必要的嗎?當然,從工程的角度看,採樣能極大減小feature map的尺寸,從而大大降低計算量,但這個實驗表明,採樣對提高cnn的性能並沒有幫助,max pooling有抑制噪聲的作用,所以有用,但max pooling可以用不下採樣的方式實現,這和經典的中值濾波類似。典型的中值濾波,這裡卷積核大小是20,注意到輸出尺寸沒有改變,max pooing和中值濾波類似,它們都可以用來壓制噪聲這也說明,cnn的每一層卷積都在編碼空間相關性,淺層特徵編碼短距離相關性,更深的卷積層編碼更遠距離的空間相關性,而到了某一層,再也沒有統計意義上的空間相關性了(這取決於有意義的物體在圖像中的尺寸),到這一層就可以用GAP聚合空間特徵了。分割網絡的設計在之前分類網絡的基礎上,去掉最後面的global average pooling和fully connected,換成conv1x1(相信很多人都知道,fc層形式上可以轉換成conv1x1,本以為只是工程上的trick,沒想到有本質聯繫),直接變成分割網絡,在我製作的數據集m2nist上,訓練結果如下所示,無採樣網絡在m2nist上的訓練結果(因為背景面積比較大,acc超過94%才有實際意義)後續討論,對網絡設計的可能影響

Input-->Conv(dilate_rate=1)-->Conv(dilate_rate=2)-->Conv(dilate_rate=4)-->Conv(dilate_rate=8)-->GAP-->Conv1x1-->Softmax-->Output

Input-->Conv(dilate_rate=1)-->Conv(dilate_rate=2)-->Conv(dilate_rate=4)-->Conv(dilate_rate=8)-->Conv(dilate_rate=16)-->Conv(dilate_rate=32)-->Softmax-->Output

不再有decoder階段,因為到了decoder,上採樣只是為了恢復解析度,在無採樣的網絡結構裡,在最大感受野處,即之前加入global average pooling的地方可以直接接softmax進行pixel level的分類,這還需要更多實驗。
除此之外,在其他網絡中,在網絡的任何部分中,都可以使用沒有採樣的子網絡,比如hrnet的旁支網絡。可以使用無採樣的網絡代替原本需要恢復解析度的子網絡對跨層連接的思考如果沒有了採樣,那麼所有feature map的解析度都是一樣的,跨層連接也不會再區分bottom-up和up-bottom,所有的跨層連接本質上都是在融合不同感受野的特徵(這裡待議,bottom-up應該是在融合解析度,常用在輸出側,up-bottom應該是在融合來自不同感受野的特徵,常用在特徵提取側,當沒有了解析度的變換,bottom-up就不再被需要了)。對目標檢測的可能影響如果沒有了解析度的變化,那麼檢測完全可以在網絡深層的某個感受野處叉開成為三支,分別檢測大中小物體,這個思想和tridentnet有類似之處據我所知,我是第一個提出能夠完全用dilated convolution結合global avergage pooling來實現圖像分類或者分割的,並注意到這種方法能夠帶來性能提升。但是請意識到dilated convolution也不是必須,一個更大kernel size的卷積就可以替換它,但這勢必會引入更多參數,可能導致過擬合,當然這可以用稀疏化的辦法解決,但是稀疏卷積目前不適合工程化,因為效率並不高。類似的想法最早出現在deeplab的相關論文Rethinking Atrous Convolution for Semantic Image Segmentation中,這篇文章中,空洞卷積主要是通過移除網絡最後幾層的降採樣操作以及對應的濾波器核的上採樣操作,來提取更緊湊的特徵,並且不增加新的額外學習參數。圖片來自於論文,以串行方式設計atrous convolution 模塊,複製ResNet的最後一個block,如block4,並將複製後的blocks以串行方式級聯。總結雖然不利於加速,但是卷積核天生就應該是稀疏的,下採樣損失了解析度,一定會損失精度。深度之外,只有感受野和與之對應的通道數最重要。

一句話說來,CNN一種利用卷積實現二維泛函空間到二維泛函空間映射的神經網絡。

以一維為例,這就相當於把(-1,1)上的有界函數f映射到有界函數g的一個泛函:為什麼用卷積呢?眾所周知,卷積是最簡單的這樣一個泛函並且它有著諸多良好的性質,最重要的是,卷積有平移不變性,所以對於任意一個算子  ,cnn 的目的就是找到這樣一個  ,但是直接尋找並不容易,那麼就用一系列卷積去逼近它,其中  在這裡是非線性激活函數,那麼,cnn 的策略就很明顯了,通過擬合的方式,用一組卷積去逼近任意泛函(注意,這個時候縮放不變性被非線性激活破壞了)。它是一個廣義函數,也就是說不是普通意義上的函數,當高斯核函數的有效半徑無限趨近於 0 的時候,便得到了狄拉克函數。也就是說和它的 n 階導數做卷積便得到了自己的 n 階導數。這個函數在應用中必定是實現不了的,但是讓我們來看看高斯函數,它的導數是什麼樣子,高斯函數的前七階導數,包含原函數,這些函數的有效半徑驚人的一致可以看出來這些函數的有效半徑驚人的一致。如果使用這些函數,理論上可以使用卷積近似任意微分算子,而微分算子是性質非常好的線性算子。所以,為什麼使用小卷積核,因為只有高斯函數的有效半徑趨近於 0 的時候,它才能近似狄拉克函數,它的導數才能近似於狄拉克函數的導數。(小卷積核的意義待議,這裡提供另一個思考方式,因為圖像不是普通函數,卷積在頻率空間變成乘法,小卷積核更容易產生高頻(類比高斯核函數),所以卷積後更容意放大高頻信息,(其實,這和上面的解釋並不完全衝突)使得高頻信息不容易被非線性的激活函數抹去,而高頻信息對於圖像來說,有非常重要的作用,比如說邊緣,比如說角點)。其實高斯核還有一個性質,與被高斯核作用後(相當於高斯平均)後求 n 階導數,相當於與高斯核的 n 階導數作卷積,也就是說,
這樣求相當與求解一系列線性係數  ,請自行將  對應到卷積核大小上那麼這樣稍大卷積核的意義就是變換在高斯平均後的空間裡的微分算子,而且卷積核越大,這個平滑效應越強。而在圖像領域,因為計算機和資訊理論離散化的表現形式,我們使用採樣和量化來處理它,並以此減少計算量請持續關注本文的原始碼 github 倉庫,連結:https://github.com/akkaze/cnn-without-any-downsampling

想要了解更多資訊,請掃描下方二維碼,關注機器學習研究會

                                          

轉自:AI有道

相關焦點

  • 採樣1:採樣定理
    其工作特點是,可以在CLK信號的同步下,完成加和乘的運算。在數學上,就是對序列信號的處理。數字系統的結構如下:那麼採樣頻率應該如何確定,才能使離散時間處理系統的作用看起來和連續時間系統的作用是一樣的呢?這需要用數學進行一個推演:離散序列如何才能唯一的表徵一個連續時間信號。
  • 採樣頻率、採樣點數、頻率解析度
    同時,考慮到窗函數截短數據的影響存在,當然窗函數的特性也要考慮,在頻率做卷積,如果窗函數的頻譜是個衝擊函數最好了,那不就是相當於沒截斷嗎?可是那不可能的。我們考慮窗函數主要是以下幾點:1)主瓣寬度B最小(相當於矩形窗時的4π/N,頻域兩個過零點間的寬度)。2)最大邊瓣峰值A最小(這樣旁瓣洩露小,一些高頻分量損失少了)。
  • 中頻採樣和IQ採樣的比較和轉換
    一、什麼是中頻採樣,什麼是IQ採樣射頻接收系統通常使用數位訊號處理算法進行信號解調和分析,因此需要使用ADC對信號進行採樣。根據採樣頻率的不同,可以分為射頻直接採樣、中頻採樣、IQ採樣。射頻採樣和中頻採樣只需要一路ADC,採樣結果為一組數字序列,而IQ採樣需要兩路ADC,採樣結果為兩組數字序列。
  • GGX重要性採樣
    方向上投影的橢圓上均勻的採樣然後將採樣點沿  ,通過下面公式轉換到橢圓上 確實是在橢圓上均勻分布。現在總結以下採樣步驟:1.在單位圓上進行均勻採樣得到採樣點  ,所以我們需要將採樣點進行映射採樣步驟:1.將入射方向
  • 你真的了解深度學習中的上採樣嗎?
    ,此時就需要對feature map進行上採樣(也有一些文章稱之為升採樣,是一個意思,本文均用上採樣。)計算公式:其中g(x',y')為輸出圖像中坐標為(x',y')的像素點的顏色值(或灰度值),f(x,y)為輸入圖像中坐標為(x,y)的像素點的顏色值(或灰度值),(x,y)為輸出圖像上的坐標(x',y')映射到輸入圖像坐標系下的坐標。int(x)為取整運算。
  • 精品採樣+live工程+採樣
    今日推薦Future Bass 風格採樣+音色+Live工程今天的包是全套Future Bass風格資源所有資源加起來有1G這麼實惠的包你一定不能錯過Skifonix Sounds製作的「 Millenium:Future Bass
  • 奈奎斯特採樣定理
    根據奈奎斯特採樣定理,需要數位化的模擬信號的帶寬必須被限制在採樣頻率fs的一半以下,否則將會產生混疊效應,信號將不能被完全恢復。這就從理論上要求一個理想的截頻為fs/2的低通濾波器。
  • 採樣、致敬還是抄襲?嘻哈音樂文化衝擊下的版權迷思
    「XXX這首歌抄襲了我家愛豆」、「XXX你用的這個beat買版權了嗎」……回顧節目播出的這幾個月,關於嘻哈歌手作品疑似抄襲這一話題成為了大家突然關注的焦點,甚至節目中的某位歌手數年前的作品也被網友挖出並在該選手微博下大量留言要求其承認抄襲並道歉。
  • 採樣的方式
    採樣一般是相對於Y'CbCr(YUV的一種,由RGB轉化而來)顏色編碼來說的,在這裡,Y代表亮度,Cb和Cr可理解為顏色信息。採樣方式一般有4:4:4,4:2:2,4:2:0等,把它表示為X:Y:Z,X表示單元列數(一個處理單元的列數由X規定,行數一般為2行,在這裡為8個像素為一個處理單元),Y表示第一行的顏色(CbCr)採樣,Z表示第二行的顏色採樣,像素的亮度信息則被全部保留。那麼顏色沒有被採樣,只有亮度採樣的像素,它們的顏色從哪裡來?
  • 三河市核酸檢測機構、採樣點名單(新增社區採樣點)
    1、納丹堡小區-11號樓車棚採樣單位:河北燕達醫院電話:138336520572、夏威夷南岸-小區門口採樣單位:河北燕達醫院電話:158326318733、潮白人家-南區、北區採樣單位11、悅榕灣-物業門口採樣單位:河北燕達醫院電話:1593216668812、首爾甜城社區-物業東側幼兒園室內採樣單位:京東中美醫院電話:1803366157813、星河皓月社區-居委會室內採樣單位:
  • 數據科學家需要了解的 5 種採樣方法
    雷鋒網 AI 科技評論按,採樣問題是數據科學中的常見問題,對此,WalmartLabs 的數據科學家 Rahul Agarwal 分享了數據科學家需要了解的 5 種採樣方法,雷鋒網 AI 科技評論編譯整理如下。數據科學實際上是就是研究算法。我每天都在努力學習許多算法,所以我想列出一些最常見和最常用的算法。
  • 數學教育:採樣定理
    該定理說明採樣頻率與信號頻譜之間的關係,是連續信號離散化的基本依據。它為採樣率建立了一個足夠的條件,該採樣率允許離散採樣序列從有限帶寬的連續時間信號中捕獲所有信息。採樣過程所應遵循的規律,又稱取樣定理、抽樣定理。採樣定理說明採樣頻率與信號頻譜之間的關係,是連續信號離散化的基本依據。
  • 機器學習中需要了解的 5 種採樣方法
    採樣問題是數據科學中的常見問題,對此,WalmartLabs 的數據科學家 Rahul Agarwal 分享了數據科學家需要了解的 5
  • 基於序列模型的隨機採樣
    基於蒙特卡洛的隨機採樣在序列模型中採樣的最簡單方法就是在貪婪搜索的基礎上,在每一步挑選下一個詞的時候不是根據它們相應的得分logPLM而是根據模型輸出的下一個詞分布PLM來隨機選取一個,這樣重複到固定長度或者挑選到句子結束符時停止。這樣我們獲得了一個樣本。如果需要採集多個樣本,那麼重複這個過程若干次便可得到多個樣本。
  • 隨機採樣方法——蒙特卡羅方法
    則一個簡單的近似求解方法是在[a,b]之間隨機的採樣一個點。比如x0,然後用f(x0)代表在[a,b]區間上所有的f(x)的值。那麼上面的定積分的近似求解為:當然,用一個值代表[a,b]區間上所有的f(x)的值,這個假設太粗糙。那麼我們可以採樣[a,b]區間的n個值:x0,x1,...xn−1,用它們的均值來代表[a,b]區間上所有的f(x)的值。
  • 【採樣】電音製作必備,Trap+Psy Trance風格鼓採樣
    今天給大家推薦Trap+Psy Trance風格"鼓"採樣在這個採樣包中您會發現各種類型的底鼓和軍鼓的單個採樣可以將其拖放到你的工程中將你的製作提升到一個新的水平採樣試聽:>資源包相關信息:文件大小(壓縮):18.5MB質量:44.1kHZ 24bit格式:WAV與所有DAW兼容與PC和Mac兼容資源包包含內容:•總共83個 Kicks(底鼓)單個採樣包括:• 035 x (Big
  • 單片機如何處理ADC採樣數據?
    現在我們來分析單片機工程師常遇面試問題之四:單片機如何處理ADC採樣數據?前面作者有文章介紹了單片機是如何採樣電壓和電流的,如有不了解單片機ADC採樣原理的小夥伴可以點擊我的頭像進入我的主頁查看文章「單片機是如何採樣電流?」。首先一定有小夥伴有疑問,為什麼還要對採樣的數據進行處理呢?直接拿來用不行嗎?
  • 關於土壤採樣的決策單元
    從今年5月份以來,我在不同場合做過多次決策單元多點增量採樣(Decision Unit Multi Increment Sampling, DUMIS
  • 採樣人員告別防護服!紹興首個移動式核酸採樣小屋來了
    紹興市首個核酸採樣小屋   在附屬醫院啟用 ,防止外界的空氣進入室內,保障屋內採樣人員的安全。   採樣護士   任幼娟開心地說   「現在不用穿防護服舒服多了,以前太悶了,上廁所也不方便,一天做下來,衣服全溼掉了!」
  • 上海生鮮食品安全嗎?38℃高溫,這群「偵察兵」還穿著防護服採樣...
    9時13分,他們到達一家生鮮電商站,這是今天第一個採樣點。室外溫度已達34攝氏度,在採樣點門外的空地上,程樹楊和盧宏正嫻熟地幫助對方穿好隔離衣,戴上手套、口罩和帽子,完成一級防護。一套流程下來,兩人額頭上沁出了汗珠。