Caffe操作技巧之如何快速准备自己的lmdb数据集
2017-02-07 14:48
453 查看
这一期背景是安装完成了Caffe,在研究如何由图片转为lmdb文件时,在图片训练集上犯了愁。既不想下载imagenet,又不想费尽心思自己再准备个数据集(毕竟只是想简单测试一下Caffe,想体验一下跑自己数据集的快感)。于是各种歪脑子动尽,技巧列在下面了。
任何事情都有一二三,那么,首先要考虑的是,怎么快速拥有一堆图片!
答案是只要你有一张图片就好了,嗯,充分发挥ctrl CV精神,还省去了未来图片大小需要一致的问题。还是那句话,毕竟只是想测试一下。
第二,如何快速重命名这一堆图片?
面临一堆 副件123456...,看起来蛋疼,但只需要全选中,然后右键键入image,惊喜的发现全部文件名都变成了image (1),image (2)...这样的规律,是有利于到时候写convert_lmdb.bat的!
那么问题又来了。在测试过程中,发现convert_lmdb.bat文件读取train_file_name.txt(即所有训练图片集的文件名)过程中,读到的文件个数始终为0!再三检查后发现,文件名中不能有空格!好吧,但是刚才右键重命名的过程中生成的image
(1).jpg天然带一个空格(windows 10测试,其他系统不知道),如何去掉这些空格,重命名这堆图片呢?
针对这个问题,专门从网上找到了几个方法。分享记录于此。
文件重命名三部曲。
1、全选图片,右键键入image,调整成为image (1).png,带空格的形式。
2、在该图片文件夹中,新建bat文件,写入如下内容
然后运行bat文件。这时候图片全都变成了image(1).png,空格就全去掉了。
3、这个时候其实就可以了,但是我看着括号感觉十分不爽,于是接下来是去括号。
分两步。
(1)新建excel,第一列写ren imageset(1).png,第二列写imageset1.png,第三列写A1&" "&A2。然后均向下拖动自动填充图片序号一直到全部图片数。
(2)把第三列复制下来,同样填写到一个bat文件里,执行bat,这时候图片就全变成了image1.png...了。
第三,准备各种bat文件和exe文件。
不复杂。这里准备三个exe和三个对应的执行这些exe的bat文件(省得每回再敲cmd了),分别是compute_image_mean.exe,convert_imageset.exe以及caffe_gpu.exe。exe文件的生成参考上一篇,简单说就是从tools里面找到对应的cpp文件,然后放到caffe项目下跑出来生成该cpp对应的exe就行了。
然后是bat。由于caffe自带的是各种蛋疼的sh文件,是linux下的东西,windows下还需要下载什么gcc啥的,麻烦,于是就自己照着网上的例子写了bat文件。
这个是执行convert_imageset.exe对应的bat文件。我把caffe放在了D盘这个目录,所以多了这几步读盘符和cd进文件夹的操作。
然后convert_imageset.exe后面第一个参数是图片集所在文件夹,因为是相对路径,所以写/而不是\。然后空格,第二个参数是咱们第二步里准备的那些文件名,需要填写进一个txt文件里。这里我们把刚才excel里面生成的那一堆文件名粘过来。由于还需要在后面放对应的标签,这里把png替换一下,或者是excel里再操作一下,就行了。如开题所说,我们仅仅是为了测试,所以我就随便填了0 1 2三种标签。做好的txt文件(train.txt)内容如下面几行所示。
第三个参数是生成的lmdb的文件夹名称,生成后会有data和lock两个文件存放在mytrainlmdb文件夹里。第四个参数填0,不知道是什么。
运行这个bat文件,lmdb就生成了。
至此,你应该看到梦寐以求的lmdb数据集了。
---------------------------------------------------------------------------分割线--------------------------------------------------------------------------------------
后续
第四,calculate_image_mean.exe和caffe.exe对应的bat文件。
不多说了,生成的mean文件为mymean.binaryproto。
这里要注意这种caffe_gpu.exe train --solver=solver.prototxt的写法。solver文件是一个单独的文件,存放各类配置等,从mnist里面拷出来修改一下。
我的贴在这里。
test_iter是迭代次数。test_interval是多少图片一批。
这里有个详细的介绍。http://blog.csdn.net/u012746763/article/details/51549184
然后特别说明的是,(1)stepsize和滑动窗口原理一样,是步长,很好理解了。test_iter,test_interval和stepsize一定要协调好,数据集太小的情况下,不要超过数据集数量范围。
(2)第一行又是一个单独的文件,存放net的结构。这个也从mnist里面找到就行了。
(3)snapshot_prefix随便写就行,代表的是训练过程的快照,快照的名字是prefix。
任何事情都有一二三,那么,首先要考虑的是,怎么快速拥有一堆图片!
答案是只要你有一张图片就好了,嗯,充分发挥ctrl CV精神,还省去了未来图片大小需要一致的问题。还是那句话,毕竟只是想测试一下。
第二,如何快速重命名这一堆图片?
面临一堆 副件123456...,看起来蛋疼,但只需要全选中,然后右键键入image,惊喜的发现全部文件名都变成了image (1),image (2)...这样的规律,是有利于到时候写convert_lmdb.bat的!
那么问题又来了。在测试过程中,发现convert_lmdb.bat文件读取train_file_name.txt(即所有训练图片集的文件名)过程中,读到的文件个数始终为0!再三检查后发现,文件名中不能有空格!好吧,但是刚才右键重命名的过程中生成的image
(1).jpg天然带一个空格(windows 10测试,其他系统不知道),如何去掉这些空格,重命名这堆图片呢?
针对这个问题,专门从网上找到了几个方法。分享记录于此。
文件重命名三部曲。
1、全选图片,右键键入image,调整成为image (1).png,带空格的形式。
2、在该图片文件夹中,新建bat文件,写入如下内容
@echo off&setlocal enabledelayedexpansion for /f "delims=" %%i in ('dir /s/b *.*') do ( set "foo=%%~nxi" set foo=!foo: =! set foo=!foo: =! ren "%%~fi" "!foo!" ) exit
然后运行bat文件。这时候图片全都变成了image(1).png,空格就全去掉了。
3、这个时候其实就可以了,但是我看着括号感觉十分不爽,于是接下来是去括号。
分两步。
(1)新建excel,第一列写ren imageset(1).png,第二列写imageset1.png,第三列写A1&" "&A2。然后均向下拖动自动填充图片序号一直到全部图片数。
(2)把第三列复制下来,同样填写到一个bat文件里,执行bat,这时候图片就全变成了image1.png...了。
第三,准备各种bat文件和exe文件。
不复杂。这里准备三个exe和三个对应的执行这些exe的bat文件(省得每回再敲cmd了),分别是compute_image_mean.exe,convert_imageset.exe以及caffe_gpu.exe。exe文件的生成参考上一篇,简单说就是从tools里面找到对应的cpp文件,然后放到caffe项目下跑出来生成该cpp对应的exe就行了。
然后是bat。由于caffe自带的是各种蛋疼的sh文件,是linux下的东西,windows下还需要下载什么gcc啥的,麻烦,于是就自己照着网上的例子写了bat文件。
这个是执行convert_imageset.exe对应的bat文件。我把caffe放在了D盘这个目录,所以多了这几步读盘符和cd进文件夹的操作。
SET GLOG_logtostderr=1 D: cd D:\Program Files\Caffe\data\QQimage convert_imageset.exe train/ train.txt mytrainlmdb 0 pause
然后convert_imageset.exe后面第一个参数是图片集所在文件夹,因为是相对路径,所以写/而不是\。然后空格,第二个参数是咱们第二步里准备的那些文件名,需要填写进一个txt文件里。这里我们把刚才excel里面生成的那一堆文件名粘过来。由于还需要在后面放对应的标签,这里把png替换一下,或者是excel里再操作一下,就行了。如开题所说,我们仅仅是为了测试,所以我就随便填了0 1 2三种标签。做好的txt文件(train.txt)内容如下面几行所示。
image1.png 0 image2.png 0 image3.png 0 image4.png 0 image5.png 1 image6.png 1 image7.png 1 image8.png 1 image9.png 1
第三个参数是生成的lmdb的文件夹名称,生成后会有data和lock两个文件存放在mytrainlmdb文件夹里。第四个参数填0,不知道是什么。
运行这个bat文件,lmdb就生成了。
至此,你应该看到梦寐以求的lmdb数据集了。
---------------------------------------------------------------------------分割线--------------------------------------------------------------------------------------
后续
第四,calculate_image_mean.exe和caffe.exe对应的bat文件。
SET GLOG_logtostderr=1 D: cd D:\Program Files\Caffe\data\QQimage compute_image_mean.exe mytrainldb mymean.binaryproto pause
不多说了,生成的mean文件为mymean.binaryproto。
SET GLOG_logtostderr=1 D: cd D:\Program Files\Caffe\data\QQimage caffe_gpu.exe train --solver=solver.prototxt pause
这里要注意这种caffe_gpu.exe train --solver=solver.prototxt的写法。solver文件是一个单独的文件,存放各类配置等,从mnist里面拷出来修改一下。
我的贴在这里。
net: "train_val.prototxt" test_iter: 80 test_interval: 10 base_lr: 0.01 lr_policy: "step" gamma: 0.1 stepsize: 1 display: 3 max_iter: 80 momentum: 0.9 weight_decay: 0.005 snapshot: 4000 snapshot_prefix: "prefix" solver_mode: GPU
test_iter是迭代次数。test_interval是多少图片一批。
这里有个详细的介绍。http://blog.csdn.net/u012746763/article/details/51549184
然后特别说明的是,(1)stepsize和滑动窗口原理一样,是步长,很好理解了。test_iter,test_interval和stepsize一定要协调好,数据集太小的情况下,不要超过数据集数量范围。
(2)第一行又是一个单独的文件,存放net的结构。这个也从mnist里面找到就行了。
(3)snapshot_prefix随便写就行,代表的是训练过程的快照,快照的名字是prefix。
相关文章推荐
- 如何让自己的CS水平更进一步?(一)准备技巧
- 电脑技巧:如何快速查看自己的IP地…
- 如何快速学习操作PS软件的高效技巧
- SAP实用操作技巧之八:如何快速登陆SAP?
- 程序员如何快速上手一个自己不太熟悉的新项目?有什么技巧?
- 程序员如何快速上手一个自己不太熟悉的新项目?有什么技巧?
- Win7超级实用的快速操作技巧总结教你如何使用win7
- oracle里如何快速drop column测试(慎用于生产系统,该操作导致表无法访问)
- 做个表格狂人 EXCEL几则快速操作技巧分享
- 如何快速提高自己的学习效率?(对青鸟学员的建议)
- 如何快速编译系统(用鼠标操作)
- Oracle数据库技巧:如何快速为200张以上的表增加2个相同的列
- [转]如何快速定位一个函数的返回点 - 调试技巧
- 在Asp中如何快速优化分页的技巧
- 由成幻OnlineJudge学习如何做自己的Acm-Icpc在线评判系统-2.一些准备工作,以及文章约定
- 如何才能让自己的技术水平快速提高呢?
- 在Asp中如何快速优化分页的技巧收藏
- 如何快速的推广自己网站(博客)呢?
- 如何实现快速地从超大数据库中提取数据并进行相关的操作
- 电脑操作技巧:如何抓图