成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

如何可視化卷積網(wǎng)絡(luò)分類圖像時(shí)關(guān)注的焦點(diǎn)

lijy91 / 2427人閱讀

摘要:原作說,加權(quán)梯度類激活映射通過任意目標(biāo)概念的梯度比如說類別狗的分對(duì)數(shù)甚至是狗這個(gè)字,將這些知識(shí)傳遞到最后的卷積層進(jìn)而產(chǎn)生一張粗略的定位圖,用于凸顯圖像中對(duì)于預(yù)測相關(guān)概念至關(guān)重要的區(qū)域。這種技術(shù)不僅適用于定位,還可用于視覺問答圖像標(biāo)注等。

在我們使用 CNN 進(jìn)行圖片分類時(shí),模型到底關(guān)注的是圖像的哪個(gè)區(qū)域?Grad-CAM 利用卷積網(wǎng)絡(luò)最后一個(gè)特征圖的信息,并加權(quán)對(duì)應(yīng)的梯度而構(gòu)建模型分類的熱力圖,通過該熱力圖,我們可以清楚地了解哪一塊區(qū)域?qū)τ陬悇e是最重要的。

你在訓(xùn)練神經(jīng)網(wǎng)絡(luò)進(jìn)行圖片分類時(shí),有沒有想過網(wǎng)絡(luò)是否就是像人類感知信息一樣去理解圖像?這個(gè)問題很難回答,因?yàn)槎鄶?shù)情況下深度神經(jīng)網(wǎng)絡(luò)都被視作黑箱。我們喂給它輸入數(shù)據(jù)進(jìn)而得到輸出。整個(gè)流程如果出現(xiàn)問題很難去調(diào)試。盡管預(yù)測的已經(jīng)相當(dāng)精準(zhǔn),但這并不能說明他們足以和人類感知的方式媲美。

為何會(huì)這樣?

假設(shè)你需要對(duì)大象和企鵝進(jìn)行二分類(我知道這個(gè)任務(wù)十分簡單)?,F(xiàn)在你已經(jīng)獲取了數(shù)據(jù)集,訓(xùn)好了模型并完成部署。這個(gè)模型想必是適用于絕大多數(shù)數(shù)據(jù)的,但是總有可能會(huì)出現(xiàn)誤判。有人可能會(huì)把它看作是一個(gè)極端情況,但是你覺得對(duì)于 CNN 來說,什么時(shí)候物體才是明確可辨的?

結(jié)合上述內(nèi)容,顯然在圖像中,大象常伴著草木出現(xiàn),企鵝常伴著冰雪出現(xiàn)。所以,實(shí)際上模型已經(jīng)學(xué)會(huì)了分辨草木與冰雪的顏色/形狀,而不是真的學(xué)會(huì)了按對(duì)象分類。

由上文案例知,如顏色通道統(tǒng)計(jì)那樣的簡單圖像處理技術(shù),與訓(xùn)練模型是一樣的。因?yàn)樵跊]有智能的情況下,模型只能依靠顏色辯物。現(xiàn)在你或許會(huì)問,如何知道 CNN 究竟在尋找什么?答案就是,Grad-CAM。

加權(quán)梯度類激活映射(Grad-CAM)

我們?cè)诒酒┛椭袑?shí)現(xiàn)了加權(quán)梯度類激活映射。首先,我們要知道這不是的解決方案。原作說,

加權(quán)梯度類激活映射 (Grad-CAM) 通過任意目標(biāo)概念的梯度(比如說類別「狗」的分對(duì)數(shù)甚至是「狗」這個(gè)字),將這些知識(shí)傳遞到最后的卷積層進(jìn)而產(chǎn)生一張粗略的定位圖,用于凸顯圖像中對(duì)于預(yù)測相關(guān)概念至關(guān)重要的區(qū)域。

通俗點(diǎn)講,我們只取最終卷積層的特征圖,然后將該特征中的每個(gè)通道通過與該通道相關(guān)的類的梯度進(jìn)行加權(quán)。這種方法只不過是輸入圖像如何通過每個(gè)通道對(duì)于類的重要性來激活不同的通道,最重要的是它不需要對(duì)現(xiàn)有架構(gòu)進(jìn)行任何重訓(xùn)練或更改。

特定類的特征空間得分就是對(duì)應(yīng)類的輸出值 y^c 關(guān)于特征圖 A_ij 的偏導(dǎo)在 i 和 j 維上的特征進(jìn)行全局平均池化操作。然后,我們將結(jié)果與特征圖沿其通道軸 k 相乘。最后,將結(jié)果在通道維度 k 上求平均/池化。因此,特征空間的得分凸的大小是 i×j。Σ 符號(hào)用于描述池化和平均操作。

ReLU 激活函數(shù)用于得分圖,隨后被歸一化以便輸出正區(qū)域預(yù)測。

實(shí)現(xiàn)

為了達(dá)到本篇博客的目的,我們套用一個(gè)預(yù)訓(xùn)練好的 VGG 模型,并導(dǎo)入一些必要包開始實(shí)現(xiàn)代碼。

from keras.applications.vgg16 import VGG16, preprocess_input, decode_predictions

from keras.preprocessing import image

import keras.backend as K

import numpy as np

import cv2

import sys

我們使用 Keras 自帶的 VGG16 模型。并加載一些有助于加載和處理圖像的函數(shù)。

model = VGG16(weights="imagenet")

img_path = sys.argv[1]

img = image.load_img(img_path, target_size=(224, 224))

x = image.img_to_array(img)

x = np.expand_dims(x, axis=0)

x = preprocess_input(x)

我們先初始化模型并通過命令行參數(shù)加載圖片。VGG 網(wǎng)絡(luò)只接受 (224×224×3) 大小的圖片,所以我們要把圖片放縮到指定大小。由于我們只通過網(wǎng)絡(luò)傳遞一個(gè)圖像,因此需要擴(kuò)展第一個(gè)維度,將其擴(kuò)展為一個(gè)大小為 1 的批量。然后,我們通過輔助函數(shù) preprocess_input 從輸入圖像中減去平均 RGB 值來實(shí)現(xiàn)圖像的歸一化。

preds = model.predict(x)

class_idx = np.argmax(preds[0])

class_output = model.output[:, class_idx]

last_conv_layer = model.get_layer("block5_conv3")

此處,我們來看看頂部預(yù)測的特征圖。所以我們得到圖像的預(yù)測,并給得分靠前的類做個(gè)索引。請(qǐng)記住,我們可以為任意類計(jì)算特征圖。然后,我們可以取出 VGG16 中最后一個(gè)卷積層的輸出 block5_conv3。得到的特征圖大小應(yīng)該是 14×14×512。

grads = K.gradients(class_output, last_conv_layer.output)[0]

pooled_grads = K.mean(grads, axis=(0, 1, 2))

iterate = K.function([model.input], [pooled_grads, last_conv_layer.output[0]])

pooled_grads_value, conv_layer_output_value = iterate([x])

for i in range(512):

?conv_layer_output_value[:, :, i] *= pooled_grads_value[i]

如上所述,我們計(jì)算相類輸出值關(guān)于特征圖的梯度。然后,我們沿著除了通道維度之外的軸對(duì)梯度進(jìn)行池化操作。最后,我們用計(jì)算出的梯度值對(duì)輸出特征圖加權(quán)。

heatmap = np.mean(conv_layer_output_value, axis=-1)

heatmap = np.maximum(heatmap, 0)

heatmap /= np.max(heatmap)

然后,我們沿著通道維度對(duì)加權(quán)的特征圖求均值,從而得到大小為 14*14 的熱力圖。最后,我們對(duì)熱力圖進(jìn)行歸一化處理,以使其值在 0 和 1 之間。

img = cv2.imread(img_path)

heatmap = cv2.resize(heatmap, (img.shape[1], img.shape[0]))

heatmap = np.uint8(255 * heatmap)

heatmap = cv2.applyColorMap(heatmap, cv2.COLORMAP_JET)

superimposed_img = cv2.addWeighted(img, 0.6, heatmap, 0.4, 0)

cv2.imshow("Original", img)

cv2.imshow("GradCam", superimposed_img)

cv2.waitKey(0)

最后,我們使用 OpenCV 來讀圖片,將獲取的熱力圖放縮到原圖大小。我們將原圖和熱力圖混合,以將熱力圖疊加到圖像上。

從上面的圖片可以清楚地看到 CNN 在圖像中尋找的是區(qū)分這些類的地方。這種技術(shù)不僅適用于定位,還可用于視覺問答、圖像標(biāo)注等。

此外,它在調(diào)試建立較精確模型的數(shù)據(jù)需求方面非常有幫助。雖然此技術(shù)并未過多涉及調(diào)參,但我們可以使用額外的數(shù)據(jù)和數(shù)據(jù)增強(qiáng)技術(shù)更好地泛化模型。

原文鏈接:http://www.hackevolve.com/where-cnn-is-looking-grad-cam/

歡迎加入本站公開興趣群

商業(yè)智能與數(shù)據(jù)分析群

興趣范圍包括各種讓數(shù)據(jù)產(chǎn)生價(jià)值的辦法,實(shí)際應(yīng)用案例分享與討論,分析工具,ETL工具,數(shù)據(jù)倉庫,數(shù)據(jù)挖掘工具,報(bào)表系統(tǒng)等全方位知識(shí)

QQ群:81035754

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/4729.html

相關(guān)文章

  • 直白介紹卷積神經(jīng)網(wǎng)絡(luò)(CNN)

    摘要:卷積神經(jīng)網(wǎng)絡(luò)除了為機(jī)器人和自動(dòng)駕駛汽車的視覺助力之外,還可以成功識(shí)別人臉,物體和交通標(biāo)志。卷積卷積神經(jīng)網(wǎng)絡(luò)的名字來源于卷積運(yùn)算。在卷積神經(jīng)網(wǎng)絡(luò)中,卷積的主要目的是從輸入圖像中提取特征。 什么是卷積神經(jīng)網(wǎng)絡(luò),它為何重要?卷積神經(jīng)網(wǎng)絡(luò)(也稱作 ConvNets 或 CNN)是神經(jīng)網(wǎng)絡(luò)的一種,它在圖像識(shí)別和分類等領(lǐng)域已被證明非常有效。 卷積神經(jīng)網(wǎng)絡(luò)除了為機(jī)器人和自動(dòng)駕駛汽車的視覺助力之外,還可以成...

    GitChat 評(píng)論0 收藏0
  • 用于圖像分割卷積神經(jīng)網(wǎng)絡(luò):從R-CNN到Mark R-CNN

    摘要:自從和在年贏得了的冠軍,卷積神經(jīng)網(wǎng)絡(luò)就成為了分割圖像的黃金準(zhǔn)則。事實(shí)上,從那時(shí)起,卷積神經(jīng)網(wǎng)絡(luò)不斷獲得完善,并已在挑戰(zhàn)上超越人類?,F(xiàn)在,卷積神經(jīng)網(wǎng)絡(luò)在的表現(xiàn)已超越人類。 卷積神經(jīng)網(wǎng)絡(luò)(CNN)的作用遠(yuǎn)不止分類那么簡單!在本文中,我們將看到卷積神經(jīng)網(wǎng)絡(luò)(CNN)如何在圖像實(shí)例分割任務(wù)中提升其結(jié)果。自從 Alex Krizhevsky、Geoff Hinton 和 Ilya Sutskever ...

    daydream 評(píng)論0 收藏0
  • 計(jì)算機(jī)視覺識(shí)別簡史:從 AlexNet、ResNet 到 Mask RCNN

    摘要:最近,物體識(shí)別已經(jīng)成為計(jì)算機(jī)視覺和最令人激動(dòng)的領(lǐng)域之一。故事開始于年贏得了大規(guī)模視覺識(shí)別挑戰(zhàn)賽。感受野特征的輸入?yún)^(qū)輸入圖像區(qū)會(huì)影響特征的激活。的架構(gòu)決定了感受野是如何隨著層數(shù)的改變而改變的。這些被推出區(qū)域被裁剪并扭曲到固定大小的圖像。 最近,物體識(shí)別已經(jīng)成為計(jì)算機(jī)視覺和 AI 最令人激動(dòng)的領(lǐng)域之一。即時(shí)地識(shí)別出場景中所有的物體的能力似乎已經(jīng)不再是秘密。隨著卷積神經(jīng)網(wǎng)絡(luò)架構(gòu)的發(fā)展,以及大型訓(xùn)練...

    BigTomato 評(píng)論0 收藏0
  • 從語義上理解卷積核行為,UCLA朱松純等使用決策樹量化解釋CNN

    摘要:近日,加州大學(xué)洛杉磯分校的朱松純教授等人發(fā)布了一篇使用決策樹對(duì)的表征和預(yù)測進(jìn)行解釋的論文。在此論文中,朱松純等研究者提出了一種新任務(wù),也就是使用決策樹在語義層次上來量化解釋預(yù)測的邏輯。 近日,加州大學(xué)洛杉磯分校的朱松純教授等人發(fā)布了一篇使用決策樹對(duì) CNN 的表征和預(yù)測進(jìn)行解釋的論文。該論文借助決策樹在語義層面上解釋 CNN 做出的每一個(gè)特定預(yù)測,即哪個(gè)卷積核(或物體部位)被用于預(yù)測最終的類...

    miya 評(píng)論0 收藏0
  • 使用TensorFlow和TensorBoard從零開始構(gòu)建卷積神經(jīng)網(wǎng)絡(luò)

    摘要:在本教程中,我會(huì)介紹如何只使用低級(jí)別的工具從零開始構(gòu)建卷積神經(jīng)網(wǎng)絡(luò),以及使用可視化我們的計(jì)算圖和網(wǎng)絡(luò)的表現(xiàn)。選擇模型接下來,我必須決定使用哪個(gè)卷積神經(jīng)網(wǎng)絡(luò)的模型。實(shí)質(zhì)上,大多數(shù)卷積神經(jīng)網(wǎng)絡(luò)都包含卷積和池化。 如果使用TensorFlow的所有較高級(jí)別的工具,例如tf.contrib.learn和Keras,你可以輕松地使用非常少量的代碼來構(gòu)建卷積神經(jīng)網(wǎng)絡(luò)。但是經(jīng)常使用這些較高級(jí)別的應(yīng)用,你就...

    ninefive 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<