華文網

MIT提出mNeuron:一個視覺化深度模型神經元的Matlab外掛程式

選自MIT

機器之心編譯

參與:黃小天、Smith

近日,麻省理工學院(MIT)Antonio Torralba 等人發表了一篇題為《mNeuron: A Matlab Plugin to Visualize Neurons from Deep Models》的文章,介紹了一個視覺化深度模型神經元的 Matlab 外掛程式 mNeuron,能夠視覺化單個神經元和單個神經元模式;並共用了該外掛程式實現的代碼和 4 個應用演示。

專案連結:http://vision03.csail.mit.edu/cnn_art/?utm_content=buffer2ff9c&utm_medium=social&utm_source=twitter.com&utm_campaign=buffer

內容

代碼:通過反向傳播優化視覺化從深度學習工具包中訓練的神經元 [支持 Caffe 和 matconvnet]

演示:

視覺化單個神經元

視覺化單個神經元模式

類內變體(Intra-class variation):優化已學習的 fc6 或 fc7 relu mask

層級二進位 CNN 代碼(Hierarchical binary CNN code):通過預定義的 relu mask 優化

CNN 圖像完成(Image completion with CNN):通過邊界條件優化

參考

視覺化方法根據《Mahendran and Vedaldi. Understanding Deep Image Representations by Inverting Them》進行了改良。

說明書

演示 1:視覺化單一神經元(V_neuronInv.m)

目的:找到一個圖像,

可以使單神經元的啟動值優化 [Erhan et al., Simonyan et al., Zhou et al.]

a. 不同連接層(AlexNet):我們使從 ImageNet 資料集進行學習的 Conv 網路 1、3、5 層的神經元視覺化。隨著層的深度的增加,神經元學著去識別簡單的邊沿、斑點和紋理圖案,以及複雜的物體局部和類別(從 Conv 網路的第 5 層,我們檢索了真實圖像從而與 Zhou et al. 的結果進行對比)。

b. 鑲嵌藝術(Tessellation Art)我們不會在 1x1 的接受域(receptive field)內對單神經元的啟動值進行優化,我們把接受域延伸到了全圖範圍(GoogleNet inception4a—14x14)。我們手動整理了一些神經元的視覺化結果,從而把物體的局部鑲嵌進藝術牆紙。

c. 不同的資料集:我們視覺化了從兩個不同資料集(ImageNet 和 Places)進行學習的 Conv 網路 4-5 層的神經元。

d. 不同的網路:(AlexNet、VGG-16、NIN、GoogleNet)給定四個語義片段「狗、火焰、鐘錶和車輪」,我們對四個不同網路的約齊層(roughly aligned layers—在全連層之前)的最活化(top-activated)神經元進行視覺化。

演示 2:視覺化類內變體

類內變體:在給定一個物體類別的訓練圖像的情況之下,我們集群 Fc 神經元反應以找到一般性的神經元放電模式(神經通路)。對於每個模式,我們選擇 top-k 已啟動的神經元,並從數字上找到一個優化這些神經元的全部啟動值的圖像。

演示 3:視覺化二進位 CNN 代碼

給定一張輸入圖像,我們可以把它的二進位碼定義為其 relu mask m5-7。[Agrawal et al.(https://arxiv.org/abs/1407.1610)] 指出,這些二進位碼取得了原始深度特徵的相似分類結果。這裡我們考慮三個不同的帶有漸增長度的二進位碼:m7、m6-7、m5-7。

為了視覺化一張圖像的二進位碼,我們為 Fc8 標籤執行相同的「單一神經元視覺化」的操作,除卻在優化過程之中原始 relu 層之後應用額外的二進位碼。

通過更多層的二進位碼,我們可以恢復原始圖像的本質(essence),這部分解釋了它的分類有效性。

演示 4:用卷積神經網路完成圖像 (V_inpaint.m)

詳見說明書 5.3 章節。主旨是我們可以利用圖像上的邊界約束來進行神經元(單一神經元或者神經元模式)視覺化。