<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          最便捷的神經(jīng)網(wǎng)絡可視化工具之一--Flashtorch

          共 4057字,需瀏覽 9分鐘

           ·

          2022-07-05 10:35

          點擊上方小白學視覺”,選擇加"星標"或“置頂

          重磅干貨,第一時間送達


          前言

          幾周前,我在AnitaB.org組織的Hopperx1 London上發(fā)表了演講作為倫敦科技周的一部分。

          在演講結束后,我收到了熱烈的反饋,所以我決定寫一個稍微長一點的演講版本來介紹FlashTorch

          該軟件包可通過pip安裝。Github倉庫鏈接(https://github.com/MisaOgura/flashtorch)。你也可以在Google Colab上運行(https://colab.research.google.com/github/MisaOgura/flashtorch/blob/master/examples/visualise_saliency_with_backprop_colab.ipynb),從而無需安裝任何東西!
          但首先,我將簡要介紹一下特征可視化的歷史,為你提供更好的背景信息。

          特征可視化簡介

          特征可視化是一個活躍的研究領域,旨在探索我們觀看"神經(jīng)網(wǎng)絡看到的圖像"的方法來了解神經(jīng)網(wǎng)絡如何感知圖像。它的出現(xiàn)和發(fā)展是為了響應人們越來越希望神經(jīng)網(wǎng)絡能夠被人類解讀。

          最早的工作包括分析輸入圖像中神經(jīng)網(wǎng)絡正在關注的內容。例如,圖像特定類顯著圖(image-specific class saliency maps)(https://arxiv.org/abs/1312.6034)通過反向傳播計算相對于輸入圖像的類的梯度,可視化輸入圖像中對對應類別貢獻最大的區(qū)域(在后面有更多關于顯著圖的內容) 。

          特征可視化中的另一個技術是激活最大化(Activation maximization)。這允許我們迭代地更新輸入圖像(最初由一些隨機噪聲產生)以生成最大程度地激活目標神經(jīng)元的圖像。它提供了一些關于個體神經(jīng)元如何響應輸入圖像的直覺。這就是谷歌推廣的所謂的Deep Dream背后的技術。

          這是一個巨大的進步,但是有一些缺點,因為它沒有提供觀察整個網(wǎng)絡如何運作的能力,因為神經(jīng)元不是孤立運作。這導致了對神經(jīng)元之間相互作用的可視化研究。Olah等人通過在兩個神經(jīng)元之間進行添加或插值來演示激活空間的算術性質。

          然后Olah通過分析在給定特定輸入時每個神經(jīng)元在隱藏層內的貢獻,進一步定義了更有意義的可視化單元。觀察一組同時被強烈激活的神經(jīng)元,發(fā)現(xiàn)似乎有一組神經(jīng)元負責捕捉諸如耷拉的耳朵、毛茸茸的腿和草之類的概念。

          該領域的最新發(fā)展之一是Activation Atlas(Carter等,2019)(https://distill.pub/2019/activation-atlas/)。在這項研究中,作者指出了可視化過濾器激活的一個主要缺點,因為它只給出了一個有限的網(wǎng)絡如何響應單個輸入的視圖。為了看到一個大的網(wǎng)絡如何感知大量的對象和這些對象之間的聯(lián)系,他們設計了一種方法,通過顯示神經(jīng)元的常見組合,來創(chuàng)建一個通過神經(jīng)網(wǎng)絡可以看到的全局圖。

           

          FlashTorch實現(xiàn)的動機

          當我發(fā)現(xiàn)特征可視化時,我立即被吸引這項技術使神經(jīng)網(wǎng)絡更易于解釋的潛力。然后我很快意識到?jīng)]有工具可以輕松地將這些技術應用到我在PyTorch中構建的神經(jīng)網(wǎng)絡。

          所以我決定建立一個FlashTorch,現(xiàn)在它可以通過pip進行安裝!我實現(xiàn)的第一個特征可視化技術是顯著圖

          我們將在下面詳細介紹哪些顯著圖,以及如何使用FlashTorch它們與神經(jīng)網(wǎng)絡一起實現(xiàn)它們。

          顯著圖

          人類視覺感知中的顯著性是一種主觀能力,使得視野中的某些事物脫穎而出并引起我們的注意。計算機視覺中的顯著圖可以指示圖像中最顯著的區(qū)域。

          從卷積神經(jīng)網(wǎng)絡(CNN)創(chuàng)建顯著圖的方法最初于2013年在Deep Inside Convolutional Networks:Visualizing Image Classification Models and Saliency Maps(https://arxiv.org/abs/1312.6034)中引入。作者報告說,通過計算目標類相對于輸入圖像的梯度,我們可以可視化輸入圖像中的區(qū)域,這些區(qū)域對該類的預測值有影響。

          使用FlashTorch的顯著性

          不用多說,讓我們自己使用FlashTorch可視化顯著圖!

          FlashTorch附帶了一些utils功能,使數(shù)據(jù)處理更容易。我們將以灰色的貓頭鷹這個圖像為例。

          然后我們將對圖像應用一些變換,使其形狀,類型和值適合作為CNN的輸入。

          我將使用被ImageNet分類數(shù)據(jù)集進行預訓練的AlexNet來進行可視化。事實上,F(xiàn)lashTorch支持所有隨torchvision推出的模型,所以我鼓勵您也嘗試其他模型!

          Backprop類的核心就是創(chuàng)建顯著圖。

          在實例化時,它接收模型Backprop(model)并將自定義鉤子注冊到網(wǎng)絡中感興趣的層,以便我們可以從計算圖中獲取中間梯度以進行可視化。由于PyTorch的設計方式,這些中間梯度并不是立即可用的。FlashTorch會幫你整理。

          現(xiàn)在,在計算梯度之前我們需要的最后一件事,目標類索引。

          回顧一下,我們對目標類相對于輸入圖像的梯度感興趣。然而,該模型使用ImageNet數(shù)據(jù)集進行預訓練,因此其預測實際上是1000個類別的概率。我們希望從這1000個值中找出目標類的值(在我們的例子中是灰色的貓頭鷹),以避免不必要的計算,并且只關注輸入圖像和目標類之間的關系。

          為此,我還實現(xiàn)了一個名為ImageNetIndex的類。如果你不想下載整個數(shù)據(jù)集,只想根據(jù)類名找出類索引,這是一個方便的工具。如果給它一個類名,它將找到相應的類索引target_class = imagenet['great grey owl']。如果你確實要下載數(shù)據(jù)集,請使用最新版本中提供的ImageNet類torchvision==0.3.0。

          現(xiàn)在,我們有輸入圖像和目標類索引(24),所以我們準備計算梯度!

          這兩行是關鍵:

          gradients = backprop.calculate_gradients(input_, target_class)

          max_gradients = backprop.calculate_gradients(input_, target_class, take_max=True)

          默認情況下,每個顏色通道都會計算梯度,所以它的s形與我們的輸入圖像(3,224,224)相同。有時候,如果我們在不同的顏色通道上設置最大的梯度,就可以更容易地看到梯度。我們可以通過將take_max=True參數(shù)傳遞給方法調用來實現(xiàn)這一點。梯度的形狀將是(1,224,224)

          最后,讓我們看看我們得到了什么!

          我們可以看到,動物所在區(qū)域的像素對預測值的影響最大。

          但是這是一種噪聲信號,它不能告訴我們很多關于神經(jīng)網(wǎng)絡對貓頭鷹的感知。

          有什么方法可以改善這一點嗎 

          通過引導反向傳播來改善

          答案是肯定的!

          在"Striving for Simplicity: The All Convolutional Net"(https://arxiv.org/abs/1412.6806)一文中,作者介紹了一種降低梯度計算噪聲的方法。

          實質上,在引導反向傳播(Guided backproagation)中,對目標類的預測值沒有影響或有負面影響的神經(jīng)元被屏蔽并忽略。通過這樣做,我們可以防止梯度通過這樣的神經(jīng)元,從而減少噪音。

          你可以FlashTorch通過傳遞guided=True參數(shù)來調用方法calculate_gradients來使用帶引導的反向傳播,如下所示:

          讓我們可視化進行引導后的梯度。

          差異是驚人的!

          現(xiàn)在我們可以清楚地看到網(wǎng)絡正在關注凹陷的眼睛和貓頭鷹的圓頭。這些是說服該神經(jīng)網(wǎng)絡將對象分類為的特征灰色的貓頭鷹!

          但它并不總是專注于眼睛或頭部……

          正如你所看到的,網(wǎng)絡已經(jīng)學會專注于特征,這些特征與我們認為這些鳥類最有特色的東西大致相符。

          特征可視化的應用
           

          通過特征可視化,我們不僅可以更好地了解神經(jīng)網(wǎng)絡對物體的了解,而且我們還可以更好地:

          • 診斷網(wǎng)絡出錯的原因

          • 找出并糾正算法中的偏差

          • 從只關注神經(jīng)網(wǎng)絡的精確度向前邁進

          • 了解網(wǎng)絡行為的原因

          • 闡明神經(jīng)網(wǎng)絡如何學習的機制

           

          立即使用FlashTorch!

          如果你有在PyTorch中使用CNN的項目,F(xiàn)lashTorch可以幫助你使你的項目更具解釋性和可解釋性。

          好消息!

          小白學視覺知識星球

          開始面向外開放啦??????




          下載1:OpenCV-Contrib擴展模塊中文版教程
          在「小白學視覺」公眾號后臺回復:擴展模塊中文教程,即可下載全網(wǎng)第一份OpenCV擴展模塊教程中文版,涵蓋擴展模塊安裝、SFM算法、立體視覺、目標跟蹤、生物視覺、超分辨率處理等二十多章內容。

          下載2:Python視覺實戰(zhàn)項目52講
          小白學視覺公眾號后臺回復:Python視覺實戰(zhàn)項目,即可下載包括圖像分割、口罩檢測、車道線檢測、車輛計數(shù)、添加眼線、車牌識別、字符識別、情緒檢測、文本內容提取、面部識別等31個視覺實戰(zhàn)項目,助力快速學校計算機視覺。

          下載3:OpenCV實戰(zhàn)項目20講
          小白學視覺公眾號后臺回復:OpenCV實戰(zhàn)項目20講,即可下載含有20個基于OpenCV實現(xiàn)20個實戰(zhàn)項目,實現(xiàn)OpenCV學習進階。

          交流群


          歡迎加入公眾號讀者群一起和同行交流,目前有SLAM、三維視覺、傳感器自動駕駛、計算攝影、檢測、分割、識別、醫(yī)學影像、GAN、算法競賽等微信群(以后會逐漸細分),請掃描下面微信號加群,備注:”昵稱+學校/公司+研究方向“,例如:”張三 + 上海交大 + 視覺SLAM“。請按照格式備注,否則不予通過。添加成功后會根據(jù)研究方向邀請進入相關微信群。請勿在群內發(fā)送廣告,否則會請出群,謝謝理解~



          瀏覽 44
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国产极品久久 | 夜夜爽妓女8888视频免费观看 | 可以免费看的黄色 | 亚洲AV无码久久精品色欲 | 69久久久久久久 |