【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 ...
随机推荐
- 主机ping不通虚拟机,但是虚拟机能ping通主机
一.虚拟机网络连接方式选择Nat 二. 关闭Linux防火墙命令:service iptables stop / service firewalld stop 查看Linux防火墙状态命令:servi ...
- Session挂起
异常信息: toString() unavailable - no suspended threads 使用Spring管理 ,在使用hibernate时使用如下语句Session session = ...
- [leetcode] permutations 排列
写了两个,一个是直接的递归实现: class Solution { public: void swap(vector<int> &num,int left,int right) { ...
- 标准C程序设计七---113
Linux应用 编程深入 语言编程 标准C程序设计七---经典C11程序设计 以下内容为阅读: <标准C程序设计>(第7版) 作者 ...
- Keep-Alive 长连接(转载)
短连接与长连接 通俗来讲,浏览器和服务器每进行一次通信,就建立一次连接,任务结束就中断连接,即短连接.相反地,假如通信结束(如完成了某个HTML文件的信息获取)后保持连接则为长连接.在HTTP/1.0 ...
- poj 3204(最小割--关键割边)
Ikki's Story I - Road Reconstruction Time Limit: 2000MS Memory Limit: 131072K Total Submissions: 7 ...
- React native 横滑效果
import { Component } from 'react'; import { StyleSheet, View, Text, TouchableOpacity, ScrollView, Di ...
- Echarts-之显示百分比
对于使用echarts要显示百分比,要改两个地方,第一个地方时坐标轴显示为百分比的格式,第二个是让值以百分比的形式显示,如50,在图上面显示为50%. yAxis: [ { type: 'value' ...
- 嗅探X-Windows服务按键工具xspy
嗅探X-Windows服务按键工具xspy X-Windows完整名字是X Windows图形用户接口.它是一种计算机软件系统和网络协议.它为联网计算机提供了一个基础的图形用户界面(GUI)和丰富 ...
- Spring MVC中@RequestParam/@RequestBody/@RequestHeader的用法收集(转)
简介: handler method参数绑定常用的注解,我们根据他们处理的Request的不同内容部分分为四类:(主要讲解常用类型) A.处理requet uri部分(这里指uri template中 ...