【caffe-Windows】训练自己数据——数据集格式转换
来源:互联网 发布:房地产网络销售怎么样 编辑:程序博客网 时间:2024/05/18 00:39
转自:http://blog.csdn.net/zb1165048017/article/details/52447567(2016-09-06 )
版权声明:欢迎大家一起交流,有错误谢谢指正~~~多句嘴,不要复制代码,因为CSDN排版问题,有些东西会自动加入乱糟糟的字符,最好是自己手写代码。格外注意被“踩”的博客,可能有很大问题,请自行查找大牛们的教程,以免被误导。
目录(?)[+]
前言
看了mnist和cifar的实例(注:Cifar-10是由Hinton的两个大弟子Alex Krizhevsky、Ilya Sutskever收集的一个用于普适物体识别的数据集。Cifar是加拿大牵头投资的一个先进科学项目研究所。),是不是想我们现实中一般都是一张张的图片,和实例里面都不一样呢?那么如何来进行训练呢?为了能够简便点,我们就不自己去采集数据集了,因为第一自己采集的数据集量可能不够,第二,采集的数据集可能标注有很大问题,比如噪声太多等,第三针对每一种数据,我相信有不同的模型去进行classification,并不是一味地套用别人的模型,当然也可以在别人基础上做微调fine tuning。
在这一个教程中,我们利用cifar数据集去模拟现实中的训练。
如果你有自己的数据,可直接进行第二步
第一步
cifar数据集的可视化。读者如果有自己数据集,可以忽视此步骤,此步骤主要用于将cifar 的数据全部转为png图片,并制作相应标签。
先看看我的代码的目录结构:
接下来介绍每一个文件的由来:
①test和train文件夹是我用来存储cifar每一张图片的位置,一个是训练集、一个是测试集
②几个mat文件,从cifar的官网去下载matlab version的数据集,解压就可以得到。
③几个.m文件就是我们用来可视化以及图片转存的代码。
下面看这几个程序:
ReadImage.m
read_train.mread_test.m 分别运动read_train和read_test,可以看到train和test文件夹会逐渐生成数据集,且均为单张图片。
读取完毕以后,在train里面有50000张图片和一个标签txt文件,test里面有10000张图片和两个标签txt,一个是正确标注,一个是全标注为0。
【附cifar的几个文件】
①matlab version的mat文件:链接:http://pan.baidu.com/s/1bUAgf8 密码:wk6t
②读取完毕的train文件夹:链接:http://pan.baidu.com/s/1sl5tqxR 密码:krhn
③读取完毕的test文件夹:链接:http://pan.baidu.com/s/1mhJ0vXI 密码:o69i
好了,至此我们已经得到了现实中经常使用的数据格式。
【注】如若想掰正图像,可以使用 qq_35446561提供的方法解决
当然也可以采用翻转或者转置等方法,MATLAB都有自带函数去翻转图像。第二步
以cifar的test集的制作为例吧。
先说一下现实基础:数据集必须分为两个文件夹(一个train,一个test),然后每一个文件夹必须再分文件夹,每一个文件夹代表一类数据。
比如cifar,上面提取的数据分别存储在train和test文件夹,但是并未归类。那么,我在E:\CaffeDev\caffe-master\data\cifar10\cifar-visual\cifar10内新建一个文件夹test,然后在test内部新建了airplane、cat、frog三个文件夹,在每一个文件夹中分别放入了从第一步提取的 test 集中随便取的对应类别的56张图片。
还是看一下目录结构吧
云盘分享可以看出目录结构:链接:http://pan.baidu.com/s/1i5nuKb7 密码:xlr4
接下来就是读取每一张图片,并且添加相应的数据标签到txt里面去了,在E:\CaffeDev\caffe-master\data\cifar10\cifar-visual\cifar10新建了一个test_label.txt,然后使用matlab书写文件写入的代码:
主要功能就是完成了当前目录下的test文件夹下每一个类别的全部数据的文件名(比如\test_cifar\airplane\9483airplane.png)读取,并且写入到txt里面。
第三步
转换leveldb格式
主要调用caffe.sln编译完毕得到的convert_imageset.exe这个程序,首先看一下使用说明
按照这个说明,首先是找到exe的路径,然后是数据集文件夹,数据集标签,转换以后的数据存储位置,-backend设置转换格式(leveldb/lmdb)
【注意】如果是你自己的数据集,这个地方的标签一定要注意,读取的时候是按照“数据文件夹/标签内容”依次读取的,不然无法读取成功。比如在下例中,如果你的标签内容第一行为airplane\9483airplane.png,数据集文件夹是test_cifar\ 那么读取的时候就是test_cifar\airplane\9483airplane.png,但是如果标签内容为test_cifar\airplane\9483airplane.png,那么读取的时候就读取test_cifar\test_cifar\airplane\9483airplane.png ,显然读取失败,不存在此文件,因为前面重复了根目录,这个地方一定要注意。
转换数据使用的convert.bat内容如下:
也可以设置一下[FLAGS]重新把所有的图像resize一下,注意caffe的输入数据集必须是统一大小
更新日志2017-1-9
这个地方resize开始写博客的时候写成28*28了,导致caffe -test命令自动终止,而无测试的batch信息,改成32*32的原始大小即可了,这个大小必须和train的数据集的大小相同,不然会导致同一个模型参数,接受了不同尺寸大小的图片输入。
运行时候内容如下:
如果显示的读取图片数量为0,或者图片不存在,那么肯定是文件夹名写错或者是标签问题,确切地说,是标签里面的路径问题,一定要注意这一点。
【注】如果这个步骤你想转换为lmdb格式,只需要修改-backend=lmdb即可。
转换完毕以后可以用已经训练好的模型来测试一下这三类模型(注意区分这时的test虽然取自val,但是作用并非val的作用,而是作为test集的,详细自行查找机器学习三个数据集的作用):链接:http://pan.baidu.com/s/1jHPGMpw 密码:g97n
第四步
总结一下,容易出错的地方在于:
①bat 内部书写出问题,严格按照第三步的几个顺序书写
②标签txt 内部的路径问题,很可能与bat 所书写的根路径重复
训练模型回看前面的
【caffe-Windows】cifar实例编译之model的生成:http://blog.csdn.NET/zb1165048017/article/details/51476
- 【caffe-Windows】训练自己数据——数据集格式转换
- 【caffe-Windows】训练自己数据——数据集格式转换
- 【caffe-Windows】训练自己数据——数据集格式转换
- Windows下caffe训练自己的数据
- caffe windows 训练自己的图片数据
- Windows caffe vs2013训练自己的数据
- caffe-Windows:训练自己的数据
- windows caffe 训练自己的数据
- caffe训练自己的数据集——3. 数据处理
- windows-caffe 训练和测试自己的数据集
- caffe(6) 训练自己的CNN网络—图像数据转换成lmdb文件
- Caffe学习笔记(六)—— Windows下训练自己的数据
- windows10+GPU下caffe数据集Lmdb格式制作+训练自己数据集
- caffe 训练测试自己的数据集
- caffe训练测试自己的数据集
- caffe训练自己的数据集
- caffe训练自己的数据集——2. 开始训练
- caffe训练自己的数据集——1. 数据准备
- org.springframework.web.context.request.RequestContextListener作用
- SpringMVC源码剖析(二)- DispatcherServlet的前世今生
- Linux 服务器带宽异常跑满分析解决
- spark-submmit视频(2017年2月8日-9日)
- 中小电商如何与全球400余家快递物流公司做接口对接
- 【caffe-Windows】训练自己数据——数据集格式转换
- LeetCode :Count Primes
- angular学习(十三)——Component
- Arm power information
- Java基础[1]三种变量以及字段和属性
- MyBatis中Association联合select使用
- 如何将mysql表结构导出成Excel格式的(并带备注)
- 高级词向量表达
- eclipse中maven默认仓库路径