<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>

          如何可視化你的CV模型?

          共 2858字,需瀏覽 6分鐘

           ·

          2022-06-24 13:08




          可視化分析是CV中常用的技巧,通過(guò)可視化分析,可以發(fā)現(xiàn)模型在學(xué)習(xí)過(guò)程中重點(diǎn)關(guān)注了圖像中的哪部分區(qū)域,幫助我們debug模型學(xué)習(xí)過(guò)程中可能存在的問(wèn)題。例如在圖像分類任務(wù)中,可以通過(guò)可視化分析,來(lái)看模型最關(guān)注的圖像區(qū)域是對(duì)于分類至關(guān)重要的關(guān)鍵實(shí)體,還是背景,進(jìn)而推斷模型目前的學(xué)習(xí)情況。


          那么如何可視化CV模型呢?這里我們介紹兩種方法,第一種方法是CAM,一般用于ResNet等以卷積網(wǎng)絡(luò)為主體的模型;第二種方法是直接繪制Attention Map,可以用于近期比較火的以Transformer為主題結(jié)構(gòu)的ViT等模型中。最后,我們會(huì)詳細(xì)介紹ViT可視化Attention Map的示例和代碼,可以比較方便的用于各種分析場(chǎng)景。

          1

          CAM可視化
          當(dāng)我們通過(guò)ResNet等模型結(jié)構(gòu)得到feature map后,可視化的方法就是根據(jù)每個(gè)feature map的重要性,對(duì)各個(gè)feature map進(jìn)行加權(quán)融合,進(jìn)而得到圖像中各個(gè)位置對(duì)于分類重要程度的可視化結(jié)果。CAM類的方法是最常用的可視化方法之一。


          CAM方法是在Learning Deep Features for Discriminative Localization(CVPR)中被提出的。該方法總共分為以下3個(gè)步驟:

          • 首先,獲取模型最后一層卷積輸出的特征圖[W, H, C],其中C是channel維度,也就是特征圖的個(gè)數(shù),每個(gè)特征圖是W*H的矩陣。利用Global Average Pooling(GAP)將每一個(gè)channel的特征圖融合。

          • 然后,利用全連接+softmax根據(jù)各個(gè)channel的特征圖學(xué)習(xí)分類任務(wù),這樣就能通過(guò)softmax得到每個(gè)channel的權(quán)重。對(duì)于一個(gè)多分類任務(wù),選擇正確類別相對(duì)于各個(gè)channel的softmax打分,作為每個(gè)特征圖的權(quán)重w。

          • 最后,利用學(xué)到的權(quán)重w對(duì)各個(gè)channel的特征圖加權(quán)平均,得到最終的可視化結(jié)果,即圖像上每個(gè)位置的重要性。整個(gè)過(guò)程如下圖所示。



          CAM方法的缺陷在于,GAP+全連接這種網(wǎng)絡(luò)結(jié)構(gòu)并不通用,可能原始模型并沒(méi)有這種結(jié)構(gòu)。并且CAM只能可視化模型的最后一層。如果希望對(duì)結(jié)構(gòu)不同的模型,或者不是最后一層的feature map進(jìn)行可視化,需要重新訓(xùn)練全連接層,非常不方便。因此,后續(xù)Grad-CAM: Visual Explanations from Deep Networks via Gradient-based Localization(ICCV)提出了一種更通用的可視化方法Grad-CAM。



          Grad-CAM是根據(jù)梯度計(jì)算每個(gè)feature map權(quán)重的。對(duì)于圖像分類問(wèn)題,將目標(biāo)label對(duì)應(yīng)的梯度回傳到要可視化的層的各個(gè)feature map,將這個(gè)梯度作為每個(gè)feature map的權(quán)重。這個(gè)梯度也會(huì)在每個(gè)feature map的維度進(jìn)行Gobal Average Pooling,公式可以表示如下:


          2

          ViT可視化
          隨著Transformer在CV領(lǐng)域的應(yīng)用,ViT最近逐漸成為非常火的圖像backbone。ViT將圖像分patch轉(zhuǎn)換成序列,輸入到Transformer中,并采用和BERT類似的[CLS] token進(jìn)行分類。[CLS] token匯聚了對(duì)分類有幫助的圖像中的重要信息。



          對(duì)于VIT的可視化,非常直觀的思路就是直接繪制attention矩陣。例如對(duì)于圖像分類任務(wù),我們一般關(guān)注用于分類的[CLS] token匯聚了哪些patch的信息。因此我們可以繪制每層的[CLS] token和各個(gè)patch的attention得分對(duì)應(yīng)的熱力圖,來(lái)分析哪些patch對(duì)于分類最重要。

          3

          ViT可視化示例詳解
          下面我們通過(guò)實(shí)際代碼來(lái)看看ViT是如何實(shí)現(xiàn)可視化的。代碼來(lái)自github:鏈接,最核心的代碼如下:



          下面我們解析一下這段可視化代碼。
          • 第一步——融合多head結(jié)果:需要先獲取到ViT每層的[CLS] token對(duì)于各個(gè)patch的attention打分。一般ViT使用的都是多頭注意力機(jī)制,這里我們把各個(gè)head的attention score求平均作為每層的整體attention。

          • 第二步——考慮殘差連接:由于Transformer中,每層之間都有residual connection,直接將上一層的輸入和本層的輸出加和。這對(duì)應(yīng)于每個(gè)位置的token和自己做了一個(gè)權(quán)重為1的attention。為了把這部分信息體現(xiàn)出來(lái),通過(guò)生成一個(gè)對(duì)角線為1的矩陣,加和到初始的attention score矩陣上,再進(jìn)行歸一化,得到考慮了殘差連接的attention打分。

          • 第三步——考慮多層累乘關(guān)系,當(dāng)我們想繪制多層attention矩陣時(shí),各層attention矩陣是有一個(gè)傳導(dǎo)關(guān)系的。第二層Transformer在做attention時(shí),輸入是第一層attention加權(quán)的結(jié)果。為了把這個(gè)因素考慮在內(nèi),代碼中會(huì)循環(huán)進(jìn)行attention weight相乘。用上一層累乘的attention矩陣,與當(dāng)前層直接從模型中獲取的attention矩陣相乘,模擬了輸入是上一層attention加權(quán)融合后的結(jié)果。

          • 第四步——插值還原:我們得到的attention map是pacth_size * patch_size的,和原來(lái)圖像的尺寸肯定是不一樣的。我們需要把這個(gè)attention矩陣通過(guò)插值的方法還原成和圖像相同的尺寸,再用這個(gè)attention score和圖像上對(duì)應(yīng)像素點(diǎn)相乘,得到可視化圖像。代碼中直接使用了cv2的resize函數(shù),這個(gè)函數(shù)通過(guò)雙線性插值的方法將輸入矩陣擴(kuò)大成和原圖像相同的尺寸。


          最終繪制完成的可視化圖像效果如下,可以看到模型對(duì)于主體的attention分?jǐn)?shù)更大,對(duì)于背景的attention分?jǐn)?shù)更小,表明ViT學(xué)到了根據(jù)圖像主體進(jìn)行分類。



          4

          總結(jié)
          模型可視化是我們?cè)谌粘7治瞿P托Ч囊粋€(gè)重要手段,通過(guò)可視化模型對(duì)于圖像各個(gè)部分的關(guān)注程度,可以幫助判斷模型學(xué)的好壞,是否關(guān)注了我們希望模型關(guān)注的區(qū)域,進(jìn)而針對(duì)性進(jìn)行優(yōu)化。

          END




          努力分享優(yōu)質(zhì)的計(jì)算機(jī)視覺(jué)相關(guān)內(nèi)容,歡迎關(guān)注:

          交流群


          歡迎加入公眾號(hào)讀者群一起和同行交流,目前有美顏、三維視覺(jué)計(jì)算攝影、檢測(cè)、分割、識(shí)別、醫(yī)學(xué)影像、GAN算法競(jìng)賽等微信群


          個(gè)人微信(如果沒(méi)有備注不拉群!
          請(qǐng)注明:地區(qū)+學(xué)校/企業(yè)+研究方向+昵稱



          下載1:何愷明頂會(huì)分享


          AI算法與圖像處理」公眾號(hào)后臺(tái)回復(fù):何愷明,即可下載。總共有6份PDF,涉及 ResNet、Mask RCNN等經(jīng)典工作的總結(jié)分析


          下載2:終身受益的編程指南:Google編程風(fēng)格指南


          AI算法與圖像處理」公眾號(hào)后臺(tái)回復(fù):c++,即可下載。歷經(jīng)十年考驗(yàn),最權(quán)威的編程規(guī)范!



          下載3 CVPR2021

          AI算法與圖像處公眾號(hào)后臺(tái)回復(fù):CVPR即可下載1467篇CVPR 2020論文 和 CVPR 2021 最新論文



          瀏覽 38
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <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>
                  亚洲视频免费在线看 | 逼逼网 | 三级片小说网站一区 | 欧美色色爱爱男人天堂 | 欧美黄片免费播放 |