转自:http://blog.csdn.net/zr459927180/article/details/51001536
版权声明:本文为博主原创文章,未经博主允许不得转载。
使用的是happynear版本的caffe,编译过程传送门:http://blog.csdn.NET/happynear/article/details/45372231
1.数据格式转换
Caffe的数据格式采用leveldb或者lmdb格式的,第一步要做的就是数据的格式转换了。
编译conver_imageset,在bin目录下生成convert_imageset.exe.
在caffe根目录下新建data文件夹,在data文件夹下新建本次实验起名为CharacterDiscrimination文件夹,之后的数据安排如下:
train和val存放原始的数据,trainldb和valldb存放格式转换后的leveldb数据,mean存放均值文件,实验数据选取的是字符和非字符二分类问题。部分数据大概如下:
部分正例:
部分负例:
用批处理命令对数据加标签
dir /b/s/p/w *.png > num.txt
生成如图所示:
利用替换功能调整为以下格式,0为该组数据对应的标签,对所有数据均做以下处理。
每一类都生成对应的标签后,对train和val生成总的样本标签(bat命令还不熟,以后再说吧o(╯□╰)o)
@echo off
set d=E:\my project\caffe-windows-master\caffe-windows-master\data\mine\train
pushd %d%
del train.tmp 2>nul
for /f "tokens=*" %%i in ('dir/b/s *.txt') do type "%%i">>train.txt
ren train.tmp train.txt
popd
得到所有训练样本的标签,并保存到train.txt内。val同样的操作。
利用convert_imageset.exe生成对应的leveldb格式数据,注意参数和路径,参数部分可以查看conver_imageset.cpp文件中的定义
SET GLOG_logtostderr=1
.\bin\convert_imageset.exe --backend=leveldb --resize_width=32 --resize_height=32 E:\myproject\caffe-windows-master\caffe-windows-master\data\CharacterDiscrimination E:\myproject\caffe-windows-master\caffe-windows-master\data\CharacterDiscrimination\train\train.txt E:\myproject\caffe-windows-master\caffe-windows-master\data\CharacterDiscrimination\trainldb
pause
生成成功后得到以下信息:
trainldb文件夹下生成对应的文件:
其他格式的数据转换,比如binary等可以参考examples下cifar10和mnist下的样例。早晚还是要自己写的。
2.数据预处理
.\bin\compute_image_mean.exe --backend leveldb E:\myproject\caffe-windows-master\caffe-windows-master\data\CharacterDiscrimination\trainldb E:\myproject\caffe-windows-master\caffe-windows-master\data\CharacterDiscrimination\train_mean.binaryproto
pause
3.定义网络结构并训练
pause
————————————————————————————————————————————————————————————————————————
caffe训练时遇到loss一直居高不下时:
http://blog.sina.com.cn/s/blog_141f234870102w941.html
另外,均值一般都是训练集的均值,测试集正常是不知道,无法求出来的。
Reference: