在使用caffe时,我们希望使用自己的数据进行训练,以下给出如何制作自己的数据。所有的数据制作都是基于imagenet的。
1.数据准备,我们需要一个train和valid文件夹,一个train.txt和val.txt(图片文件夹的位置可以任意,但是这两个txt文件的位置在data/mydata/目录下)
train和valid文件夹自然就存放着待训练的图片,train.txt和val.txt的数据格式如下
train_example/1.jpg 0 train_example/2.jpg 0 train_example/3.jpg 0 train_example/4.jpg 0 train_example/5.jpg 0 train_example/6.jpg 0 train_example/7.jpg 0 train_example/8.jpg 0 train_example/9.jpg 0
前边是图片路径,后便是label,注意label是从0开始的。
2. 在example目录下创建自己的文件夹mytask,将imagenet中所有的文件烤过来,然后进行修改。
create_imagenet.sh
//当前路径 EXAMPLE=/home/kongtao/caffe-master/examples/voc2007_test1 //存放train.txt和val.txt的路径,就是data/mydata DATA=/home/kongtao/caffe-master/data/voc2007_data1 //不变 TOOLS=/home/kongtao/caffe-master/build/tools //存放train和val图片文件夹的主目录(这里与txt文件中的目录合起来才是图片目录) TRAIN_DATA_ROOT=/home/kongtao/learn/cnn_learn/VOC2007_research/VOCdevkit/ VAL_DATA_ROOT=/home/kongtao/learn/cnn_learn/VOC2007_research/VOCdevkit/
运行create_imagenet.sh,生成两个数据文件lmdb
make_image_mean.sh 也是修改相应的路径
最后需要修改的是model中prototxt文件,只需要修改路径
运行
./build/tools/caffe train --solver=models/bvlc_reference_caffenet/solver.prototxt
这样就可以了。
以上完成了一个数据文件的创建和训练的过程,对于我们来说,其实网络架构显得更重要,因此不仅仅是调通,更重要的是调整网络架构和改进,这也是最难得部分。
多chanel,需要对数据进行提前白化
import numpy as np import caffe import lmdb # obviously load your own inputs here -- this is just by way of example # to show the data can have any channel dimension # as the dimensions are N x K x H x W inputs = np.zeros((10, 5, 227, 227)) in_db = lmdb.open('input-lmdb', map_size=int(1e12)) with in_db.begin(write=True) as in_txn: for in_idx, in_ in enumerate(inputs): in_dat = caffe.io.array_to_datum(in_) in_txn.put('{:0>10d}'.format(in_idx), im_dat.SerializeToString()) in_db.close()
记录一下别人制作的东东
http://deepdish.io/2015/04/28/creating-lmdb-in-python/
还有一个
http://blog.csdn.net/ayst123/article/details/44077903
原创文章,转载请注明出处,谢谢!
http://www.cnblogs.com/taokongcn/p/4341371.html