转载请注明出处,楼燚(yì)航的blog,http://www.cnblogs.com/louyihang-loves-baiyan/

以下部分代码是根据caffe的python接口,从一次forword中取出param和blob里面的卷积核 和响应的卷积图。

import numpy as np
import matplotlib.pyplot as plt
import os
import caffe
import sys
import pickle
import cv2caffe_root = '../'  deployPrototxt =  '/home/chenjie/louyihang/caffe/models/bvlc_reference_caffenet/deploy_louyihang.prototxt'
modelFile = '/home/chenjie/louyihang/caffe/models/bvlc_reference_caffenet/caffenet_carmodel_louyihang_iter_50000.caffemodel'
meanFile = 'python/caffe/imagenet/ilsvrc_2012_mean.npy'
imageListFile = '/home/chenjie/DataSet/CompCars/data/train_test_split/classification/test_model431_label_start0.txt'
imageBasePath = '/home/chenjie/DataSet/CompCars/data/cropped_image'
resultFile = 'PredictResult.txt'#网络初始化
def initilize():print 'initilize ... 'sys.path.insert(0, caffe_root + 'python')caffe.set_mode_gpu()caffe.set_device(4)net = caffe.Net(deployPrototxt, modelFile,caffe.TEST)return net#取出网络中的params和net.blobs的中的数据
def getNetDetails(image, net):# input preprocessing: 'data' is the name of the input blob == net.inputs[0]transformer = caffe.io.Transformer({'data': net.blobs['data'].data.shape})transformer.set_transpose('data', (2,0,1))transformer.set_mean('data', np.load(caffe_root + meanFile ).mean(1).mean(1)) # mean pixeltransformer.set_raw_scale('data', 255)  # the reference model operates on images in [0,255] range instead of [0,1]transformer.set_channel_swap('data', (2,1,0))  # the reference model has channels in BGR order instead of RGB# set net to batch size of 50net.blobs['data'].reshape(1,3,227,227)net.blobs['data'].data[...] = transformer.preprocess('data', caffe.io.load_image(image))out = net.forward()#网络提取conv1的卷积核filters = net.params['conv1'][0].datawith open('FirstLayerFilter.pickle','wb') as f:pickle.dump(filters,f)vis_square(filters.transpose(0, 2, 3, 1))#conv1的特征图feat = net.blobs['conv1'].data[0, :36]with open('FirstLayerOutput.pickle','wb') as f:pickle.dump(feat,f)vis_square(feat,padval=1)pool = net.blobs['pool1'].data[0,:36]with open('pool1.pickle','wb') as f:pickle.dump(pool,f)vis_square(pool,padval=1)# 此处将卷积图和进行显示,
def vis_square(data, padsize=1, padval=0 ):data -= data.min()data /= data.max()#让合成图为方n = int(np.ceil(np.sqrt(data.shape[0])))padding = ((0, n ** 2 - data.shape[0]), (0, padsize), (0, padsize)) + ((0, 0),) * (data.ndim - 3)data = np.pad(data, padding, mode='constant', constant_values=(padval, padval))#合并卷积图到一个图像中data = data.reshape((n, n) + data.shape[1:]).transpose((0, 2, 1, 3) + tuple(range(4, data.ndim + 1)))data = data.reshape((n * data.shape[1], n * data.shape[3]) + data.shape[4:])print data.shapeplt.imshow(data)if __name__ == "__main__":net = initilize()testimage = '../data/MyTest/visualize_test.jpg'getNetDetails(testimage, net)

输入的测试图像

第一层的卷积核和卷积图,可以看到一些明显的边缘轮廓,左侧是相应的卷积核

第一个Pooling层的特征图

第二层卷积特征图

第二层pooling的特征图,可以看到pooling之后,对conv的特征有部分强化,我网络中使用的max-pooling,但是到了pooling2已经出现一些离散的块了,已经有些抽象了,难以看出什么东西

caffe显示特征图相关推荐

  1. 神经网络一键可视化!这个AI神器可以放大网络中的任何一层,显示特征图!...

    点击下方卡片,关注"CVer"公众号 AI/CV重磅干货,第一时间送达 行早 发自 凹非寺 来源:量子位(QbitAI) 神经网络在工作的时候,里面到底是什么样? 为了能透视这个& ...

  2. caffe之特征图可视化及特征提取

    上一篇博客,介绍了怎么对训练好的model的各层权重可视化,这篇博客,我们介绍测试图片输入网络后产生的特征图的可视化 记得上篇中,我们是写了一个新的文件test.cpp,然后编译运行那个文件的,这是因 ...

  3. 【caffe-windows】全卷积网络特征图分析

    前言 突然就想分析一下全卷积网络的转置卷积部分了, 就是这么猝不及防的想法, 而且这个网络对图片的输入大小无要求,这么神奇的网络是时候分析一波了,我个人的学习方法调试代码,然后对照论文看理论 本次分析 ...

  4. pytorch可视化 resnet50特征图

    参考:https://blog.csdn.net/u012435142/article/details/84711978 Python可视化resnet50所有层特征图 使用pytorch中预训练模型 ...

  5. caffe for windows的matlab接口(四):权重和特征图可视化的一个例子

    模型读取 参照三,想实现一个自己图像的可视化过程: 首先我发现自己训练出的model没有deploy文件.查阅了下:"如果要把训练好的模型拿来测试新的图片,那必须得要一个deploy.pro ...

  6. caffe for windows的matlab接口(三):权重和特征图的可视化

    模型读取 读取bvlc_reference_caffenet 的模型结构以及训练好的参数,注意此处的模型结构为deploy,而非train时候的. caffe.set_mode_cpu();%设置CP ...

  7. 收藏 | PyTorch模型训练特征图可视化(TensorboardX)

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 仅作学术分享,不代表本公众号立场,侵权联系删除 转载于:作者丨Pa ...

  8. Caffe CNN特征可视化

    Caffe CNN特征可视化 转载请注明出处,楼燚(yì)航的blog,http://www.cnblogs.com/louyihang-loves-baiyan/ 以下部分代码是根据caffe的py ...

  9. 【caffe-matlab】权重以及特征图的可视化

    前言 移植了各种caffe,是时候进行下一步操作了,先拿可视化下手吧.大部分内容可能跟网上的方法不一样,大家看完我的博客最好去网上看看大牛们的博客,万一被我误导了,就罪过了o(╯□╰)o,开更.... ...

最新文章

  1. BUUCTF--[VN2020 公开赛]拉胯的三条命令
  2. poj 3616(简单dp)
  3. 引入Spacy模块出错—OSError: [E941] Can‘t find model ‘en‘.
  4. rowid 对应mysql_请教一下相当于MySQL中Oracle的RowID
  5. 美团点评CTO罗道锋确认离职,新东家是快手?
  6. WinAPI使用: 时间,线程,中断
  7. ENVI中正射校正说明
  8. Docker热点文章链接 - 持续更新
  9. C#起步:WinForm当中的字符
  10. 双11 iPhone再降价:24期免息 四舍五入等于不要钱!
  11. Kotlin入门(10)七十二变的输入参数
  12. java 方法详解_Java方法详解
  13. 中国电信第三大IDC机房落户南海
  14. 信捷XC系列PLC-编程
  15. 创作短视频怎么去除素材水印?
  16. 樊登读书会掌控读后感_樊登读后感悟,樊登读书会《爆款》读后感
  17. 边境的悍匪—机器学习实战:第三章 分类
  18. 5G笔记| 概述:5G三大应用场景、5G关键技术概览
  19. CANopen基本原理及其应用(二)——对象字典和通讯机制
  20. 学计算机语言需要英语基础吗,数学和英语不好的人能学编程吗?

热门文章

  1. java acm 母牛的故事_acm母牛的故事 的问题
  2. Placement new的用法及用途
  3. Content-Type, Data-Type
  4. mysql中如何将一个表中的部分记录合并,MySQL数据库将多条记录的单个字段合并成一条记录_MySQL...
  5. fft 重叠加法_FFT重叠相加法 参数如何定 h M?
  6. audio标签的controls属性_HTML5 之视频 video新标签
  7. 湖南c语言高考试卷及答案,2018年湖南省对口高考C语言试题(包含答案).docx
  8. php mysql 超时时间_php mysql超时设置方法
  9. 火锅店市场容量或变化趋势_2020-2026年中国氮肥市场深度研究与投资前景预测报告...
  10. 两个奇技淫巧,将 Docker 镜像体积减小 99%