上一篇博客中介绍了如何使用MATLAB训练和测试数据,这篇博客介绍如何从训练好的模型中提取图像特征,并介绍把卷积层特征可视化方法。
之前提取特征都是用python,尽管用python提取特征很方便,但是感觉MATLAB提取特征更方便,因为博主对MATLAB比较熟悉,对python不太熟悉,,,,,,可视化部分我参考了http://www.2cto.com/kf/201609/550879.html,特征提取是我自己总结的,这个博客里还介绍了权重的可视化,大家自己去拜读一下吧。
开始train(最近博客审核的好慢啊)
1、提取特征
当把图像数据forward之后,所有的数据都存在了blob当中,所以只需要从blob当中把数据提取出来即可,
names=net.blob_names; %网络每一层的名字
featuremap=net.blobs(names{mapnum}).get_data();%获取指定层的特征图,mapnum需要自己指定,既哪一层
把names输出得到结果
这是每一层的名字,featuremap=net.blobs(names{mapnum}).get_data();
featuremap就是指定层的特征图,计算一个featuremap的大小,发现这是一个4维数据:
[m_size,n_size,num,crop]=size(featuremap) %获取特征图大小,长*宽*卷积核个数*通道数
通道数就是上一篇博客里介绍的crop之后的10张图。m_size,n_size,num,crop分别代表feature map的长,宽,卷积核个数和通道数。
如果我们想要提取其中一张c