掌握視覺化卷積神經網路模型,帶你暢遊影像識別技術領域

格伯納發表於2018-07-24

掌握視覺化卷積神經網路模型,帶你暢遊影像識別技術領域


在走進深度學習的過程中,最吸引作者的是一些用於給物件分類的模型。最新的科研結果表示,這類模型已經可以在實時視訊中對多個物件進行檢測。而這就要歸功於計算機視覺領域最新的技術革新。

眾所周知,在過去的幾年裡,卷積神經網路(CNN或ConvNet)在深度學習領域取得了許多重大突破,但對於大多數人而言,這個描述是相當不直觀的。因此,要了解模型取得了怎樣大的突破,我們應該先了解卷積神經網路是怎樣工作的。

卷積神經網路可以做些什麼?

卷積神經網路用於在影像中尋找特徵。在CNN的前幾層中,神經網路可以進行簡單的"線條"和"角"的識別。我們也可以通過神經網路向下傳遞進而識別更復雜的特徵。這個屬性使得CNN能夠很好地識別影像中的物件。

卷積神經網路

CNN是一個包含各種層的神經網路,其中一些層是卷積層、池化層、啟用函式。

卷積層是如何工作的?

要了解CNN如何工作,你需要了解卷積。卷積涉及瀏覽影像和應用濾波器等具體內容。

掌握視覺化卷積神經網路模型,帶你暢遊影像識別技術領域


上圖是一個5x5的矩陣。現在,你另外選取一個3x3矩陣,然後移動到影像上,將3x3矩陣與被覆蓋的影像部分相乘以生成單個值。緊接著,3x3矩陣向右和向下移動以"覆蓋"整個影像。最後,我們將獲得如上所示的內容。

卷積層的目標是過濾。濾波器是由向量的權重堆疊乘以卷積輸出的值來表示的。當訓練影像時,這些權重會發生變化,也就是說當進行影像評估時,它會通過它捕捉到的一些特徵來預測出影像的內容。

掌握視覺化卷積神經網路模型,帶你暢遊影像識別技術領域


池化層

卷積層之後的層主要是CNN架構中的池化層。它將輸入的影像分割為一組不重疊的矩形,並且對於每個子區域都輸出一個值。

掌握視覺化卷積神經網路模型,帶你暢遊影像識別技術領域


兩個主要的池化層是最大池和平均池。

最大池 - 輸出子區域的最大值。

平均池 - 輸出子區域的平均值。

池化層用於減少空間維度而不是深度。

減少空間維度的主要優點是:

  • 通過減少空間資訊,可以優化計算效能。

  • 通過減少空間資訊意味著你可以使用較少的引數來訓練模型,從而減少過度擬合的可能性。

  • 獲得一些固定的值。

啟用函式

啟用函式的工作方式與其他神經網路完全相同,該函式的主要左右是將值壓縮到一個特定的範圍內。一些常用的啟用函式是:

掌握視覺化卷積神經網路模型,帶你暢遊影像識別技術領域


最常用的啟用函式是ReLu啟用函式。它需要輸入'x'並判斷'x'是否為正,如果不為正則返回0。使用ReLu函式的原因是因為它的執行成本很低。

掌握視覺化卷積神經網路模型,帶你暢遊影像識別技術領域


上圖是卷積層的一般表示。我們通過池化層進行了卷積和ReLu函式。這些層彼此堆疊。

雖然定義和訓練深度神經網路(DNN)比以往任何時候都容易,但大多數人還是會陷入誤區。

為此目的,我們使用視覺化來理解CNN模型中的各種層。

使用Keras實現視覺化

在這部分我們將嘗試使用Keras實現視覺化。我們將使用Keras視覺化輸入,最大限度地啟用VGG16體系結構的不同層中的濾波器,並對ImageNet進行訓練。

首先,讓我們從在Keras中定義VGG16模型開始:

掌握視覺化卷積神經網路模型,帶你暢遊影像識別技術領域


請注意,我們只進入最後一個卷積層。原因是新增完全連線的層會強制你使用模型的固定輸入大小(224x224,原始ImageNet格式)。 通過保留卷積模組,我們的模型可以適應任意輸入大小。

該模型載入了一組預先在ImageNet上訓練過的權重。

現在讓我們定義一個損失函式,它將促進特定層(layer_name)中的特定濾波器(filter_index)的啟用。我們通過Keras後端函式執行此操作,該函式支援我們的程式碼在TensorFlow和Theano之上執行。

掌握視覺化卷積神經網路模型,帶你暢遊影像識別技術領域


一切都很簡單。這裡唯一的技巧是規範輸入影像的畫素梯度,以確保梯度上升足夠平滑。

現在我們可以使用我們定義的Keras函式在輸入空間中進行梯度上升:

掌握視覺化卷積神經網路模型,帶你暢遊影像識別技術領域


使用TensorFlow在CPU上執行此操作需要幾秒鐘。

然後我們可以提取並顯示生成的輸入:

掌握視覺化卷積神經網路模型,帶你暢遊影像識別技術領域


結果:

掌握視覺化卷積神經網路模型,帶你暢遊影像識別技術領域


第一層基本上只是編碼方向和顏色。然後將這些方向和濾波器組合成基本網格和斑點紋理。這些紋理逐漸組合成越來越複雜的圖案。

你可以將每層中的濾波器視為向量的基礎,它通常是完整的,可用於以緊湊的方式將輸入層進行編碼。當濾波器開始整合來自越來越大的空間範圍的資訊時,濾波器會變得更加複雜。

以下是從不同層生成的要素圖的圖片:

掌握視覺化卷積神經網路模型,帶你暢遊影像識別技術領域


第1層主要生成水平、垂直和對角線。主要用於檢測影像中的邊緣。 第2層將嘗試提供更多的資訊。它主要檢測角落。第3層我們開始可以檢測到一些複雜的圖案,如眼睛、臉等。我們可以假設這個特徵圖是從訓練過的人臉檢測模型中獲得的。在第4層,它可以在面部的更復雜部分(例如眼睛)。

掌握視覺化卷積神經網路模型,帶你暢遊影像識別技術領域


在第5層中,你可以使用要素圖生成人的具體面孔、汽車輪胎、動物的面孔等。此要素圖包含有關影像中的大多數資訊。

結論

一般而言,CNN和其他影像識別模型並沒有太大區別。我們可以通過閱讀相關書籍加深對這方面的瞭解。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31509949/viewspace-2158396/,如需轉載,請註明出處,否則將追究法律責任。

相關文章