【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~

时间: 2025-01-18 11:49:41

【caffe-windows】 caffe-master 之 卷积核可视化(利用matlab)的相关文章

windows+caffe(二)——图片转换为levedb格式

借鉴于langb2014的  http://blog.csdn.net/langb2014/article/details/50458520 与liukailun09的  http://blog.csdn.net/liukailun09/article/details/51119052 1.数据 下载:来自langb2014大神的数据:http://pan.baidu.com/s/1nuqlTnN 数据介绍: 共有500张图片,分为大巴车.恐龙.大象.鲜花和马五个类,每个类100张.编号分别以3

caffe windows配置

windows+caffe+vs2013+cuda6.5配置记录 http://www.bubuko.com/infodetail-902302.html caffe+windows7+vs2013配置 http://blog.csdn.net/tjusxh/article/details/48463409 Caffe配置指南 on Windows8.1+CUDA6.5+VS2013  http://www.wtoutiao.com/p/q78qy6.html caffe windows 学习第

caffe windows学习:第一个测试程序

caffe windows编译成功后,就可以开始进行测试了.如果还没有编译成功的,请参考:caffe windows 学习第一步:编译和安装(vs2012+win 64) 一般第一个测试都是建议对手写字体minist进行识别.这个测试放在根目录下的 .\examples\mnist\ 文件夹内. 1.下载数据.程序本身不带测试数据,需要去下载,测试数据为leveldb格式.你可以直接双击运行“get_mnist_leveldb.bat”  这个脚本自动下载数据,但一般都不成功,可能里面的网址被墙

caffe windows编译

MicroSoft维护的caffe已经作为官方的caffe分支了,编译方式也改了,刚好最近重装了一次caffe windows, 记录一下里面的坑 https://github.com/BVLC/caffe/tree/windows 安装有两种方案: 方案一:使用vs2015,缺点要最新的win10才能安装vs2015,故不推荐该方案 1. 把build_win.cmd 中的with_ninja的1,都改为0 2.手动下载libraries_v140_x64_py27_1.0.1.tar.bz2

Windows Caffe中MNIST数据格式转换实现

Caffe源码中src/caffe/caffe/examples/mnist/convert_mnist_data.cpp提供的实现代码并不能直接在Windows下运行,这里在源码的基础上进行了改写,使其可以直接在Windows 64位上直接运行,改写代码如下: #include "stdafx.h" #include <gflags/gflags.h> #include <glog/logging.h> #include <google/protobuf

windows+caffe+vs2013+cuda6.5配置记录

隔了大半年,因为论文的需要,又重新开始研究caffe.感谢niuzhiheng’s GitHub大神的贡献,caffe已经可以在Windows下使用了.参考了很多大神的博客,成功的在自己的笔记本配置好了Windows版本的caffe.现将自己的配置过程和配置中遇到的问题记录下来,希望能对大家有所帮助. 1.配置环境 我在自己的笔记本配置的caffe,配置的环境为:Windows 7 64位 + cuda6.5 + Opencv2.49 + VS2013.假设在配置caffe之前,你已经准备好这些

deep learning 利用MATLAB制作GUI的数字识别可视化界面

在前面几节讲过一些简单的深度神经网络分类器,由于CNNs(卷积神经网络)程序出来的识别率有一些问题需要,所以暂时还没有更新这一部分.这节我想介绍下利用MATLAB的GUI设计一个图形化界面的NMIST识别系统.界面其实很简单,如下所示: 下面我就将一步一步介绍如何做这个界面. 第一步:打开MATLAB→File→New→GUI,然后就会出现如下图示. 然后点击Blank GUI(Default),这是就创建了一个空白的untitled.fig,你可以把它保存在你想存的目录下面. 第二步:这是就需

利用MATLAB计算三维坐标序列距离误差程序

1.三维坐标储存在文件中,格式如下: 各坐标间的距离真值是一定值,计算相邻距离的标准差. 2.MATLAB程序如下: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 名称:caculateAccuracy.m % 功能:读取三维世界坐标,计算精度 % 作者:LYC % 单位:中科院苏州医工所 % 日期:2014.5.5 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

利用MATLAB生成模式类

最近开始了模式识别的学习,在此之前需要对模式和模式类的概念有一个了解,这里使用MATLAB实现一些模式类的生成.在此之前,引用百科上对于模式识别和模式类的定义,也算加深以下了解: 模式识别(Pattern Recognition):人类在日常生活的每个环节,从事着模式识别的活动.可以说每个有正常思维的人,在他没有入睡时都在进行模式识别的活动.坐公共汽车找汽车站,骑车判别可行进道路,对观察到的现象作出判断,对听到的声音作出反应,判断东西的好与坏以及水果的成熟与否等等都是人们判断是非,判别事物的过程