0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

深度學(xué)習(xí)圖像識別解釋方法的概述

LiveVideoStack ? 來源:LiveVideoStack ? 作者:Ali Abdalla ? 2021-02-04 16:33 ? 次閱讀

圖像識別(即 對圖像中所顯示的對象進(jìn)行分類)是計(jì)算機(jī)視覺中的一項(xiàng)核心任務(wù),因?yàn)樗梢灾С指鞣N下游的應(yīng)用程序(自動(dòng)為照片加標(biāo)簽,為視障人士提供幫助等),并已成為機(jī)器學(xué)習(xí)(ML)算法的標(biāo)準(zhǔn)任務(wù)。

在過去的十年中,深度學(xué)習(xí)(DL)算法已成為最具競爭力的圖像識別算法。但是,它們默認(rèn)是“黑匣子”算法,也就是說很難解釋為什么它們會(huì)做出特定的預(yù)測。

為什么這會(huì)成為一個(gè)問題呢?這是因?yàn)镸L模型的使用者通常出于以下原因而希望能夠解釋圖像的哪些部分導(dǎo)致了算法的預(yù)測結(jié)果:

1.機(jī)器學(xué)習(xí)調(diào)試模型,開發(fā)人員可以分析解釋識別偏差和預(yù)測模型是否可能推廣到新的圖像

2. 機(jī)器學(xué)習(xí)模型的用戶可能會(huì)更加信任一個(gè)模型,如果提供了為什么做出特定預(yù)測的解釋的話。

3. 關(guān)于ML的法規(guī)(例如GDPR)要求一些算法決策可以用人類的語言來解釋。

在以上因素的推動(dòng)下,在過去的十年中,研究人員開發(fā)了許多不同的方法來打開深度學(xué)習(xí)的“黑匣子”,旨在使基礎(chǔ)模型更具可解釋性。有些方法對于某些種類的算法是特定的,而有些則是通用的。有些是快的,有些是慢的。

在本文中,我們概述了一些為圖像識別而發(fā)明的解釋方法,討論了它們之間的權(quán)衡,并提供了一些示例和代碼,您可以自己使用Gradio來嘗試這些方法。

留一法 LEAVE-ONE-OUT

在深入研究之前,讓我們從一個(gè)適用于任何類型圖像分類的非?;镜乃惴ㄩ_始:留一法(LOO)。

LOO是一種易于理解的方法。如果您要從頭開始設(shè)計(jì)一種解釋方法的話,那么這是您可能會(huì)想到的第一個(gè)算法。其想法是首先將輸入圖像分割為一系列較小的子區(qū)域。然后,運(yùn)行一系列預(yù)測,每次遮罩(即將像素值設(shè)置為零)其中一個(gè)子區(qū)域。根據(jù)每個(gè)區(qū)域的“蒙版”相對于原始圖像影響預(yù)測的程度,為每個(gè)區(qū)域分配一個(gè)重要度分?jǐn)?shù)。直觀地來說,這些分?jǐn)?shù)量化了哪一部分的區(qū)域最有助于進(jìn)行預(yù)測。

因此,如果我們在一個(gè)3x3的網(wǎng)格中將圖像分成9個(gè)子區(qū)域,則LOO如下所示:

cd46b320-61dd-11eb-8b86-12bb97331649.png

那些最暗的紅色方塊是影響輸出最大的方塊,而顏色最亮的方塊對輸出的影響最小。在這種情況下,當(dāng)頂部中心區(qū)域被遮罩時(shí),預(yù)測置信度下降幅度最大,從初始的95%下降到67%。

如果我們以更好的方式進(jìn)行分割(例如,使用超像素而不是網(wǎng)格),我們將獲得一個(gè)相當(dāng)合理的顯著圖,該圖突出了杜賓犬的臉,耳朵和尾巴。

LOO是一種簡單而強(qiáng)大的方法。根據(jù)圖像分辨率和分割方式,它可以產(chǎn)生非常準(zhǔn)確和有用的結(jié)果。正如使用InceptionNet預(yù)測的那樣,下面這張圖就是LOO應(yīng)用于1100?×?825像素的金毛尋回犬圖像。

在實(shí)踐中,LOO的一個(gè)巨大優(yōu)勢是它不需要任何訪問模型內(nèi)部的功能,甚至可以處理除識別之外的其他計(jì)算機(jī)視覺任務(wù),從而使它成為一個(gè)靈活的通用工具。

那有什么缺點(diǎn)呢?首先,它很慢。每次一個(gè)區(qū)域被遮罩,我們就對圖像進(jìn)行推斷。要獲得一個(gè)具有合理分辨率的顯著圖,您的遮罩尺寸可能必須很小。因此,如果您將圖像分割成100個(gè)區(qū)域,則將需要100倍的推理時(shí)間才能獲得熱度圖。另一方面,如果您有太多的子區(qū)域,則對它們中的任何一個(gè)區(qū)域進(jìn)行遮罩不一定會(huì)在預(yù)測中產(chǎn)生很大的差異。此LOO的第二個(gè)限制是,它沒有考慮到區(qū)域之間的相互依賴性。

因此,讓我們來看一個(gè)更快,更復(fù)雜的技術(shù):梯度上升。

梯度上升 VANILLA GRADIENT ASECENT [2013]

梯度上升這一方法的提出,可以追溯到2013年發(fā)表的一篇名為Visualizing Image Classification Models and Saliency Maps [2013]的論文中找到。LOO和梯度上升這兩個(gè)方法之間存在著概念上的關(guān)系。使用LOO時(shí),我們考慮到當(dāng)我們逐個(gè)遮蓋圖像中的每個(gè)區(qū)域時(shí),輸出是如何變化的。通過梯度上升,我們可以一次計(jì)算出每單個(gè)像素對輸出的影響。我們?nèi)绾巫龅竭@一點(diǎn)的呢?答案是使用反向傳播的改進(jìn)版本。

通過使用標(biāo)準(zhǔn)的反向傳播,我們可以計(jì)算出模型損失相對于權(quán)值的梯度。梯度是一個(gè)包含每個(gè)權(quán)重值的向量,反映了該權(quán)重的微小變化將對輸出產(chǎn)生了多大的影響,并從本質(zhì)上告訴我們哪些權(quán)重對于損失最重要。通過取該梯度的負(fù)值,我們可以將訓(xùn)練過程中的損失降到最低。對于梯度上升,取而代之的是類分?jǐn)?shù)相對于輸入像素的梯度,并告訴我們哪些輸入像素對圖像分類最重要。通過網(wǎng)絡(luò)的這一單個(gè)步驟為我們提供了每個(gè)像素的重要性值,我們以熱圖的形式顯示該值,如下所示:

Simonyan等人用單一反向傳播過程計(jì)算出顯著性圖示例

這是我們的杜賓犬的圖像:

這里的主要優(yōu)勢是——速度;因?yàn)槲覀冎恍枰ㄟ^網(wǎng)絡(luò)一次可以得到熱圖,所以梯度上升的方法比LOO快得多,盡管最終得到的熱圖有點(diǎn)粗糙。

在杜賓犬的圖像上,LOO(左)與梯度上升(右)方法進(jìn)行了比較。這里的模型是InceptionNet。

盡管梯度上升是十分可行的,但人們發(fā)現(xiàn)這種被稱為Vanilla梯度上升的原始公式有一個(gè)明顯的缺點(diǎn):它傳播負(fù)梯度,最終會(huì)導(dǎo)致干擾和噪聲的輸出。為解決這些問題,我們提出了一種新方法——“引導(dǎo)反向傳播”。

引導(dǎo)反向傳播 guided back-propogation [2014]

引導(dǎo)式反向傳播一開始是發(fā)表在了Striving for Simplicity: The All Convolutional Net [2014]上,其中,作者提出在反向傳播的常規(guī)步驟中增加一個(gè)來自更高層的額外引導(dǎo)信號。從本質(zhì)上講,當(dāng)輸出為負(fù)時(shí),該方法就會(huì)阻止來自神經(jīng)元的梯度反向流動(dòng),僅保留那些導(dǎo)致輸出增加的梯度,從而最終減少噪聲。

d0f4e05a-61dd-11eb-8b86-12bb97331649.png

在此圖像中,我們顯示了一個(gè)給定圖層的反向傳播梯度(左),其輸出顯示在右側(cè)。在頂層,我們展示了整齊的梯度。在底層,我們展示了引導(dǎo)反向傳播,每當(dāng)輸出為負(fù)時(shí),它將零梯度化。(圖來自Springenberg等人)

引導(dǎo)式反向傳播的工作速度幾乎與梯度上升一樣快,因?yàn)樗恍枰ㄟ^網(wǎng)絡(luò)一次,但通常會(huì)產(chǎn)生更清晰的輸出,尤其是在物體邊緣附近。該方法相對于沒有最大池化層的神經(jīng)體系結(jié)構(gòu)中的其他方法來說特別有效。

在杜賓犬的圖像上,梯度上升(左)與“引導(dǎo)式反向傳播”(右)進(jìn)行了比較。這里的模型是InceptionNet。

但是,人們發(fā)現(xiàn),梯度上升和引導(dǎo)式反向傳播仍然存在一個(gè)主要問題:當(dāng)圖像中存在兩個(gè)或更多類別時(shí),它們通常無法正常工作,這通常發(fā)生在自然圖像中。

梯度類別響應(yīng)圖 grad-cam [2016]

現(xiàn)在來到了Grad-CAM,或者梯度加權(quán)類別激活映射,該方法在: Visual Explanations from Deep Networks via Gradient-based Localization [2016]文章中有著相關(guān)的介紹。在這里,作者發(fā)現(xiàn),當(dāng)在最后一個(gè)卷基層的每個(gè)濾波器處而不是在類分?jǐn)?shù)上(但仍相對于輸入像素)提取梯度時(shí),其解釋的質(zhì)量得到了改善。為了得到特定于類的解釋,Grad-CAM對這些梯度進(jìn)行加權(quán)平均,其權(quán)重基于過濾器對類分?jǐn)?shù)的貢獻(xiàn)。結(jié)果如下所示,這遠(yuǎn)遠(yuǎn)好于單獨(dú)的引導(dǎo)反向傳播。

具有兩個(gè)類別(“貓”和“狗”)的原始圖像使用了引導(dǎo)反向傳播的方式,但是生成的熱量圖突出顯示了這兩個(gè)類。一旦將Grad-CAM用作過濾器,引導(dǎo)式Grad-CAM便會(huì)生成高分辨率,區(qū)分類別的熱圖。(圖片來自Selvaraju等人)

作者進(jìn)一步推廣了Grad-CAM,使其不僅適用于目標(biāo)類,而且適用于任何目標(biāo)“概念”。這意味著可以使用Grad-CAM來解釋為什么圖像字幕模型可以預(yù)測特定的字幕,甚至可以處理多個(gè)輸入的模型,例如可視化問答模型。由于這種靈活性,Grad-CAM已變得非常流行。以下是其架構(gòu)的概述。

d4e76fca-61dd-11eb-8b86-12bb97331649.png

Grad-CAM概述:首先,我們向前傳播圖像。對于除所需類別(tiger cat)之外的所有類別梯度設(shè)置為0,其余設(shè)置為1。然后將該信號反向傳播到所關(guān)注的整流卷積特征圖,我們結(jié)合這些特征圖來計(jì)算粗糙Grad-CAM定位(藍(lán)色熱圖),它表示模型在做出特定決策時(shí)必須尋找的位置。最后,我們將熱圖與引導(dǎo)反向傳播逐點(diǎn)相乘,得到高分辨率和概念特定的Guided Grad-CAM可視化。(圖片和描述來自Selvaraju等人)

平滑梯度 smoothgrad [2017]

然而,您可能已經(jīng)注意到,就算使用所有先前所介紹的方法,結(jié)果仍然不是很清晰。SmoothGrad, presented in SmoothGrad: removing noise by adding noise [2017], 這篇文章是對先前方法的修改版本。這個(gè)想法很簡單:作者指出,如果輸入圖像首先受到噪聲干擾,則可以為每個(gè)版本的干擾輸入計(jì)算一次梯度,然后將靈敏度圖平均化。盡管運(yùn)行時(shí)間更長,但這會(huì)得到更清晰的結(jié)果。

以下是引導(dǎo)式反向傳播和平滑梯度圖像的對比:

杜賓犬圖像上的標(biāo)準(zhǔn)制引導(dǎo)反向傳播(左)與平滑梯度(右)。這里的模型是InceptionNet。

當(dāng)您面對所有的方法時(shí),會(huì)選擇哪一種?或者,當(dāng)方法之間發(fā)生沖突時(shí),是否有一種方法在理論上可以證明比其他方法更好?讓我們看一下集成梯度的方法。

集成梯度 integrated gradients [2017]

與此前的論文不同,Axiomatic Attribution for Deep Networks [2017]的作者從解釋的理論基礎(chǔ)開始。他們專注于兩個(gè)公理:靈敏度和實(shí)現(xiàn)不變性,為此,他們提出了一個(gè)好的解釋方法應(yīng)該滿足這兩項(xiàng)。

靈敏度公理意味著,如果兩個(gè)圖像的有一個(gè)像素恰好不同(但所有其他像素都相同),并且產(chǎn)生不同的預(yù)測,則解釋算法應(yīng)為該不同像素提供非零的屬性。而實(shí)現(xiàn)不變性公理意味著算法的底層實(shí)現(xiàn)不應(yīng)影響解釋方法的結(jié)果。他們使用這些原則來指導(dǎo)一種新的歸因方法的設(shè)計(jì),該歸因方法稱為“集成梯度(IG)”。

IG從基線圖像(通常是輸入圖像的完全變暗的版本)開始,并增加亮度,直到恢復(fù)原始圖像為止。針對每幅圖像計(jì)算類別分?jǐn)?shù)相對于輸入像素的梯度,并對其進(jìn)行平均以獲得每個(gè)像素的全局重要性值。IG除了理論特性外,還解決了普通梯度上升的另一個(gè)問題:飽和梯度。由于梯度是局部的,因此它們不能捕獲像素的全局重要性,而只能捕獲特定輸入點(diǎn)的靈敏度。通過改變圖像的亮度并計(jì)算不同點(diǎn)的梯度,IG可以獲得更完整的圖片,包含了每個(gè)像素的重要性。

在杜賓犬圖像上的標(biāo)準(zhǔn)引導(dǎo)反向傳播(左)與集成梯度(右),均使用了平滑梯度進(jìn)行了平滑處理。這里的模型是InceptionNet。

盡管這通??梢援a(chǎn)生更準(zhǔn)確的靈敏度圖,但是該方法速度較慢,并且引入了兩個(gè)新的附加超參數(shù):基線圖像的選擇以及生成集成梯度的步驟數(shù)。那么,我們可以不用這些么?

模糊集成梯度 blur integratedgradients [2020]

這就是我們最終的解釋方法,即模糊集成梯度。該方法在Attribution in Scale and Space [2020],中提出,旨在解決具有集成梯度的特定問題,包括消除“基線”參數(shù),并消除某些易于在解釋中出現(xiàn)的視覺偽像。

模糊集成梯度方法通過測量一系列原始輸入圖像逐漸模糊的版本梯度(而不是像集成梯度那樣變暗的圖像)。盡管這看起來似乎是微小的差異,但作者認(rèn)為這種選擇在理論上更為合理,因?yàn)槟:龍D像不會(huì)像選擇基線圖像那樣在解釋中引入新的偽影。

杜賓犬圖像上的標(biāo)準(zhǔn)集成梯度(左)與模糊集成梯度(右),均使用平滑梯度進(jìn)行了平滑。這里的模型是InceptionNet。

寫在最后

從2010年開始到現(xiàn)在,是機(jī)器學(xué)習(xí)在解釋方法方面碩果累累的十年,并且現(xiàn)在有大量用于解釋神經(jīng)網(wǎng)絡(luò)行為的方法。我們已經(jīng)在本篇文章中對它們進(jìn)行了比較,我們非常感謝幾個(gè)很棒的圖書館,尤其是Gradio,來創(chuàng)建您在GIF和PAIR代碼的TensorFlow實(shí)現(xiàn)中看到的接口。用于所有接口的模型都是Inception Net圖像分類器。

原文標(biāo)題:圖像識別解釋方法的視覺演變

文章出處:【微信公眾號:LiveVideoStack】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

責(zé)任編輯:haq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴

原文標(biāo)題:圖像識別解釋方法的視覺演變

文章出處:【微信號:livevideostack,微信公眾號:LiveVideoStack】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    深度識別算法包括哪些內(nèi)容

    :CNN是深度學(xué)習(xí)中處理圖像和視頻等具有網(wǎng)格結(jié)構(gòu)數(shù)據(jù)的主要算法。它通過卷積層、池化層和全連接層等組件,實(shí)現(xiàn)對圖像特征的自動(dòng)提取和識別。 應(yīng)
    的頭像 發(fā)表于 09-10 15:28 ?201次閱讀

    圖像識別算法有哪幾種

    計(jì)算機(jī)科學(xué)家開始嘗試使用計(jì)算機(jī)來處理和分析圖像數(shù)據(jù)。最初的圖像識別算法主要基于模板匹配和邊緣檢測等簡單方法,但隨著計(jì)算機(jī)硬件和算法的不斷發(fā)展,圖像識別算法逐漸變得更加復(fù)雜和高效。 20
    的頭像 發(fā)表于 07-16 11:22 ?750次閱讀

    圖像檢測和圖像識別的原理、方法及應(yīng)用場景

    圖像檢測和圖像識別是計(jì)算機(jī)視覺領(lǐng)域的兩個(gè)重要概念,它們在許多應(yīng)用場景中發(fā)揮著關(guān)鍵作用。 1. 定義 1.1 圖像檢測 圖像檢測(Object Detection)是指在
    的頭像 發(fā)表于 07-16 11:19 ?2292次閱讀

    圖像識別算法都有哪些方法

    圖像識別算法是計(jì)算機(jī)視覺領(lǐng)域的核心任務(wù)之一,它涉及到從圖像中提取特征并進(jìn)行分類、識別和分析的過程。隨著深度學(xué)習(xí)技術(shù)的不斷發(fā)展,
    的頭像 發(fā)表于 07-16 11:14 ?4539次閱讀

    圖像識別算法的提升有哪些

    引言 圖像識別是計(jì)算機(jī)視覺領(lǐng)域的核心任務(wù)之一,旨在使計(jì)算機(jī)能夠自動(dòng)地識別和理解圖像中的內(nèi)容。隨著計(jì)算機(jī)硬件的發(fā)展和深度學(xué)習(xí)技術(shù)的突破,
    的頭像 發(fā)表于 07-16 11:12 ?497次閱讀

    圖像識別算法的優(yōu)缺點(diǎn)有哪些

    圖像識別算法可以快速地處理大量圖像數(shù)據(jù),提高工作效率。與傳統(tǒng)的人工識別方法相比,圖像識別算法可以在短時(shí)間內(nèi)完成對大量圖像的分析和
    的頭像 發(fā)表于 07-16 11:09 ?983次閱讀

    圖像識別算法的核心技術(shù)是什么

    圖像識別算法是計(jì)算機(jī)視覺領(lǐng)域的一個(gè)重要研究方向,其目標(biāo)是使計(jì)算機(jī)能夠像人類一樣理解和識別圖像中的內(nèi)容。圖像識別算法的核心技術(shù)包括以下幾個(gè)方面: 特征提取 特征提取是
    的頭像 發(fā)表于 07-16 11:02 ?449次閱讀

    圖像識別技術(shù)的原理是什么

    圖像識別技術(shù)是一種利用計(jì)算機(jī)視覺和機(jī)器學(xué)習(xí)技術(shù)對圖像進(jìn)行分析和理解的技術(shù)。它可以幫助計(jì)算機(jī)識別和理解圖像中的對象、場景和活動(dòng)。
    的頭像 發(fā)表于 07-16 10:46 ?716次閱讀

    圖像識別屬于人工智能嗎

    屬于。圖像識別是人工智能(Artificial Intelligence, AI)領(lǐng)域的一個(gè)重要分支。 一、圖像識別概述 1.1 定義 圖像識別是指利用計(jì)算機(jī)技術(shù)對
    的頭像 發(fā)表于 07-16 10:44 ?732次閱讀

    opencv圖像識別有什么算法

    圖像識別算法: 邊緣檢測 :邊緣檢測是圖像識別中的基本步驟之一,用于識別圖像中的邊緣。常見的邊緣檢測算法有Canny邊緣檢測器、Sobel邊緣檢測器和Laplacian邊緣檢測器。 特
    的頭像 發(fā)表于 07-16 10:40 ?578次閱讀

    利用Matlab函數(shù)實(shí)現(xiàn)深度學(xué)習(xí)算法

    在Matlab中實(shí)現(xiàn)深度學(xué)習(xí)算法是一個(gè)復(fù)雜但強(qiáng)大的過程,可以應(yīng)用于各種領(lǐng)域,如圖像識別、自然語言處理、時(shí)間序列預(yù)測等。這里,我將概述一個(gè)基本的流程,包括環(huán)境設(shè)置、數(shù)據(jù)準(zhǔn)備、模型設(shè)計(jì)、訓(xùn)
    的頭像 發(fā)表于 07-14 14:21 ?1538次閱讀

    基于Python的深度學(xué)習(xí)人臉識別方法

    基于Python的深度學(xué)習(xí)人臉識別方法是一個(gè)涉及多個(gè)技術(shù)領(lǐng)域的復(fù)雜話題,包括計(jì)算機(jī)視覺、深度學(xué)習(xí)、以及
    的頭像 發(fā)表于 07-14 11:52 ?1053次閱讀

    如何利用CNN實(shí)現(xiàn)圖像識別

    卷積神經(jīng)網(wǎng)絡(luò)(CNN)是深度學(xué)習(xí)領(lǐng)域中一種特別適用于圖像識別任務(wù)的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)。它通過模擬人類視覺系統(tǒng)的處理方式,利用卷積、池化等操作,自動(dòng)提取圖像中的特征,進(jìn)而實(shí)現(xiàn)高效的
    的頭像 發(fā)表于 07-03 16:16 ?787次閱讀

    圖像識別技術(shù)原理 圖像識別技術(shù)的應(yīng)用領(lǐng)域

    圖像識別技術(shù)是一種通過計(jì)算機(jī)對圖像進(jìn)行分析和理解的技術(shù)。它借助計(jì)算機(jī)視覺、模式識別、人工智能等相關(guān)技術(shù),通過對圖像進(jìn)行特征提取和匹配,找出圖像
    的頭像 發(fā)表于 02-02 11:01 ?2054次閱讀

    如何使用Python進(jìn)行圖像識別的自動(dòng)學(xué)習(xí)自動(dòng)訓(xùn)練?

    如何使用Python進(jìn)行圖像識別的自動(dòng)學(xué)習(xí)自動(dòng)訓(xùn)練? 使用Python進(jìn)行圖像識別的自動(dòng)學(xué)習(xí)和自動(dòng)訓(xùn)練需要掌握一些重要的概念和技術(shù)。在本文中,我們將介紹如何使用Python中的一些常用
    的頭像 發(fā)表于 01-12 16:06 ?498次閱讀