深度学习之caffe使用小结(1)
2017-06-04 18:31
218 查看
1、执行目录
至少在最新的版本中,caffe直接在根目录执行脚本文件会报错,需要先
然后执行相应的脚本,比如\caffe-master\examples\cifar10中的train_quick.sh,并且需要加sudo
2、数据集的制作
就是图片列表,后面带有分类标号的,一般讲jpg格式的图片放在某个目录下,然后执行以下脚本:
最后将txt文件copy到自己定义的数据文件夹中。
格式将会是地址+标签:
3、finetuning下载模型
模型在caffe zoo中下载:
下载完成之后可以在 models/bvlc_googlenet/ 的文件夹中看到 以下文件:
4、prototxt修改
4.1 train_val
首先是数据层的来源改为自己的文件路径;
然后是比较关键的是自己修改过的层,如果不改名,初始化时仍然用原始的参数初始化,这样类别不一致的时候,是会报错的。
4.2 solver.prototxt
可以在batch的大小上进行修改,根据自己机器的性能量力而行。
把前几层的学习率调低,或者干脆为0,理解上是因为最开始几层中提取的都是较为低层次或者说通用的特征,对于我们自己的训练集来说也是十分实用的。
将最后几层的学习率调大,因为改名后的这些层是按照指定的初始化方式赋值的,需要从头开始学习。
将solver中的基础学习率调的小一点,一般除以100。
至少在最新的版本中,caffe直接在根目录执行脚本文件会报错,需要先
cd caffe-master
然后执行相应的脚本,比如\caffe-master\examples\cifar10中的train_quick.sh,并且需要加sudo
2、数据集的制作
就是图片列表,后面带有分类标号的,一般讲jpg格式的图片放在某个目录下,然后执行以下脚本:
find -name cat.\*.jpg |cut -d '/' -f2-3 >train.txt sed -i 's/$/ 0/g' train.txt find -name dog.\*.jpg |cut -d '/' -f2-3 >tmp.txt sed -i 's/$/ 1/g' tmp.txt cat tmp.txt >>train.txt
最后将txt文件copy到自己定义的数据文件夹中。
格式将会是地址+标签:
/home/kernel_bin/caffe-master/data/fine/images/12123529133_c1fb58f6dc.jpg 1
3、finetuning下载模型
模型在caffe zoo中下载:
python ./scripts/download_model_binary.py ./models/bvlc_googlenet
下载完成之后可以在 models/bvlc_googlenet/ 的文件夹中看到 以下文件:
train_val.prototxt quick_solver.prototxt solver.prototxt deploy.protoxt bvlc_reference_caffenet.caffemodel readme.md
4、prototxt修改
4.1 train_val
首先是数据层的来源改为自己的文件路径;
layer { name: "data" type: "Data" top: "data" top: "label" include { phase: TRAIN } transform_param { # 这里也可以放mean.binaryproto mirror: true crop_size: 224 mean_value: 104 mean_value: 117 mean_value: 123 } data_param { source: "/path" # 这里是lmdb格式的训练集文件路径 batch_size: 16 backend: LMDB } }
然后是比较关键的是自己修改过的层,如果不改名,初始化时仍然用原始的参数初始化,这样类别不一致的时候,是会报错的。
layer { name: "fc8_fine" # 因为这是我们自己修改过的层,所以必须改名,否则报错 type: "InnerProduct" bottom: "fc7" top: "fc8_fine" # 这里也要改 # lr_mult is set to higher than for other layers, because this layer is starting from random while the others are already trained param { lr_mult: 10 decay_mult: 1 } param { lr_mult: 20 decay_mult: 0 } inner_product_param { num_output: 2 # 根据自己的分类需要设置类别个数 weight_filler { type: "gaussian" std: 0.01 } bias_filler { type: "constant" value: 0 } } }
4.2 solver.prototxt
可以在batch的大小上进行修改,根据自己机器的性能量力而行。
把前几层的学习率调低,或者干脆为0,理解上是因为最开始几层中提取的都是较为低层次或者说通用的特征,对于我们自己的训练集来说也是十分实用的。
将最后几层的学习率调大,因为改名后的这些层是按照指定的初始化方式赋值的,需要从头开始学习。
将solver中的基础学习率调的小一点,一般除以100。
相关文章推荐
- 深度学习之caffe使用小结(1)
- 深度学习之caffe使用小结(1)
- 深度学习之caffe使用小结(1)
- 深度学习之caffe使用小结(1)
- 深度学习之caffe使用小结(1)
- 深度学习之caffe使用小结(1)
- 深度学习之caffe使用小结(1)
- 深度学习之caffe使用小结(1)
- 深度学习之caffe使用小结(1)
- windows 下深度学习模块 caffe 的训练和使用小结
- 深度学习之caffe使用小结(1)
- 深度学习之caffe使用小结(1)
- 深度学习Caffe平台实例——CIFAR-10数据集在caffe平台上模型训练及实例使用模型进行预测
- 深度学习-Caffe 使用问题整理
- 深度学习文章5:使用caffe对自己的图像数据进行训练并测试
- 使用深度学习Caffe框架的C++接口进行物体分类
- 新增linux账户来使用深度学习框架-caffe
- 【神经网络与深度学习】Caffe源码中各种依赖库的作用及简单使用
- 【神经网络与深度学习】【Qt开发】【VS开发】从caffe-windows-visual studio2013到Qt5.7使用caffemodel进行分类的移植过程
- 【深度学习】关于解决caffe中draw_net无法使用的问题