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

2021-03-06 客戶端編程

本節將使用 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中,使用了3個3x3卷積核來代替7x7卷積核,使用了2個3x3卷積核來代替5*5卷積核,這樣做的主要目的是在保證具有相同感知野的條件下,提升了網絡的深度,在一定程度上提升了神經網絡的效果。
  • AI 代碼實踐:卷積神經網絡圖像風格轉換(Style Transfer)
    基本思想就是採用由預訓練的深度卷積神經網絡(例如VGG 16)學習的特徵表示來獲得圖像的樣式和特徵表示(feature Representaton)。一旦找到這些表示,那麼我們嘗試優化生成的圖像以重新組合不同目標圖像的內容和樣式。
  • 如何通過Pytorch代碼可視化理解卷積神經網絡
    如何更好地解釋卷積神經網絡。因此讓我們通過每一層可視化圖像,深入了解CNN。卷積神經網絡卷積神經網絡解釋什麼是卷積神經網絡?卷積神經網絡(CNN)是一種特殊類型的神經網絡,在圖像上工作得非常好。由Yan LeCun於1998年提出,卷積神經網絡可以識別給定輸入圖像中存在的數字。在開始使用卷積神經網絡之前,了解神經網絡的工作原理非常重要。
  • VGG:使用基礎卷積塊的網絡
    AlexNet在LeNet的基礎上增加了卷積層,但AlexNet對卷積窗口、輸出通道數和構造順序均做了大量的調整。雖然AlexNet指明了深度卷積神經網絡有出色的表現,但並沒有提供簡單的規則以指導後來的研究者如何設計新的網絡。
  • 從此明白了卷積神經網絡(CNN)
    我們可以設計這樣的一個 濾波器(filter,也稱為kernel),大小3×3:然後,我們用這個filter,往我們的圖片上「蓋」,覆蓋一塊跟filter一樣大的區域之後,對應元素相乘,然後求和。計算一個區域之後,就向其他區域挪動,接著計算,直到把原圖片的每一個角落都覆蓋到了為止。這個過程就是 「卷積」。
  • 深度卷積網絡:實例探究——吳恩達DeepLearning.ai深度學習筆記之卷積神經網絡(二)
    3. 1x1 卷積 1x1 卷積(1x1 convolution,或稱為 Network in Network)指濾波器的尺寸為 1。當通道數為 1 時,1x1 卷積意味著卷積操作等同於乘積操作。在如下圖所示的例子中,用 32 個大小為 1×1×192 的濾波器進行卷積,就能使原先數據包含的 192 個通道壓縮為 32 個。
  • 深度理論VGG-NET 網絡
    VGGNet的主要特點在於:(1)網絡很深;(2)卷積層中使用的卷積核很小,且都是3*3的卷積核。方法使用了卷積神經網絡,其中卷積核為3x3卷積核,按照模型的層數,分為11-19層,其中16層的模型為VGG-16,19層的為VGG-19論文中,作者測試了A-E不同深度的神經網絡。
  • 系列資源之經典卷積網絡(二)——VGG
    AlexNet,本期的資源將沿著上一期的足跡,為大家推出另一個經典的卷積網絡VGG,本期資源將為大家帶來VGG論文的解析。VGG 是 Visual Geometry Group 的縮寫,是這個網絡創建者的隊名,作者來自牛津大學。VGG 最大的特點就是它在之前的網絡模型上,通過比較徹底地採用 3x3 尺寸的卷積核來堆疊神經網絡,從而加深整個神經網絡的層級。
  • 深度學習基礎:一步一步講解卷積神經網絡
    而這節課我想講的重點是,卷積神經網絡的某一卷積層的工作原理,以及如何計算某一卷積層的激活函數,並映射到下一層的激活值。了解了卷積神經網絡中某一卷積層的工作原理,我們就可以把它們堆疊起來形成一個深度卷積神經網絡,我們下節課再講。
  • keras中文文檔之:CNN眼中的世界:利用Keras解釋CNN的濾波器
    我們將使用Keras來對濾波器的激活值進行可視化。本文使用的神經網絡是VGG-16,數據集為ImageNet。本文的代碼可以在github找到VGG-16又稱為OxfordNet,是由牛津視覺幾何組(Visual Geometry Group)開發的卷積神經網絡結構。該網絡贏得了ILSVR(ImageNet)2014的冠軍。
  • VGG網絡詳解
    具體的來說,論文中寫到通過堆疊兩個3×3的卷積核代替5×5的卷積核,堆疊三個3×3的卷積核替代7×7的卷積核。也就說小的多個卷積核堆疊和一個大的卷積核具有相同的感受野,提取的特徵是一樣的。在卷積神經網絡中,決定某一層輸出結果中一個元素所對應的輸入層的區域大小,被稱為感受野(receptive field)。
  • 神經網絡解析|CNN
    卷積神經網絡,即Convolutional Neural Network(CNN),是在神經網絡的基礎上進化而來的,也是近些年來在計算機視覺領域裡程碑式的算法。 CNN由紐約大學的Yann LeCun於1998年提出。
  • 基於深度卷積神經網絡的巖性識別
    預測準確度其它研究,如:張野[4]等人基於Inception-v3深度卷積神經網絡模型對一個由花崗巖、千枚巖和角礫巖組成的混合圖像數據集分類,取得90%以上的識別精度。Chen[5]等人採用Inception-ResNet-V2深度卷積神經網絡模型對開挖面巖體結構進行分類;(卷得有點嚴重了....)
  • 零基礎入門深度學習(七):圖像分類任務之VGG、GoogLeNet和ResNet
    在上一節課中,我們為大家介紹了經典的LeNet和AlexNet神經網絡結構在眼疾識別任務中的應用,本節將繼續為大家帶來更多精彩內容。VGG是當前最流行的CNN模型之一,2014年由Simonyan和Zisserman提出,其命名來源於論文作者所在的實驗室Visual Geometry Group。AlexNet模型通過構造多層網絡,取得了較好的效果,但是並沒有給出深度神經網絡設計的方向。
  • 從特徵檢測器到視覺轉換器:卷積神經網絡的時代到此結束了嗎?
    轉換器最初是為自然語言處理任務而設計的,主攻神經網絡機器翻譯。後來,谷歌研究院的阿列克謝·多索維斯基(Alexey Dosovitskiy)、盧卡斯·拜爾(Lucas Beyer)等人撰寫了一篇題目為《一幅圖像值得16x16個字符:大規模用於圖像識別的轉換器》的論文,提出了一種名為視覺轉換器(ViT)的架構,該架構可通過轉換器處理圖像數據。
  • 深度 | 輕量級深度卷積神經網絡在農業機器人中的應用
    在適應的模型中使用模型壓縮技術來學習到一個具有更少參數的輕量級深度卷積神經網絡(DCNN)3). 作者將 K 個輕量級模型結合起來作為一個混合模型來提高輕量級模型的性能最後,這個方法被用在了農業機器人中,並取實現了良好的性能。
  • 卷積神經網絡的最佳解釋!
    整個網絡有一個損失函數,在神經網絡開發過程中的技巧和竅門仍然適用於CNN。很簡單,對吧?那麼,卷積神經網絡與神經網絡有什麼不同呢?和神經網絡輸入不同,這裡的輸入是一個多通道圖像(在這種情況下是3通道,如RGB)。在我們深入之前,讓我們先了解一下卷積的含義。
  • 圖神經網絡概述
    深度學習的流行與卷積神經網絡的廣泛適用性密不可分,圖神經網絡的研究中時間最長、研究成果最多的就是圖卷積神經網絡,從特徵空間來看圖卷積神經網絡主要可以分為頻域和空間域兩個類型。接下來兩小節將分別從頻域和空間圖卷積的方向具體列舉分析不同類型圖卷積神經網絡方法。頻域的圖卷積神經網絡基於圖信號處理[29]問題,將圖神經網絡的卷積層定義為一個濾波器,即通過濾波器去除噪聲信號從而得到輸入信號的分類結果實際問題中只能用於處理無向且邊上無信息的圖結構,將輸入信號的圖定義為可特徵分解的拉普拉斯矩陣,歸一化後的特徵分解可以表示為通用結構其對角矩陣A就是特徵值的λi按序排列組成的特徵矩陣。
  • 入門 | 從VGG到NASNet,一文概覽圖像分類網絡
    了解圖像分類的不同網絡架構是一項非常艱巨的任務。本文將討論目前可在 keras 上使用的主要架構。
  • 深度學習第18講:CNN經典論文研讀之VGG網絡及其tensorflow實現
    VGGNet 是牛津大學計算機視覺組(Visual Geometry Group)和谷歌 DeepMind 一起研究出來的深度卷積神經網絡,因而冠名為 VGG。在2014年的 ILSVRC 中取得了第二名的成績,可能你會問這麼厲害的網絡為什麼不是第一名,因為當年實際提交 VGG 版本時作者並未作進一步的優化,而當年的第一名則是我們後面要繼續研讀的 Google Inception Net。