图像数据转换为levedb或者lmdb+caffe上跑自己的数据

JLU-IPVR

听笙

图像数据转换为levedb或lmdb

在我们学习深度学习的过程中,难免要去使用自己的原始数据进行试验,验证一些网络模型,我们遇到的图片文件格式如:jpg,jpeg,png,bmp等格式,并且图像的尺寸不一定统一,图像是否都是灰度图等。那么如何将这些原始图像数据转化为caffe能够使用的文件(levedb/lmdb)呢?

其实在caffe中提供了一个文件:convert_imageset.cpp,编译后,生成的可执行文件存放在E:\caffe-windows\caffe-master\Build\x64\Debug文件夹下(以作者自己电脑中caffe的文件夹为例)。

这个可执行文件的使用方式:

convert_imageset[FLAGS] ROOTFOLDER/ LISTFILE DB_NAME

FLAGS:图片参数组,后面进行详细介绍;

ROOTFOLDER/:图片存放的绝对路径;

LISTFILE:图片文件列表清单,一般为一个txt,每行对应一张图片。

    如果图片已经在本地,那么需要创建一个图片列表清单,保存为txt(后续介绍)。接下来详细介绍FLAGS这个参数组。

-gray:是否以灰度图的方式打开图片,默认为false;

-shuffle:是否随机打乱图片顺序,默认为false;

-backend:需要转换成的文件格式,可选是levedb或者是lmdb,默认是lmdb;

-check_size:检查所有数据是否有相同的尺寸,默认为false;

-resize_width/resize_height:改变图片的大小,在运行时要求所有图片的尺寸一致,因此需要改变图片的大小,默认为0,不改变;

-encoded:是否将原图片编码放入最终的数据集中,默认为false;

-encode_type:与前一个参数对应,将图片编码为哪个格式:png,jpg等。

具体实例:

SET GLOG_logtostderr=1

convert_imageset.exe-resize_width=28 --resize_height=28 --gray=true --shuffle --backend="leveldb"C:\Users\LJL\Desktop\CodeRec\  图片绝对路径(和标签里记录的路径组合起来就是图片的完整路径)C:\Users\LJL\Desktop\CodeRec\data\train2.txt标签C:\Users\LJL\Desktop\CodeRec\data\traindb0 pause

新建一个bat文件,内容如上。

运行这个bat文件就能将原始数据转换为levedb的格式。

在caffe上跑自己的数据

我们以手写数字识别为例,这个数据集是,实验室自己收集制作的。

可以分为以下几个步骤:

1)  制作训练集和测试集;

2)  将原始图像的格式转换为levedb或者lmdb.;

3)  利用转换好的数据计算均值,生成训练样本和测试样本的均值文件;

4)  利用LeNet网络结构进行训练;

制作训练集和测试集;

按照mnist数据集的规模进行构建,60000张训练数据,10000张测试数据。


将原始图像的格式转换为levedb或者lmdb:

首先,要制作标签,训练集和测试集数据都要制作标签使用批处理文件list.bat

dir/b/s/p/w *.bmp > num.txt

在训练集中,将每张图片产生的标签复制到一个train.txt中作为训练集的标签。

在测试集中,将每张图片产生的标签复制到一个test.txt中作为测试集的标签。


接下来,将原始数据进行转换。训练集和测试集都需要进行转换。使

用convert_imageset.exe。

运行bat文件运行过程如下图所示:

利用转换好的数据计算均值,生成训练样本和测试样本的均值文件:

使用批处理文件compute_image_mean.bat

compute_image_mean.exe--backend="leveldb"D:\experiment\data\testdbD:\experiment\data\val_mean.binaryprotocompute_image_mean.exe--backend="leveldb" D:\experiment\data\traindbD:\experiment\data\train_mean.binaryproto

pause

利用LeNet网络结构进行训练:

需要有这三个文件,训练时使用到其中的两个lenet_solver. prototx和lenet_train_test_prototxt,前者是训练模型时使用到的一些参数的设定,后者是网络结构。


接下来就可以训练自己的样本了。

使用批处理文件

caffe train--solver=D:/experiment/data/lenet_solver.prototxt

pause

训练过程如图所示:



训练结果如图所示:

识别率达到了0.9884.


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值