1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        CNN的一些可視化方法

        共 3740字,需瀏覽 8分鐘

         ·

        2020-12-23 02:51

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

        作者丨yishun@知乎(已授權(quán))
        來(lái)源丨h(huán)ttps://zhuanlan.zhihu.com/p/53683453
        編輯丨極市平臺(tái)

        極市導(dǎo)讀

        ?

        對(duì)神經(jīng)網(wǎng)絡(luò)進(jìn)行可視化分析不管是在學(xué)習(xí)上還是實(shí)際應(yīng)用上都有很重要的意義,基于此,本文介紹了3種CNN的可視化方法:可視化中間特征圖,可視化卷積核,可視化圖像中類(lèi)激活的熱力圖。每種方法均附有相關(guān)代碼詳解。>>加入極市CV技術(shù)交流群,走在計(jì)算機(jī)視覺(jué)的最前沿


        注:本文所有資料均來(lái)自Keras之父、Google人工智能研究員Francois Chollet的大作:《Python深度學(xué)習(xí)》,建議大家直接去看原文,這里只是結(jié)合樓主的理解做點(diǎn)筆記。

        引言

        有一些同學(xué)認(rèn)為深度學(xué)習(xí)、神經(jīng)網(wǎng)絡(luò)什么的就是一個(gè)黑盒子,沒(méi)辦法、也不需要分析其內(nèi)部的工作方式。個(gè)人認(rèn)為這種說(shuō)法“謬之千里”。

        首先,站在自動(dòng)特征提取或表示學(xué)習(xí)的角度來(lái)看,深度學(xué)習(xí)還是很好理解,即通過(guò)一個(gè)層級(jí)結(jié)構(gòu),由簡(jiǎn)單到復(fù)雜逐步提取特征,獲得易于處理的高層次抽象表示。其次,現(xiàn)在也已經(jīng)有很多方法對(duì)神經(jīng)網(wǎng)絡(luò)進(jìn)行分析了,特別是一些可視化方法,可以很直觀的展示深度模型的特征提取過(guò)程。

        對(duì)神經(jīng)網(wǎng)絡(luò)進(jìn)行可視化分析不管是在學(xué)習(xí)上還是實(shí)際應(yīng)用上都有很重要的意義,基于此,本文將介紹以下3種CNN的可視化方法:

        1. 可視化中間特征圖。
        2. 可視化卷積核。
        3. 可視化圖像中類(lèi)激活的熱力圖。

        可視化中間特征圖

        這種方法很簡(jiǎn)單,把網(wǎng)絡(luò)中間某層的輸出的特征圖按通道作為圖片進(jìn)行可視化展示即可,如下述代碼所示:

        import matplotlib.pyplot as plt
        #get feature map of layer_activation
        plt.matshow(layer_activation[0, :, :, 4], cmap='viridis')

        把多個(gè)特征圖可視化后堆疊在一起可以得到與下述類(lèi)似的圖片。

        上圖為某CNN 5-8 層輸出的某喵星人的特征圖的可視化結(jié)果(一個(gè)卷積核對(duì)應(yīng)一個(gè)小圖片)??梢园l(fā)現(xiàn)越是低的層,捕捉的底層次像素信息越多,特征圖中貓的輪廓也越清晰。越到高層,圖像越抽象,稀疏程度也越高。這符合我們一直強(qiáng)調(diào)的特征提取概念。

        可視化卷積核

        想要觀察卷積神經(jīng)網(wǎng)絡(luò)學(xué)到的過(guò)濾器,一種簡(jiǎn)單的方法是獲取每個(gè)過(guò)濾器所響應(yīng)的視覺(jué)模式。我們可以將其視為一個(gè)優(yōu)化問(wèn)題,即從空白輸入圖像開(kāi)始,將梯度上升應(yīng)用于卷積神經(jīng)網(wǎng)絡(luò)的輸入圖像,讓某個(gè)過(guò)濾器的響應(yīng)最大化,最后得到的圖像是選定過(guò)濾器具有較大響應(yīng)的圖像。

        核心代碼如下所示(利用Keras框架):

        def generate_pattern(layer_name, filter_index, size=150):
        layer_output = model.get_layer(layer_name).output
        loss = K.mean(layer_output[:, :, :, filter_index])
        grads = K.gradients(loss, model.input)[0]
        grads /= (K.sqrt(K.mean(K.square(grads))) + 1e-5)
        iterate = K.function([model.input], [loss, grads])

        input_img_data = np.random.random((1, size, size, 3)) * 20 + 128.
        step = 1.
        for i in range(40):
        loss_value, grads_value = iterate([input_img_data])
        input_img_data += grads_value * step

        img = input_img_data[0]
        return deprocess_image(img)

        將輸入圖片張量轉(zhuǎn)換回圖片后進(jìn)行可視化,可以得到與下述類(lèi)似的圖片:

        block1_conv1 層的過(guò)濾器模式

        block2_conv1 層的過(guò)濾器模式

        block3_conv1 層的過(guò)濾器模式

        block4_conv1 層的過(guò)濾器模式

        隨著層數(shù)的加深,卷積神經(jīng)網(wǎng)絡(luò)中的過(guò)濾器變得越來(lái)越復(fù)雜,越來(lái)越精細(xì)。模型第一層( block1_conv1 )的過(guò)濾器對(duì)應(yīng)簡(jiǎn)單的方向邊緣和顏色,高層的過(guò)濾器類(lèi)似于自然圖像中的紋理:羽毛、眼睛、樹(shù)葉等。

        可視化圖像中類(lèi)激活的熱力圖

        即顯示原始圖片的不同區(qū)域?qū)δ硞€(gè)CNN輸出類(lèi)別的“貢獻(xiàn)”程度,如下面圖片所示:

        可以看到,大象頭部對(duì)“大象”這個(gè)類(lèi)別的“貢獻(xiàn)”程度較高,而且這種方法似乎可以在一定程度上進(jìn)行無(wú)監(jiān)督的目標(biāo)檢測(cè)。

        下面是書(shū)中原文,可能有點(diǎn)繞口。

        我們將使用的具體實(shí)現(xiàn)方式是“Grad-CAM: visual explanations from deep networks via gradient-based localization”這篇論文中描述的方法。這種方法非常簡(jiǎn)單:給定一張輸入圖像,對(duì)于一個(gè)卷積層的輸出特征圖,用類(lèi)別相對(duì)于通道的梯度對(duì)這個(gè)特征圖中的每個(gè)通道進(jìn)行加權(quán)。直觀上來(lái)看,理解這個(gè)技巧的一種方法是,你是用“每個(gè)通道對(duì)類(lèi)別的重要程度”對(duì)“輸入圖像對(duì)不同通道的激活強(qiáng)度”的空間圖進(jìn)行加權(quán),從而得到了“輸入圖像對(duì)類(lèi)別的激活強(qiáng)度”的空間圖。

        這里談一下我的理解,給定線性函數(shù) ,y為類(lèi)別, 等等為輸入??梢钥吹竭@里 對(duì)y的貢獻(xiàn)為 ,恰好為 。當(dāng)然了,深度模型中有非線性激活函數(shù),不能簡(jiǎn)化為一個(gè)線性模型,所以這只是啟發(fā)性的理解。

        代碼如下所示:

        african_elephant_output = model.output[:, 386]
        last_conv_layer = model.get_layer('block5_conv3')
        grads = K.gradients(african_elephant_output, last_conv_layer.output)[0]
        pooled_grads = K.mean(grads, axis=(0, 1, 2))
        iterate = K.function([model.input],
        [pooled_grads, last_conv_layer.output[0]])
        pooled_grads_value, conv_layer_output_value = iterate([x])
        for i in range(512):
        conv_layer_output_value[:, :, i] *= pooled_grads_value[i]
        heatmap = np.mean(conv_layer_output_value, axis=-1)
        heatmap = np.maximum(heatmap, 0)
        heatmap /= np.max(heatmap)
        plt.matshow(heatmap)

        得到的熱力圖如下所示:

        經(jīng)下述代碼處理后,可以得到本節(jié)開(kāi)始時(shí)的圖片。

        import cv2
        img = cv2.imread(img_path)
        heatmap = cv2.resize(heatmap, (img.shape[1], img.shape[0]))
        heatmap = np.uint8(255 * heatmap)
        heatmap = cv2.applyColorMap(heatmap, cv2.COLORMAP_JET)
        superimposed_img = heatmap * 0.4 + img
        cv2.imwrite('/Users/fchollet/Downloads/elephant_cam.jpg', superimposed_img)

        結(jié)語(yǔ)

        本文到這里就結(jié)束了,這里再次推薦一下Francois Chollet大佬的書(shū),寫(xiě)的很接地氣,建議新手們都看看。


        推薦閱讀




        添加極市小助手微信(ID : cvmart2),備注:姓名-學(xué)校/公司-研究方向-城市(如:小極-北大-目標(biāo)檢測(cè)-深圳),即可申請(qǐng)加入極市目標(biāo)檢測(cè)/圖像分割/工業(yè)檢測(cè)/人臉/醫(yī)學(xué)影像/3D/SLAM/自動(dòng)駕駛/超分辨率/姿態(tài)估計(jì)/ReID/GAN/圖像增強(qiáng)/OCR/視頻理解等技術(shù)交流群:月大咖直播分享、真實(shí)項(xiàng)目需求對(duì)接、求職內(nèi)推、算法競(jìng)賽、干貨資訊匯總、與?10000+來(lái)自港科大、北大、清華、中科院、CMU、騰訊、百度等名校名企視覺(jué)開(kāi)發(fā)者互動(dòng)交流~

        △長(zhǎng)按添加極市小助手

        △長(zhǎng)按關(guān)注極市平臺(tái),獲取最新CV干貨

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

        手機(jī)掃一掃分享

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

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            十大尺度做爰未删减电影暗欲韩国 | 欧美午夜爱爱视频 | 欧美精品激情久久久久久 | 好爽好紧宝贝别夹h演戏小说 | 久久国产精品99久久久久久丝袜 | 自拍偷拍视频网址 | 欧美操逼A片 | 有栖花绯av一区二区 | 人人添人人澡人人澡人人人人 | 中国老太卖婬视频播放 |