計算機視覺基礎-2——圖像分類與卷積網絡介紹


一、圖像分類定義

可以用一個簡單的公式來描述圖像分類的過程:

訓練:通過訓練集{(x1,y1),...,{xn,yn}}來獲得一個預測函數f,滿足在訓練集上的最小誤差。

測試:向預測函數f輸入一個從來沒有見過的x,得到預測值y。

 

二、泛化能力

  我們在訓練的過程中,要注意所訓練出來的模型的泛化能力。所謂泛化能力,就是要讓模型認識不同形態、不同顏色等不同特征的同類事物,例如蘋果,蘋果有黃色的、綠色的、紅色的等,當訓練出來的模型不能只認識紅色的,而要認識各種不同種類的蘋果。

  所以,我們在訓練模型的時候,提供的訓練集就要盡可能的包含多種同類事物(局部特征可能不同),讓模型來自己學習他們的共性,從而獲得泛化能力。

 

三、傳統機器學習的訓練和測試過程

在機器學習領域中,如果我們要對一個圖片進行分類,想要讓其具有良好的泛化能力,我們不能將原始的RGB圖片直接作為輸入,而是需要經過以下過程:

1.在訓練的時候,首先要對圖像進行特征提取,摒除一些干擾因素,例如雜亂的背景等等

2.使用分類算法進行訓練,訓練的時候用標簽來計算損失,最后得到訓練好的分類器(模型)。

3.測試時,同樣要首先對圖像做特征提取(要和訓練時的特征提取操作一致),然后使用訓練好的模型進行預測,得到預測值。

 

四、圖像特征提取介紹

1.顏色特征

顏色特征是將圖片的顏色做直方圖,直方圖就是其顏色分布的特征。

2.全局形狀

通過PCA降維來提取全局形狀特征,但是當形狀旋轉和扭曲的時候,效果不好。

3.局部形狀

4.紋理

 

常用的圖像特征有以下幾種:

1.SIFT特征

SIFT是一種比較有用的特征,將一個區域划分為16格,每一個提取一個8維的梯度向量,然后將16個8維向量串起來得到一個128維的特征向量。主要用在圖像分類和圖像匹配等任務。

2.HOG特征

HOG主要用在目標檢測領域,能夠比較精確的將目標的形狀給檢測出來,所以在目標檢測和跟蹤方面用得比較多。

3.LBP特征

主要對人臉特征的提取比較好。

4.Harr特征

即角點特征,使用各種過濾器對圖像進行處理,可以提取橫向、縱向等方向的邊界。

 

五、使用SVM來分類iris蘭花

 

六、CNN結構初窺

相比於前面的機器學習對圖像的分類來說,CNN可以將一個圖片直接作為輸入,然后通過卷積層和全連接層,就可以得到分類的輸出,是一個端到端的過程。

 

七、深度學習中的激勵函數

激勵函數是一些非線性的函數,這些函數的特性有所不同:

1.Sigmoid函數可以將數值壓縮到0-1的區間。

2.tanh可以將數值壓縮到-1-1的區間。

3.Relu函數實現一個取正的效果,所有負數的信息都拋棄。

4.leaky Relu是一種相對折中的Relu,認為當數值為負的時候可能也存在一定有用的信息,那么就乘以一個系數0.1(可以調整或自動學習),從而獲取負數中的一部分信息。

5.Maxout使用兩套參數,取其中值大的一套作為輸出。

6.ELU類似於Leaky Relu,只是使用的公式不同。

每一層的非線性激勵函數組合起來,就可以形成一個非常復雜的非線性函數,也就可以有足夠的能力來處理大量的信息(即可以保存大量的知識來指導分類)。

 

八、卷積運算過程

輸入圖像:32*32是圖像的高和寬,其中的每一格是一個像素點,由於RGB圖像有3個顏色通道,所以該圖像的channel為3,一共就是32*32*3。

卷積核:卷積核的size一般是奇數*奇數,channel要與被卷積的圖像相同,這里也為3。

特征圖:就是卷積后的圖像,寬和高一般情況下會變小(valid padding),但是我們可以通過padding的方式使之不發生變化,也就是“same”的padding方式。特征圖的channel值應該是等於卷積核的個數,因為每一個卷積核對圖像進行卷積,都會產生一個channel為1的矩陣,6個卷積核產生的結果就是6個圖層的疊加,所以結果維度為28*28*6。

卷積的計算過程:

解釋:

1.W0表示一個卷積核,大小是3*3*3,一共27個參數,這些參數都是通過BP算法來更新的。

2.卷積核的3和channel對應輸入圖像的3個channel,從第一格開始滑動,每次都計算自己覆蓋的所有像素點,求他們的積,再求和。得到3個channel為1的矩陣。

3.注意上圖中輸入圖像外圍的灰色填充0,這就是padding,這樣填充后,經過卷積計算,得到的結果矩陣與輸入圖像的高和寬一致,這叫“same” padding。

4.卷積核的3和channel分別得到的3個矩陣,在求和,可以得到一個高和寬與輸入圖像一致,channel為1的結果矩陣。

5.然后第二個卷積核W1再來做同樣的操作,最終同樣得到一個結果矩陣。

6.假設一共有6個卷積核,那么最終就會得到一個高寬與輸入圖像一致,channel為6的三維矩陣。

 

九、卷積層可視化

  從上圖可以看出,在接近輸入層的卷積部分。提取到的圖像特征很像前面機器學習用到的幾種特征,所以在低級特征中,CNN就完成了各種常用特征的提取,並且將他們融合起來。

  而更重要的是后面的中級特征和高級特征,這些特征是前面提到的機器學習特征很難獲取的特征,這些特征才能真正表征一個圖像的本質,從而提供給后面做精確的分類。

 

十、池化層

池化層實際上就是一個降采樣的過程。

一般有兩種常用的池化方式:

1.平均池化:Average pooling

2.最大池化:Max pooling

以最大池化為例:

池化的核通常采用2x2的大小,平均池化就是計算2x2范圍內的平均值,最大池化就是取該范圍內的最大值。目前比較常用的是最大池化。

在經過池化后,原圖像的channel是不發生改變的。

 

十一、全連接層

在經過卷積層、池化層后得到的結果矩陣,我們通過將其壓平(flatting)后,就可以輸入全連接層。

如圖所示,結果矩陣壓平后得到一個1x3072的向量,然后輸入到擁有10個節點的全連接層,得到一個1x10的輸出(使用softmax激勵函數),就將圖像分為10類了。

 

十二、損失函數

1.交叉熵損失函數

交叉熵損失函數主要用於二分類問題,一般配合Sigmoid函數作為輸出層。

2.Softmax損失函數

Softmax作為輸出層,他的損失函數和交叉熵損失函數很像。交叉熵損失函數實際上的softmax在二分類時的特例。當只有分個分類時,y1 = 1-y0,a1 = 1-a0帶入損失函數可以得到L = -∑[ y0loga0+(1-y0)log(1-a0)]。

3.歐式距離損失函數

主要用於回歸任務。

4.對比損失函數

用於訓練Siamese網絡(暹羅網絡)。用於人臉對比等方面。

5.Triplet損失

 

三元損失有3個輸入,A,P,N。我們要使A和P之間的距離盡可能小,而A和N之間的距離盡可能大。

 

十三、訓練網絡的過程

 

1.首先我們的輸入圖片經過N層的卷積層、池化層進行特征提取。

2.得到的結果矩陣經過flatting,變為向量,然后輸入全連接層進行分類。

3.通過訓練集標簽和每一輪的分類結果進行比對,使用損失函數計算損失值。

4.將損失值通過梯度下降的方式反向傳播,更新全連接層的參數以及卷積層的卷積核參數。

5.不斷迭代,知道損失值變得收斂(變得很小,達到我們的預期),即逼近最優解。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM