0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

深度學習中常用的幾種卷積 不同情況下的卷積定義方式

454398 ? 來源:博客園 ? 作者:chumingqian ? 2020-10-08 23:59 ? 次閱讀

在本文中,我盡量使用簡單明了的方式向大家解釋深度學習中常用的幾種卷積,希望能夠幫助你建立學習體系,并為你的研究提供參考。

Convolution VS Cross-correlation

卷積是一項在信號處理、視覺處理或者其他工程/科學領(lǐng)域中應用廣泛的技術(shù)。在深度學習中,有一種模型架構(gòu),叫做Convolution Neural Network。深度學習中的卷積本質(zhì)上就是信號處理中的Cross-correlation。當然,兩者之間也存在細微的差別。

在信號/圖像處理中,卷積定義如下:

由上公式可以看出,卷積是通過兩個函數(shù)f和g生成第三個函數(shù)的一種數(shù)學算子。對f與經(jīng)過翻轉(zhuǎn)和平移的g乘積進行積分。過程如下:

信號處理中的卷積。濾波器g首先翻轉(zhuǎn),然后沿著橫坐標移動。計算兩者相交的面積,就是卷積值。

另一方面,Cross-correlation被稱為滑動點積或者兩個函數(shù)的滑動內(nèi)積。Cross-correlation中的濾波器函數(shù)是不用翻轉(zhuǎn)的。它直接劃過特征函數(shù)f。f和g相交的區(qū)域就是Cross-correlation。

在深度學習中,卷積中的濾波器不翻轉(zhuǎn)。嚴格來說,它是Cross-correlation。我們基本上執(zhí)行元素對元素的加法或者乘法。但是,在深度學習中,我們還是習慣叫做Convolution。濾波器的權(quán)重是在訓練期間學習的。

Convolution in Deep Learning

卷積的目的是為了從輸入中提取有用的特征。在圖像處理中,有很多濾波器可以供我們選擇。每一種濾波器幫助我們提取不同的特征。比如水平/垂直/對角線邊緣等等。在CNN中,通過卷積提取不同的特征,濾波器的權(quán)重在訓練期間自動學習。然后將所有提取到的特征“組合”以作出決定。

卷積的優(yōu)勢在于,權(quán)重共享和平移不變性。同時還考慮到了像素空間的關(guān)系,而這一點很有用,特別是在計算機視覺任務中,因為這些任務通常涉及識別具有空間關(guān)系的對象。(例如:狗的身體通常連接頭部、四肢和尾部)。

The single channel version

單個通道的卷積在深度學習中,卷積是元素對元素的加法和乘法。對于具有一個通道的圖像,卷積如上圖所示。在這里的濾波器是一個3x3的矩陣[[0,1,2],[2,2,0],[0,1,2]]。濾波器滑過輸入,在每個位置完成一次卷積,每個滑動位置得到一個數(shù)字。最終輸出仍然是一個3x3的矩陣。(注意,在上面的例子中,stride=1,padding=0)

The muti-channel version

在很多應用中,我們需要處理多通道圖片。最典型的例子就是RGB圖像。

不同的通道強調(diào)原始圖像的不同方面另一個多通道數(shù)據(jù)的例子是CNN中的層。卷積網(wǎng)絡層通常由多個通道組成(通常為數(shù)百個通道)。每個通道描述前一層的不同方面。我們?nèi)绾卧诓煌疃鹊膶又g進行轉(zhuǎn)換?如何將深度為n的層轉(zhuǎn)換為深度為m下一層?

在描述這個過程之前,我們先介紹一些術(shù)語:layers(層)、channels(通道)、feature maps(特征圖),filters(濾波器),kernels(卷積核)。從層次結(jié)構(gòu)的角度來看,層和濾波器的概念處于同一水平,而通道和卷積核在下一級結(jié)構(gòu)中。通道和特征圖是同一個事情。一層可以有多個通道(或者說特征圖)。如果輸入的是一個RGB圖像,那么就會有3個通道?!癱hannel”通常被用來描述“l(fā)ayer”的結(jié)構(gòu)。相似的,“kernel”是被用來描述“filter”的結(jié)構(gòu)。

layer和channel之間,filter和kernel之間的不同filter和kernel之間的不同很微妙。很多時候,它們可以互換,所以這可能造成我們的混淆。那它們之間的不同在于哪里呢?一個“Kernel”更傾向于是2D的權(quán)重矩陣。而“filter”則是指多個Kernel堆疊的3D結(jié)構(gòu)。如果是一個2D的filter,那么兩者就是一樣的。但是一個3Dfilter,在大多數(shù)深度學習的卷積中,它是包含kernel的。每個卷積核都是獨一無二的,主要在于強調(diào)輸入通道的不同方面。

講了概念,下面我們繼續(xù)講解多通道卷積。將每個內(nèi)核應用到前一層的輸入通道上以生成一個輸出通道。這是一個卷積核過程,我們?yōu)樗蠯ernel重復這樣的過程以生成多個通道。然后把這些通道加在一起形成單個輸出通道。下圖:

輸入是一個5x5x3的矩陣,有三個通道。filter是一個3x3x3的矩陣。首先,filter中的每個卷積核分別應用于輸入層中的三個通道。執(zhí)行三次卷積,產(chǎn)生3個3x3的通道。

然后,這三個通道相加(矩陣加法),得到一個3x3x1的單通道。這個通道就是在輸入層(5x5x3矩陣)應用filter(3x3x3矩陣)的結(jié)果。

同樣的,我們可以把這個過程看作是一個3Dfilter矩陣滑過輸入層。值得注意的是,輸入層和單個filter有相同的深度(通道數(shù)量=單個filter中卷積核數(shù)量)。3Dfilter只需要在2維方向上移動,圖像的高和寬。這也是為什么這種操作被稱為2D卷積,盡管是使用的3D濾波器來處理3D數(shù)據(jù)。在每一個滑動位置,我們執(zhí)行卷積,得到一個數(shù)字。就像下面的例子中體現(xiàn)的,(正方形的那個側(cè)面 記為輸入圖片長寬, 長方形的側(cè)面,這個長 便反應出深度 = 即 對應的 通道數(shù)是多少 )滑動水平的5個位置和垂直的5個位置進行。總之,我們得到了一個單一通道輸出。

現(xiàn)在,我們一起來看看,如何在不同深度的層之間轉(zhuǎn)換。假設輸入層有xin個通道,我們想得到輸出有Dout個通道。我們只需要將Dout 個filters應用到輸入層。每一個 filter有Din個卷積核。每個filter提供一個輸出通道。完成該過程,將結(jié)果堆疊在一起形成輸出層。

3D Convolution

在上一節(jié)的最后一個插圖中,可以看出,這實際上是在完成3D卷積。但是在深度學習中,我們?nèi)匀话焉鲜霾僮鞣Q為2D卷積。3D數(shù)據(jù),2D卷積。濾波器的深度和輸入層的深度是一樣的。3D濾波器只在兩個方向上移動(圖像的高和寬),而輸出也是一個2D的圖像(僅有一個通道)。

3D卷積是存在的,它們是2D卷積的推廣。在3D卷積中,濾波器的深度小于輸入層的深度(也可以說卷積核尺寸小于通道尺寸)。所以,3D濾波器需要在數(shù)據(jù)的三個維度上移動(圖像的長、寬、高)。在濾波器移動的每個位置,執(zhí)行一次卷積,得到一個數(shù)字。當濾波器滑過整個3D空間,輸出的結(jié)果也是一個3D的。

和2D卷積能夠編碼2D域中的對象關(guān)系一樣,3D卷積也可以描述3D空間中的對象關(guān)系。3D關(guān)系在一些應用中是很重要的,比如3D分割/醫(yī)學圖像重構(gòu)等。

1x1 Convolution

下面我們來看一種有趣的操作,1x1卷積。

我們會有疑問,這種卷積操作真的有用嗎?看起來只是一個數(shù)字乘以輸入層的每個數(shù)字?正確,也不正確。如果輸入數(shù)據(jù)只有一個通道,那這種操作就是將每個元素乘上一個數(shù)字。

但是,如果輸入數(shù)據(jù)是多通道的。那么下面的圖可以說明,1 x 1卷積是如何工作的。輸入的數(shù)據(jù)是尺寸是H x W x D,濾波器尺寸是1 x 1x D,輸出通道尺寸是H x W x 1。如果我們執(zhí)行N次1x1卷積,并將結(jié)果連接在一起,那可以得到一個H x W x N的輸出。

1 x 1卷積在論文《Network In Network》中提出來。并且在Google發(fā)表的《Going Deeper with Convolution》中也有用到。1 x 1卷積的優(yōu)勢如下:

  • 降低維度以實現(xiàn)高效計算
  • 高效的低維嵌入,或特征池
  • 卷積后再次應用非線性

前兩個優(yōu)勢可以從上圖中看出。完成1 x 1卷積操作后,顯著的降低了depth-wise的維度。如果原始輸入有200個通道,那么1 x 1卷積操作將這些通道嵌入到單一通道。第三個優(yōu)勢是指,在1 x 1卷積后,可以添加諸如ReLU等非線性激活。非線性允許網(wǎng)絡學習更加復雜的函數(shù)。

Convolution Arithmetic

現(xiàn)在我們知道了depth維度的卷積。我們繼續(xù)學習另外兩個方向(height&width),同樣重要的卷積算法。一些術(shù)語:

Kernel size(卷積核尺寸):卷積核在上面的部分已有提到,卷積核大小定義了卷積的視圖。

Stride(步長):定義了卷積核在圖像中移動的每一步的大小。比如Stride=1,那么卷積核就是按一個像素大小移動。Stride=2,那么卷積核在圖像中就是按2個像素移動(即,會跳過一個像素)。我們可以用stride>=2,來對圖像進行下采樣。

Padding:可以將Padding理解為在圖像外圍補充一些像素點。padding可以保持空間輸出維度等于輸入圖像,必要的話,可以在輸入外圍填充0。另一方面,unpadded卷積只對輸入圖像的像素執(zhí)行卷積,沒有填充0。輸出的尺寸將小于輸入。

下圖是2D卷積,Kernel size=3,Stride=1,Padding=1:

這里有一篇寫得很好的文章,推薦給大家。它講述了更多的細節(jié)和舉了很多例子來講述不同的Kernel size、stride和padding的組合。這里我只是總結(jié)一般案例的結(jié)果。

輸入圖像大小是i,kernel size=k,padding=p,stride=s,那么卷積后的輸出o計算如下:

編輯:hfy

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 濾波器
    +關(guān)注

    關(guān)注

    160

    文章

    7703

    瀏覽量

    177486
  • 信號處理
    +關(guān)注

    關(guān)注

    48

    文章

    992

    瀏覽量

    103154
  • 卷積
    +關(guān)注

    關(guān)注

    0

    文章

    95

    瀏覽量

    18487
  • 視覺處理
    +關(guān)注

    關(guān)注

    0

    文章

    30

    瀏覽量

    8910
  • 深度學習
    +關(guān)注

    關(guān)注

    73

    文章

    5463

    瀏覽量

    120891
收藏 人收藏

    評論

    相關(guān)推薦

    畢業(yè)設計_分段卷積MATLAB仿真與DSP實現(xiàn)

    工程中經(jīng)常會遇到某個輸入序列具有較長持續(xù)時間的情況,從而無法達到信號實時處理的要求。在這種情況下,分段卷積是一種有效的解決方案。本論文設計了分段卷積的快速算法模塊,分段
    發(fā)表于 12-25 13:43

    卷積神經(jīng)網(wǎng)絡—深度卷積網(wǎng)絡:實例探究及學習總結(jié)

    深度學習工程師-吳恩達》03卷積神經(jīng)網(wǎng)絡—深度卷積網(wǎng)絡:實例探究 學習總結(jié)
    發(fā)表于 05-22 17:15

    解析深度學習卷積神經(jīng)網(wǎng)絡原理與視覺實踐

    解析深度學習卷積神經(jīng)網(wǎng)絡原理與視覺實踐
    發(fā)表于 06-14 22:21

    簡談卷積—幽默笑話談卷積

    分享。據(jù)說卷積這種運算式物理學家發(fā)明的,在實際中用得不亦樂乎,而數(shù)學家卻一直沒有把運算的意義徹底搞明白。仔細品一,還是有那么點滋味的。下面先看一劍橋大學的教科書對卷積
    發(fā)表于 05-25 18:08

    探析深度學習中的各種卷積

    在信號處理、圖像處理和其它工程/科學領(lǐng)域,卷積都是一種使用廣泛的技術(shù)。在深度學習領(lǐng)域,卷積神經(jīng)網(wǎng)絡(CNN)這種模型架構(gòu)就得名于這種技術(shù)。但是,深度
    的頭像 發(fā)表于 02-26 10:01 ?3348次閱讀
    探析<b class='flag-5'>深度</b><b class='flag-5'>學習</b>中的各種<b class='flag-5'>卷積</b>

    卷積神經(jīng)網(wǎng)絡四種卷積類型

    有些消息來源使用名稱deconvolution,這是不合適的,因為它不是解卷積。為了使事情更糟,確實存在解卷積,但它們在深度學習領(lǐng)域并不常見。實際的反
    的頭像 發(fā)表于 04-19 16:48 ?4006次閱讀
    <b class='flag-5'>卷積</b>神經(jīng)網(wǎng)絡四種<b class='flag-5'>卷積</b>類型

    深度學習中的卷積神經(jīng)網(wǎng)絡層級分解綜述

    隨著深度學習的不斷發(fā)展,卷積神經(jīng)網(wǎng)絡(CNN)在目標檢測與圖像分類中受到研究者的廣泛關(guān)注。CNN從 Lenet5網(wǎng)絡發(fā)展到深度殘差網(wǎng)絡,其層數(shù)不斷增加。基于神經(jīng)網(wǎng)絡中“
    發(fā)表于 05-19 16:11 ?5次下載

    淺析卷積降維與池化降維的對比

    學習深度學習卷積網(wǎng)絡過程中,有卷積層,池化層,全連接層等等,其中卷積層與池化層均可以對特征圖
    的頭像 發(fā)表于 02-17 14:58 ?1025次閱讀
    淺析<b class='flag-5'>卷積</b>降維與池化降維的對比

    卷積神經(jīng)網(wǎng)絡的應用 卷積神經(jīng)網(wǎng)絡通常用來處理什么

    神經(jīng)網(wǎng)絡,卷積神經(jīng)網(wǎng)絡廣泛用于圖像識別、自然語言處理、視頻處理等方面。本文將對卷積神經(jīng)網(wǎng)絡的應用進行詳盡、詳實、細致的介紹,以及卷積神經(jīng)網(wǎng)絡通常用于處理哪些任務。 一、
    的頭像 發(fā)表于 08-21 16:41 ?4823次閱讀

    卷積神經(jīng)網(wǎng)絡的定義、結(jié)構(gòu)和發(fā)展歷史

    卷積神經(jīng)網(wǎng)絡(Convolutional Neural Network,CNN)是一種非常重要的機器學習算法,主要應用于圖像處理領(lǐng)域,用于圖像分類、目標識別、物體檢測等任務。該算法是深度學習
    發(fā)表于 08-21 17:26 ?939次閱讀

    深度學習卷積神經(jīng)網(wǎng)絡的應用

    到自然語言處理,深度學習和CNN正逐步改變著我們的生活方式。本文將深入探討深度學習卷積神經(jīng)網(wǎng)絡
    的頭像 發(fā)表于 07-02 18:19 ?747次閱讀

    卷積神經(jīng)網(wǎng)絡訓練的是什么

    、訓練過程以及應用場景。 1. 卷積神經(jīng)網(wǎng)絡的基本概念 1.1 卷積神經(jīng)網(wǎng)絡的定義 卷積神經(jīng)網(wǎng)絡是一種前饋深度
    的頭像 發(fā)表于 07-03 09:15 ?319次閱讀

    卷積神經(jīng)網(wǎng)絡的基本概念、原理及特點

    的基本概念、原理、特點以及在不同領(lǐng)域的應用情況。 一、卷積神經(jīng)網(wǎng)絡的基本概念 卷積神經(jīng)網(wǎng)絡是一種深度學習算法,它由多層
    的頭像 發(fā)表于 07-11 14:38 ?711次閱讀

    基于PyTorch的卷積核實例應用

    深度學習和計算機視覺領(lǐng)域,卷積操作是一種至關(guān)重要的技術(shù),尤其在圖像處理和特征提取方面發(fā)揮著核心作用。PyTorch作為當前最流行的深度學習
    的頭像 發(fā)表于 07-11 15:19 ?363次閱讀

    深度學習中反卷積的原理和應用

    像分割、圖像重建和生成對抗網(wǎng)絡(GANs)等,反卷積展現(xiàn)出了其獨特的優(yōu)勢和廣泛的應用前景。本文將詳細探討深度學習中的反卷積技術(shù),包括其定義、
    的頭像 發(fā)表于 07-14 10:22 ?1240次閱讀