Ubuntu下如何训练自己的图像数据集

第一步:准备数据

首先需要准备两个文件夹,一个是train,一个是val.收集一定数量的图片,越多越好,要求同样的分辨率和扩展名.

train中,将图片分类存放至文件夹中,例如,000文件夹中全是赵XX ,001文件夹中全是钱XX,如下

Ubuntu下如何训练自己的图像数据集

val中,可以不按照文件夹存放,也可以如train一样按照文件夹存放,同样存放一定数量的图片,例如赵XX和钱XX的图片

接下来就是准备对应的索引文件train.txt和val.txt,里面包括:图片相对于txt文件的相对位置和编号,train.txt和val.txt格式一致,如下

Ubuntu下如何训练自己的图像数据集 其中,图片的对应关系一定不能错,train.txt中赵XX 是2,则val.txt中赵XX 的图片对应也必须是2.

 

第二步,图片转换

准备好图片后,就需要将图片转换成lmdb格式,需要修改examples/imagenet中的create_imagenet.sh.该文件如图所示Ubuntu下如何训练自己的图像数据集

这一部分类似于C语言的define,可使用绝对路径来填写地址,也可以写相对路径

Ubuntu下如何训练自己的图像数据集

这一段是指在转换图片的过程中是否需要调整图片的尺寸,建议RESIZE为false,准备图片时就应该自行调整好所有图片的尺寸.

Ubuntu下如何训练自己的图像数据集

这一段是转换格式的命令,对应的格式为

GOLG_logtostderr               是否输出日志,

选择主程序                    $TOOLS/convert_imageset

调整图片高度                  --resize_height

调整图片宽度                  --resize_weight

模式                          shuffle

图片目录                      $TRAIN_DATA_ROOT

索引文件                      $TRAIN_DATA_ROOT/train.txt

转换后输出位置                $EXAMPLE/ilsvrc12_train_lmdb

怎么修改这一段要根据自己的文件所处的位置修改

然后运行 此时可以看到 它根据txt文件寻找到了一共2000张图片,所以如果此处报错 肯定是txt文件中地址写错了 如图

Ubuntu下如何训练自己的图像数据集

 

第三步,计算均值

需要修改examples/imagenet中的make_imagenet_mean.sh. 如图

Ubuntu下如何训练自己的图像数据集

前三行同上 类似于define 5.6行对应关系如下

选择主程序                    $TOOLS/compute_image_mean

图片数据库位置                $EXAMPLE/ilsvrc12_train_lmdb

计算好的均值后输出位置        $EXAMPLE/imagenet_mean.binaryproto

运行

Ubuntu下如何训练自己的图像数据集

 

第四步,开始训练

需要修改examples/imagenet中的train_caffenet.sh

Ubuntu下如何训练自己的图像数据集

选择主程序                    ./build/tools/caffe

目的                          train

配置文件所在位置              --solver=………./solver.prototxt

该配置文件默认在./data/bvlc..reference…里面,建议复制solver.prototxt和train_val.prototxt到imagenet里面

接下来修改solver.prototxt文件

Ubuntu下如何训练自己的图像数据集

net:                                        网层配置文件位置

test_iter:                                    测试的批次 
test_interval:                                 每多少次迭代测试一次 
base_lr:                                     是基础学习率 
lr_policy:                                    学习率变化 
gamma:                                     学习率变化的比率 
stepsize:                                     每多少次迭代减少学习率 
display:                                      每多少次打印一次结果
max_iter:                                     最大迭代次数, 
momentum:                                   学习的参数,不用变 
weight_decay:                                 学习的参数,不用变 
snapshot:                                     每多少次保存一次,方便中断后继续训练

snapshot_prefix:                             保存位置
solver_mode:                                  使用什么设备训练,GPU或CPU

建议先保持默认参数 以后更深入了再自己修改.

修改train_val.prototxt

Ubuntu下如何训练自己的图像数据集Ubuntu下如何训练自己的图像数据集Ubuntu下如何训练自己的图像数据集

Ubuntu下如何训练自己的图像数据集

只修改mean_file和source的值 改成你自己的对应文件所在即可.

开始训练

Ubuntu下如何训练自己的图像数据集

训练到一定次数时,会保存.caffemodel文件,便是可以使用的训练好的模型文件.