Grad-CAM原理

這篇是我對嗶哩嗶哩up主 @霹靂吧啦Wz 的視頻的文字版學習筆記 感謝他對知識的分享

只要大家一提到深度學習

缺乏一定的解釋性

比如說在我們之前講的分類網絡當中

網絡它為什么要這么預測

它針對每個類別所關注的點在哪里呢

在great?cam這篇論文當中呢

就完美的解決了在cam這篇論文當中存在一些問題

在great?cam當中

我們既不需要修改網絡的結構

也不需要對網絡做進一步的訓練

舉個非常有意思的一個例子

這里呢我們也來簡單的聊一聊

那么首先呢作者訓練了一個二分類網絡

也就是針對護士以及醫生這兩個類別的

那對于這個帶有偏見的模型呢

首先對于護士這個類別

你會發現他預測的是正確的

然后通過我們繪制熱力圖呢

你會發現其實它主要關注的區域是在人臉的這個區域

大家想想你通過人臉就能分辨出他是醫生還是護士嗎

其實我個人覺得僅僅通過人臉是很難區分出來的

然后接下來我們再看下面這個圖

也就是它的正確標簽應該是醫生

但是我們這個帶有偏見的模型呢

它預測的結果是護士?預測錯誤

這個不帶偏見的模型

它是根據不同職業所使用的器械或者說工具

以及它的穿著來得出最終預測結果的

那么很明顯

這相比于我們僅僅通過人臉來判斷他的職業要更加的科學一些

那么再看一下這個圖

這個帶偏見的模型呢

它學到特征其實是有問題的

那么作者呢有進一步分析這個帶偏見模型它所對應的訓練的數據集

然后作者發現在這個數據集當中

護士這個類別絕大多數都是女性

所以這就導致了訓練得到這個模型

它是帶有偏見的

那么為了解決這個問題呢

作者就調整了一下訓練數據當中不同職業男女之間的一個比例

那么調整均衡之后再去訓練網絡

就得到了這個不帶偏見的模型

那么它的測試集的準確率由原來的%多

提升到了%多的明顯效果是變好了的

所以我覺得作者舉這個例子呢是值得我們大家去思考以及借鑒

cam的適用性非常強的

然后我們來看一下我剛剛提供的關于這個pytorch實現cam這個倉庫

那么在這個倉庫下呢

還提供了比如說像目標檢測以及語義分割的一些使用方法

其實作者有給出對應的一個使用教程啊

那么這里我給出針對目標檢測的語義分割的

還有針對使用像transformer模型

它的一個使用的案例

那么大家有興趣的話可以自己去看一下

那接著我們再回到我們的ppt當中

我們現在就以圖像分類這個任務為例啊

那么黑色這個箭頭呢代表的是我們正向傳播的一個過程

藍色這個箭頭呢代表的是梯度反傳的一個過程

那比如說針對我們圖像分類這個任務

假設我想看一下對于tiger?cat這個類別

我們網絡究竟關注的區域在哪

那么他就根據網絡預測的tiger?cat這個類別的數據進行一個反向傳播

這里的數據是沒有通過softmax激活的

我們就能得到針對這個特征層A的一個反向傳播的梯度信息

比如說我把它標記為A'

然后呢作者對這里的a撇在它的每一個通道位置上去求一個均值

那么就得到我們這里的每一個w

那這里的w呢就是針對我們這個特征層a每一個通道的一個權重

然后接下來做的再進行一個加權求和

通過relu函數得到我們最終的great?cam【還要通過relu?】

那這里呢我簡單的講一下我個人的一個看法

首先是關于得到這個特征層A是網絡對原圖進行特征提取得到的結果

那一般呢越往后的特征層它的抽象程度越高

語義信息呢也是越來越豐富

并且利用cnn過去得到這個特征層

它是能夠保留空間信息的

那么在我們得到的最終的這個特征層A上呢

它對應的激活區域差不多也是在這個位置

所以說我們聲音網絡它是能夠保留空間信息的

其實不光是cnn

包括我們最近常用的transformer模型也是一樣的

那么在原論文的圖當中呢

我們一般所說的這個特征成層A都是指的卷一層當中最后一個卷積層

它所輸出的特征層

然后這里的A'是y(c)對A求得這個偏導

那么換句話說就是A'

它代表的是A中每個元素對我們最終這個y(c)結果一個貢獻值

那么貢獻越大就代表網絡認為它有越重要

所以呢接下來我們對A'在每個通道上去取均值

就能得到針對特征層A每個通道的重要程度

然后我們再進行一個加權求和

以及通過relu函數就能得到我們這里的一個cam

那么這里呢我們用公式來進行表示的話

那么接下來我們來舉個例子

方便大家理解

對cat類別進行反向傳播

然后我們通過relu之后呢

就將那些小于零的數據全部給設置成零

就得到我們最終的great?cam有輸出了

那么講呢肯定有人對這里的A'求解是抱有疑惑的

那如果你想了解這個A'怎么求解的話

你可以去看一下我寫這個博文

(51條消息)?Grad-CAM簡介_gradcam_太陽花的小綠豆的博客-CSDN博客

當然在我們去實現的過程當中

其實我們不需要自己去計算

因為現有的新中學框架它都會自動幫我去計算

再對CAM進行resize變成原圖大小

之后再將CAM轉化成彩色形式(原CAM是單通道的非彩色)

然后將原圖scale處理

將scale后的原圖add已處理完的cam

將add后的結果再進行scale

即可得到覆蓋了cam的輸出圖片

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/210427.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/210427.shtml
英文地址,請注明出處:http://en.pswp.cn/news/210427.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

java多線程(常用方法、實現方式、線程安全問題、生命周期、線程池)

多線程相關的三組概念 程序和進程 程序(program):一個固定的運行邏輯和數據的集合,是一個靜態的狀態,一般存儲在硬盤中。簡單來說就是我們編寫的代碼 進程(process):一個正在運行的…

Python 中的 queue 模塊隊列詳解;隊列如何使用——如何處理信息在多個線程間安全交換的多線程程序?

queue 模塊即隊列,特別適合處理信息在多個線程間安全交換的多線程程序中。下面我們對 queue 模塊進行一個詳細的使用介紹。 1 queue 模塊定義的類和異常 queue 模塊定義了以下四種不同類型的隊列,它們之間的區別在于數據入隊列之后出隊列的順序不同。 …

cmake編譯數據庫

在使用CMake進行編譯時,如果你想生成編譯數據庫,你可以定義CMAKE_EXPORT_COMPILE_COMMANDS選項。具體的命令如下: cmake -DCMAKE_EXPORT_COMPILE_COMMANDS1或者在CMakeLists.txt顯示的使能配置 set(CMAKE_EXPORT_COMPILE_COMMANDS ON)這將會…

游戲玩家升級不傷手之選,光威龍武系列超強性能

得益于國產存儲芯片的崛起,現在的內存條價格太香了。要放在前幾年,購買內存條時都會優先考慮國際一線品牌。隨著內存條行業發生巨變,國產品牌光威GLOWAY,是全球前三的內存模組廠商嘉合勁威旗下品牌,它推出的內存條產品…

Zebec 推出由 Visa、萬事達網絡支持的即時支付卡,加密支付新征程

“Zebec現已推出全新的加密支付卡,該卡由Visa、萬事達網絡支持,具備即時、多鏈、非托管、無需KYC、免費等特性,其能夠通過加密錢包與多條主流公鏈鏈接并直接調用支付,這將是加密支付領域的里程碑事件。” 在2023年的12月8日&#…

C++中的string容器的substr()函數

一、作用 用來截取某段字符串。 二、頭文件 #include<string> 三、參數與用法 形式&#xff1a;s.substr(pos, len) 第一個參數是想要截取的字符串初始位置&#xff0c;第二個參數是截取字符串長度。 直接來說&#xff0c;就是從s[pos]開始截一個長度為len的子串。…

【python交互界面】實現動態觀察圖像在給定HSV范圍的區域顯示

HSV顏色空間 與RGB顏色空間相比&#xff0c;HSV顏色空間更適合進行顏色分析和提取特定顏色的目標。在HSV空間中&#xff0c;顏色信息被分布在不同的通道上&#xff0c;使我們能夠更準確地定義顏色的范圍&#xff0c;并使用閾值操作輕松地分離出我們感興趣的區域部分。 HSV三個通…

二叉樹查找值為x的結點(C語言)

目錄 前言 查找值為x的結點 返回值為指針 返回值為布爾類型 整體代碼 前言 在二叉樹結點個數、葉子結點個數、樹的高度、第k層結點個數的計算&#xff08;C語言&#xff09;中&#xff0c;我們解決了關于二叉樹的部分問題&#xff0c;但是還有一個問題我們放在本篇解決。 …

數據集成和人工智能驅動的見解

數字時代使數據成為人們關注的焦點&#xff0c;將其從單純的二進制序列轉變為有價值的組織資產。隨著企業越來越多地轉向數據驅動戰略&#xff0c;數據管理的復雜性也隨之增加。當前的任務不僅僅是存儲甚至收集數據&#xff0c;而是將其轉化為可操作的情報。本博客旨在剖析尋求…

Python中的selenium安裝的步驟(瀏覽器自動化測試框架)

一、前言 我們今天要安裝的selenium 就是瀏覽器自動化測試框架&#xff0c;是一個用于Web應用程序的測試工具&#xff0c;就是模擬用戶操作。支持的瀏覽器包括Chrome&#xff0c;IE&#xff0c;Mozilla Firefox&#xff0c;Safari&#xff0c;Opera等。今天我們以Chrome為例講…

STM32單片機項目實例:基于TouchGFX的智能手表設計(2)UI交互邏輯的設計

STM32單片機項目實例&#xff1a;基于TouchGFX的智能手表設計&#xff08;2&#xff09;UI交互邏輯的設計 目錄 一、UI交互邏輯的設計 1.1 硬件平臺的資源 1.2 界面切換功能 ???????1.3 表盤界面 1.4 運動界面 ???????1.6 設置界面 ???????1.7 應…

不一樣的年會彩瞳推薦,綺芙莉多款彩瞳彰顯個性

臨近年底&#xff0c;各種公司年會、跨年晚會活動也逐漸排上日程&#xff0c;出席這種正式場合&#xff0c;每個人都有自己的“殺手锏”&#xff0c;從發型妝容到穿搭都是變美小細節&#xff0c;作為心靈之窗的雙眸&#xff0c;更需要一副彩瞳來提升我們的眼妝質感&#xff0c;…

微前端 ---- wujie-vue3 原理

目錄 前言 設置子應用? 預加載? 啟動子應用? 封裝 1.創建文件 2.安裝依賴 3.編寫組件 4.配置打包規則 5.執行打包命令 swc技術 SWC Babel Babel VS SWC 更改使用 swc 解析 使用swc 完成 esm 模式 &#xff08;export--import&#xff09; 發布到npm 更改p…

【SpringBoot】解析Springboot事件機制,事件發布和監聽

解析Springboot事件機制&#xff0c;事件發布和監聽 一、Spring的事件是什么二、使用步驟2.1 依賴處理2.2 定義事件實體類2.3 定義事件監聽類2.4 事件發布 三、異步調用3.1 啟用異步調用3.2 監聽器方法上添加 Async 注解 一、Spring的事件是什么 Spring的事件監聽&#xff08;…

持續集成交付CICD:使用Jenkins插件上傳Nexus制品

目錄 一、實驗 1.使用Jenkins插件上傳Nexus制品 一、實驗 1.使用Jenkins插件上傳Nexus制品 &#xff08;1&#xff09;Jenkins安裝插件Nexus Artifact Uploader &#xff08;2&#xff09;添加憑據 &#xff08;3&#xff09;使用片段生成器生成DSL &#xff08;4&#xf…

基于Java物業管理系統

基于Java物業管理系統 功能需求 1、房產信息管理&#xff1a;系統需要提供房產信息管理功能&#xff0c;包括房產的基本信息、租賃狀態、業主信息等。 2、報修管理&#xff1a;系統需要提供報修管理功能&#xff0c;業主可以通過系統提交報修申請&#xff0c;物業管理人員可…

docke網絡之bridge、host、none

一、bridge網絡 1.創建一個測試容器 [rootlocalhost ~]# docker run -d -it --name busybox_1 busybox /bin/sh -c "while true;do sleep 3600;done" 03b308c847edd23f21ba69afb825d92f7aaeb05b1ff4431dd47ccee439a0361a 2.查看當前機器docker有哪些網絡 [rootlocal…

C++ 訪問限定符

目錄 訪問修飾符概述 protected在類的內部和派生類中訪問調用 private在類的內部訪問和調用 訪問修飾符概述 在C中&#xff0c;有三個主要的訪問修飾符&#xff1a;public、private和protected。這些修飾符用于控制類的成員&#xff08;變量和函數&#xff09;的訪問權限。…

2023年9月8日 Go生態洞察:gopls的擴展與Go生態系統的成長

&#x1f337;&#x1f341; 博主貓頭虎&#xff08;&#x1f405;&#x1f43e;&#xff09;帶您 Go to New World?&#x1f341; &#x1f984; 博客首頁——&#x1f405;&#x1f43e;貓頭虎的博客&#x1f390; &#x1f433; 《面試題大全專欄》 &#x1f995; 文章圖文…

AI材料專題報告:AI革命催生新需求國產替代推動新方向

今天分享的AI系列深度研究報告&#xff1a;《AI材料專題報告&#xff1a;AI革命催生新需求國產替代推動新方向》。 &#xff08;報告出品方&#xff1a;光大證券&#xff09; 報告共計&#xff1a;25頁 1、算力需求增長催生 800G 光模塊需求 算力是數字經濟時代新生產力&…