深入了解VGG卷積神經網絡濾波器

2021-03-02 客戶端編程

本節將使用 keras-vis,一個用於可視化 VGG 預建網絡學到的不同濾波器的 Keras 軟體包。基本思路是選擇一個特定的 ImageNet 類別並理解 VGG16 網絡如何來學習表示它。

第一步是選擇 ImageNet 上的一個特定類別來訓練 VGG16 網絡。比如,將下圖中的美國北鬥鳥類別設定為 20:



圖 1 北鬥鳥示意圖
 

ImageNet 類別在網站 https://gist.github.com/yrevar/6135f1bd8dcf2e0cc683 中可以找到,作為一個 Python 字典包,ImageNet 的 1000 個類別 ID 被處理為人類可讀的標籤。

具體過程

導入 matplotlib 和 keras-vis 使用的模塊。另外還需要載入預建的 VGG16 模塊。Keras 可以輕鬆處理這個預建網絡:



 

通過使用 Keras 中包含的預構建圖層獲取 VGG16 網絡,並使用 ImageNet 權重進行訓練:



 

這是 VGG16 網絡的內部結構。許多卷積層與最大池化層交替。一個平坦(flatten)層連接著三個密集層。其中最後一層被稱為預測層,這個圖層應該能夠檢測高級特徵,比如面部特徵,在此例中,是鳥的形狀。請注意,頂層顯式的包含在網絡中,因為希望可視化它學到的東西:



 

網絡可以進一步抽象,如下圖所示:


圖 2 一個VGG16網絡
 

現在重點看一下最後的預測層是如何預測出 ID 類別序列為 20 的美國北鬥鳥的:



 

顯示給定特徵的特定圖層的生成圖像,並觀察網絡內部中的美國北鬥鳥的概念:



 

神經網絡內部就是這樣表示一隻鳥的。這是一種虛幻的形象,但這正是在沒有人為幹預的情況下該神經網絡自然學到的東西!

如果你還好奇還想了解更多,那麼,選擇一個網絡中更淺的層將其可視化,顯示美國北鬥鳥的前期訓練過程:



 

運行代碼的輸出如下:



正如預期的那樣,這個特定的層學習低層的特徵,如曲線。然而,卷積網絡的真正威力在於,模型中的網絡越深入,越能推斷出更複雜的特徵。

解讀分析

keras-vis 可視化密集層的關鍵思想是生成一個輸入圖像以最大化對應於鳥類的最終密集層輸出。所以實際上這個模塊做的是反轉這個過程。給定一個特定的訓練密集層與它的權重,生成一個新的最適合該層本身的合成圖像。

每個卷積濾波器都使用類似的思路。在這種情況下,第一個卷積層是可以通過簡單地將其權重可視化來解釋的,因為它在原始像素上進行操作。

隨後的卷積濾波器都對先前的卷積核的輸出進行操作,因此直接對它們進行可視化並不一定非常容易理解。但是,如果獨立考慮每一層,可以專注於生成最大化濾波器輸出的合成輸入圖像。

GitHub 中的 keras-vis 存儲庫提供了一系列關於如何檢查內部網絡的可視化示例,包括注意力顯著圖,其目標是在圖像中包含各種類別(例如,草)時檢測圖像的哪個部分對特定類別(例如,老虎)的訓練貢獻最大。典型文章有「Deep Inside Convolutional Networks:Visualising Image Classification Models and Saliency Maps」,其中一個 Git 庫中的圖片顯示如下,這個案例說明了在網絡中一個老虎的顯著圖樣本:


相關焦點

  • VGG卷積神經網絡模型解析
    VGG研究卷積網絡深度的初衷是想搞清楚卷積網絡深度是如何影響大規模圖像分類與識別的精度和準確率的,最初是VGG-16號稱非常深的卷積網絡全稱為(GG-Very-Deep-16 CNN),VGG在加深網絡層數同時為了避免參數過多,在所有層都採用3x3的小卷積核,卷積層步長被設置為1。
  • 深度 | 從AlexNet到殘差網絡,理解卷積神經網絡的不同架構
    優秀的卷積神經網絡具有數百萬個參數和大量隱藏層。事實上,一個錯誤的經驗法則是:「隱藏層的數量越多,卷積神經網絡越好」。流行的卷積神經網絡有 AlexNet、VGG、Inception、ResNet。這些網絡為什麼性能如此好?它們是如何設計的呢?為什麼它們的結構是現在這樣?本文給出了一個簡單而全面的概述。這些問題的答案並不簡單,無法全部涵蓋在一篇博客中。
  • VGG:使用基礎卷積塊的網絡
    AlexNet在LeNet的基礎上增加了卷積層,但AlexNet對卷積窗口、輸出通道數和構造順序均做了大量的調整。雖然AlexNet指明了深度卷積神經網絡有出色的表現,但並沒有提供簡單的規則以指導後來的研究者如何設計新的網絡。
  • 圖解:卷積神經網絡數學原理解析
    介紹過去我們已經知道被稱為緊密連接的神經網絡。這些網絡的神經元被分成若干組,形成連續的層。每一個這樣的神經元都與相鄰層的每一個神經元相連。下圖顯示了這種體系結構的一個示例。圖1. 密集連接的神經網絡結構當我們根據一組有限的人工設計的特徵來解決分類問題時,這種方法很有效。
  • 圖解:卷積神經網絡的數學原理分析
    卷積神經網絡可能是取得巨大成功的最關鍵的基礎。這次,我們將加深對神經網絡如何在CNN上工作的理解。出於建議,本文將包含非常複雜的數學方程式。如果您不習慣線性代數和微分,請不要氣our。我的目標不是讓您記住這些公式,而是讓您直觀地了解下面發生的事情。 在過去,我們知道了稱為緊密連接的神經網絡。這些網絡的神經元被分為幾組以形成連續的層。每個這樣的神經元連接到相鄰層中的每個神經元。
  • 圖像分類-卷積網絡閱讀筆記(二)VGG
    ,主要的貢獻是通過使用具有非常小的卷積核的網絡結構以增加網絡的深度,當權值層增加到16-19層使網絡的性能有了明顯的提升。隨著卷積神經網絡在計算機視覺領域越來越通用,為取得更好的精度,已經有很多人嘗試改變AlexNet原始的結構,例如在第一個卷積層中使用更小的感受窗口和更小的步長。
  • 深度學習元老Yann Lecun詳解卷積神經網絡
    註:卷積神經網絡(Convolutional Neural Network)是一種前饋神經網絡,它的人工神經元可以響應一部分覆蓋範圍內的周圍單元,對於大型圖像處理有出色表現。早在20世紀80年代末,Yann LeCun就作為貝爾實驗室的研究員提出了卷積網絡技術,並展示如何使用它來大幅度提高手寫識別能力。上世紀末本世紀初,當神經網絡失寵時Yann LeCun是少數幾名一直堅持的科學家之一。他於2003年成為紐約大學教授,並從此引領了深度學習的發展,目前任職於Facebook FAIR實驗室。
  • 用 Pytorch 理解卷積網絡
    藉助卷積神經網絡(CNN),這一切都是可能的,卷積神經網絡是一種特定類型的神經網絡,也稱為卷積網絡。如果您是一名深度學習愛好者,那麼您可能已經聽說過卷積神經網絡,也許您甚至自己開發了一些圖像分類器。像Tensorflow和PyTorch這樣的現代深度學習框架使向機器學習圖像變得容易,但是,仍然存在一些問題:數據如何通過神經網絡的人工層傳遞?計算機如何從中學習?
  • 深度理論VGG-NET 網絡
    VGGNet的主要特點在於:(1)網絡很深;(2)卷積層中使用的卷積核很小,且都是3*3的卷積核。方法使用了卷積神經網絡,其中卷積核為3x3卷積核,按照模型的層數,分為11-19層,其中16層的模型為VGG-16,19層的為VGG-19論文中,作者測試了A-E不同深度的神經網絡。
  • 圖解CNN系列二:卷積神經網絡各層結構
    深度學習CNN模型進行訓練和測試,每個輸入圖像將通過一系列帶有濾波器(Kernals),Pooling,全連接層(FC)的卷積層並通過Softmax函數對具有0和1之間的概率值的對象進行分類。下圖是CNN處理輸入圖像並根據值對對象進行分類的完整流程。
  • 乾貨| Excel圖解卷積神經網絡結構
    隨意地應用神經網絡是一回事,理解它是什麼以及背後的發生機制是另外一回事。今天,我將與你共享我的心得,展示我如何上手卷積神經網絡並最終弄明白了它。我將做一個通盤的展示,從而使你對 CNN 的工作機制有一個深入的了解。
  • 了解卷積神經網絡的原理與基本結構
    受Hubel和Wiesel對貓視覺皮層電生理研究啟發,有人提出卷積神經網絡(CNN),Yann Lecun 最早將CNN用於手寫數字識別並一直保持了其在該問題的霸主地位。近年來卷積神經網絡在多個方向持續發力,在語音識別、人臉識別、通用物體識別、運動分析、自然語言處理甚至腦電波分析方面均有突破。
  • 一文讓你了解卷積神經網絡
    卷積神經網絡(Convolutional Neural Network,CNN)是一種前饋神經網絡,它的人工神經元可以響應一部分覆蓋範圍內的周圍單元,對於大型圖像處理有出色表現。 它包括卷積層(convolutional layer)和池化層(pooling layer)。對比:卷積神經網絡、全連接神經網絡
  • 重新思考圖卷積網絡:GNN只是一種濾波器
    論文提出了一種基於圖形信號處理的理論框架,用於分析圖神經網絡。圖神經網絡已成為解決圖結構數據機器學習問題的最重要技術之一。最近關於頂點分類(vertex classification)的工作提出了深度和分布式的學習模型,以實現高性能和可擴展性。
  • 7大類卷積神經網絡(CNN)創新綜述
    (CNN)是一種特殊類型的神經網絡,在各種競賽基準上表現出了當前最優結果。由於 CNN 考慮輸入像素的鄰域(局部性),可以使用不同大小的濾波器來探索不同級別的相關性。因此,在 2000 年初,研究人員利用空間變換來提升性能,此外,還評估了不同大小的濾波器對網絡學習率的影響。不同大小的濾波器封裝不同級別的粒度;通常,較小的濾波器提取細粒度信息,而較大的濾波器提取粗粒度信息。這樣,通過調整濾波器大小,CNN 可以在粗粒度和細粒度的細節上都表現很好。
  • 經典CNN網絡(Lenet、Alexnet、GooleNet、VGG、ResNet、DenseNet)
    (我的理解是變寬且視野範圍種類多,vgg及resnet讓網絡變深,inception讓網絡變寬,在同一層整合不同感受野的信息,並讓模型自己選擇卷積核的大小)      這裡黃色的1*1的卷積核是改進googlenet時添加的(最初沒有這種設計),目的是降低輸入層維度,例如50通道的200*200 Feature map 通過20個1*1卷積核後輸出為20通道的200*200 Feature
  • 理解卷積神經網絡中的輸入與輸出形狀(Keras實現)
    即使我們從理論上理解了卷積神經網絡,在實際進行將數據擬合到網絡時,很多人仍然對其網絡的輸入和輸出形狀(shape)感到困惑。本文章將幫助你理解卷積神經網絡的輸入和輸出形狀。讓我們看看一個例子。CNN的輸入數據如下圖所示。
  • 卷積神經網絡(一)——卷積、邊緣化與池化層
    (Convolutional Neural Network,CNN),是一種神經網絡的模型,在計算機視覺(computer vision,CV)領域運用廣泛。2)same卷積,即保證輸出矩陣大小和輸入矩陣一致,此時p=(f-1)/2從這裡也可以看出,濾波器的維度f通常需要是奇數,這樣保證可以用same卷積,且有中心像素點,便於指出濾波器的位置。 四、步長步長,即計算卷積過程中,每次移動過濾器的幅度。這裡幅度既代表了水平移動的幅度,也代表了垂直移動的幅度。如下圖所示:
  • 一份完全解讀:是什麼使神經網絡變成圖神經網絡?
    雷鋒網AI科技評論按:最近,Graph Neural Network(GNN)在很多領域日益普及,包括社交網絡、知識圖譜、推薦系統甚至於生命科學。GNN在對節點關係建模方面表現十分突出,使得相關的研究領域取得了一定突破。本文將就「為什麼圖有用」、「為什麼很難在圖上定義卷積」、「是什麼使神經網絡成為了圖神經網絡」這些問題進行討論。
  • 詳解卷積神經網絡
    接下來介紹一種非常重要的神經網絡——卷積神經網絡。這種神經網絡在計算機視覺領域取得了重大的成功,而且在自然語言處理等其它領域也有很好的應用。深度學習受到大家的關注很大一個原因就是Alex等人實現的AlexNet(一種深度卷積神經網絡)在LSVRC-2010 ImageNet這個比賽中取得了非常好的成績。此後,卷積神經網絡及其變種被廣泛應用於各種圖像相關任務。