【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~
【caffe-windows】 caffe-master 之 卷积核可视化(利用matlab)的更多相关文章
- windows+caffe(二)——图片转换为levedb格式
借鉴于langb2014的 http://blog.csdn.net/langb2014/article/details/50458520 与liukailun09的 http://blog.cs ...
- caffe windows学习:第一个测试程序
caffe windows编译成功后,就可以开始进行测试了.如果还没有编译成功的,请参考:caffe windows 学习第一步:编译和安装(vs2012+win 64) 一般第一个测试都是建议对手写 ...
- caffe windows 学习第一步:编译和安装(vs2012+win 64)
没有GPU,没有linux, 只好装caffe的windows版本了. 我的系统是win10(64位),vs 2012版本,其它什么都没有装,因此会需要一切的依赖库. 其实操作系统只要是64位就行了, ...
- caffe windows编译
MicroSoft维护的caffe已经作为官方的caffe分支了,编译方式也改了,刚好最近重装了一次caffe windows, 记录一下里面的坑 https://github.com/BVLC/ca ...
- Caffe windows下安装攻略
Caffe 是一个高效的深度学习框架,鉴于不想折腾装个双系统,最近鼓捣了下用caffe源码在windows进行编译.非常感谢Yangqing Jia博士的caffe开源代码.Neil Z.Shao's ...
- 【caffe】Caffe的Python接口-官方教程-00-classification-详细说明(含代码)
00-classification 主要讲的是如何利用caffenet(与Alex-net稍稍不同的模型)对一张图片进行分类(基于imagenet的1000个类别) 先说说教程到底在哪(反正我是找了半 ...
- 【caffe】Caffe的Python接口-官方教程-01-learning-Lenet-详细说明(含代码)
01-learning-Lenet, 主要讲的是 如何用python写一个Lenet,以及用来对手写体数据进行分类(Mnist).从此教程可以知道如何用python写prototxt,知道如何单步训练 ...
- caffe编译环境的错误:..build_release/src/caffe/proto/caffe.pb.h:23:35: fatal error: google/protobuf/arena.h: 没有那个文件
在搭建caffe的环境时出现错误: .build_release/src/caffe/proto/caffe.pb.h:23:35: fatal error: google/protobuf/aren ...
- caffe/blob.hpp:9:34: fatal error: caffe/proto/caffe.pb.h: 没有那个文件或目录
You need to generate caffe.pb.h manually using protoc as follows. # In the directory you installed C ...
随机推荐
- Microsoft IIs tilde directory enumeration
漏洞标题: iis 短文件名列举漏洞 检测: https://code.google.com/p/iis-shortname-scanner-poc/ 查看扫描出来的目录,全是404 ,比 ...
- MockMvc详解
★ MockMvc - SpringMVC单元测试的独立测试: 一.简介 为何使用MockMvc? 对模块进行集成测试时,希望能够通过输入URL对Controller进行测试,如果通 ...
- 【POJ3352】Road Construction(边双联通分量)
题意:给一个无向图,问最少添加多少条边后能使整个图变成双连通分量. 思路:双连通分量缩点,缩点后给度为1的分量两两之间连边,要连(ans+1) div 2条 low[u]即为u所在的分量编号,flag ...
- 自己写的微信小程序炸金花简单版
app.json: { "pages":[ "pages/index/index" ], "window":{ "navigati ...
- iOS开发之手势gesture详解(二)
与其他用户界面控件交互 UIControl子类会覆盖parentView的gesture.例如当用户点击UIButton时,UIButton会接受触摸事件,它的parentView不会接收到.这仅适用 ...
- CDOJ 92 Journey LCA乱搞
原题链接:http://acm.uestc.edu.cn/#/problem/show/92 题意: 给你一棵树,然后在树上连接一条边.现在有若干次询问,每次问你两个点(u,v)之间的距离在加那条边之 ...
- Atcoder Grand Contest 024
A 略 B 略 C 略 D(构造分形) 题意: 给出一个由n个点的组成的树,你可以加一些点形成一个更大的树.对于新树中的两个点i和j,如果以i为根的树与以j为根的树是同构的那么i和j颜色可以相同.问最 ...
- mybatis ----SqlSessionManager
今天我们来看看这个类 有些写法还是很经典的 public class SqlSessionManager implements SqlSessionFactory, SqlSession { priv ...
- Linux进程调度(3):进程切换分析
3.调度函数schedule()分析 当kernel/sched.c:sched_tick()执行完,并且时钟中断返回时,就会调用kernel/sched.c:schedule()完成进程切换.我们 ...
- 漫谈深度学习时代点击率预估技术进展 &&深度学习在推荐系统上的发展
转载:https://www.infoq.cn/article/XA055tpFrprUy*0UBdCb https://www.zhihu.com/question/20830906/answer/ ...