【caffe-Windows】识别率批量输出——matlab实现

前言

今天看到群里有人问”用matlab输出测试集的精度“,瞎试了一下,好像还成功了。主要还是依据前面所有在matlab中操作caffe的博客。

这里说一下:classification.m是适用单张图片的精度,类似于classification.exe的功能;这里要做的是在matlab中实现caffe.exe test的功能,也就是批量输出精度

分析

根据caffe.exe testclassification.m的流程,很容易想到,直接把训练时候所用的prototxt丢进去,对比classification.m中调用caffe.Net(model,wights,'test')的思路,试试当model为train_test.prototxt而非deploy.prototxt的效果。然后按照前面caffe在matlab中训练的方法,进行一次前向计算,当然此前向计算需要数据已经载入网络中,而非像classification一样挨个输入。z最后按照前面可视化权重的博客,提取最后一层的accuracy就行了。

流程

  • 将数据集,也就是一堆图片,利用convert的那个exe转换为lmdb格式
  • 在prototxt中更改测试部分的输入为你所转换的lmdb路径
  • 细节调整,比如你有没有均值文件,加入到prototxt中
  • 加载模型,命令caffe.Net
  • 前向计算forward_prefilled命令
  • 利用blob取最后一层accuracy的值

代码书写

  • 数据集转换

以mnist为例,测试集的lmdb文件在前面已经制作出来了,如果是你自己的图片,可以看前面转换数据集的博客。

  • 模型结构

直接使用原始的lenet_train_test.prototxt,测试集部分内容为你自己的转换数据集

layer {name: "mnist"type: "Data"top: "data"top: "label"include {phase: TEST}transform_param {scale: 0.00390625}data_param {source: "mnist_test_leveldb"batch_size: 100backend: LEVELDB}
}

其中有一个参数batch_size表示一次性测试多少数据量的准确率, 由于mnist测试集共有一万张图片, 所以测试次数为1000/100=100, 使用批处理方式测试

..\..\Build\x64\Release\caffe.exe test -model=lenet_train_test.prototxt -weights=lenet_iter_10000.caffemodel -iterations=100
pause
  • 写代码
clear
clc
close allif exist('../../+caffe', 'dir')addpath('../..');
elseerror('Please run this demo from caffe/matlab/demo');
end
caffe.reset_all
% Set caffe mode
if exist('use_gpu', 'var') && use_gpucaffe.set_mode_gpu();gpu_id = 0;  % we will use the first gpu in this democaffe.set_device(gpu_id);
elsecaffe.set_mode_cpu();
end% model_dir = '../mnist_data/';
% net_model = [model_dir 'lenet.prototxt'];
model_dir = './';
net_model = [model_dir 'lenet_train_test.prototxt'];
net_weights = [model_dir 'lenet_iter_10000.caffemodel'];if ~exist(net_weights, 'file')error('Please download CaffeNet from Model Zoo before you run this demo');
end% Initialize a network
net = caffe.Net(net_model, net_weights, 'test');
acc=[];
for i=1:100net.forward_prefilledacc=[acc; net.blobs('accuracy').get_data()];
end
acc

看看使用caffe.exe test的命令和我们的输出acc的结果对应与否

这里写图片描述

应该是对应的吧,手动滑稽。

【注】记得刚才说的batchsize吧,看代码倒数第三行,有一个for循环,这里写的100,意思就是图片总数除以batchsize,得到的结果就是这个for循环的上限。

源代码各种文件打包放送

http://download.csdn.net/download/zb1165048017/9994062

直接运行里面的caffe_test.m即可,注意自己caffe的matlab接口一定要配置好。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/246655.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

相机矩阵(Camera Matrix)

前言 最近翻阅关于从2D视频或者图片中重构3D姿态的文章及其源码,发现都有关于摄像机参数的求解,查找了相关资料,做一下笔记。 国际惯例,来一波参考网址 透视变换、透镜畸变及校正模型、相机校正(Camera Calibration)、Matlab相…

损失函数梯度对比-均方差和交叉熵

前言 我们都知道在机器学习中,希望算法或者网络收敛更快,有些是对数据预处理,尤其是Batch Normalization,有些是采用不同的激活函数,尤其是Relu激活函数取得了巨大的成功,还有一种加速收敛方法是更换损失函…

如何选择深度学习优化器

前言 转载地址:如何选择深度学习优化器 作者:不会停的蜗牛 CSDN AI专栏作家 在很多机器学习和深度学习的应用中,我们发现用的最多的优化器是 Adam,为什么呢? 下面是 TensorFlow 中的优化器, https://w…

【caffe-Windows】基于Python多标签方法——VOC2012数据集

前言 按照上一篇博客所遗留的话题:多标签分类,进行初步探索,此篇博客针对caffe官网的多分类进行配置,只不过是Python接口的,不过官网在开头说明可以使用HDF5或者LMDB进行操作,只不过Python更加方便罢了 国…

【theano-windows】学习笔记二——theano中的函数和共享参数

前言 上一篇博客中学到了theano中的变量类型,也就是dscalar、dvector之类的, 然后还有一个theano.function和eval函数, 将我们所定义的操作转换成theano可执行的函数,类似于def, 还有就是简单的线性代数运算操作。 在神经网络(NN)中, 我们声明了权重、…

【theano-windows】学习笔记三——theano中的导数

前言 就一个NN而言,包含梯度、偏置、参数更新,而前面第一篇博客学习了theano中符号变量的定义, 第二篇博客学习了变量的随机初始化, 变量之间的互相操作(类似于sigmoid(w∗xb)), 但是参数更新还应涉及到损失函数的偏导计算,这一章节就是看看…

【theano-windows】学习笔记五——theano中张量部分函数

前言 至此感觉应该可以写出一个logistic回归程序了,但是为了达到对theano中张量的更灵活的使用, 还是先看一下thenao.tensor对变量都提供了哪些操作,最全的文档戳这里或者这里, 这里就稍微摘取一点自我感觉以后可能用得多的函数 基本张量函数 创建张量…

【theano-windows】学习笔记六——theano中的循环函数scan

前言 Scan是Theano中最基础的循环函数, 官方教程主要是通过大量的例子来说明用法. 不过在学习的时候我比较习惯先看看用途, 然后是参数说明, 最后再是研究实例. 国际惯例, 参考网址 官网关于Scan的11个例子 官网更全面的介绍 简介 用途 递归的一般形式, 可以被用于循环s…

【theano-windows】学习笔记九——softmax手写数字分类

前言 上一篇博客折腾了数据集的预备知识, 接下来按照官方的Deep learning 0.1 documentation一步步走, 先折腾softmax, 关于softmax和logistic回归分类的联系, 我在之前写过一个小博客 国际惯例, 参考博客走一波: Classifying MNIST digits using Logistic Regression soft…

【theano-windows】学习笔记十——多层感知机手写数字分类

前言 上一篇学习了softmax, 然后更进一步就是学习一下基本的多层感知机(MLP)了. 其实多层感知机同时就是w*xb用某个激活函数激活一下, 得到的结果作为下一层神经元的输入x, 类似于 output⋯f3(f2(f1(x∗w1b2)∗w2b2)∗w3b3)⋯output=\cdots f^3(f^2(f^1(x*w^1+b^2)*w^2+b^2)*…

【theano-windows】学习笔记十一——theano中与神经网络相关函数

前言 经过softmax和MLP的学习, 我们发现thenao.tensor中除了之前的博客【theano-windows】学习笔记五——theano中张量部分函数提到的张量的定义和基本运算外, 还有一个方法称为nnet, 如果自己实现过前面两篇博客中的代码就会发现用到了theano.tensor.nnet.sigmoid和thenao.te…

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

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

【theano-windows】学习笔记十二——卷积神经网络

前言 按照进度, 学习theano中的卷积操作 国际惯例, 来一波参考网址 Convolutional Neural Networks (LeNet) 卷积神经网络如何应用在彩色图像上? 卷积小知识 三大特性:局部感知(稀疏连接), 权值共享, 池化 上图很重要, 描述的是前一个隐层m-1具有四…

【theano-windows】学习笔记十三——去噪自编码器

前言 上一章节学习了卷积的写法,主要注意的是其实现在theano.tensor.nnet和theano.sandbox.cuda.dnn中都有对应函数实现, 这一节就进入到无监督或者称为半监督的网络构建中. 首先是自编码器(Autoencoders)和降噪自编码器(denoising Autoencoders) 国际惯例, 参考网址: Denoi…

【theano-windows】学习笔记十四——堆叠去噪自编码器

前言 前面已经学习了softmax,多层感知器,CNN,AE,dAE,接下来可以仿照多层感知器的方法去堆叠自编码器 国际惯例,参考文献: Stacked Denoising Autoencoders (SdA) Greedy Layer-Wise Training of Deep Networks 理…

【theano-windows】学习笔记十五——受限玻尔兹曼机

前言 终于到了最喜欢的模型: 受限玻尔兹曼机(RBM)了, 发现关于RBM是如何从能量模型发展过来的介绍非常不错, 而关于详细理论证明, 可以去看我前面的受限玻尔兹曼机的一系列博客. 国际惯例, 参考博客,超级强推第二个博客, 证明过程很给力: Restricted Boltzmann Machines (R…

【Ogre-windows】环境配置

前言 由于工程原因, 学习一下Ogre面向对象图形渲染开源引擎, 慢慢爬坑吧。首先还是环境的配置问题哎. 其实最重要的是要预先编译三方库, 虽然官方说可以自动编译, 但是在自己电脑上还是出现了无法解析外部符号之类的问题, 正常情况下我就认为是三方库的lib出现了问题, 最后额外…

【theano-windows】学习笔记十六——深度信念网络DBN

前言 前面学习了受限玻尔兹曼机(RBM)的理论和搭建方法, 如果稍微了解过的人, 肯定知道利用RBM可以堆叠构成深度信念网络(deep belief network, DBN)和深度玻尔兹曼机(deep Boltzmann machine), 这里就先学习一下DBN. 国际惯例, 参考博文: Deep Belief Networks A fast lear…

【Ogre-windows】实例配置

前言 折腾了好久才搞定教程实例, 主要是因为上一篇博客安装的具体版本是Ogre1.10.9, 而官方的Ogre Wiki Tutorial Framework没有指定具体版本, 如果单纯下载Ogre Wiki Tutorial Framework 1.10 - (Windows line endings, updated 2015-10-15) 运行, 基本会血崩. 所以, 在经过仔…

【Ogre-windows】旋转矩阵及位置解析

前言 这篇博客主要针对三种问题 如何创建动画帧如何获取全局位置如何计算全局旋转矩阵 仿真环境为VS2013Ogre1.10.9与matlab验证 创建动画帧 这里只做一个简单的实验: 将自带的人物模型Jaiqua的run运动给新创建的运动myrun中并播放,直接贴代码了 void JaiQua:…