原版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调用全部流程相关推荐

  1. caffe一 Windows+caffe+cpu-only模式。

    本文主要介绍在Windows下配置cpu-only 的caffe. 需要的工具是vs2013. 首先是配置要求,希望cpu在i3以上其余不做要求,需要说明的是,只有cpu-only的caffe就像没有 ...

  2. (caffe入门)windows caffe 之 mnist 训练

    文章目录 1. mnist 数据集下载 2. mnist 数据集转换 3. 修改网络结构文件 lenet_train_test.prototxt 和 网络求解文件 lenet_solver.proto ...

  3. mac m1 Python调用Matlab函数

    由于我想用python版Gurobi跑一个在Matlab上神经网络的暴力,需要用Python调用Matlab中的函数,但Matlab目前并不能很好的原生适配M1芯片,以下为我的解决方法 安装matla ...

  4. caffe 日志保存以及matlab绘制方法(windows以及ubuntu下)

    caffe 用matlab解析日志画loss和accuracy clc; clear; % load the log file of caffe model fid = fopen('log-prev ...

  5. caffe 在 windows 使用

    以前打开windows版本的caffe,是有一个.sln 文件,通过 vs2013 加载后可以直接执行编译过程,这次遇到一些坑,最终还是编译好,并且把 mnist 的例程再次在windows 平台跑通 ...

  6. 【Caffe】Windows下caffe安装详解

    学习windows下caffe的相关开发.同时也在安装完后及时进行总结,希望这篇博文可以帮助到大家! 需要准备的文件: 1,VS2013(必选),这个不再赘述 2,Windows版的caffe,BVL ...

  7. 【caffe】可视化网络的训练过程的loss和accuracy

    转载自https://blog.csdn.net/chen1234520nnn/article/details/102780652 前言:我们在训练网络的时候,网络训练完毕后,需要可视化训练过程中lo ...

  8. Caffe在Windows上的搭建

    不论开始学什么,搭建环境总是让人头疼,这次是因为要在VS上调用Caffe,所以就在windows上搭建Caffe,Windows相对于Linux确实不适合学习,哎!废话少说,把自己还记着的记录下来吧. ...

  9. [caffe(一)]使用caffe训练mnist数据集

    1.数据集的下载与转换 1)我们在mnist数据集上做测试,MNIST handwritten digit database, Yann LeCun, Corinna Cortes and Chris ...

最新文章

  1. 盘点那些最常用的Linux命令,都应该记熟!
  2. 在对话框中加入属性页
  3. 影院平台搭建 - (6)一个靠谱的视频播放方案的感想
  4. 广东48.6万人资产超600万 华东超600万人群最多
  5. Java常用的一些容器
  6. 跟初学者学习IbatisNet第二篇
  7. Hadoop学习笔记—5.自定义类型处理手机上网日志
  8. web1:http协议简介和用netassist和py程序当http服务器
  9. C#实现对Access数据库的通用操作
  10. MAXDOS网刻教程~~(虚拟机与物理机 / 两台或者多台电脑之间)
  11. python输出斐波那契数列_如何用Python输出一个斐波那契Fibonacci数列
  12. 什么是智能合约安全审计
  13. linux下 Apache 配置虚拟主机三种方式
  14. python玩汉诺塔游戏攻略
  15. 软件能力成熟度模型(Capabilitymaturity model,CMM)
  16. navigationBar 标题字体颜色设置
  17. Pytorch C++/CUDA Extension
  18. 大数据分析的四个关键环节
  19. 智云通CRM:CRM数据库在经营客户中有什么作用?
  20. 16各种设计LOGO标准尺寸

热门文章

  1. 被不良商家欺骗怎么投诉,启中教育有办法
  2. 育碧GDC2018程序化大世界生成 孤岛惊魂5
  3. 怎么判断一个JS文件加载完成?
  4. 智能垃圾桶提供隐藏的5G基础设施
  5. 求黄金分割数的小数点后100位(蓝桥杯竞赛题)
  6. 原生js —— 表单验证练习(12306注册)
  7. 【计算机三级网络技术】 第五篇 局域网技术基础及应用
  8. 【C 语言】文件操作 (fscanf、fprintf 函数)
  9. javaweb-青橙项目-7-82
  10. php实现只需要一个QQ号就可以获得用户信息