zoukankan      html  css  js  c++  java
  • caffe 图片数据的转换成lmdb和数据集均值(转)

    转自网站: 

    http://blog.csdn.net/muyiyushan/article/details/70578077

    1.准备数据

    使用dog/cat数据集,在训练项目根目录下分别建立train和val文件夹,作为训练数据和验证数据的保存位置。train和val文件夹下各有两个文件夹:dogs和cats,分别保存dog和cat的图片。dog和cat分别有1000张训练图像和400张测试图像。

    写一个python脚本文件,遍历train和val两个文件夹,分别生成train.txt和val.txt,其中保存图片的相对路径和标签。类似下面格式,但是最好要将cat和dog的路径顺序打乱,不要一开始全cat,之后全是dog。

    
    
    /cats/cat.0.jpg 0
    /cats/cat.1.jpg 0
    /cats/cat.10.jpg 0
    /cats/cat.100.jpg 0
    /cats/cat.101.jpg 0
    /cats/cat.102.jpg 0
    /cats/cat.103.jpg 0
    /cats/cat.104.jpg 0
    
    
    

      

     

    2.数据预处理

    2.1转换数据格式

    使用convert_imageset.exe将原始图像转换成caffe直接读取的格式:lmdb或leveldb。默认是lmdb,如果要生成leveldb,要添加–backend=leveldb参数。建立convert_image.bat文件,里面命令如下。

    
    
    SET GLOG_logtostderr=1
    E:CodeCaffecaffe-mastercaffe-masterBuildx64Releaseconvert_imageset.exe --resize_width=256 --resize_height=256 E:CodeCaffecaffe-mastercaffe-masterdatadogCat	rain E:CodeCaffecaffe-mastercaffe-masterdatadogCat	rain.txt E:CodeCaffecaffe-mastercaffe-masterdatadogCat	rainldb
    E:CodeCaffecaffe-mastercaffe-masterBuildx64Releaseconvert_imageset.exe  --resize_width=256 --resize_height=256 E:CodeCaffecaffe-mastercaffe-masterdatadogCatval E:CodeCaffecaffe-mastercaffe-masterdatadogCatval.txt E:CodeCaffecaffe-mastercaffe-masterdatadogCatvalldb
    pause

    参数说明: 
    1. E:CodeCaffecaffe-mastercaffe-masterBuildx64Releaseconvert_imageset.exe是执行程序路径。 
    2. –resize_width=256 –resize_height=256重新指定生成图像大小。 
    3. E:CodeCaffecaffe-mastercaffe-masterdatadogCat rain是训练图像存储位置。 
    4. E:CodeCaffecaffe-mastercaffe-masterdatadogCat rain.txt训练图像的索引文件。 
    5. E:CodeCaffecaffe-mastercaffe-masterdatadogCat rainldb生成的lmdb格式文件路径。

    测试图像同上。

    注意:3的路径和4中train.txt里指定路径连接在一块是图像的绝对路径,否则找不到图片) 
    执行convert_image.bat文件,即可生成lmdb文件,分别保存在指定路径中。

    2.3计算图像均值

    建立compute_mean.bat并执行,内容如下

    
    
    E:CodeCaffecaffe-mastercaffe-masterBuildx64Releasecompute_image_mean.exe E:CodeCaffecaffe-mastercaffe-masterdatadogCat	rainldb E:CodeCaffecaffe-mastercaffe-masterdatadogCat	rain_mean.binaryproto

    参数说明 
    1. E:CodeCaffecaffe-mastercaffe-masterBuildx64Releasecompute_image_mean.exe是计算均值的执行文件。 
    2. E:CodeCaffecaffe-mastercaffe-masterdatadogCat rainldb上一步生成的了 lmdb文件路径。 
    3. E:CodeCaffecaffe-mastercaffe-masterdatadogCat rain_mean.binaryproto生成的均值文件,后缀是.binaryproto。

    3.修改配置文件

    在项目根目录新建train_val文件夹,将.caffe-mastermodelsvlc_reference_caffenet中的配置文件复制到train_val中。包括train_val.prototxt和solver.prototxt。

    train_val.prototxt中修改mean_file路径(训练和测试时用同样的mean file)和data_source的路径,设置相应的batch_size。将最后一层fc8的num_output设置为相应的输出类别数目,也就是2。

    solver.prototxt中设置如下。

    net: "E:/Code/Caffe/caffe-master/caffe-master/data/dogCat/train_val/train_val.prototxt"
    test_iter: 16
    test_interval: 50
    base_lr: 0.01
    lr_policy: "step"
    gamma: 0.1
    stepsize: 2000
    display: 20
    max_iter: 10000
    momentum: 0.9
    weight_decay: 0.0005
    snapshot: 500
    snapshot_prefix: "E:/Code/Caffe/caffe-master/caffe-master/data/dogCat/caffenet_finetune"
    solver_mode: CPU
    

      

    net参数为刚才设置好的train_val.prototxt。 
    test_iter为测试时使用的batch个数,test_iter*testbatch_size=test images number。 
    test_interval: 测试的迭代间隔次数。 
    max_iter:迭代次数。 

    4.开始训练

    建立caffe.bat训练模型。并保存log文件。

    5.可视化训练过程

    使用log文件可视化accuracy和loss等参数。

    6.微调

    1-5完成了从头训练一个模型,我们也可以从头训练一个模型。但是这样花费时间很多,而且如果训练数据不够多,训练精度也不高。基于迁移学习的思想,可以用自己的数据finetune用imagenet预训练过的模型,这样减少训练时间,效果也更好。实际上就是参数初始化方法不同。

    下载预训练模型。

    相应修改train_val.prototxt和solver.prototxt。train_val.prototxt中配置好数据文件路径,将最后一层的名称改掉,设置相应num_output,增大weights和bias的lr_mult(从头训练,要加快速度)。

    solver.prototxt中减少初始学习率。

    开始训练。

  • 相关阅读:
    日常排版--word中的一些小技巧(交叉引用)
    各种中文乱码解决办法
    SpringBoot @RequestBody 中文乱码
    转:十大经典排序算法(动图演示)
    阿里云服务器,无法通过公网ip访问实例
    Attribute meta-data#android.support.VERSION@value value=(25.4.0) from AndroidManifest.xml:25:13-35 is also present at AndroidManifest.xml:28:13-35 value=(26.1.0).
    synchronized用法详解
    错误:(26, 13) Failed to resolve: com.android.support:appcompat-v7:27.+
    HashMap的clear方法
    SSM之全局异常处理器
  • 原文地址:https://www.cnblogs.com/byteHuang/p/8017131.html
Copyright © 2011-2022 走看看