掌握視覺化卷積神經網路模型,帶你暢遊影像識別技術領域
在走進深度學習的過程中,最吸引作者的是一些用於給物件分類的模型。最新的科研結果表示,這類模型已經可以在實時視訊中對多個物件進行檢測。而這就要歸功於計算機視覺領域最新的技術革新。
眾所周知,在過去的幾年裡,卷積神經網路(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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 卷積神經網路進行影像識別卷積神經網路
- 卷積神經網路中的視覺化方法卷積神經網路視覺化
- 帶你認識9種常用卷積神經網路卷積神經網路
- 卷積神經網路表徵視覺化研究綜述卷積神經網路視覺化
- 利用Python實現卷積神經網路的視覺化Python卷積神經網路視覺化
- 【Python】keras卷積神經網路識別mnistPythonKeras卷積神經網路
- 卷積神經網路四種卷積型別卷積神經網路型別
- TensorFlow 卷積神經網路之貓狗識別卷積神經網路
- 谷歌的googLeNet卷積神經網路為什麼在計算機視覺領域如此強大?谷歌Go卷積神經網路計算機視覺
- 卷積神經網路卷積神經網路
- TensorFlow 卷積神經網路系列案例(1):貓狗識別卷積神經網路
- 手寫數字圖片識別-卷積神經網路卷積神經網路
- 看了這7篇論文,你會完全掌握卷積神經網路!卷積神經網路
- 卷積神經網路概述卷積神經網路
- 解密卷積神經網路!解密卷積神經網路
- 5.2.1 卷積神經網路卷積神經網路
- 卷積神經網路CNN卷積神經網路CNN
- 卷積神經網路-AlexNet卷積神經網路
- 卷積神經網路-1卷積神經網路
- 卷積神經網路-2卷積神經網路
- 卷積神經網路-3卷積神經網路
- 初識卷積神經網路第一講!卷積神經網路
- 卷積神經網路—基礎知識(1)卷積神經網路
- 卷積神經網路知識點總結卷積神經網路
- 深度學習——使用卷積神經網路改進識別鳥與飛機模型深度學習卷積神經網路模型
- 如何使用卷積神經網路進行影像處理?卷積神經網路
- 用TensorFlow搭建卷積神經網路識別數字0~9卷積神經網路
- 一文帶你讀懂網路視覺化技術視覺化
- 全卷積神經網路FCN卷積神經網路
- 深度剖析卷積神經網路卷積神經網路
- 基於卷積神經網路和tensorflow實現的人臉識別卷積神經網路
- 【Pytorch】基於卷積神經網路實現的面部表情識別PyTorch卷積神經網路
- TF2.keras 實現基於卷積神經網路的影像分類模型TF2Keras卷積神經網路模型
- 卷積神經網路鼻祖LeNet網路分析卷積神經網路
- 讓卷積神經網路來辨識馬和人卷積神經網路
- 卷積神經網路十五問:CNN與生物視覺系統的研究探索卷積神經網路CNN視覺
- 【Python教程】計算機視覺的基石——讀懂 CNN卷積神經網路Python計算機視覺CNN卷積神經網路
- CNN神經網路之卷積操作CNN神經網路卷積