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

          CNN可視化技術(shù)總結(jié)

          共 10486字,需瀏覽 21分鐘

           ·

          2021-02-25 22:02

          ↑ 點(diǎn)擊藍(lán)字?關(guān)注極市平臺(tái)

          作者丨仿佛若有光
          來源丨CV技術(shù)指南
          編輯丨極市平臺(tái)

          極市導(dǎo)讀

          ?

          本文基本介紹完了目前CNN可視化的一些方法,即特征圖可視化,卷積核可視化和類可視化,并總結(jié)了一些可視化工具與項(xiàng)目。?>>加入極市CV技術(shù)交流群,走在計(jì)算機(jī)視覺的最前沿

          目錄:

          1.特征圖可視化方法

          2.卷積核可視化

          3.類可視化

          4.可視化工具與項(xiàng)目

          一、特征圖可視化方法

          在CV很多方向所謂改進(jìn)模型,改進(jìn)網(wǎng)絡(luò),都是在按照人的主觀思想在改進(jìn),常常在說CNN的本質(zhì)是提取特征,但并不知道它提取了什么特征,哪些區(qū)域?qū)τ谧R(shí)別真正起作用,也不知道網(wǎng)絡(luò)是根據(jù)什么得出了分類結(jié)果。如在上次解讀的一篇論文《Feature Pyramid Transformer》(簡稱FPT)中,作者提出背景信息對于識(shí)別目標(biāo)有重要作用,因?yàn)殡娔X肯定是在桌上,而不是水里,大街上,背景中的鍵盤鼠標(biāo)的存在也能輔助區(qū)分電腦與電視機(jī),因此作者提出要使用特征金字塔融合背景信息。從人的主觀判斷來看,這點(diǎn)非常合理。但對于神經(jīng)網(wǎng)絡(luò)來說,F(xiàn)PT真的有融合背景信息,而普通CNN網(wǎng)絡(luò)沒有融合背景信息?又或者說,一般而言,除了提出的新模型,還會(huì)加上主觀設(shè)計(jì)的各種tricks,確定最后是因?yàn)槿诤狭吮尘靶畔⒍忍岣吡?,還是說背景確實(shí)融合了,但實(shí)際上對精度沒有影響,而是各種tricks起了作用?這一切并不確定,因?yàn)椴⒉淮_定CNN到底學(xué)到了什么。

          解決這個(gè)問題的辦法有很多,一個(gè)是想辦法看看CNN內(nèi)部學(xué)到了什么,一個(gè)是控制變量法。提到這個(gè)控制變量法,在某一篇論文中(我對不起我的讀者,論文累積量太大,忘記是哪一篇,只記得該論文的一些新穎之處),在設(shè)計(jì)了一個(gè)新的模型后,通過改變卷積層的某些通道,來看最后模型的精度的變化,從而確定哪些通道對這個(gè)模型是真正起作用的,而哪些是冗余的。按照這個(gè)思路,我們或許可以在數(shù)據(jù)預(yù)處理時(shí),故意裁剪掉人主觀認(rèn)為有用的背景信息,例如裁剪輔助識(shí)別電腦的桌子,鍵盤鼠標(biāo),重新訓(xùn)練FPT,從而看最終精度有沒有影響。很明顯,這種方法理論上是可行的,但實(shí)際上工作量巨大,不現(xiàn)實(shí)。而CNN可視化是值得考慮的方法。

          除了上面提到的一點(diǎn),CNN可視化的作用還有哪些?

          在少數(shù)提出新模型或新methods的論文中,往往會(huì)給出這個(gè)模型的一些可視化圖來證明這個(gè)模型或這個(gè)新methods對于任務(wù)的作用,這一點(diǎn)不僅能增加新模型或新methods可信度,也能起到增加工作量,增加論文字?jǐn)?shù)的作用,如研究者想到一個(gè)method,一兩頁就介紹加推理加證明完了,效果明顯,但作為一篇論文卻字?jǐn)?shù)太少,工作量不夠多,就可以考慮可視化使用了這個(gè)methods的網(wǎng)絡(luò)與沒有使用這個(gè)methods的網(wǎng)絡(luò),進(jìn)行對比,分析分析,就可以變成一篇完整的論文了。此外,CNN可視化還有一個(gè)作用,根據(jù)可視化某個(gè)網(wǎng)絡(luò)的結(jié)果分析其不足之處,從而提出新的改進(jìn)方法。例如:ZFNet正是對AlexNet進(jìn)行可視化后改進(jìn)而來,獲得了ILSVRC2014的冠軍。

          CNN可視化方法

          一、特征圖可視化。特征圖可視化有兩類方法,一類是直接將某一層的feature map映射到0-255的范圍,變成圖像。另一類是使用一個(gè)反卷積網(wǎng)絡(luò)(反卷積、反池化)將feature map變成圖像,從而達(dá)到可視化feature map的目的。

          二、卷積核可視化。

          三、類激活可視化。這個(gè)主要用于確定圖像哪些區(qū)域?qū)ψR(shí)別某個(gè)類起主要作用。如常見的熱力圖(Heat Map),在識(shí)別貓時(shí),熱力圖可直觀看出圖像中每個(gè)區(qū)域?qū)ψR(shí)別貓的作用大小。這個(gè)目前主要用的方法有CAM系列(CAM、Grad-CAM、Grad-CAM++)。

          四、一些技術(shù)工具。通過一些研究人員開源出來的工具可視化CNN模型某一層。

          CNN技術(shù)總結(jié)將按照這四個(gè)方法,分成四個(gè)部分總結(jié)CNN可視化技術(shù)。對于以后出現(xiàn)新的技術(shù),或者補(bǔ)充,將更新在公眾號(hào)CV技術(shù)指南的技術(shù)總結(jié)部分。在本文,主要介紹第一類方法,特征圖可視化。

          直接可視化

          單通道特征圖可視化,由于feature map并不是在0-255范圍,因此需要將其進(jìn)行歸一化。以pytorch為例,使用torchvision.utils.make_grid()函數(shù)實(shí)現(xiàn)歸一化

          def make_grid(tensor, nrow=8, padding=2,              normalize=True, range=None, ??????????????scale_each=False,pad_value=0):

          多通道特征圖的顯示,即對某一層所有通道上的特征圖融合顯示,在使用make_grid函數(shù)后,pytorch環(huán)境下可使用tensorboardX下的SummerWriterh中的add_image函數(shù)。

          本部分內(nèi)容參考鏈接:https://zhuanlan.zhihu.com/p/60753993

          反卷積網(wǎng)絡(luò)( deconvnet )

          feature map可視化的另一種方式是通過反卷積網(wǎng)絡(luò)從feature map變成圖像。反卷積網(wǎng)絡(luò)在論文《Visualizing and Understanding Convolutional Networks》中提出,論文中提出圖像像素經(jīng)過神經(jīng)網(wǎng)絡(luò)映射到特征空間,而反卷積網(wǎng)絡(luò)可以將feature map映射回像素空間。

          如下圖所示,反卷積網(wǎng)絡(luò)的用途是對一個(gè)訓(xùn)練好的神經(jīng)網(wǎng)絡(luò)中任意一層feature map經(jīng)過反卷積網(wǎng)絡(luò)后重構(gòu)出像素空間,主要操作是反池化unpooling、修正rectify、濾波filter,換句話說就是反池化,反激活,反卷積。

          由于不可能獲取標(biāo)簽數(shù)據(jù),因此反卷積網(wǎng)絡(luò)是一個(gè)無監(jiān)督的,不具備學(xué)習(xí)能力的,就像一個(gè)訓(xùn)練好的網(wǎng)絡(luò)的檢測器,或者說是一個(gè)復(fù)雜的映射函數(shù)。

          反池化Unpooling

          在上一篇文章《池化技術(shù)總結(jié)》中提到最大池化會(huì)記錄最大值的坐標(biāo),在上圖中就是switches,而反池化就只需要將最大值放到原位置,而其他位置的值并不知道,直接置零。如下圖所示。

          修正Rectification

          CNN使用ReLU確保feature map上的值都是正的,因此在反卷積中也使用ReLU。這里所謂Rectification其實(shí)就是讓unpooling后的值都是正的,換句話說就是使用ReLU。

          Filtering

          Filtering指的是反卷積,具體操作就是使用原網(wǎng)絡(luò)的卷積核的轉(zhuǎn)置作為卷積核,對Rectification后的輸出進(jìn)行卷積。

          注:在以上重構(gòu)過程中沒有使用對比歸一化操作。

          反卷積網(wǎng)絡(luò)特征可視化結(jié)果

          導(dǎo)向反向傳播

          在論文《Striving for Simplicity:The All Convolutional Net》中提出使用導(dǎo)向反向傳播(Guided-backpropagation),導(dǎo)向反向傳播與反卷積網(wǎng)絡(luò)的區(qū)別在于對ReLU的處理方式。在反卷積網(wǎng)絡(luò)中使用ReLU處理梯度,只回傳梯度大于0的位置,而在普通反向傳播中只回傳feature map中大于0的位置,在導(dǎo)向反向傳播中結(jié)合這兩者,只回傳輸入和梯度都大于0的位置,這相當(dāng)于在普通反向傳播的基礎(chǔ)上增加了來自更高層的額外的指導(dǎo)信號(hào),這阻止了負(fù)梯度的反傳流動(dòng),梯度小于0的神經(jīng)元降低了正對應(yīng)更高層單元中我們想要可視化的區(qū)域的激活值。

          使用導(dǎo)向反向傳播與反卷積網(wǎng)絡(luò)的效果對比

          明顯使用導(dǎo)向反向傳播比反卷積網(wǎng)絡(luò)效果更好。

          總結(jié):分析反卷積網(wǎng)絡(luò)的對各層feature map可視化的結(jié)果可知,CNN中會(huì)學(xué)到圖像中的一些主要特征,如狗頭,鼻子眼睛,紋理,輪廓等內(nèi)容。但對特征圖可視化有個(gè)明顯的不足,即無法可視化圖像中哪些區(qū)域?qū)ψR(shí)別具體某個(gè)類別的作用,這個(gè)主要是使用CAM系列的方法,下文將進(jìn)行講解。

          二、卷積核可視化

          上面我們介紹了特征圖可視化方法,對于特征圖可視化的方法(或者說原理)比較容易理解,即把feature map從特征空間通過反卷積網(wǎng)絡(luò)映射回像素空間。

          那卷積核怎樣可視化呢,基于什么原理來可視化?卷積核的尺寸一般只有3x3, 5x5大小,如何可視化?下面將介紹這個(gè)兩個(gè)內(nèi)容。

          卷積核可視化的原理

          卷積核,在網(wǎng)絡(luò)中起到將圖像從像素空間映射到特征空間的作用,可認(rèn)為是一個(gè)映射函數(shù),像素空間中的值經(jīng)過卷積核后得到響應(yīng)值,在特征提取網(wǎng)絡(luò)中,基本都是使用最大池化來選擇最大響應(yīng)值進(jìn)入下一層繼續(xù)卷積,其余響應(yīng)值低的都進(jìn)入待定。也就是說,我們認(rèn)定只有響應(yīng)值大的才會(huì)對最終的識(shí)別任務(wù)起作用。

          根據(jù)這個(gè)思路,給定一個(gè)已經(jīng)訓(xùn)練好的網(wǎng)絡(luò),現(xiàn)在想要可視化某一層的某一個(gè)卷積核,我們隨機(jī)初始化生成一張圖(指的是對像素值隨機(jī)取值,不是數(shù)據(jù)集中隨機(jī)選一張圖),然后經(jīng)過前向傳播到該層,我們希望這個(gè)隨機(jī)生成的圖在經(jīng)過這一層卷積核時(shí),它的響應(yīng)值能盡可能的大,換句話說,響應(yīng)值比較大的圖像是這個(gè)卷積核比較認(rèn)可的,是與識(shí)別任務(wù)更相關(guān)的。然后不斷調(diào)整圖像像素值,直到響應(yīng)值足夠大,我們就可以認(rèn)為此時(shí)的圖像就是這個(gè)卷積核所認(rèn)可的,從而達(dá)到可視化該卷積核的目的。

          理解了它的原理后,它的實(shí)現(xiàn)方法就比較簡單了,設(shè)計(jì)一個(gè)損失函數(shù),即以經(jīng)過該層卷積核后的響應(yīng)值為目標(biāo)函數(shù),使用梯度上升,更新像素值,使響應(yīng)值最大。

          實(shí)現(xiàn)代碼

          Setup

          import numpy as npimport tensorflow as tffrom tensorflow import keras# The dimensions of our input imageimg_width = 180img_height = 180# Our target layer: we will visualize the filters from this layer.# See `model.summary()` for list of layer names, if you want to change this.layer_name = "conv3_block4_out"
          Build a feature extraction model
          # Build a ResNet50V2 model loaded with pre-trained ImageNet weightsmodel = keras.applications.ResNet50V2(weights="imagenet", include_top=False)# Set up a model that returns the activation values for our target layerlayer = model.get_layer(name=layer_name)feature_extractor = keras.Model(inputs=model.inputs, outputs=layer.output)
          Set up the gradient ascent process

          loss函數(shù)取最大化指定卷積核的響應(yīng)值的平均值,為了避免邊界的影響,邊界的響應(yīng)值不計(jì)。

          def compute_loss(input_image, filter_index):    activation = feature_extractor(input_image)    # We avoid border artifacts by only involving non-border pixels in the loss.    filter_activation = activation[:, 2:-2, 2:-2, filter_index]    return tf.reduce_mean(filter_activation)@tf.functiondef gradient_ascent_step(img, filter_index, learning_rate):    with tf.GradientTape() as tape:        tape.watch(img)        loss = compute_loss(img, filter_index)    # Compute gradients.    grads = tape.gradient(loss, img)    # Normalize gradients.    grads = tf.math.l2_normalize(grads)    img += learning_rate * grads    return loss, img
          Set up the end-to-end filter visualization loop
          def initialize_image():    # We start from a gray image with some random noise    img = tf.random.uniform((1, img_width, img_height, 3))    # ResNet50V2 expects inputs in the range [-1, +1].    # Here we scale our random inputs to [-0.125, +0.125]    return (img - 0.5) * 0.25
          def visualize_filter(filter_index): # We run gradient ascent for 20 steps iterations = 30 learning_rate = 10.0 img = initialize_image() for iteration in range(iterations): loss, img = gradient_ascent_step(img, filter_index, learning_rate)
          # Decode the resulting input image img = deprocess_image(img[0].numpy()) return loss, img
          def deprocess_image(img): # Normalize array: center on 0., ensure variance is 0.15 img -= img.mean() img /= img.std() + 1e-5 img *= 0.15
          # Center crop img = img[25:-25, 25:-25, :]
          # Clip to [0, 1] img += 0.5 img = np.clip(img, 0, 1)
          # Convert to RGB array img *= 255 img = np.clip(img, 0, 255).astype("uint8")????return?img

          可視化效果圖

          可視化vgg16卷積核

          總結(jié):本部分內(nèi)容介紹了一種可視化卷積核的方法,即通過生成指定卷積核響應(yīng)值盡可能大的圖像來達(dá)到可視化卷積核的目的,使用的方法是梯度上升。

          在不少論文的末尾都有可視化卷積核來分析提出的模型,該方法值得了解。

          三、類可視化

          前面我們介紹了兩種可視化方法,特征圖可視化和卷積核可視化,這兩種方法在論文中都比較常見,這兩種更多的是用于分析模型在某一層學(xué)習(xí)到的東西。在理解這兩種可視化方法,很容易理解圖像是如何經(jīng)過神經(jīng)網(wǎng)絡(luò)后得到識(shí)別分類。

          然而,上次我在知乎看到一個(gè)通過yolov3做跌倒檢測,希望加上人臉識(shí)別進(jìn)行多任務(wù)學(xué)習(xí)從而提高準(zhǔn)確率的提問。這明顯提問者并不理解神經(jīng)網(wǎng)絡(luò)是如何對這種帶有時(shí)間維度的視頻進(jìn)行分析從而實(shí)現(xiàn)行為識(shí)別,從本質(zhì)上來講,這其實(shí)是不理解神經(jīng)網(wǎng)絡(luò)具體是如何識(shí)別一個(gè)類的。因此,當(dāng)在這一點(diǎn)上理解錯(cuò)誤后,所進(jìn)行的模型選擇、方案設(shè)計(jì)和改進(jìn),就都是不合理的。

          (我在知乎上回答了這個(gè)問題正確的跌倒檢測思路應(yīng)該是什么,感興趣的可以去看看)

          因此,在下面的文字中,我們將介紹一種對于不同的類,如何知道模型根據(jù)哪些信息來識(shí)別的方法,即對類進(jìn)行可視化,通俗一點(diǎn)來說就是熱力圖。這個(gè)方法主要是CAM系列,目前有CAM, Grad-CAM, Grad-CAM++。

          CAM(Class Activation Map)

          如上圖所示,CAM的結(jié)構(gòu)由CNN特征提取網(wǎng)絡(luò),全局平均池化GAP,全連接層和Softmax組成。

          實(shí)現(xiàn)原理:一張圖片在經(jīng)過CNN特征提取網(wǎng)絡(luò)后得到feature maps, 再對每一個(gè)feature map進(jìn)行全局平均池化,變成一維向量,再經(jīng)過全連接層與softmax得到類的概率。

          假定在GAP前是n個(gè)通道,則經(jīng)過GAP后得到的是一個(gè)長度為1x n的向量,假定類別數(shù)為m,則全連接層的權(quán)值為一個(gè)n x m的張量。(注:這里先忽視batch-size)

          對于某一個(gè)類別C, 現(xiàn)在想要可視化這個(gè)模型對于識(shí)別類別C,原圖像的哪些區(qū)域起主要作用,換句話說模型是根據(jù)哪些信息得到該圖像就是類別C。

          做法是取出全連接層中得到類別C的概率的那一維權(quán)值,用W表示,即上圖的下半部分。然后對GAP前的feature map進(jìn)行加權(quán)求和,由于此時(shí)feature map不是原圖像大小,在加權(quán)求和后還需要進(jìn)行上采樣,即可得到Class Activation Map。

          用公式表示如下:(k表示通道,c表示類別,fk(x,y)表示feature map)

          效果圖:

          CAM的分析

          CAM有個(gè)很致命的缺陷,它的結(jié)構(gòu)是由CNN + GAP + FC + Softmax組成,也就是說如果想要可視化某個(gè)現(xiàn)有的模型,但大部分現(xiàn)有的模型沒有GAP這個(gè)操作,此時(shí)想要可視化便需要修改原模型結(jié)構(gòu),并重新訓(xùn)練,相當(dāng)麻煩,且如果模型很大,在修改后重新訓(xùn)練不一定能達(dá)到原效果,可視化也就沒有意義了。

          因此,針對這個(gè)缺陷,其后續(xù)有了改進(jìn)版Grad-CAM。

          Grad-CAM

          Grad-CAM的最大特點(diǎn)就是不再需要修改現(xiàn)有的模型結(jié)構(gòu)了,也不需要重新訓(xùn)練了,直接在原模型上即可可視化。

          原理:同樣是處理CNN特征提取網(wǎng)絡(luò)的最后一層feature maps。Grad-CAM對于想要可視化的類別C,使最后輸出的類別C的概率值通過反向傳播到最后一層feature maps,得到類別C對該feature maps的每個(gè)像素的梯度值,對每個(gè)像素的梯度值取全局平均池化,即可得到對feature maps的加權(quán)系數(shù)alpha,論文中提到這樣獲取的加權(quán)系數(shù)跟CAM中的系數(shù)幾乎是等價(jià)的。接下來對特征圖加權(quán)求和,使用ReLU進(jìn)行修正,再進(jìn)行上采樣。

          使用ReLU的原因是對于那些負(fù)值,可認(rèn)為與識(shí)別類別C無關(guān),這些負(fù)值可能是與其他類別有關(guān),而正值才是對識(shí)別C有正面影響的。

          用公式表示如下:

          Grad-CAM的結(jié)構(gòu)圖如上圖所示,對于Guided Backpropagation不了解的讀者,可看CNN可視化技術(shù)總結(jié)的第一篇文章。

          效果圖如下:

          Grad-CAM后續(xù)還有改進(jìn)版Grad-CAM++,其主要的改進(jìn)效果是定位更準(zhǔn)確,更適合同類多目標(biāo)的情況,所謂同類多目標(biāo)是指一張圖像中對于某個(gè)類出現(xiàn)多個(gè)目標(biāo),例如七八個(gè)人。

          改進(jìn)方法是對加權(quán)系數(shù)的獲取提出新的方法,該方法復(fù)雜到不忍直視。因此這里就不介紹了,感興趣的讀者可以閱讀該論文:

          CAM:?arxiv.org/pdf/1512.0415

          Grad-CAM:?arxiv.org/pdf/1610.0239

          Grad-CAM++:?arxiv.org/pdf/1710.1106

          四、可視化工具與項(xiàng)目

          前面介紹了可視化的三種方法--特征圖可視化,卷積核可視化,類可視化,這三種方法在很多提出新模型或新方法的論文中很常見,其主要作用是提高模型或者新方法的可信度,或者用來增加工作量,或者用來湊字?jǐn)?shù),還有一些作用是幫助理解模型針對某個(gè)具體任務(wù)是如何學(xué)習(xí),學(xué)到了哪些信息,哪些區(qū)域?qū)τ谧R(shí)別有影響等。

          本文將介紹一些可視化的項(xiàng)目,主要有CNN解釋器,特征圖、卷積核、類可視化的一些代碼和項(xiàng)目,結(jié)構(gòu)可視化工具,網(wǎng)絡(luò)結(jié)構(gòu)手動(dòng)畫圖工具。

          1. CNN-Explainer

          這是一個(gè)中國博士發(fā)布的名叫CNN解釋器的在線交互可視化工具。主要對于那些初學(xué)深度學(xué)習(xí)的小白們 理解關(guān)于神經(jīng)網(wǎng)絡(luò)是如何工作很有幫助,如卷積過程,ReLU過程,平均池化過程,中間每一層的特征圖的樣子,都可以看到,相當(dāng)于給了一個(gè)顯微鏡,可以隨意對任意一層,任何一項(xiàng)操作的前后變化,觀察得清清楚楚。

          顯示卷積的過程中前后特征圖的變化,中間的操作。

          CNN是如何輸出預(yù)測的

          還可以在線上傳圖片,看到一張圖片在經(jīng)過每一層的卷積,池化,激活后的變化,最后輸出預(yù)測結(jié)果。

          項(xiàng)目鏈接:

          https://github.com/poloclub/cnn-explainer

          2. 一些可視化特征圖、卷積核、熱力圖的代碼。

          可視化特征圖

          https://github.com/waallf/Viusal-feature-map

          可視化卷積核

          https://keras.io/examples/vision/visualizing_what_convnets_learn/

          https://blog.keras.io/how-convolutional-neural-networks-see-the-world.html

          Grad-CAM

          https://github.com/ramprs/grad-cam

          熱力圖

          https://github.com/heuritech/convnets-keras

          下面這個(gè)項(xiàng)目是同時(shí)包含特征圖可視化,卷積核可視化和熱力圖的一個(gè)鏈接:

          https://github.com/raghakot/keras-vis

          3. 結(jié)構(gòu)可視化工具

          Netscope

          用于可視化模型結(jié)構(gòu)的在線工具,僅支持caffe的prototxt文件可視化。需要自己寫prototxt格式的文件。

          此圖來源于網(wǎng)絡(luò),侵刪

          項(xiàng)目地址:

          https://github.com/ethereon/netscope

          ConvNetDraw

          這個(gè)工具用兩個(gè)圖可直接說明,第一個(gè)是輸入,第二個(gè)是輸出

          這兩個(gè)圖來源于網(wǎng)絡(luò),侵刪

          項(xiàng)目地址:

          https://github.com/cbovar/ConvNetDraw

          PlotNeuralNet

          這個(gè)稍微麻煩一點(diǎn)點(diǎn),效果圖如下:

          項(xiàng)目地址:

          https://github.com/HarisIqbal88/PlotNeuralNet

          4. 網(wǎng)絡(luò)結(jié)構(gòu)手動(dòng)畫圖工具

          很多新手會(huì)問的一個(gè)問題,論文中那些網(wǎng)絡(luò)結(jié)構(gòu)圖是如何畫的。

          這里解答一下,我所了解的主要是用PPT, VISIO。當(dāng)然也可以使用上面那幾個(gè)。

          再補(bǔ)充一個(gè)在線工具,NN-SVG

          項(xiàng)目地址:http://alexlenail.me/NN-SVG/

          總結(jié)

          這四篇文章基本介紹完了目前CNN可視化的一些方法,即特征圖可視化,卷積核可視化和類可視化,總結(jié)了一些可視化工具與項(xiàng)目,當(dāng)然不免也有個(gè)別遺漏的,日后若有一些比較重大突破的一些可視化工具出來,將繼續(xù)補(bǔ)充。

          對于可視化,其實(shí)還包括訓(xùn)練過程的可視化,如Loss值,精度等實(shí)時(shí)更新,這個(gè)比較簡單,就不在這個(gè)總結(jié)系列里說明了。

          代碼與可視化圖的參考鏈接:

          https://keras.io/examples/vision/visualizing_what_convnets_learn/

          https://blog.keras.io/how-convolutional-neural-networks-see-the-world.html


          參考論文:

          1.《Visualizing and Understanding Convolutional Networks》

          2.《Striving for Simplicity:The All Convolutional Net》

          3. Learning Deep Features for Discriminative Localization

          4.Grad-CAM: Why did you say that?Visual Explanations from Deep Networks via Gradient-based Localization

          5.Grad-cam++: Generalized gradient-based visual explanations for deep convolutional networks



          推薦閱讀


          增量推理:一種CNN加速的新思路

          2021-02-23

          綜述:輕量級(jí)CNN架構(gòu)設(shè)計(jì)

          2021-02-17

          擦除:提升 CNN 特征可視化的 3 種重要手段

          2021-02-16



          #?CV技術(shù)社群邀請函?#

          △長按添加極市小助手
          添加極市小助手微信(ID : cvmart2)

          備注:姓名-學(xué)校/公司-研究方向-城市(如:小極-北大-目標(biāo)檢測-深圳)


          即可申請加入極市目標(biāo)檢測/圖像分割/工業(yè)檢測/人臉/醫(yī)學(xué)影像/3D/SLAM/自動(dòng)駕駛/超分辨率/姿態(tài)估計(jì)/ReID/GAN/圖像增強(qiáng)/OCR/視頻理解等技術(shù)交流群


          每月大咖直播分享、真實(shí)項(xiàng)目需求對接、求職內(nèi)推、算法競賽、干貨資訊匯總、與?10000+來自港科大、北大、清華、中科院、CMU、騰訊、百度等名校名企視覺開發(fā)者互動(dòng)交流~


          △點(diǎn)擊卡片關(guān)注極市平臺(tái),獲取最新CV干貨

          覺得有用麻煩給個(gè)在看啦~??
          瀏覽 46
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

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

          手機(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>
                  国产一二三四区 | 骚逼视频免费观看 | 又粗又大又黄的视频 | 苍井空一级婬片A片在哪看 | 精品一区二区三区四区五区六区七区 |