【caffe-Windows】识别率批量输出——matlab实现
来源:互联网 发布:mysql log 文件位置 编辑:程序博客网 时间:2024/05/24 01:40
前言
今天看到群里有人问”用matlab输出测试集的精度“,瞎试了一下,好像还成功了。主要还是依据前面所有在matlab中操作caffe的博客。
这里说一下:classification.m
是适用单张图片的精度,类似于classification.exe
的功能;这里要做的是在matlab中实现caffe.exe test
的功能,也就是批量输出精度
分析
根据caffe.exe test
和classification.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: 100 backend: LEVELDB }}
其中有一个参数batch_size
表示一次性测试多少数据量的准确率, 由于mnist测试集共有一万张图片, 所以测试次数为1000/100=100, 使用批处理方式测试
..\..\Build\x64\Release\caffe.exe test -model=lenet_train_test.prototxt -weights=lenet_iter_10000.caffemodel -iterations=100pause
- 写代码
clearclcclose allif exist('../../+caffe', 'dir') addpath('../..');else error('Please run this demo from caffe/matlab/demo');endcaffe.reset_all% Set caffe modeif exist('use_gpu', 'var') && use_gpu caffe.set_mode_gpu(); gpu_id = 0; % we will use the first gpu in this demo caffe.set_device(gpu_id);else caffe.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 networknet = caffe.Net(net_model, net_weights, 'test');acc=[];for i=1:100 net.forward_prefilled acc=[acc; net.blobs('accuracy').get_data()];endacc
看看使用caffe.exe test
的命令和我们的输出acc
的结果对应与否
应该是对应的吧,手动滑稽。
【注】记得刚才说的batchsize吧,看代码倒数第三行,有一个for循环,这里写的100,意思就是图片总数除以batchsize,得到的结果就是这个for循环的上限。
源代码各种文件打包放送
http://download.csdn.net/download/zb1165048017/9994062
直接运行里面的caffe_test.m
即可,注意自己caffe的matlab接口一定要配置好。
- 【caffe-Windows】识别率批量输出——matlab实现
- 【caffe-Windows】以mnist为例的hdf5单标签处理——matlab实现
- caffe训练灰度图像的时候识别率很高,但是在使用matlab接口重新测试的时候识别率却很低?
- caffe windows Matlab
- caffe+windows+matlab
- windows caffe matlab 可视化
- caffe-windows matlab 接口配置
- caffe安装系列——安装Matlab
- 深度学习Caffe实战(9)Windows 平台caffe用MATLAB接口实现训练网络和测试
- 批量复制文件-matlab实现
- windows下编译Caffe的MATLAB接口
- caffe-windows配置python和matlab接口
- Windows下为Caffe配置matlab接口
- 深度学习 caffe windows cpu matlab安装
- caffe windows cpu matlab python安装
- windows caffe(仅CPU) 配置matlab接口
- 【caffe-Windows】微软官方caffe之 matlab接口配置
- 【caffe-Windows】微软官方caffe之 matlab接口配置
- mybatis中的#和$的区别
- 【gdoi2017第一次模拟总结】
- $!{var}
- Linux进程管理之task struct结构体
- Power key处理流程图
- 【caffe-Windows】识别率批量输出——matlab实现
- 安卓利用get和post方式提交数据
- 书签_各种资源
- 我对C++ string和length方法的一个长期误解
- POJ
- 大数据和高并发的解决方案总结
- 加密解密 签名验签学习笔记
- Ultra-QuickSort
- 如何在RecyclerView上面实现“拖放”和“滑动删除”-1