【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個濾波器的視覺化結果。
這是圖片經過卷積的結果