CIFAR是什么

CIFAR-10和CIFAR-100都是带标签的大小为8000万小图数据集的子集。其中CIFAR-10有10类,每类6000个大小为32x32的图像。其中训练图像和测试图像的比例是5:1,对每类图像,随机选择1000个测试图像,剩下的就是训练图像。

注意到10类图像既有automobile,还有truck。它们是不重叠的。Automobile包含的是轿车,SUV等,truck只包含大卡车,连pickup皮卡也不包括。

Cuda-convnet利用卷积神经网络在没有新增训练数据下可以达到18%的错误率,新增数据可以达到11%的错误率。Jasper Snoek利用贝叶斯超参数优化在相同网络下不借助训练数据新增可以达到15%的错误率。

下载数据集并解压

从Alex Krizhevsky的网站下载二进制格式的CIFAR-10数据集。解压存放在:caffe-master\examples\cifar10\input_folder当中(input_folder文件夹需要自己创建)

解压得到一个txt格式的标签文件。5个训练数据batch,1个测试batch。

转换格式 利用convert_cifar_data.exe和bat

将二进制文件.bin转为为caffe规定的格式leveldb。在caffe-master\examples\cifar10 下创建一个记事本(后缀改为  .bat ),输入以下code,保存为convert_cifar10.bat (后缀改为  .bat)。

..\..\Build\x64\Release\convert_cifar_data.exe input_folder output_folders leveldbpause 

Ps:

1.bat的Usage:Convert_cifar_data input_folderoutput_folder db_type

2.注意不同属性参数之间要以空格分开

3.../得到父级目录

4.Prototxt中注释在行首加#

然后双击运行,可以看到在 caffe-master\examples\cifar10下会生成一个文件夹,output_folders。里面有两个文件夹,存放的就是转换好的数据

计算均值文件  利用compute_image_mean.exe和bat

在caffe-master\examples\cifar10下创建一个记事本(后缀改为  .bat ),输入以下code

..\..\Build\x64\Release\compute_image_mean.exe -backend=leveldb../../examples\cifar10\output_folders\cifar10_train_leveldb mean.binaryprotoPause 

然后运行此文件,在caffe-master\examples\cifar10 下会出现mean.binaryproto文件

 在prototxt中更改一些参数

更改caffe-master\examples\cifar10 下的cifar10_quick_solver.prototxt和cifar10_quick_train_test.prototxt

cifar10_quick_solver.prototxt改中了:

net:"../../examples/cifar10/cifar10_quick_train_test.prototxt"
snapshot_prefix:"../../examples/cifar10/cifar10_quick"

如果只用CPU计算网络,还要改solver_mode:

solver_mode: CPU

cifar10_quick_train_test.prototxt中改了:solver_mode: CPU

mean_file:"../../examples/cifar10/mean.binaryproto"
source:"../../examples/cifar10/output_folders/cifar10_train_leveldb"mean_file:"../../examples/cifar10/mean.binaryproto"
source:"../../examples/cifar10/output_folders/cifar10_test_leveldb"backend: LEVELDB

Ps:examples/cifar10/中有几种不同的训练模式(quick和full等),要一一对应。

开始训练 利用caffe.exe

在caffe-master\examples\cifar10下创建文本文件,更改后缀为.bat,开始运行。(注意train之后有空格):

..\..\Build\x64\Release\caffe.exe train --solver=../../examples/cifar10/cifar10_quick_solver.prototxt
Pause

bat中只用到了cifar10_quick_solver.prototxt,但在这个文件里面第一个参数就是刚才修改的网络配置文件cifar10_quick_train_test.prototxt,这样才能不断迭代优化求解出参数,得到最终的模型。

还有一种训练方法是在vs中把caffe设为启动项目,调试参数改为train --solver=../../examples/cifar10/cifar10_quick_solver.prototxt。然后ctrl+F5开始调试。

因为是在靠CPU训练,半个多小时后训练才结束,optimization done,examples/cifar10下出现如下两个文件,说明已经训练完成。

在后期应用过程中,需要生成caffemodel文件而非caffemodel.h5文件,我们将cifar10_quick_solver.prototxt中的snapshot_format:HDF5注释掉,重新训练,就可以得到下面的文件

Cifar10_quick_iter_4000.caffemodel是分类器描述文件。Cifar10_quick_iter_4000.solverstate是继续学习将会用到的文件。

现在,可以进入到实测了。

分析这个bat命令,首先使用了编译生成的exe文件。在网络层面,使用了刚训练生成的caffemodel模型和一个prototxt文件,关于prototxt文件,参考博客说是训练后新生成的,但是我的文件日期是2016年的,应该是版本不同的原因。这个prototxt文件应该就是上一篇博客里面分析的修改train_test.prototxt首尾得到的网络配置文件。图像层面,不仅要指定待分类的图像,还要有txt文件,存放类别名称,还要有均值文件,可以提升分类准确性。

classification.exe examples\cifar10\cifar10_quick.prototxtexamples\cifar10\cifar10_quick_iter_4000.caffemodel examples\cifar10\mean.binaryprotomy.txt 3.jpgpause 

注意这个标签txt文件,写成一列,不能有额外的空格。否则出现类别个数与网络最后一层输出个数不符的情况:

结果1 对网上下载的柴犬图像3.jpg的识别

结果2  将下载图像resize成34x34重新识别

看到概率大小发生了变化,但是还是错误的。

结果3  对网上下载的飞机图像的识别

Reference:

1.      https://www.cnblogs.com/TensorSense/p/6260287.html

2.      https://blog.csdn.net/weixinhum/article/details/71304852

windows+caffe下对CIFAR训练相关推荐

  1. Windows caffe(四) 训练自己的图片数据

    前一次实验将原始的图片数据转化为caffe可以运行的lmdb格式. 本次实验完整分析,如何训练自己的图片数据. 毕竟我们学习caffe要应用到实际的科研/工作中,而不仅仅停留在实验上. 一.实验准备 ...

  2. Windows环境下使用 Caffe在ImageNet上训练网络

    在配置好Windows版的Caffe之后,可以使用Windows Caffe训练ImageNet网络,主要有4个步骤: (1)准备图片数据库 (2)将图片数据转换为Caffe可以使用的LMDB或者Le ...

  3. Caffe下自己的数据训练和测试

    在caffe提供的例程当中,例如mnist与cifar10中,数据集的准备均是通过调用代码自己完成的,而对于ImageNet1000类的数据库,对于高校实验室而言,常常面临电脑内存不足的尴尬境地.而对 ...

  4. 用MATLAB训练caffe,[转载]windows caffe部署训练+python调用全部流程

    原版caffe代码项目编译在windows下非常麻烦,还好微软集成了所有三方包之后放出了一个windows版本的,省了不少时间. 项目下载地址: https://github.com/Microsof ...

  5. windows环境下将yolo-fatest的caffe模型转化为wk模型

    windows环境下将yolo-fatest的caffe模型转化为wk模型 第一步 第二步 第三步 第四步 在上一个博客https://blog.csdn.net/playezio/article/d ...

  6. Windows环境下训练OpenCV分类器

    首先说一下我的经历吧!不想看的可以直跳到教程.之前在树莓派上训练分类器,发现树莓派内存过小,训练几张照片还ok,但是训练十几张照片进程直接就被系统扼杀掉,,所以这次选择用笔记本训练.经过测试,用400 ...

  7. 深度学习Caffe实战笔记(6)Windows caffe平台用Siamese网络跑自己的数据

    终于到了介绍如何使用Siamese网络跑自己的数据了,在网上.论坛上.群里关于用Siamese网络的资料很多,但是实战的资料很少,难道是因为太容易了吗?反正博主查阅了各种地方,几乎没有找到Siames ...

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

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

  9. OpenVINO之二:Windows环境下OpenVINO安装与配置

    OpenVINO系列: OpenVINO之一:OpenVINO概述 OpenVINO之二:Windows环境下OpenVINO安装与配置 OpenVINO之三:Linux环境下OpenVINO安装与配 ...

最新文章

  1. 1.Spring Boot --hello world
  2. 颈椎病2句话就能治疗好,你也试试看,一学就会!
  3. HTTP FTP 返回状态代码
  4. 三十四、R语言数据分析实战
  5. 【转】使用JDK自带jvisualvm监控tomcat
  6. 对atexit函数的理解
  7. 25留数及其应用(一)
  8. EntytyFramework批量更新
  9. Trust Region Policy Optimization (TRPO) 背后的数学原理
  10. 【转】VC6.0+icc编译STLPort5.2
  11. LaTex 符号大全
  12. matlab求向量的模,MATLAB向量的模
  13. msf(美少妇)练习
  14. spring aop的术语
  15. 各种后缀名--使用什么软件打开
  16. 【3D目标检测】Monocular 3D Object Detection with Pseudo-LiDAR Point Cloud
  17. 微信公众号课程预约系统的功能需求分析
  18. 简单使用GreenDao框架
  19. 谈网站域名,备案到上线
  20. matlab求四元数夹角,如何求出两个四元数之间的夹角?

热门文章

  1. 聊聊推荐系统的高阶特征交叉问题
  2. Java多线程与并发系列从0到1全部合集,强烈建议收藏!
  3. 会议交流 | IJCKG 2021:Keynotes released!欢迎注册参会
  4. 论文浅尝 - ICLR2021 | 从信息论的角度提高语言模型的鲁棒性
  5. urllib.request.urlopen(req).read().decode解析http报文报“‘utf-8‘ codec can‘t decode”错处理
  6. 前端如何做极致的首屏渲染速度优化
  7. Android官方开发文档Training系列课程中文版:创建自定义View之View的绘制
  8. @Controller与@RestController的区别以及ircular view path [ad]: would dispatch back to the current handler异常
  9. Linux下的Tomcat服务器修改server.xml中的8080端口号后出现不能访问首页
  10. json数组格式问题