用MATLAB训练caffe,[转载]windows caffe部署训练+python调用全部流程
原版caffe代码项目编译在windows下非常麻烦,还好微软集成了所有三方包之后放出了一个windows版本的,省了不少时间。
项目下载地址:
https://github.com/Microsoft/caffe
网上有这个版本caffe编译现成的教程可以搜。如果自己下载编译,建议注释data_layer.cpp下
DLOG(INFO) << "Prefetch batch: " <<
batch_timer.MilliSeconds() << " ms.";
DLOG(INFO) << " Read time: " << read_time / 1000 << " ms.";
DLOG(INFO) << "Transform time: " << trans_time /
1000 << " ms.";
这三行,要不然训练时干扰loss显示很烦人。
修改源码以及编译IDE使用visual studio 2013
如果有加载libcaffe和test_all项目失败的情况,先确保正确版本的cuda已经安装。
/windows/CommonSettings.props
文件里可以设置是否使用CuDNN以及Cuda版本。Python接口一般是编译的,matlab看使用需求是否编译。
解决方案位于/windows/caffe.sln
放出我配置好的windows caffe项目以及数据集、网络结构,照搬下载,更改路径和配置即可。
windows caffe项目(已编译好libcaffe、caffe、pycaffe、convert_imageset):
http://pan.baidu.com/s/1dFJYLDv
数据集(汉字识别)+网络(自设计)
http://pan.baidu.com/s/1bpbx6Gn
eclipse环境以及数据预处理、模型调用解决方案
http://pan.baidu.com/s/1jHQZTB4
http://pan.baidu.com/s/1bEyZP8
python2.7目录下所有内容,包含三方库
http://pan.baidu.com/s/1c1Q6mUc
内容以及结构说明会在后面详细说明。
编译顺序:libcaffe、caffe、pycaffe、convert_imageset
这里需要设置一些引用,具体如截图:
libcaffe引用python安装路径,默认c:\Python27
caffe项目引用:
pycaffe:
convert_imageset
------------------------------------------------
编译好之后的目录在 /Build/x64/Debug下,内容如下:
之后复制pycaffe下所有内容到 {python安装目录这里是c:\python27}Libsite-packages
下
这个目录也是python三方库所在位置,不光是python,还需要安装numpy、scipy、sckit-image、opencv_python、matplotlib之类的一堆东西,才能让在python环境下调用caffe并且对图片进行预处理。
如果在eclipse里import东西时出错,多半是这些需要的库没有安装好。安装教程同样网上找,比较零散。
当然也可以下载python27.rar然后复制粘贴覆盖,省得一个一个去安装。
目录截图:
接下来eclipse安装以及配置pyDev环境,网上找教程省略不写,或者直接下载eclipse.rar解压即可。
===========================================================
到此为止开发环境已配置部署完毕。
创建自己的训练集:
dpsample.rar解压, /dpsample/dpsample
目录下是原始数据,需要进行一系列处理,使用testcaffe.rar里的解决方案。
prepareSamples()方法将文字等比拉伸并且居中到32x32大小的图片,并且根据文字放入相应的文件夹,目录/dpsample/cha_data/...
prepareTraining()方法从分类好的文字里筛选至少有50个文字样本的字,随机放入训练或是测试数据集文件夹,自设放置训练与测试的比例。限定训练文件夹内同一个字最多不超过60个,以满足训练样本平衡。
最终得到以下内容:
/dpsample/data/character_dict.txt 汉字Index(caffe只能识别int型作为softmax分类)
/dpsample/data/train.txt
训练集目录
/dpsample/data/val.txt
测试集目录
/dpsample/data/train
训练集图片文件夹
/dpsample/data/val
测试集图片文件夹
之后修改caffe-master目录下convertimage2ldb.bat和convertimage2ldb_test.bat两个脚本内的路径,调用
/Build/x64/Debug/convert_imageset.exe程序分别生成训练集以及测试集的lmdb数据文件。注意这里使用--shuffle打乱图片排列顺序很重要。
两个bat脚本运行完得到/dpsample/data/testldb 和/dpsample/data/trainldb
文件夹。
之后在/dpsample/solver目录下创建编辑三个prototxt文档,分别是
lenet_solver.prototxt 训练模型使用的参数
lenet_train_test.prototxt 训练模型使用的网络,带accuracy以及loss函数
lenet_deploy.prototxt 模型训练好后,python调用模型时使用的网络。
三个prototxt文档内的内容含义网上有教程,不重复叙述。
这里放一个很实用的网络结构可视化网站:
http://ethereon.github.io/netscope/#/editor
网络结构以及solver定义好、lmdb数据准备好之后,就可以开始训练了。
/caffe-master/Build/x64/Debug 下打开控制台,运行
caffe.exe train
-solver={lenet_solver.prototxt文档路径}
等待训练结束。
当然也可以训练一段时间之后手动ctrl+c结束
得到一系列.caffemodel以及.solverstate文件
其中caffemodel文件是可以调用的模型,solverstate文件是继续检查点接着训练需要用到的文件。
python里调用caffemodel文件,对指定图片(30_47.png图,character_dict.txt里:多=30)进行分类:
import省略
deploy='C:/Users/Shirui/Downloads/dpsample/solver/lenet_deploy.prototxt'
#deploy文件
caffe_model='C:/Users/Shirui/Downloads/dpsample/solver_iter_1000.caffemodel'
#训练好的caffemodel
imgtest='C:/Users/Shirui/Downloads/dpsample/solver/30_47.png'
#随机找的一张待测图片
net = caffe.Net(deploy, caffe_model, caffe.TEST)
transformer = caffe.io.Transformer({'data':
net.blobs['data'].data.shape})
#设定图片的shape格式(1,3,28,28)
transformer.set_transpose('data', (2,0,1)) #改变维度的顺序,由原始图片(28,28,3)变为(3,28,28)
#transformer.set_mean('data',
np.load(mean_file).mean(1).mean(1)) #减去均值,前面训练模型时没有减均值,这儿就不用
#transformer.set_raw_scale('data', 1) # 缩放到【0,1】之间 已经在网络prototxt里已设置scale,这里可以不用
transformer.set_channel_swap('data', (2,1,0))
#交换通道,将图片由RGB变为BGR
im=caffe.io.load_image(imgtest) #加载图片
net.blobs['data'].data[...] =
transformer.preprocess('data',im) #执行上面设置的图片预处理操作,并将图片载入到blob中
out = net.forward()
prob= net.blobs['prob'].data[0].flatten()
#取出最后一层(Softmax)属于某个类别的概率值,并打印
print prob
order=prob.argsort()[-1] #获取最大prob的index
print(order)
最终得到正确的图片分类index 30
用MATLAB训练caffe,[转载]windows caffe部署训练+python调用全部流程相关推荐
- caffe一 Windows+caffe+cpu-only模式。
本文主要介绍在Windows下配置cpu-only 的caffe. 需要的工具是vs2013. 首先是配置要求,希望cpu在i3以上其余不做要求,需要说明的是,只有cpu-only的caffe就像没有 ...
- (caffe入门)windows caffe 之 mnist 训练
文章目录 1. mnist 数据集下载 2. mnist 数据集转换 3. 修改网络结构文件 lenet_train_test.prototxt 和 网络求解文件 lenet_solver.proto ...
- mac m1 Python调用Matlab函数
由于我想用python版Gurobi跑一个在Matlab上神经网络的暴力,需要用Python调用Matlab中的函数,但Matlab目前并不能很好的原生适配M1芯片,以下为我的解决方法 安装matla ...
- caffe 日志保存以及matlab绘制方法(windows以及ubuntu下)
caffe 用matlab解析日志画loss和accuracy clc; clear; % load the log file of caffe model fid = fopen('log-prev ...
- caffe 在 windows 使用
以前打开windows版本的caffe,是有一个.sln 文件,通过 vs2013 加载后可以直接执行编译过程,这次遇到一些坑,最终还是编译好,并且把 mnist 的例程再次在windows 平台跑通 ...
- 【Caffe】Windows下caffe安装详解
学习windows下caffe的相关开发.同时也在安装完后及时进行总结,希望这篇博文可以帮助到大家! 需要准备的文件: 1,VS2013(必选),这个不再赘述 2,Windows版的caffe,BVL ...
- 【caffe】可视化网络的训练过程的loss和accuracy
转载自https://blog.csdn.net/chen1234520nnn/article/details/102780652 前言:我们在训练网络的时候,网络训练完毕后,需要可视化训练过程中lo ...
- Caffe在Windows上的搭建
不论开始学什么,搭建环境总是让人头疼,这次是因为要在VS上调用Caffe,所以就在windows上搭建Caffe,Windows相对于Linux确实不适合学习,哎!废话少说,把自己还记着的记录下来吧. ...
- [caffe(一)]使用caffe训练mnist数据集
1.数据集的下载与转换 1)我们在mnist数据集上做测试,MNIST handwritten digit database, Yann LeCun, Corinna Cortes and Chris ...
最新文章
- 盘点那些最常用的Linux命令,都应该记熟!
- 在对话框中加入属性页
- 影院平台搭建 - (6)一个靠谱的视频播放方案的感想
- 广东48.6万人资产超600万 华东超600万人群最多
- Java常用的一些容器
- 跟初学者学习IbatisNet第二篇
- Hadoop学习笔记—5.自定义类型处理手机上网日志
- web1:http协议简介和用netassist和py程序当http服务器
- C#实现对Access数据库的通用操作
- MAXDOS网刻教程~~(虚拟机与物理机 / 两台或者多台电脑之间)
- python输出斐波那契数列_如何用Python输出一个斐波那契Fibonacci数列
- 什么是智能合约安全审计
- linux下 Apache 配置虚拟主机三种方式
- python玩汉诺塔游戏攻略
- 软件能力成熟度模型(Capabilitymaturity model,CMM)
- navigationBar 标题字体颜色设置
- Pytorch C++/CUDA Extension
- 大数据分析的四个关键环节
- 智云通CRM:CRM数据库在经营客户中有什么作用?
- 16各种设计LOGO标准尺寸