1 基本概念及詳解
卷積神經(jīng)網(wǎng)絡(luò)(CNN)
卷積神經(jīng)網(wǎng)絡(luò)基本上應(yīng)用于圖像數(shù)據(jù)。假設(shè)我們有一個輸入的大?。?8 * 28 * 3),如果我們使用正常的神經(jīng)網(wǎng)絡(luò),將有2352(28 * 28 * 3)參數(shù)。并且隨著圖像的大小增加參數(shù)的數(shù)量變得非常大。我們“卷積”圖像以減少參數(shù)數(shù)量。
CNN的輸入和輸出沒什么特別之處,例如可以輸入一個28×28×1的圖片(注意這里參數(shù)分別表示H、W、C,因為是灰度圖所以通道為1)。
1.1 卷積
1.1.1 基本概念
在提取特征的時候,由于一張圖片中不同的地方有不同的特征,背景和物體的特征是不一樣的,物體各部位的特征也是不一樣的。我們首先會對輸入的圖片進行分割處理,將其分成許多個區(qū)域,每個區(qū)域中都有多個像素點,例如:
我們?nèi)绾未_定每個區(qū)域的特征值?在神經(jīng)網(wǎng)絡(luò)中,我們的特征值就是權(quán)重參數(shù)來表示,而在這里我們會用到的也是一個權(quán)重參數(shù)矩陣,我們的任務(wù)是找到最合適的權(quán)重參數(shù)矩陣使得特征提取的效果最好。我們把權(quán)重參數(shù)矩陣也稱為濾波器。
CNN中的濾波器與加權(quán)矩陣一樣,它與輸入圖像的一部分相乘以產(chǎn)生一個回旋輸出。濾波器尺寸通常小于原始圖像尺寸。
例如有濾波器:
與圖像中一個5×5×1區(qū)域的每個3×3部分相乘以形成卷積特征。注意計算方法不是矩陣計算,而是內(nèi)積計算,是將兩個矩陣對應(yīng)位置的數(shù)相乘然后求所有乘法結(jié)果加和。
我們注意到每次計算都向后(下)移動一格,也可以自己設(shè)置步長控制向后(下)移動的距離。
計算得到的矩陣稱為“特征圖”。
灰度圖像的計算特別簡單,RGB圖像也同理,根據(jù)之前學的我們知道RGB是分為三個通道,這里三個通道需要分別計算,然后將得到的三個通道的特征圖相加即為最終結(jié)果。然而濾波器不只是二維矩陣這么簡單,它是用三個參數(shù)存儲的三維矩陣,前兩個參數(shù)表示濾波器的行列數(shù)尺寸,第三個參數(shù)與通道的個數(shù)相等,也就是說對應(yīng)不同的通道我們有不同的權(quán)重矩陣。
與神經(jīng)網(wǎng)絡(luò)一樣,得到的特征圖要加上偏置項(bias)b
。
若我們用多個濾波器對同一張輸入圖片進行卷積操作(注意濾波器的尺寸必須一樣),我們則可以得到多個特征圖,然后將特征圖堆疊在一起,此時得到的三維矩陣,前兩個參數(shù)還是H、W,第三個參數(shù)表示卷積的深度(也就是第幾層卷積)。
以上就是卷積的計算方法。得到的特征圖堆疊成的三維矩陣,又可以作為輸入進行再一次卷積,注意這里由于第三個參數(shù)C不再是原始數(shù)據(jù)的RGB通道,而是表示卷積層的深度,因此下一次卷積的時候,濾波器第三個參數(shù)也要與C的數(shù)值對應(yīng),這樣才能保證每一層通道都對應(yīng)有濾波器的一層。
按照上面的講解,便可以理解這張圖中的內(nèi)容。類似于神經(jīng)網(wǎng)絡(luò)中的隱藏層,我們可以不斷地對上一層的輸入進行卷積。
1.1.2 影響卷積的重要參數(shù)
-
滑動窗口步長
上面對于卷積的講解中每次計算都向后(下)移動一格,也可以自己設(shè)置步長控制向后(下)移動的距離。當步長較小的時候,可以細粒度的提取特征,得到的特征比較豐富;當步長比較大的時候,得到的特征比較少。同時步長也會影響到結(jié)果的尺寸。
總之,步長的選擇要根據(jù)實際任務(wù),一般來說圖像任務(wù)步長通常選擇1。 -
卷積核尺寸
卷積核尺寸就是我上面說的那個濾波器前兩個參數(shù),顯然也會影響結(jié)果的尺寸,同樣,卷積核尺寸較小時提取特征是細粒度的,一般情況下選擇3×3的尺寸。 -
邊緣填充(Padding)
填充是指在圖像之間添加額外的零層。
在卷積時,輸入圖像中間的像素在濾波器移動時會重復(fù)多次被計算在內(nèi),對結(jié)果的貢獻較大,而邊緣部分的數(shù)據(jù)只經(jīng)過一次計算,越往邊界的點被利用的次數(shù)越少,這顯然是不公平的。為了使邊界點也能被多次反復(fù)利用,我們在邊界的外面填充數(shù)據(jù),使原本在邊界的點現(xiàn)在處于里層,能夠在一定程度上彌補邊界信息缺失的問題。
為什么添加的是0而不是其他數(shù)值呢?因為在卷積時,如果添加了其他數(shù)也會在運算的時候?qū)Y(jié)果產(chǎn)生影響,我們只需要利用被“拯救”的邊緣數(shù)據(jù),其他部分的0與濾波器中對應(yīng)的數(shù)據(jù)相乘還等于0。
至于填充的層數(shù),一般填充一層就可以,也可以為了后續(xù)運算方便自定義,視具體情況而定。 -
卷積核個數(shù)
通過設(shè)置卷積核個數(shù)我們可以控制得到多少特征圖(無論是中間需要堆疊的還是最后輸出的)。注意卷積核中的值是不一樣的。
1.1.3 特征圖計算公式
最后附上特征圖尺寸的計算公式:
我是這樣解讀公式的:最后一個+1
理解為,無論前面如何滑動,最后一次計算總是和輸入網(wǎng)格的右邊界對齊。因為最后一次是固定的,我們只需要在輸入網(wǎng)格中減去一個卷積核的尺寸,然后看剩下的網(wǎng)格中足夠我們移動幾次,也就是看能有幾次移動卷積核左邊界,所以用H-F+2P
得到剩余的網(wǎng)格,再除以s
表示這些網(wǎng)格經(jīng)得起幾次平移,每次平移都會計算出一個特征值,再加上最右邊的那次,就是總的特征值個數(shù)。
這樣的理解只是為了便于公式的記憶,實際上它是挨著滑動的,直到卷積核窗口落在圖像外面時,不再進行操作。所以就算有舍棄,也是舍棄最右邊剩下的,不要混淆。
例如有一個14×14×1的區(qū)域,設(shè)置卷積核尺寸為3×3,padding=1,步長為2,根據(jù)公式算得H2=W2=7
。圖解如下:
下面用一個例題檢驗一下:輸入數(shù)據(jù)是32×32×3的圖像,用10個5×5×3的filter來進行卷積操作,指定步長為1,邊界填充為2,問最終輸入的規(guī)模為?
(答案是32×32×10)
1.1.4 卷積參數(shù)共享
如果給每個區(qū)域都選擇不同的卷積核,那么數(shù)據(jù)的規(guī)模也是非常大的,而且容易出現(xiàn)過擬合問題。所以我們利用參數(shù)共享原則,對于每個區(qū)域使用的卷積核都不變。
例如,我們有一個32×32×3
的圖像,使用10個5×5×3的濾波器進行卷積操作,由于每個區(qū)域的使用的濾波器都一樣,我們需要權(quán)重參數(shù)的個數(shù)為10*5*5*3=750
,再加上每個特征圖都需要一個偏置參數(shù)b,10個濾波器共需要10個b,所以一次卷積共需要760個參數(shù)。
1.2 池化
卷積得到的特征可能會非常多,我們使用池化(POOLING)對它進行壓縮。注意池化可以改變特征圖的長和寬,但是不能減少特征圖的個數(shù)。
通常在卷積層之間定期引入池層。這基本上是為了減少一些參數(shù),并防止過度擬合。
MAX POOLING
最常見的池化類型是使用MAX操作的濾波器尺寸(2,2)的池層,它將取原始圖像的每個4×4矩陣的最大值。
為什么選擇最大值呢?在神經(jīng)網(wǎng)絡(luò)中,值越大說明我們認為這個特征是越重要的,選擇最大的值就相當于我們只挑選那些重要的。
還可以使用其他操作(如平均池)進行池化,但是最大池數(shù)量在實踐中表現(xiàn)更好。
1.3 全連接
全連接(Fully Connected,F(xiàn)C)網(wǎng)絡(luò)結(jié)構(gòu)在整個卷積神經(jīng)網(wǎng)絡(luò)中起到“分類器”的作用。如果說卷積層、池化層和激活函數(shù)等操作是將原始數(shù)據(jù)映射到隱層特征空間的話,全連接層則起到將學到的“分布式特征表示”。映射到樣本標記空間的作用。
全連接層將特征提取得到的高維特征圖映射成一維特征向量,該特征向量包含所有特征信息,可以轉(zhuǎn)化為最終分類成各個類別的概率。
我們可以把全連接層看成一次特殊的卷積,也是通過一個濾波器改變特征的形狀的。例如我們有4096個3x3x5的輸出,我們想得到4096×1的列向量,可以通過一個3x3x5的濾波器去卷積。(可能表述不準確,但是大致意思理解即可)
1.4 感受野
我們卷積是把一個濾波器大小的正方形區(qū)域的數(shù)據(jù)濃縮成一個數(shù)據(jù),感受野就是對于某一個位置的數(shù)據(jù)向前推1次或多次卷積,即這個數(shù)據(jù)濃縮n次之前的尺寸。
比如一個5×5區(qū)域經(jīng)3×3的卷積核卷積兩次后得到的是1×1的區(qū)域,那么這個1×1的區(qū)域感受野就是5×5。
我們希望一個特征是經(jīng)過多方面因素的綜合才得到的,所以我們希望感受野越大越好。
假設(shè)我們堆疊了3個3×3的卷積層(就是進行了3次卷積),并且保持滑動窗口的步長為1,其感受野就是7×7。但是如果我們直接用一個7×7的卷積核也可以得到77×7的感受野,這種情況該如何選擇呢?假設(shè)我們需要得到C個特征圖,如果用一個7×7×C的卷積核,我們需要的參數(shù)為C×(7×7×C)=49C2
,如果用3×3×C的卷積核堆疊三次,我們需要的參數(shù)為[(3×3×C)×C]×3=27C2
,顯然后者不僅參數(shù)少,而且特征提取是更細致的。
2 卷積神經(jīng)網(wǎng)絡(luò)的過程
2.1 前向傳播的過程
根據(jù)上圖我們了解卷積神經(jīng)網(wǎng)絡(luò)的過程。類似普通的神經(jīng)網(wǎng)絡(luò),每次卷積(CONV)之后都需要激活函數(shù)(通常是RELU),池化操作有規(guī)律地穿插在每次卷積中,最后通過全連接計算每個分類的概率。如果特征圖的尺寸是32×32×10,由于上圖是5分類問題,F(xiàn)C層會得到一個[10240, 5]的結(jié)構(gòu)表示每個特征對應(yīng)每個分類的概率。這就是大致過程,具體計算稍后詳細學習。
首先說明一下,我們認為神經(jīng)網(wǎng)絡(luò)是有很多層的結(jié)構(gòu),在卷積神經(jīng)網(wǎng)絡(luò)中,只有具有參數(shù)的計算才能叫做“層”,例如卷積時有卷積核和偏置參數(shù),所以卷積是一層;全連接中也有卷積核,所以全連接也是一層;而池化無參數(shù)、激活函數(shù)也無參數(shù)。故上圖中的網(wǎng)絡(luò)我們認為有7層。
我的一些感悟:
通過上面對過程的了解,我認為卷積神經(jīng)網(wǎng)絡(luò)更突出我們對每個特征值的判斷,在普通的神經(jīng)網(wǎng)絡(luò)中,我們直接是把輸入的一系列數(shù)據(jù)直接去與權(quán)重進行運算,雖然運算的過程可能會分成好幾步,對于某些權(quán)重為0的位置雖然沒有考慮進去,但是對我們來說就是視為一個整體去理解的。而在卷積神經(jīng)網(wǎng)絡(luò)中,我們總是能直觀地感受到每個特征值,算出特征值后再去與對應(yīng)的激活函數(shù)計算,都是在網(wǎng)格中然后對值去進行操作,直到最后全連接也是根據(jù)值去計算概率,整個過程都是針對特征去操作的。
卷積層可以有目的的學習線條、輪廓和局部特征
然而卷積神經(jīng)網(wǎng)絡(luò)和普通的神經(jīng)網(wǎng)絡(luò)不是對立的兩個類別,我口中“普通的神經(jīng)網(wǎng)絡(luò)”應(yīng)該就是全連接神經(jīng)網(wǎng)絡(luò)。卷積神經(jīng)網(wǎng)絡(luò)對特征處理之后,我們會得到一張圖片的特征列向量(我自己取的名字),若特征列向量長度為n,你可以批量輸入m張圖像,得到一個具有n行m列的輸入X。在全連接層中對我們新的輸入“X”進行之前講過的處理,經(jīng)過若干個隱藏層和輸出層計算概率。
2.2 反向傳播【沒學會,所以沒筆記】
卷積神經(jīng)網(wǎng)絡(luò)一般會借助 TensorFlow 或者 PaddlePaddle 來開發(fā),僅需要開發(fā)正向傳播,反向傳播會自動生成,所以一般不要求掌握。
2.2.1 全連接的反向傳播
在之前的反向傳播中,我沒有詳細地學習過反向傳播是如何實現(xiàn)的,所以在這里我希望能夠完全弄懂。
求和的公式:
其中,上角標[l]
表示第l層,上角標[l-1]
表示l的上一層,即l-1層。A為上一層的輸入即特征圖,W為卷積核,b為偏置矩陣,Z為一次卷積得到的結(jié)果。注意:
這是最后一層的輸出,G(Z)是經(jīng)過激活函數(shù)變換后得到的值。因為變量實際上是W和b,所以損失函數(shù)雖然是用G(Z)表示的,但是整理到坐標上面,實際上還是W和b作為坐標軸。我們要求損失函數(shù)的最小值,就要求出每個維度的最小梯度,即dW和db(d表示梯度)。如果損失函數(shù)用F(x)表示:
同理
卷積神經(jīng)網(wǎng)絡(luò)由于表達式一樣,所以算法也是一樣的。
得到公式了,然后呢?
2.2.2 卷積層的反向傳播
2.2.3 池化層的反向傳播
3 經(jīng)典網(wǎng)絡(luò)
3.1 AlexNet
2012年的常用網(wǎng)絡(luò),但是現(xiàn)在已經(jīng)不常用了。
AlexNet輸入為RGB三通道的224 × 224 × 3大小的圖像(也可填充為227 × 227 × 3 ),共包含5 個卷積層和 3 個全連接層,最終輸出層為softmax,將網(wǎng)絡(luò)輸出轉(zhuǎn)化為概率值,用于預(yù)測圖像的類別。其中,每個卷積層都包含卷積核、偏置項、ReLU激活函數(shù)和局部響應(yīng)歸一化(LRN)模塊。第1、2、5個卷積層后面都跟著一個最大池化層。
3.1.1 局部響應(yīng)歸一化(LRN)
Local Response Normalization(LRN) 技術(shù)主要是深度學習訓(xùn)練時的一種提高準確度的技術(shù)方法,一般在激活、池化后進行。
通過實驗確實證明它可以提高模型的泛化能力,但是提升的很少,以至于后面不再使用,甚至有人覺得它是一個“偽命題”,因而它飽受爭議。
靈感來源:在神經(jīng)生物學中的概念——側(cè)抑制(lateral inhibitio ),指的是被激活的神經(jīng)元會抑制它周圍的神經(jīng)元。LRN層,對局部神經(jīng)元的活動創(chuàng)建競爭機制,使得其中響應(yīng)比較大的值變得相對更大,并抑制其他反饋較小的神經(jīng)元,增強了模型的泛化能力。LRN通過在相鄰卷積核生成的feature map之間引入競爭,從而有些本來在feature map中顯著的特征在A中更顯著,而在相鄰的其他feature map中被抑制,這樣讓不同卷積核產(chǎn)生的feature map之間的相關(guān)性變小。
LRN的公式:
- a:函數(shù)的input,表示卷積層(包括卷積操作和池化操作)后的輸出結(jié)果,是一個四維數(shù)組
[batch,height,width,channel]
,batch就是批次數(shù)(每一批為一張圖片),height就是圖片高度,width就是圖片寬度,channel就是通道數(shù)。 - N:通道數(shù)。
- a x , y i a_{x,y}^{i} ax,yi?:表示某一張圖的某一個點(x, y)的第i個通道。
- n 2 \frac{n}{2} 2n?:(自定義)函數(shù)中的depth_radius,表示在channel這個坐標軸上的半徑,包括的channel個數(shù)。n是同一位置上臨近的kernal map的數(shù)目,一般設(shè)置為5。
- k:(自定義)bias,一般設(shè)置為2。
- α:(自定義)alpha,一般設(shè)置為1*e-4。
- β:(自定義)beta,一般設(shè)置為0.75。
如何理解“輸出中響應(yīng)比較大的值變得相對更大”,通過公式可以看出來,如果你非常小,但是你附近有個非常大的值,它會導(dǎo)致分母很大,于是你在這個整體中變得很小,而你對它的影響卻幾乎看不到。
在2015年的《Very Deep Convolutional Networks for Large-Scale Image Recognition》中,說明了LRN在IILSVRC數(shù)據(jù)集上不能對性能進行改善。主流的模型中基本不使用LRN。
3.2 Vgg
Vgg有不同的版本,通常是16層或者19層的網(wǎng)絡(luò),它相對于AlexNet來說卷積核的大小比較小,也就是特征提取更細致。還有一個特點是,池化后通過添加特征圖的個數(shù)去彌補特征圖尺寸的減小。此外,由于它的層數(shù)和特征圖增加、更加復(fù)雜,運算時間也很長。
Vgg層數(shù)的增加,使加入的非線性變換也隨之增多(因為使用激活函數(shù)的次數(shù)變多)。
3.3 Resnet(殘差網(wǎng)絡(luò))
按照一貫的想法,深度學習肯定是越深學習效果越好,但是在卷積神經(jīng)網(wǎng)絡(luò)中,由于我們是進行特征的提取,在已經(jīng)很擬合的基礎(chǔ)上再去提取特征,再加上我們不斷池化,反而不一定能獲得更好的效果。
殘差網(wǎng)絡(luò)提出了一個“同等映射”,對于添加之后會降低我們正確率,即效果不好的卷積層,我們不使用它。但是已經(jīng)添加的層,我們是沒有辦法刪除的,那怎么辦呢?
通過添加旁路,將可能會降低正確率的第n層(或不止一層)加上之前第n-1層已算出的特征值x,表示為n+1層的結(jié)果,在我們不斷更新權(quán)重的過程中,如果發(fā)現(xiàn)這層起不到積極作用,只需要把這層的權(quán)重設(shè)置為0,在后續(xù)的卷積中這層就相當于被剔除了。
4 反卷積
反卷積又稱轉(zhuǎn)置卷積(Transposed Convolution)、上采樣(Upsampled )。當我們用神經(jīng)網(wǎng)絡(luò)生成圖片的時候,經(jīng)常需要將一些低分辨率的圖片轉(zhuǎn)換為高分辨率的圖片,如下所示:
通過之前對卷積的學習,我們可以認為一個卷積操作是一個多對一(many-to-one)的映射關(guān)系,比如在一個3×3的卷積核作用下用輸入圖像的9個值計算得到1個值;而反卷積則是一個一對多(one-to-many)的映射關(guān)系,將輸入矩陣中的一個值映射到輸出矩陣的9個值。
如何進行反卷積呢?例如現(xiàn)在有卷積操作:
一個4×4的矩陣經(jīng)3×3的濾波器后得到2×2的輸出,我們通常是用濾波器在輸入圖像中滑動得到輸出,但是將這個過程換種角度思考,把它與矩陣的乘法聯(lián)系在一起。我們無法用4×4的矩陣與3×3的矩陣相乘得到2×2的矩陣,但是根據(jù)卷積的過程,我們理解到它是簡單的乘法和加法操作,和矩陣的計算類似,所以我們把它變成另一種形式。以輸出圖像的第一個值“122”為例,我們設(shè)計一個1×9的卷積核與9×1的輸入矩陣相乘,則可以得到1×1的輸出。
但是把輸入圖像拆成4個9×1的矩陣肯定很復(fù)雜,類似上圖的操作,我們可以把用不到的值設(shè)置為系數(shù)為0,仍以輸出圖像的第一個值“122”為例。
這樣輸入圖像就可以統(tǒng)一,只改變卷積核補0的位置即可,其他三個輸出同理,則我們可以用4×16的卷積核矩陣與16×1的輸入圖像矩陣相乘,得到4×1的輸出矩陣。
如此得到的輸出矩陣,變換為2×2即可。從這個角度理解卷積后,我們就可以更快地理解反卷積的過程。仍以這個例子,反卷積就是我們已知4×1的輸出矩陣,要通過設(shè)計卷積核得到16×1的輸入矩陣。按照矩陣的乘法規(guī)律,我們可以猜測用一個16×4的卷積核與4×1的輸出矩陣相乘,即可得到16×1的輸入矩陣。我們可以簡單將原來4×16的卷積核進行轉(zhuǎn)置去設(shè)計反卷積的卷積核,這也就解釋了為什么反卷積又叫轉(zhuǎn)置卷積(注意與逆矩陣不同,設(shè)置轉(zhuǎn)置矩陣無法得到原始的輸入圖像,只是提供了矩陣形狀,一般情況下卷積是不可逆的)。我也不知道該怎么解釋把轉(zhuǎn)置后的矩陣再變回最開始的3×3,反正也不重要,我就不詳細闡述了,但是看了下面的過程就大概知道,它就是這么推出來的。
4.1 轉(zhuǎn)置卷積
換回原來的角度,轉(zhuǎn)置卷積其實和卷積一樣,可以看成是通過填充0構(gòu)造了一個更大的輸入進行卷積。還是舉之前的例子(由于之前得到的數(shù)值太大了,簡化了一下):
填充0的方式為:
- 在輸入特征圖的元素間填充
s-1
行(列) - 在輸入特征圖的四周填充
k-p-1
行(列)
以本圖為例,輸入的是一個3×3的矩陣,s設(shè)置的步長不是卷積時的步長,而是指掃過原圖(實際的藍色區(qū)域)需要走的步長;p可以理解為正向卷積時的填充,由于當時填充了p個0層,所以在反向卷積的時候要輸出填充前的特征圖(即減去0層),所以p越大這里填充的0越少、輸出的特征圖尺寸越小。
輸出的特征圖尺寸:
化簡后為:
4.2 雙線性插值
我的理解,雙線性插值的作用和轉(zhuǎn)置卷積類似,能夠放大圖片(還原圖片尺寸)。采用內(nèi)插值法,即在原有圖像像素的基礎(chǔ)上,在像素點值之間采用合適的插值算法插入新的元素。
線性插值法(linear interpolation):
線性插值法是指使用連接兩個已知量的直線來確定在這個兩個已知量之間的一個未知量的值的方法。假設(shè)已知兩個坐標(x0,y0)
和(x1,y1)
,求該區(qū)間內(nèi)某一位置x在直線上的值:
雙線性插值:
雙線性插值是插值算法中的一種,是線性插值的擴展。利用原圖像中目標點四周的四個真實存在的像素值來共同決定目標圖中的一個像素值,其核心思想是在兩個方向分別進行一次線性插值。
5 總結(jié)
注:選看
寫到【深度學習】計算機視覺(八)
的時候,被anchor-free搞得有點混亂,按照我的理解,我們訓(xùn)練好的模型參數(shù)就固定不變了,那對于兩張差別(尤其是背景、布局、色調(diào)等)特別大的圖片,使用一樣的參數(shù),怎么能保證正好就過濾掉無用的信息而只留下有用的信息呢?比如一個在茂密樹上的貓和一個在開闊草地上的貓,經(jīng)過同樣的網(wǎng)絡(luò),為什么能獲取到各自的特征呢?我非常不懂。
我閱讀了下述兩篇文章:文章來源:http://www.zghlxwxcb.cn/news/detail-735229.html
-
18張圖,直觀理解為什么神經(jīng)網(wǎng)絡(luò)這么有效?
首先要明確的是,訓(xùn)練后的模型能夠?qū)崿F(xiàn)讓輸入的圖像經(jīng)過特定的處理,總是把目標物體的特征“放大”,變得與背景更好區(qū)分。 -
卷積神經(jīng)網(wǎng)絡(luò)如何提取特征
如果物體是靠獨特的顏色區(qū)分正負樣本的,那很好理解,經(jīng)過統(tǒng)一的變換應(yīng)該比較好實現(xiàn),但如果是靠結(jié)構(gòu)去區(qū)分呢?我們?nèi)绾未_定圖片的哪個位置有目標物體,并為它提取特征、如何提取特征呢?首先我一直有一個誤區(qū),就是關(guān)于權(quán)重,可能是因為前面學習得分函數(shù)那里見到了wx+b
,所以我以為所有的網(wǎng)絡(luò)都是通過全連接去提取特征,當我們把X展開成一維向量時,w的設(shè)置就非常難以適應(yīng)所有布局不同的圖片,所以才會有關(guān)于如何提取特征的疑問。通過閱讀上述文章,把之前學習的知識都串聯(lián)起來了,我才明白我們需要訓(xùn)練的參數(shù)(權(quán)重)在卷積層中指的是卷積核,而不是我一直以為的wx+b這樣“掃描”整張圖一遍,目標物體的結(jié)構(gòu)就會越來越清晰。激活函數(shù)的作用也是,負樣本經(jīng)過卷積操作,特征越來越弱,就可以通過激活函數(shù)過濾掉了。
文中有一些關(guān)于線性代數(shù)的知識(我都忘了,又去翻了線代書,這里不細說明了),大概意思就是說(我說的不準,也比較抽象,歡迎專業(yè)的建議)一個矩陣A,它的特征值λ就代表了它的特征,一般矩陣是幾維的就有幾個特征值,而且不同的特征值對應(yīng)不同的特征向量X,我理解為X可以決定我們在A的哪些角度和方向去描述A,我們把這些特征值從大到小排列成一個對角矩陣代表A的所有特征,此時對應(yīng)的X能夠從這些特征展開描述A。在神經(jīng)網(wǎng)絡(luò)中,卷積核就是特征向量X,圖片就像A一樣,我們通過反向傳播努力地去調(diào)整修改X,使我們能夠獲得A的特征,并利用X和特征去描述A。
參考來源:
深度學習入門基礎(chǔ)概念
【神經(jīng)網(wǎng)絡(luò)】學習筆記九—學習率淺析
神經(jīng)網(wǎng)絡(luò)的歸一化(batch normalization)
我居然3小時學懂了深度學習神經(jīng)網(wǎng)絡(luò)入門到實戰(zhàn),多虧了這個課程,看不懂你打我?。?!
【深度學習】全連接層
深度學習系列5:卷積神經(jīng)網(wǎng)絡(luò)(CNN),圖像識別的利器
反向傳播算法詳解
深度學習系列6:卷積神經(jīng)網(wǎng)絡(luò)的反向傳播
反卷積詳解
轉(zhuǎn)置卷積(transposed convolution)
轉(zhuǎn)置卷積(Transposed Convolution)
深度學習之----雙線性插值,轉(zhuǎn)置卷積,反卷積的區(qū)別與聯(lián)系
【轉(zhuǎn)】FCN中反卷積、上采樣、雙線性插值之間的關(guān)系
上采樣、下采樣到底是個啥
卷積神經(jīng)網(wǎng)絡(luò)如何提取特征
18張圖,直觀理解為什么神經(jīng)網(wǎng)絡(luò)這么有效?
特征值分解
深度學習:局部響應(yīng)歸一化LRN
深度學習飽受爭議的局部響應(yīng)歸一化(LRN)詳解
卷積神經(jīng)網(wǎng)絡(luò)經(jīng)典回顧之AlexNet文章來源地址http://www.zghlxwxcb.cn/news/detail-735229.html
到了這里,關(guān)于【深度學習】計算機視覺(五)——卷積神經(jīng)網(wǎng)絡(luò)詳解的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!