日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢(xún)
選擇下列產(chǎn)品馬上在線(xiàn)溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
如何可視化卷積網(wǎng)絡(luò)分類(lèi)圖像時(shí)關(guān)注的焦點(diǎn)

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

創(chuàng)新互聯(lián)-專(zhuān)業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性?xún)r(jià)比木壘哈薩克網(wǎng)站開(kāi)發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式木壘哈薩克網(wǎng)站制作公司更省心,省錢(qián),快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋木壘哈薩克地區(qū)。費(fèi)用合理售后完善,10年實(shí)體公司更值得信賴(lài)。

為何會(huì)這樣?

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

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

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

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

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

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

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

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

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

實(shí)現(xiàn)

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

 
 
 
 
  1. from keras.applications.vgg16 import VGG16, preprocess_input, decode_predictions
  2. from keras.preprocessing import image
  3. import keras.backend as K
  4. import numpy as np
  5. import cv2
  6. import sys

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

 
 
 
 
  1. model = VGG16(weights="imagenet")
  2. img_path = sys.argv[1]
  3. img = image.load_img(img_path, target_size=(224, 224))
  4. x = image.img_to_array(img)
  5. x = np.expand_dims(x, axis=0)
  6. x = preprocess_input(x)

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

 
 
 
 
  1. preds = model.predict(x)
  2. class_idx = np.argmax(preds[0])
  3. class_output = model.output[:, class_idx]
  4. last_conv_layer = model.get_layer("block5_conv3")

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

 
 
 
 
  1. grads = K.gradients(class_output, last_conv_layer.output)[0]
  2. pooled_grads = K.mean(grads, axis=(0, 1, 2))
  3. iterate = K.function([model.input], [pooled_grads, last_conv_layer.output[0]])
  4. pooled_grads_value, conv_layer_output_value = iterate([x])
  5. for i in range(512):
  6.  conv_layer_output_value[:, :, i] *= pooled_grads_value[i]

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

 
 
 
 
  1. heatmap = np.mean(conv_layer_output_value, axis=-1)
  2. heatmap = np.maximum(heatmap, 0)
  3. heatmap /= np.max(heatmap)

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

 
 
 
 
  1. img = cv2.imread(img_path)
  2. heatmap = cv2.resize(heatmap, (img.shape[1], img.shape[0]))
  3. heatmap = np.uint8(255 * heatmap)
  4. heatmap = cv2.applyColorMap(heatmap, cv2.COLORMAP_JET)
  5. superimposed_img = cv2.addWeighted(img, 0.6, heatmap, 0.4, 0)
  6. cv2.imshow("Original", img)
  7. cv2.imshow("GradCam", superimposed_img)
  8. cv2.waitKey(0)

***,我們使用 OpenCV 來(lái)讀圖片,將獲取的熱力圖放縮到原圖大小。我們將原圖和熱力圖混合,以將熱力圖疊加到圖像上。

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

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


文章名稱(chēng):如何可視化卷積網(wǎng)絡(luò)分類(lèi)圖像時(shí)關(guān)注的焦點(diǎn)
當(dāng)前網(wǎng)址:http://www.dlmjj.cn/article/cdcdjep.html