这里先介绍采用image-net来训练自己的数据:
~/Data/train
~/Data/val
格式样例:
0001.jpg 1
0002.jpg 2
格式样例:
0001.jpg 1
0002.jpg 2
假设这两个文件均放在:
~/Data
这里将数据最好放在自己的用户组里面,放在别的用户组,
在调用image-net的时候可能会涉及到权限问题导致运行失败。
改为:自己想存放的位置。(不建议修改,不然还需要做相应的修改,挺麻烦的)
我这里没有做修改,所以在执行creat_imagenet.sh之后,
在~/XXX/caffe/example/imagenet的目录下产生了两个文件:
ilsvrc12_train_lmdb ilsvrc12_val_lmdb
改为:DATA=/home/XXX/DATA
改为:TRAIN_DATA_ROOT=/home/YYY/Data/train/
改为:VAL_DATA_ROOT=/home/YYY/Data/val/
也就是根据自己的数据已经产生了两个数据,存放在caffe/example/imagenet中:
ilsvrc12_train_lmdb ilsvrc12_val_lmdb
我这里不做修改,也就是将会在caffe/data/ilsvrc12中产生:
imagenet_mean.binaryproto
执行完了之后,将会在caffe/data/ilsvrc12中看到一个执行结果:
imagenet_mean.binaryproto
那么在目录caffe/models/bvlc_reference_caffenet中
需要修改train_val.prototxt中相应地方。
那么在目录caffe/models/bvlc_reference_caffenet中
需要修改train_val.prototxt中相应地方。
因为很多参数我都没有修改,所以迭代了450000次。
更详细的描述可以参考:
http://blog.csdn.net//chenriwei2/article/details/38735891
每迭代10000次的时候,会保存一个类似运行环境一样的东西吧。
如果中途突然断电之类的,终止了程序运行,那么可以直接运行:
./example/imagenet/resume_training.sh
训练好的模型存放在caffe/models/bvlc_reference_caffenet中。
1 准备数据:
1.1 训练数据准备:
假设放在:~/Data/train
1.2 确认数据准备:
假设放在:~/Data/val
1.3 准备两个txt文档:
1.3.1 准备train.txt:
内容为:训练数据图片名称+标签格式样例:
0001.jpg 1
0002.jpg 2
1.3.2 准备val.txt:
内容为:确认数据图片名称+标签格式样例:
0001.jpg 1
0002.jpg 2
假设这两个文件均放在:
~/Data
这里将数据最好放在自己的用户组里面,放在别的用户组,
在调用image-net的时候可能会涉及到权限问题导致运行失败。
2 修改creat_imagenet.sh参数:
2.1 修改所创建数据的存储位置
EXAMPLE=example/imagenet改为:自己想存放的位置。(不建议修改,不然还需要做相应的修改,挺麻烦的)
我这里没有做修改,所以在执行creat_imagenet.sh之后,
在~/XXX/caffe/example/imagenet的目录下产生了两个文件:
ilsvrc12_train_lmdb ilsvrc12_val_lmdb
2.2 修改txt存放的目录
DATA=data/ilsvrc12改为:DATA=/home/XXX/DATA
2.3 修改训练数据的目录
TRAIN_DATA_ROOT=/path/to/imagenet/train/改为:TRAIN_DATA_ROOT=/home/YYY/Data/train/
2.4 修改确认数据的目录
VAL_DATA_ROOT=/path/to/imagenet/val/改为:VAL_DATA_ROOT=/home/YYY/Data/val/
3 回到caffe的根目录执行creat_imagenet.sh:
./example/imagenet/creat_imagenet.sh也就是根据自己的数据已经产生了两个数据,存放在caffe/example/imagenet中:
ilsvrc12_train_lmdb ilsvrc12_val_lmdb
4 在caffe根目录中执行make_imagenet_mean.sh:
4.1 修改EXAPLE参数:
如果前面做了修改,那么这里做相应的修改4.2 修改DATA参数:
这个参数是指明所求的均值存放的位置。(不建议修改,不然还需要做相应的修改,挺麻烦的)我这里不做修改,也就是将会在caffe/data/ilsvrc12中产生:
imagenet_mean.binaryproto
4.3 回到caffe的根目录执行make_imagenet_mean.sh:
./example/imagenet/make_imagenet_mean.sh执行完了之后,将会在caffe/data/ilsvrc12中看到一个执行结果:
imagenet_mean.binaryproto
5 进行训练:
5.1 修改所创建数据的目录:
如果前面2.1中做了修改,那么在目录caffe/models/bvlc_reference_caffenet中
需要修改train_val.prototxt中相应地方。
5.2 修改均值结果目录:
如果前面4.2中做了修改,那么在目录caffe/models/bvlc_reference_caffenet中
需要修改train_val.prototxt中相应地方。
5.3 模型参数修改:
请参考: http://blog.csdn.net/hmxiaobao/article/details/514437945.4 回到caffe根目录进行训练:
./example/imagenet/train_caffenet.sh因为很多参数我都没有修改,所以迭代了450000次。
更详细的描述可以参考:
http://blog.csdn.net//chenriwei2/article/details/38735891
每迭代10000次的时候,会保存一个类似运行环境一样的东西吧。
如果中途突然断电之类的,终止了程序运行,那么可以直接运行:
./example/imagenet/resume_training.sh
训练好的模型存放在caffe/models/bvlc_reference_caffenet中。