深度學習中不同型別卷積的介紹

2021-08-20 06:02:11 字數 1772 閱讀 7823

讓我們簡要介紹一下不同型別的卷積以及它們的優點。為了簡單起見,我們只關注二維卷積。

首先我們需要定義一些卷積層的引數。

擴張卷積是在卷積層中加入了另乙個引數 —— 擴張率。這定義了卷積核中值與值之間的間距。擴張率為 2 的 3*3 的卷積核與 5*5 的卷積核具有相同的事業,而僅使用了 9 個引數。你可以想象一下,使用 5*5 的卷積核並且刪除第二行,第四行,第二列和第四列的資料,那麼就是我們所介紹的卷積核了。

這以相同的計算成本,但是提供了更廣泛的視野。擴張卷積在實時分割領域是特別受歡迎的。如果你需要更大的視野,但是無法承受多個卷積核所帶來的計算成本,那麼你可以考慮使用這個。

一些別的文章中把這個操作稱為解卷積(deconvolution),但這是不恰當的,因為這不是乙個解卷積過程。更糟糕的是,解卷積過程卻是真的。但是他們在深度學習領域並不常見。實際的解卷積將恢復卷積過程。想象一下,將影象輸入到單個卷積圖中。現在把輸出結果拿出來,然後把它丟入乙個黑盒子中,然後再次出來的影象就是原始圖。這個黑盒子就是乙個解卷積過程。這是卷積層所做的數學逆運算。

反卷積有點類似,因為它產生了假想的解卷積所能達到的相同的空間解析度。但是,對這些值執行的實際數**算是不同的。反卷積執行卷積,但恢復其空間變換。

此時,你可能有點困惑,所以我們來看乙個具體的例子。我們把 5*5 的影象進行卷積,所採用的卷積核是 3*3,步長是 2,無填充。那麼,最後我們將得到的結果是乙個 2*2 的影象。

如果,我們想要逆轉這個過程,我們需要反向進行數**算,以便從我們輸入的每個畫素生成 9 個畫素值。之後,我們用 2 的步長遍歷這個輸出影象。這就是乙個解卷積過程。

反卷積不會這樣做。唯一共同的是它最後得到的是乙個 5*5 的影象。為了是吸納這個目的,我們需要再輸入上執行一些奇怪的填充。

正如你現在想象的那樣,這一步不會實現上面我們說的解卷積過程,至少不會涉及到數學計算。

它只是重建從前的空間並執行卷積,這可能不是數學上的逆轉,但對於編碼器 - 解碼器架構,它仍然非常有用的。通過這種方式,我們可以將影象的放大和卷積相結合,而不是執行兩個單獨的過程。

在乙個可分離的卷積中,我們可以將卷積核分成多個步驟。我們將卷積表示為 y = conv(x, k) ,其中 y 是輸出影象,x 是輸入影象,k 是卷積核。簡單的說,接下來,我們假設 k 可以通過這樣來進行計算:k = k1.dot(k2)。這將使它成為了乙個可以分離的卷積操作,因為不是用 k 進行的二維卷積,而是通過用 k1 和 k2 進行 2 次卷積得到相同的結果。

以 sobel 核心為例,這在影象處理中經常使用。你可以通過乘以向量 [1, 0, -1] 和 [1, 2, 1].t 得到相同的核心。在做同樣的操作時,這將需要 6 個而不是 9 個引數。這個例子展示了我所知道的一種控制項可分離卷積,它不用於深度學習。

原文:medium

深度學習中的卷積型別

使用卷積操作的動機是讓網路關注有意義的區域性特徵,同時因為其引數共享的機制,能夠極大地降低參數量,提高計算效率。深度學習發展至今,衍生出了多種卷積型別。除了常規卷積外,還有轉置卷積 空洞卷積 可分離卷積等。以2d卷積為例,乙個卷積操作通常包含以下幾個引數 卷積核尺寸 kernel size 卷積核的...

iOS中TableView的不同型別

tableview是ios開發中經常用到的view,針對不同的顯示需求,我們需要不同的cell來進行顯示,比較複雜的顯示我們一般會自定義cell的樣式,但是簡單的顯示就可以靠ios本身支援的列表型別了。ios目前支援四中列表型別,分別是 uitableviewcellstyledefault 預設型...

不同型別的檔案

cpp檔案 cpp是用c 語言編寫的源 檔案的字尾 具體實現 h檔案 h是c語言和c 語言的標頭檔案 函式宣告,巨集定義,函式原型 pde檔案 一共有4種可能,分別為 1 powerdesk encrypted file 2 pathology data exchange file 3 afp pa...