【caffe-windows】 caffe-master 之 卷積核可視化(利用matlab)


此篇是利用matlab對caffemodel的卷積核進行可視化。只介紹了卷積核的可視化,不涉及特征圖的可視化。 
是參考此博客: http://blog.csdn.net/zb1165048017/article/details/52643188

前期准備,需要兩個東西 
1. 模型的描述文件 deploy.prototxt 
2. 模型本身lenet_iter_10000.caffemodel (此處用的examples中的mnist里的)

第一步:

在創建D:\caffe-master\matlab\demo 下創建 visualizing.m

clc clear addpath('..') % 加入+caffe路徑 caffe.set_mode_cpu() ;% 設置CPU模式 model = 'D:/caffe-master/examples/mnist/lenet.prototxt'; % 模型描述 weights = 'D:/caffe-master/examples/mnist/lenet_iter_10000.caffemodel'; % 參數 net = caffe.Net(model,'test'); % 讀取net weight_partvisual( net, 1,1) % 調用部分顯示函數 weight_partvisual( net,layer_num ,channels_num ) % layer_num是第幾個卷積層, channels_num 表示 % 顯示第幾個通道的卷積核,取值范圍為 (0,上一層的特征圖數) 

第二步:

在創建D:\caffe-master\matlab\demo 下創建weight_partvisual.m

function [ ] = weight_partvisual( net,layer_num ,channels_num ) layers=net.layer_names; convlayer=[]; for i=1:length(layers) if strcmp(layers{i}(1:3),'con') convlayer=[convlayer;layers{i}]; end end w=net.layers(convlayer(layer_num,:)).params(1).get_data(); b=net.layers(convlayer(layer_num,:)).params(2).get_data(); w=w-min(w(:)); w=w/max(w(:))*255; weight=w(:,:,channels_num,:);%四維,核長*核寬*核左邊輸入*核右邊輸出(核個數) [kernel_r,kernel_c,input_num,kernel_num]=size(w); map_row=ceil(sqrt(kernel_num));%行數 map_col=map_row;%列數 weight_map=zeros(kernel_r*map_row,kernel_c*map_col); kernelcout_map=1; for i=0:map_row-1 for j=0:map_col-1 if kernelcout_map<=kernel_num weight_map(i*kernel_r+1+i:(i+1)*kernel_r+i,j*kernel_c+1+j:(j+1)*kernel_c+j)=weight(:,:,:,kernelcout_map); kernelcout_map=kernelcout_map+1; end end end figure hAxe=axes('Parent',gcf,... % 設置新的axe, 將'parent' 屬性設置為當前窗口gcf 'Units','pixels',... %設置單位為pixels 'Position',[500 0 605 705]); % 指定axe的位置 left和bottom設定了axe的左下角坐標,width和height設定了窗口的寬度和高度 axes(hAxe); imshow(uint8(weight_map)) str1=strcat('weight num:',num2str(kernelcout_map-1)); title(str1) end 

運行 visualizing.m

結果如圖: 
這里寫圖片描述

感覺看不出什么規律來,是否因為mnist圖像太小? 而像訓練imagenet時模型輸入是 256*256,因此訓練得到的卷積核看起來有一些規律(類似邊緣)。

PS: 這里用的是將 權值(w -min(w) / max(w) ) *255 
這個原理沒搞明白,如果有清楚的同學告訴我吧,THX~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM