1. 程式人生 > >【15】視覺化:初識資料視覺化

【15】視覺化:初識資料視覺化

因為csdn不支援檔案直接顯示,寫ipynb檔案有些難受,所以先把檔案託管到我的github裡面,可從github瀏覽。

首先將caffe的根目錄作為當前目錄,然後載入caffe程式自帶的小貓圖片,並顯示。

圖片大小為360x480,三通道

import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
import caffe
caffe_root='/home/yeler82/caffe/'
import os,sys
os.chdir(caffe_root)
sys.path.insert(0,caffe_root+'python')
im = caffe.io.load_image('examples/images/cat.jpg')
print im.shape
plt.imshow(im)
plt.axis('off')

當我嘗試顯示圖片的時候報了這個錯誤'module' object has no attribute 'to_rgba' 

谷歌了一下,應該是matplotlib版本問題,於是檢視其版本

然後嘗試更新matplotlib版本,執行以下命令,一定是要更新python2使用的matplotlib版本

sudo pip install -U matplotlib

然後我們將jupyter notebook重啟一下,發現ok了。

開啟examples/net_surgery/conv.prototxt檔案,修改兩個地方

一是將input_shape由原來的是(1,1,100,100)修改為(1,3,100,100),即由單通道灰度圖變為三通道彩色圖。

二是將過濾器個數(num_output)由3修改為16,多增加一些filter, 當然保持原來的數不變也行。

其它地方不變,修改後的prototxt如下:只有一個卷積層

! cat examples/net_surgery/conv.prototxt

 

# Simple single-layer network to showcase editing model parameters.
name: "convolution"
input: "data"
input_shape {
  dim: 1
  dim: 3
  dim: 100
  dim: 100
}
layer {
  name: "conv"
  type: "Convolution"
  bottom: "data"
  top: "conv"
  convolution_param {
    num_output: 16
    kernel_size: 5
    stride: 1
    weight_filler {
      type: "gaussian"
      std: 0.01
    }
    bias_filler {
      type: "constant"
      value: 0
    }
  }
}

將圖片資料載入到blobs,但反過來,我們也可以反過來從blob中提取出原始資料,並進行顯示。

顯示的時候要注意各維的順序,如blobs的順序是(1,3,360,480),從前往後分別表示1張圖片,3三個通道,圖片大小為360x480,需要呼叫transpose改變為(360,480,3)才能正常顯示。

其中用data[0]表示第一張圖片,下標從0開始,此例只有一張圖片,因此只能是data[0]。分別用data[0,0],data[0,1]和data[0,2]表示該圖片的三個通道。

這是16個濾波器的視覺化結果。

這是圖片經過卷積的結果