<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

       

      借助Keras和Opencv實現的神經網絡中間層特征圖的可視化功能,方便我們研究CNN這個黑盒子里到發生了什么。

       

      自定義網絡特征可視化

       

      代碼:

      # coding: utf-8
      
      from keras.models import Model
      import cv2
      import matplotlib.pyplot as plt
      from keras.models import Sequential
      from keras.layers.convolutional import Convolution2D,MaxPooling2D
      from keras.layers import Activation
      from pylab import *
      import keras
      
      
      def get_row_col(num_pic):
          squr = num_pic ** 0.5
          row = round(squr)
          col = row + 1 if squr - row > 0 else row
          return row,col
      
      def visualize_feature_map(img_batch):
          feature_map = np.squeeze(img_batch,axis=0)
          print feature_map.shape
      
          feature_map_combination=[]
          plt.figure()
      
          num_pic = feature_map.shape[2]
          row,col = get_row_col(num_pic)
      
          for i in range(0,num_pic):
              feature_map_split=feature_map[:,:,i]
              feature_map_combination.append(feature_map_split)
              plt.subplot(row,col,i+1)
              plt.imshow(feature_map_split)
              axis('off')
              title('feature_map_{}'.format(i))
      
          plt.savefig('feature_map.jpg')
          plt.show()
      
          # 各個特征圖按1:1 疊加
          feature_map_sum = sum(ele for ele in feature_map_combination)
          plt.imshow(feature_map_sum)
          plt.savefig("feature_map_sum.jpg")
      
      def create_model():
          model = Sequential()
      
          # 第一層CNN
          # 第一個參數是卷積核的數量,第二三個參數是卷積核的大小
          model.add(Convolution2D(9, 5, 5, input_shape=img.shape))
          model.add(Activation('relu'))
          model.add(MaxPooling2D(pool_size=(4, 4)))
      
          #第二層CNN
          model.add(Convolution2D(9, 5, 5, input_shape=img.shape))
          model.add(Activation('relu'))
          model.add(MaxPooling2D(pool_size=(3, 3)))
      
          # 第三層CNN
          model.add(Convolution2D(9, 5, 5, input_shape=img.shape))
          model.add(Activation('relu'))
          model.add(MaxPooling2D(pool_size=(2, 2)))
      
          # 第四層CNN
          model.add(Convolution2D(9, 3, 3, input_shape=img.shape))
          model.add(Activation('relu'))
          # model.add(MaxPooling2D(pool_size=(2, 2)))
      
          return model
      
      
      if __name__ == "__main__":
      
          img = cv2.imread('001.jpg')
      
          model = create_model()
      
          img_batch = np.expand_dims(img, axis=0)
          conv_img = model.predict(img_batch)  # conv_img 卷積結果
      
          visualize_feature_map(conv_img)

      這里定義了一個4層的卷積,每個卷積層分別包含9個卷積、Relu激活函數和尺度不等的池化操作,系數全部是隨機初始化。
      輸入的原圖如下:

       

      第一層卷積后可視化的特征圖:

       

      所有第一層特征圖1:1融合后整體的特征圖:

       

      第二層卷積后可視化的特征圖:

       

      所有第二層特征圖1:1融合后整體的特征圖:

       

      第三層卷積后可視化的特征圖:

       

      所有第三層特征圖1:1融合后整體的特征圖:

       

      第四層卷積后可視化的特征圖:

       

      所有第四層特征圖1:1融合后整體的特征圖:

      從不同層可視化出來的特征圖大概可以總結出一點規律:

      • 1. 淺層網絡提取的是紋理、細節特征
      • 2. 深層網絡提取的是輪廓、形狀、最強特征(如貓的眼睛區域)
      • 3. 淺層網絡包含更多的特征,也具備提取關鍵特征(如第一組特征圖里的第4張特征圖,提取出的是貓眼睛特征)的能力
      • 4. 相對而言,層數越深,提取的特征越具有代表性
      • 5. 圖像的分辨率是越來越小的

       

       

      VGG19網絡特征可視化

       

      代碼:

      # coding: utf-8
      from keras.applications.vgg19 import VGG19
      from keras.preprocessing import image
      from keras.applications.vgg19 import preprocess_input
      from keras.models import Model
      import numpy as np
      import matplotlib.pyplot as plt
      from pylab import *
      
      
      def get_row_col(num_pic):
          squr = num_pic ** 0.5
          row = round(squr)
          col = row + 1 if squr - row > 0 else row
          return row,col
      
      def visualize_feature_map(img_batch):
          feature_map = img_batch
          print feature_map.shape
      
          feature_map_combination=[]
          plt.figure()
      
          num_pic = feature_map.shape[2]
          row,col = get_row_col(num_pic)
      
          for i in range(0,num_pic):
              feature_map_split=feature_map[:,:,i]
              feature_map_combination.append(feature_map_split)
              plt.subplot(row,col,i+1)
              plt.imshow(feature_map_split)
              axis('off')
      
          plt.savefig('feature_map.jpg')
          plt.show()
      
          # 各個特征圖按1:1 疊加
          feature_map_sum = sum(ele for ele in feature_map_combination)
          plt.imshow(feature_map_sum)
          plt.savefig("feature_map_sum.jpg")
      
      
      if __name__ == "__main__":
          base_model = VGG19(weights='imagenet', include_top=False)
          # model = Model(inputs=base_model.input, outputs=base_model.get_layer('block1_pool').output)
          # model = Model(inputs=base_model.input, outputs=base_model.get_layer('block2_pool').output)
          # model = Model(inputs=base_model.input, outputs=base_model.get_layer('block3_pool').output)
          # model = Model(inputs=base_model.input, outputs=base_model.get_layer('block4_pool').output)
          model = Model(inputs=base_model.input, outputs=base_model.get_layer('block5_pool').output)
      
          img_path = '001.jpg'
          img = image.load_img(img_path)
          x = image.img_to_array(img)
          x = np.expand_dims(x, axis=0)
          x = preprocess_input(x)
          block_pool_features = model.predict(x)
          print(block_pool_features.shape)
      
          feature = block_pool_features.reshape(block_pool_features.shape[1:])
      
          visualize_feature_map(feature)

       

      從第一到第五層的特征圖分別如下:

       

      從第一層到第五層各特征圖按1:1比例融合后特征依次為:

      posted on 2018-07-27 23:23  未雨愁眸  閱讀(7305)  評論(1)    收藏  舉報
      主站蜘蛛池模板: 久久精品欧美日韩精品| 乱色欧美激惰| 精品无码成人久久久久久| 亚洲高清国产拍精品5G| 江永县| 亚洲码和欧洲码一二三四| 国产超碰无码最新上传| 国产在线拍揄自揄拍无码视频| 男人和女人高潮做爰视频| 无套内谢少妇一二三四| 乱码精品一区二区三区| 在线aⅴ亚洲中文字幕 | 人妻无码中文专区久久app| 福利在线视频一区二区| 久久人人爽人人爽人人片av| 高清自拍亚洲精品二区| 国产国语毛片在线看国产| 91密桃精品国产91久久| 熟女少妇精品一区二区| 亚洲中文字幕有综合久久| 免费无码黄十八禁网站| 97国产成人无码精品久久久| 日韩av在线一区二区三区| 日韩亚洲欧美中文高清| 国产亚洲国产精品二区| 无码人妻一区二区三区线| 日韩 欧美 亚洲 一区二区| 国产成人亚洲欧美二区综合| 久久亚洲精品亚洲人av| 伊人精品成人久久综合97| 中文字幕在线视频不卡一区二区 | 国产超碰无码最新上传| 亚洲伊人成无码综合网| 亚洲av鲁丝一区二区三区黄| 久久人与动人物a级毛片 | 国产成人无码av一区二区| jizzjizz少妇亚洲水多| 欧美成人猛片aaaaaaa| 日韩av毛片福利国产福利| 人妻少妇邻居少妇好多水在线| 日韩人妻无码一区二区三区99|