Caffe 特征图可视化
来源:互联网 发布:react set state 源码 编辑:程序博客网 时间:2024/05/17 06:30
特征图即网络在前向传播阶段的各层输出。 http://blog.csdn.net/u012938704/article/details/52767695
这里使用一个训练过的CaffeNet模型对一张猫的图片进行分类,使用matlab绘制出卷积层的特征图。
今天在使用matcaffe时遇到了CUDNN_STATUS_ARCH_MISMATCH的错误,根据http://blog.csdn.net/songyu0120/article/details/43233907,无奈之下禁止了cudnn加速,重新编译了一下Caffe。
关于matcaffe接口的使用参考这篇博文http://blog.csdn.net/ws_20100/article/details/50525879
代码参照《21天实战Caffe》与Caffe官方示例classification_demo.m。
程序包含三个文件:featuremap_visualize.m;visualize_feature_maps.m;prepare_image.m。均放在Caffe根目录下。
featuremap_visualize.m
clear;clc;close all;addpath('matlab');caffe.set_mode_cpu();model_dir = 'models/bvlc_reference_caffenet/';net_model = [model_dir 'deploy.prototxt'];net_weights = [model_dir 'bvlc_reference_caffenet.caffemodel'];phase = 'test'; % run with phase test (so that dropout isn't applied)% Initialize a networknet = caffe.Net(net_model, net_weights, phase);im=imread('examples/images/cat.jpg');figure();imshow(im);title('Original Image');input_data={prepare_image(im)};scores=net.forward(input_data);blob_names={'data','conv1','conv2','conv3','conv4','conv5'};for i=1:length(blob_names) visualize_feature_maps(net,blob_names{i},1);end
prepare_image.m
function crops_data = prepare_image(im)% ------------------------------------------------------------------------% caffe/matlab/+caffe/imagenet/ilsvrc_2012_mean.mat contains mean_data that% is already in W x H x C with BGR channelsd = load('matlab/+caffe/imagenet/ilsvrc_2012_mean.mat');mean_data = d.mean_data;IMAGE_DIM = 256;CROPPED_DIM = 227;% Convert an image returned by Matlab's imread to im_data in caffe's data% format: W x H x C with BGR channelsim_data = im(:, :, [3, 2, 1]); % permute channels from RGB to BGRim_data = permute(im_data, [2, 1, 3]); % flip width and heightim_data = single(im_data); % convert from uint8 to singleim_data = imresize(im_data, [IMAGE_DIM IMAGE_DIM], 'bilinear'); % resize im_dataim_data = im_data - mean_data; % subtract mean_data (already in W x H x C, BGR)% oversample (4 corners, center, and their x-axis flips)crops_data = zeros(CROPPED_DIM, CROPPED_DIM, 3, 10, 'single');indices = [0 IMAGE_DIM-CROPPED_DIM] + 1;n = 1;for i = indices for j = indices crops_data(:, :, :, n) = im_data(i:i+CROPPED_DIM-1, j:j+CROPPED_DIM-1, :); crops_data(:, :, :, n+5) = crops_data(end:-1:1, :, :, n); n = n + 1; endendcenter = floor(indices(2) / 2) + 1;crops_data(:,:,:,5) = ... im_data(center:center+CROPPED_DIM-1,center:center+CROPPED_DIM-1,:);crops_data(:,:,:,10) = crops_data(end:-1:1, :, :, 5);
visualize_feature_maps.m
function []=visualize_feature_maps(net,blob_name,space)%space 为 特征图之间的间距blob=net.blobs(blob_name).get_data();blob_width=max(size(blob,1),size(blob,2));ceil_width=blob_width+space;channels=size(blob,3);ceil_num=ceil(sqrt(channels));%每行或每列特征图个数Map=zeros(ceil_width*ceil_num,ceil_width*ceil_num);for u=1:ceil_num for v=1:ceil_num w=zeros(blob_width,blob_width); if(((u-1)*ceil_num+v)<=channels) w=blob(:,:,(u-1)*ceil_num+v,1)'; w=w-min(min(w));%保证为非负数 w=w/max(max(w))*255;%归一化 end Map(ceil_width*(u-1)+(1:blob_width),ceil_width*(v-1)+(1:blob_width))=w; endendMap=uint8(Map);figure();imshow(Map);colormap(jet);caxis([0 255]);%伪彩色显示colorbar;title(blob_name);
阅读全文
0 0
- Caffe 特征图可视化
- Caffe 特征图可视化
- 【Caffe特征图可视化】【caffemodel 权重图】
- Caffe CNN特征可视化
- Caffe CNN特征可视化
- caffe特征可视化
- Caffe CNN特征可视化
- Caffe CNN特征可视化
- Caffe 的可视化 (四) 特征图的可视化
- 【Caffe特征图可视化】【权重图weight】【特征图feat】
- caffe之特征图可视化及特征提取
- 基于caffe的特征可视化
- CAFFE提取特征并可视化
- caffe提取特征并可视化
- caffe matlab接口特征可视化
- CAFFE提取特征并可视化
- 【caffe-matlab】权重以及特征图的可视化
- windows下caffe特征图可视化之前的配置
- 提高网站(web应用)访问速度的几点建议(前端)
- [51nod1810]连续区间
- linux中的ethtool命令
- day_03 DayOff
- java笔记作业
- Caffe 特征图可视化
- 专题:强大的运算工具——矩阵
- C++派生类中如何初始化基类对象
- Python之列表应用
- SSM框架整合
- 【专题】归并排序
- C++继承中关于子类构造函数的写法
- Java读写Excel之POI超入门 Apache POI 是用Java编写的免费开源的跨平台的 Java API,Apache POI提供API给Java程式对Microsoft Office格式
- [2017湖南集训7-8]暗牧 虚树+最短路