當前位置:
首頁 > 新聞 > 萬字長文帶你看盡深度學習中的各種卷積網路(上篇)

萬字長文帶你看盡深度學習中的各種卷積網路(上篇)

雷鋒網 AI 科技評論按:深度學習中的各種卷積網路大家知多少?對於那些聽說過卻又對它們沒有特別清晰的認識的小夥伴們,Kunlun Bai 這篇文章非常值得一讀。Kunlun Bai 是一位人工智慧、機器學習、物體學以及工程學領域的研究型科學家,在本文中,他詳細地介紹了 2D、3D、1x1 、轉置 、空洞(擴張)、空間可分離、深度可分離、扁平化、 分組等十多種卷積網路類型。雷鋒網 AI 科技評論編譯如下。

如果你曾聽過深度學習的各種卷積網路(例如 2D/3D/ 1x1 / 轉置 /空洞(擴張)/ 空間可分離 / 深度可分離 /扁平化 / 分組 / 混洗分組卷積)並疑惑它們到底都是什麼的話,你可以通過這篇文章了解它們實際的工作原理。

在文中,我概括性地介紹了在深度學習中常見的幾種卷積,並採用了大家都能夠明白的方式來解釋它們。針對這一主題,這篇文章以外也有其他的一些文章可供大家參考,我將這些文章的鏈接附在了文末參考部分,大家可前往閱讀。

希望這篇文章能夠幫助大家建立起對這幾種卷積的認知,並為大家的學習/研究帶來有用的參考價值。

本文的內容包括:

1. 卷積 VS 互關聯

2. 深度學習中的卷積網路(單通道版,多通道版)

3.3D 卷積

4. 1x1 卷積

5. 卷積演算法

6. 轉置卷積(反卷積,棋盤效應)

7. 空洞卷積(擴張卷積)

8. 可分離卷積(空間可分離 卷積,深度可分離卷積)

9. 扁平化卷積

10. 分組卷積

11. 混洗分組卷積

12. 逐點分組卷積

1. 卷積 VS 互關聯

卷積是一項廣泛應用於信號處理、圖像處理以及其他工程/科學領域的技術。在深度學習中,卷積神經網路(CNN)這一模型架構就由這項技術命名的。然而,深度學習中的卷積本質上就是信號/圖像處理中的互關聯(cross-correlation)。二者間只有細微的差別。

不深入考慮細節的話,二者的區別在於:在信號/圖像處理中,卷積被定義為:

它的定義是:一個函數經過翻轉和移動後與另一個函數的乘積的積分。下面的圖像形象化地展示了這個思想:

萬字長文帶你看盡深度學習中的各種卷積網路(上篇)

打開今日頭條,查看更多圖片

信號處理中的卷積。過濾函數 g 經過翻轉然後沿著橫軸滑動。對於該函數在橫軸上滑過的每個點的位置,都計算出函數 f 與翻轉後的函數 g 的重合區域。這個重合的區域就是函數 g 在橫軸上滑過的某個特定位置的卷積值。圖像來源:http://fourier.eng.hmc.edu/e161/lectures/convolution/index.html

在這裡,函數 g 是一個過濾函數。這個函數經過翻轉然後沿著橫軸滑動。對於該函數在橫軸上滑過的每個點的位置,都計算出函數 f 與翻轉後的函數 g 的重合區域。這個重合的區域就是函數 g 在橫軸上滑過的某個特定位置的卷積值。

而另一方面,互關聯是這兩個函數的滑動的點積(dot product)或滑動的內積(inner-product)。互關聯的過濾函數不經過翻轉,它直接滑動通過函數 f。函數 f 和函數 g 的重合區域就是互關聯。下圖展示了卷積和互關聯的區別:

萬字長文帶你看盡深度學習中的各種卷積網路(上篇)

在信號處理中,卷積和互關聯的區別。圖像來源:https://en.wikipedia.org/wiki/Convolution

在深度學習中,卷積中的過濾函數是不經過翻轉的。嚴格來說,它就是互關聯。我們本質上就是在執行 element-wise 乘法和加法。但是,這個「卷積」僅在深度學習中被稱為卷積,可以這樣做的原因是因為卷積在訓練期間就學到了過濾函數的權重,如果上面示例中的經翻轉的函數 g 是正確的函數,那麼經過訓練後,卷積所學到的過濾函數就會找到翻轉後的函數 g。因此,在正確的卷積中,就不需要在訓練前早早地翻轉過濾函數。

2. 深度學習中的卷積

執行卷積的目的就是從輸入中提取有用的特徵。在圖像處理中,執行卷積操作有諸多不同的過濾函數可供選擇,每一種都有助於從輸入圖像中提取不同的方面或特徵,如水平/垂直/對角邊等。類似地,卷積神經網路通過卷積在訓練期間使用自動學習權重的函數來提取特徵。所有這些提取出來的特徵,之後會被「組合」在一起做出決策。

進行卷積操作有許多優勢,例如權重共享(weights sharing)和平移不變性(translation invariant)。此外,卷積也可以考慮到像素的空間關係。這些優勢都非常有幫助,尤其是在許多的計算機視覺任務中,因為這些任務往往涉及到對某些組成部分與其他組成部分有某些空間關係的目標進行識別(例如一隻狗的身體通常是跟它的腦袋、四條腿以及尾巴相連的)。

2.1 卷積:單通道版

萬字長文帶你看盡深度學習中的各種卷積網路(上篇)

面向單通道的卷積,圖像源自:https://towardsdatascience.com/intuitively-understanding-convolutions-for-deep-learning-1f6f42faee1

在深度學習中,卷積就是元素級別( element-wise) 的乘法和加法。對於一張僅有 1 個通道的圖像,卷積過程如上圖所示,過濾函數是一個組成部分為 [[0, 1, 2], [2, 2, 0], [0, 1, 2]] 的 3 x 3 矩陣,它滑動穿過整個輸入。在每一個位置,它都執行了元素級別的乘法和加法,而每個滑過的位置都得出一個數字,最終的輸出就是一個 3 x 3 矩陣。(注意:在這個示例中,卷積步長=1;填充=0。我會在下面的演算法部分介紹這些概念。)

2.2 卷積:多通道版

在許多應用中,我們處理的是多通道的圖像。一個典型的案例就是 RGB 圖像,如下圖所示,每一個 RGB 通道都分別著重於原始圖像的不同方面。

萬字長文帶你看盡深度學習中的各種卷積網路(上篇)

每一個 RGB 通道都分別著重於原始圖像的不同方面,圖片拍攝於:中國雲南元陽

另一個多通道數據的案例就是卷積神經網路中的層。一個卷積網路層往往都由多個通道(一般為數百個通道)組成,每一個通道描述出前一個層的不同方面。那我們如何實現不同深度的層之間的過渡呢?又如何將深度為 n 的層轉化為後面的深度為 m 的層呢?

在介紹這個過程之前,我們先搞清楚幾個名詞:層(layer)、通道(channel)、特徵映射(feature map)、過濾器(filter)以及卷積核(kernel)。從層級角度來說,「層」和「過濾器」的概念屬於一個層級,而「通道」和「卷積核」都在下一個層級。「通道」和「特徵映射」是指同一個東西。一層可以有多個通道(或特徵映射);如果輸入的是 RGB 圖像,那這個輸入層有 3 個通道。「通道」一般用來形容「層」的架構。類似地,「卷積核」則用來形容「過濾器」的架構。

萬字長文帶你看盡深度學習中的各種卷積網路(上篇)

「層」(「過濾器」)和「通道」(「卷積核」)之間的區別

過濾器和卷積核之間的區別非常微妙,有時候,二者可以交替使用,這無疑就製造了些困惑。但根本上來講,二者還是有些細微區別的:「卷積核」指的是指權重組成的 2D 數組 ;「過濾器」則是由多個卷積核堆疊在一起的 3D 架構概念。對於一個 2D 過濾器來說,過濾器就相當於卷積核,但是對於一個 3D 過濾器以及深度學習中的大多數卷積而言,一個過濾器由一組卷積核組成。每個卷積核都是獨一無二的,強調了輸入通道的不同方面。

帶著對這些概念的了解,下面讓我們一起來看看多通道卷積。生成一個輸出通道,就需要將每一個卷積核應用到前一層的輸出通道上,這是一個卷積核級別的操作過程。我們對所有的卷積核都重複這個過程以生成多通道,之後,這些通道組合在一起共同形成一個單輸出通道。下圖可以讓大家更清晰地看到這個過程。

這裡假設輸入層是一個 5 x 5 x 3 矩陣,它有 3 個通道。過濾器則是一個 3 x 3 x 3 矩陣。首先,過濾器中的每個卷積核都應用到輸入層的 3 個通道,執行 3 次卷積後得到了尺寸為 3 x 3 的 3 個通道。

萬字長文帶你看盡深度學習中的各種卷積網路(上篇)

面向多通道的 2D 卷積的第一步:過濾器每個卷積核分別應用到輸入層的 3 個通道上。圖片源自:https://towardsdatascience.com/intuitively-understanding-convolutions-for-deep-learning-1f6f42faee1

之後,這 3 個通道都合併到一起(元素級別的加法)組成了一個大小為 3 x 3 x 1 的單通道。這個通道是輸入層(5 x 5 x 3 矩陣)使用了過濾器(3 x 3 x 3 矩陣)後得到的結果。

萬字長文帶你看盡深度學習中的各種卷積網路(上篇)

面向多通道的 2D 卷積的第二步:3 個通道都合併到一起(元素級別的加法)組成了一個大小為 3 x 3 x 1 的單通道。圖片源自:https://towardsdatascience.com/intuitively-understanding-convolutions-for-deep-learning-1f6f42faee1

同樣地,我們可以將這個過程視作將一個 3D 過濾器矩陣滑動通過輸入層。注意,這個輸入層和過濾器的深度都是相同的(即通道數=卷積核數)。這個 3D 過濾器僅沿著 2 個方向(圖像的高&寬)移動(這也是為什麼 3D 過濾器即使通常用於處理 3D 體積數據,但這樣的操作還是被稱為 2D 卷積)。在每一個滑過的位置,我們都執行元素級別的乘法和加法,最終得出一個數值。下面這個例子中,過濾器橫向滑過 5 個位置、縱向滑過 5 個位置。全部完成後,我們得到了一個單輸出通道。

萬字長文帶你看盡深度學習中的各種卷積網路(上篇)

看待 2D 卷積的另一個角度:將這個過程視作將一個 3D 過濾器矩陣滑動通過輸入層。注意,這個輸入層和過濾器的深度都是相同的(即通道數=卷積核數)。這個 3D 過濾器僅沿著 2 個方向(圖像的高&寬)移動(這也是為什麼 3D 過濾器即使通常用於處理 3D 體積數據,但這樣的操作還是被稱為 2D 卷積)。輸出是一個 1 層的矩陣。

現在我們可以看到如何在不同深度的層之間實現過渡。假設輸入層有 Din 個通道,而想讓輸出層的通道數量變成 Dout ,我們需要做的僅僅是將 Dout 個過濾器應用到輸入層中。每一個過濾器都有 Din 個卷積核,都提供一個輸出通道。在應用 Dout 個過濾器後,Dout 個通道可以共同組成一個輸出層。

萬字長文帶你看盡深度學習中的各種卷積網路(上篇)

標準 2D 卷積。通過使用 Dout 個過濾器,將深度為 Din 的層映射為另一個深度為 Dout 的層。

3.3D 卷積

在上部分的最後一張圖中,我們看到了將卷積在 3D 體積上的執行情況。但是一般而言,我們依舊將這一操作視為深度學習中的 2D 卷積——3D 體積數據上的 2D 卷積:其過濾器和輸入層的深度是一樣的;3D 過濾器僅沿著 2 個方向(圖像的高&寬)移動。這樣操作得出的結果就是一個 2D 圖像(僅有 1 個通道)。

有 2D 卷積,自然就有 3D 卷積。3D 卷積是 2D 卷積的一般化。在 3D 卷積中,過濾器的深度要比輸入層的深度更小(卷積核大小

萬字長文帶你看盡深度學習中的各種卷積網路(上篇)

在 3D 卷積中,過濾器的深度要比輸入層的深度更小(卷積核大小。

和對 2D 區域中目標的空間關係進行解碼的 2D 卷積相似,3D 卷積也可以描述 3D 空間中目標的空間關係。對於一些應用來說,這種 3D 關係很重要,例如在 CT 和 MRI 等生物醫學圖像的 3D 分割/重建中,這些圖像的目標如血管都是蜿蜒分布在 3D 空間中的。

4. 1x1 卷積

由於我們在前一個部分——3D 卷積中探討了深度級別的操作,接下來讓我們了解另一個有趣的操作,1 x 1 卷積。

你或許想知道為什麼這個卷積是有幫助作用的。我們剛剛是否讓輸入層中的每個數值都乘以了一個數值?是,也不是。對於僅有 1 個通道的層來說,這項操作不重要。在上面的示例中,我們讓每一個組成部分都乘以了一個數值。

如果輸入層有多個通道,那事情就變得非常有趣了。下圖闡述了 1 x 1 卷積在一個維度為 H x W x D 的輸入層上的操作方式。經過大小為 1 x 1 x D 的過濾器的 1 x 1 卷積,輸出通道的維度為 H x W x 1。如果我們執行 N 次這樣的 1 x 1 卷積,然後將這些結果結合起來,我們能得到一個維度為 H x W x N 的輸出層。

萬字長文帶你看盡深度學習中的各種卷積網路(上篇)

過濾器大小為 1 x 1 x D 的 1 x 1 卷積

1 x 1 卷積最初是在 Network-in-network 的論文(論文閱讀地址:https://arxiv.org/abs/1312.4400)中被提出的,之後在谷歌的 Inception 論文(論文閱讀地址:https://arxiv.org/abs/1409.4842)中被大量使用。1 x 1 卷積具有如下幾個優勢:


  • 減少維度以實現更有效率的計算;

  • 進行更有效率的低維度嵌入,或者對特徵進行池化;

  • 卷積以後反覆應用非線性特徵。

前兩個優勢我們可以從上面的圖像中觀察到。執行 1 x 1 卷積後,我們明顯減少了維度的深度級別。假設原始輸入有 200 個通道,1 x 1 卷積會將這些通道(特徵)嵌入到一個單通道中。第三個優勢在 1 x 1 卷積執行後才顯現出來,它會將線性整流函數(ReLU)等非線性激活函數添加進模型中。非線性特徵讓網路學習更複雜的函數。

谷歌的 Inception 論文中也對這些優勢進行了描述:

「上面這個模塊(至少在這個樸素的形式中)的一個大問題是,即便是數量適度的 5 x 5 卷積,在有大量過濾器的卷積層之上的計算也會過於昂貴。

這就給提出的框架帶來了第二個思路:明智地減少維度並進行投影,不然就會過度增加對於計算的要求。這是基於成功實現嵌入上的:即便是低維度的嵌入也可以容納大量關於相對較大的圖像塊的信息... 也就是說,在執行計算昂貴的 3 x 3 卷積和 5 x 5 卷積前,往往會使用 1 x 1 卷積來減少計算量。此外,它們也可以利用調整後的線性激活函數來實現雙重用途。」

針對 1 x 1 卷積,Yann LeCun 提出了一個非常有趣的角度:「在卷積網路中,不存在像「全連接層」這樣的東西,而只有含有一些 1x1 卷積核和 1 個全連接表的卷積層」

萬字長文帶你看盡深度學習中的各種卷積網路(上篇)

5. 卷積演算法

我們現在知道了如何處理卷積的深度。接下來討論一下怎樣處理在其他兩個方向(高&寬)中的卷積,以及重要的卷積演算法(onvolution arithmetic)。

這裡有一些需要了解的名詞:


  • 卷積核大小(Kernel size):卷積核在前一部分已經討論過了。卷積核大小確定卷積的視野。

  • 卷積步長(Stride):它確定的是卷積核滑動通過圖像的步長。步長為 1 表示卷積核一個像素一個像素地滑動通過圖像;步長為 2 則表示卷積核在圖像上每滑動一次就移動了 2 個像素(即跳過 1 個像素)。對於下面這個案例中的圖像,我們採用大於或等於 2 的步長。

  • 填充(Padding):填充定義如何處理圖像的邊界。如果有必要的話,可以通過將輸入邊界周圍的填充設置為 0,這樣的話,經過填充後的卷積(Tensorflow 中的「相同」填充)就可以保持空間輸出維度與輸入圖像的維度一樣。另一方面,如果不在輸入邊界周圍添加 0 填充,未填充的卷積(Tensorflow 中的「有效」填充)僅對輸入圖像的像素執行卷積,輸出大小也會小於輸入大小。

下圖表示使用卷積核大小為 3、步長為 1;填充為 1 的 2D 卷積:

萬字長文帶你看盡深度學習中的各種卷積網路(上篇)

這裡有一篇不錯的文章(A guide to convolution arithmetic for deep learning,https://arxiv.org/abs/1603.07285)詳細地描述了演算法,大家可前往閱讀。這篇文章對其進行了詳細介紹,並針對不同的卷積核大小、卷積步長以及填充分別進行了案例分析。這裡我僅僅概括出了最常用的結果:

對於一個大小為 i、卷積核大小為 k、填充為 p 以及卷積步長為 s 的輸入圖像,經過卷積的輸出圖像的大小為 o:

6. 轉置卷積(反卷積)

對於許多應用以及在許多網路架構中,我們通常需要朝與標準卷積相反的方向做轉換,例如,當我們想要執行上採樣(up-sampling)時。這些案例其中就包括生成高解析度圖像以及在自動編碼器或語義分割中將低維度特徵映射映射到高維度空間中。(在隨後的案例中,語義分割首先在編碼器中提取特徵映射,然後在解碼器中還原原始圖像的大小從而能夠在原始圖像中對每一個像素進行分類。)

傳統上,研究者可以通過應用插值(interpolation)方案或者手動創建規則來實現上採樣。神經網路等現代架構則反過來趨向於讓網路自己自動學習合適的轉換,而不需要人類的干預。我們可以使用轉置卷積來實現這一點。

在書面表達上,轉置卷積也稱作反卷積(deconvolution),或小數步長的卷積(fractionally strided convolution)。不過值得一提的是,將其稱作「反卷積」並不是那麼合適,因為轉置卷積並不完全是信號/圖像處理中所定義的反卷積。從技術上來說,信號處理中的反卷積是卷積的逆向操作,跟這裡所說的轉置卷積不一樣。正因為此,一些論文作者強烈反對將轉置卷積稱作反卷積,而大眾要這樣稱呼主要是為了簡單起見。隨後,我們會探討為什麼將這種操作稱作轉置卷積才是自然且更合適的。

我們可以直接使用卷積來實現轉置卷積。例如在下圖的案例中,我們 2 x 2 的輸入上做轉置卷積:其卷積核為 3 x 3,卷積步長為 1,填充為 2 x 2 的空格。上採樣的輸出大小為 4 x 4。

萬字長文帶你看盡深度學習中的各種卷積網路(上篇)

將 2 x 2 輸入上採樣為 4 x 4 輸出,圖片源自: https://github.com/vdumoulin/conv_arithmetic

非常有趣的是,研究者可以通過應用花式填充和步長,將相同的 2 x 2 輸入圖像映射出不同的圖像大小。下圖中,在同一個卷積核為 3 x 3,卷積步長為 1,填充為 2 x 2 空格的 2 x 2 的輸入(輸入之間插入了一個空格)上做轉置卷積,得出的輸出大小為 5 x 5。

萬字長文帶你看盡深度學習中的各種卷積網路(上篇)

將 2 x 2 輸入上採樣為 5 x 5 輸出,圖片源自: https://github.com/vdumoulin/conv_arithmetic

通過觀察上述案例中的轉置卷積,我們可以初步建立一些認知。但是要想較好地掌握它的應用,在電腦上看看它怎樣通過矩陣乘法來實現會比較有用。從中,我們還可以了解到為什麼「轉置卷積」這個名字更合適。

在卷積中,我們設定卷積核為 C,輸入圖像為 Large,卷積輸出的圖像為 Small。在做卷積(矩陣乘法)後,我們將大圖像下採樣(down-sample)為小的輸出圖像。矩陣乘法中的卷積實現遵循 C x Large = Small。

下面案例顯示了這項操作如何實現。它將輸入也壓平為 16 x 1 矩陣,之後將卷積核轉換為一個稀疏矩陣 (4 x 16),接著在稀疏矩陣和壓平的輸入間執行矩陣乘法運算,最終得出的矩陣(4 x 1)轉換回 2 x 2 的輸出。

萬字長文帶你看盡深度學習中的各種卷積網路(上篇)

卷積的矩陣乘法:從大小 4 x 4 為 Large 輸入圖像到大小為 2 x 2 的 Small 輸出圖像

現在,如下圖所示,如果我們對等式兩邊的矩陣 CT 進行多次轉置,並利用一個矩陣和其轉置矩陣相乘得出一個單元矩陣的屬性,我們可以得出下面的運算公式:CT x Small = Large。

萬字長文帶你看盡深度學習中的各種卷積網路(上篇)

卷積的矩陣乘法:從大小 2x 2 為 Large 輸入圖像到大小為 4 x 4 的 Small 輸出圖像

正如你在這裡看到的,轉置卷積執行的是從小圖像到大圖像的上採樣。這也是我們所要實現的。而現在,你也可以了解到「轉置卷積」這個名字的由來。

轉置卷積的通用演算法可以在《深度學習的卷積演算法指南》「A guide to convolution arithmetic for deep learning」這篇文章的「Relationship 13」和「Relationship 14」章節中找到。

6.1 棋盤效應(Checkerboard artifacts)

所謂的「棋盤效應」是研究人員在使用轉置卷積時可以觀察到的一種令人不快的現象(奇怪的棋盤格狀偽影)。

萬字長文帶你看盡深度學習中的各種卷積網路(上篇)

「棋盤效應」的一些案例。圖片源自論文「Deconvolution and Checkerboard Artifacts」,https://distill.pub/2016/deconv-checkerboard/

《反卷積和棋盤效應》(Deconvolution and Checkerboard Artifacts,https://distill.pub/2016/deconv-checkerboard)對於這一現象有一個非常好的闡述。大家可以前往閱讀這篇文章了解詳細內容。這裡我僅僅概括出關鍵點。

造成棋盤效應的原因是轉置卷積的「不均勻重疊」(uneven overlap)。這種重疊會造成圖像中某個部位的顏色比其他部位更深。

在下圖中,頂部這層是輸入層,底部這層則是操作轉置卷積後的輸出層。在轉置卷積過程中,小的這層映射到大的那層。

在案例(a)中,其卷積步長為 1,過濾器大小為 2。正紅線所標出的,輸入圖像上的第一個像素映射為輸出圖像上的第一個和第二個像素。綠線標出的則是輸入圖像上的第二個像素映射為輸出圖像上的第二個和第三個像素。這樣的話,輸出圖像上的第二個像素就收到了輸入圖像上的第一個和第二個像素的雙重信息,而整個卷積過程中,輸出圖像中間部分的像素都從輸入圖像中接收到了同樣多的信息,這樣就導致了卷積核重疊的區域。而在案例(b)中,當過濾器的大小增加到 3 時,這個接收到最多信息的中間部分縮小了。但是這樣的話問題不大,因為重疊部分依舊是均勻的。在輸出圖像中間部分的像素從輸入圖像中接收到同樣多的信息。

萬字長文帶你看盡深度學習中的各種卷積網路(上篇)

圖片源自並修改於論文「Deconvolution and Checkerboard Artifacts」,https://distill.pub/2016/deconv-checkerboard/

現在針對下面的案例,我們將卷積步長改為 2。在案例(a)中,過濾器的大小為 2,輸出圖像上的所有像素從輸入圖像中接收到同樣多的信息,它們都從輸入圖像中接收到一個像素的信息,這裡就不存在轉置卷帶來的重疊區域。

萬字長文帶你看盡深度學習中的各種卷積網路(上篇)

圖片源自並修改於論文「Deconvolution and Checkerboard Artifacts」,https://distill.pub/2016/deconv-checkerboard/

而在案例(b)中,當我們將過濾器大小增至 4 時,均勻的重疊區域縮小了,但是研究者依舊可以將輸出圖像的中間部分用作有效的輸出,其中每個像素從輸入圖像中接收到的信息是同樣多的。

然而,在案例(c)和(d)中,當過濾器大小變成 3 或 5 時,情況就變得非常有趣了。在這兩個案例中,輸出圖像上的每個像素與其毗鄰的像素所接收到的信息量都不相同。研究者在輸出圖像上無法找到一個連續並均勻的重疊區域。


當過濾器大小無法被卷積步長整除時,轉置卷積就會出現「不均勻重疊」。這種「不均勻重疊」會造成圖像中某個部位的顏色比其他部位更深,因而會帶來「棋盤效應」。實際上,不均勻重疊區域會在二維上更加極端。因為二維上的兩個模式會相乘,因而最終的不均勻性是原來的平方。

在應用轉置卷積時,可以做兩件事情來減輕這種效應。第一,確認使用的過濾器的大小是能夠被卷積步長整除的,從而來避免重疊問題。第二,可以採用卷積步長為 1 的轉置卷積,來減輕「棋盤效應」。然而,正如在最近許多模型中所看到的,這種效益依舊可能會顯露出來。

這篇論文進一步提出了一個更好的上採樣方法:首先調整圖像大小(使用最近鄰域內插法(Nearest Neighbor interpolation)和雙向性內插法(bilinear interpolation)),然後製作一個卷積層。通過這樣做,論文作者成功避免了這一「棋盤效應」。大家或許也想要在自己的應用中嘗試一下這個方法吧。

(上篇)

via:https://towardsdatascience.com/a-comprehensive-introduction-to-different-types-of-convolutions-in-deep-learning-669281e58215雷鋒網

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 雷鋒網 的精彩文章:

蘋果市值超過微軟,重登全球第一寶座

TAG:雷鋒網 |