Caffe数据层参数详解

一、简介

       运行caffe,需要先创建一个模型(model),如比较常用的Lenet等, 而一个模型由多个屋(layer)构成,每一屋又由许多参数组成。所有的参数都定义在caffe.prototxt这个文件中。要熟练使用caffe,最重要的就是学会配置文件(prototxt)的编写。

       层有很多种类型,比如Data,Convolution,Pooling等,层之间的数据流动是以Blobs的方式进行。数据层是每个模型的最底层,是模型的入口,不仅提供数据的输入,也提供数据从Blobs转换成别的格式进行保存输出。通常数据的预处理(如减去均值, 放大缩小, 裁剪和镜像等),也在这一层设置参数实现。

       数据来源可以来自高效的数据库(如LevelDB和LMDB),也可以直接来自于内存。如果不是很注重效率的话,数据也可来自磁盘的hdf5文件和图片格式文件。

二、数据层的公用参数:示例

layer {
  name: "cifar"   # 表示该层的名字,争取见名知意
  type: "Data" # 层类型。如果是Data,表明数据来源LevelDB或LMDB。 数据的来源不同,数据层类型也不同
  top: "data"  # top或bottom:每一层用bottom输入数据,top输出数据。top和bottom可以有多个或零个。
  top: "label"
  include {
    phase: TRAIN 
  }            # 用include来指定该层属于训练层或测试层。
               # 如果没有include参数,则表示该层既在训练模型也在测试模型中
  transform_param {
    scale: 0.00390625   # 实际上是1/255,即将输入数据由0-255归一化为0-1之间
    mean_file: "examples/cifar10/mean.binaryproto"  # 用配置文件进行均值操作
    mirror:1 # 1/0表示开启和关闭镜像,也可以用 true 和 false 表示
    crop_size: 227 # 裁剪一个227*227的图块。训练时随机剪裁,测试时从中间剪裁
  }
  # 数据的预处理,可以将数据变换到定义的范围内
  data_param {
    source: "examples/cifar10/cifar10_train_lmdb"
    batch_size: 100
    backend: LMDB
  }
  # data_param部分,根据数据的来源不同,进行不同的设置。  下文详解
}

三、数据层 data_param 参数解析    

 

       data_param参数表明数据的来源,不同的数据来源具有不同的设置方法。数据可以来自数据库(LevelDB和LMDB),内存,HDF5,图片,windows。

       1.来源于数据库(LevelDB和LMDB)

layer {
  name: "mnist"
  type: "Data"    # 来源于数据库,设置为Data
  top: "data"
  top: "label"
  include {
    phase: TRAIN
  }
  transform_param {
    scale: 0.00390625
  }
  data_param {
    source: "examples/mnist/mnist_train_lmdb"   # 包含数据库的目录名称 必选参数
    batch_size: 64     # 每次处理数据的个数  必选参数
    # rand_skip:       # 在开始的时候跳过某个数据的输入,通常对异步的SGD很有用。非必选参数
    backend: LMDB      # 选择是采用LevelDB还是LMDB, 默认是LevelDB。 非必选参数
  }
}

        2.来源于内存

layer {
  top: "data"
  top: "label"
  name: "memory_data"
  type: "MemoryData"    # 层类型:MemoryData
  memory_data_param{
    batch_size: 2       # 每一次处理的数据个数
    height: 100         # 宽度
    width: 100          # 高度
    channels: 1         # 通道数
  }
  transform_param {
    scale: 0.0078125
    mean_file: "mean.proto"
    mirror: false
  }
}

       3.来源于HDF5

layer {
  name: "data"
  type: "HDF5Data"   # 层类型:HDF5Data
  top: "data"
  top: "label"
  hdf5_data_param {
    source: "examples/hdf5_classification/data/train.txt"  # 读取的文件名称
    batch_size: 10    # 每一次处理的数据个数
  }
}

       4. 来源于图片

layer {
  name: "data"
  type: "ImageData"   # 层类型:ImageData
  top: "data"
  top: "label"
  transform_param {
    mirror: false
    crop_size: 227
    mean_file: "data/ilsvrc12/imagenet_mean.binaryproto"
  }
  image_data_param {
    source: "examples/_temp/file_list.txt" 
          #一个文本文件的名字,每一行给定一个图片文件的名字和标签
    batch_size: 50    # 每次处理的数据个数,即图片数
    new_height: 256   # 如果设置,将图片进行 resize 操作
    new_width: 256
  }
}

      5. 来源于 windows

layer {
  name: "data"
  type: "WindowData"   # 层类型:WindowData
  top: "data"
  top: "label"
  include {
    phase: TRAIN
  }
  transform_param {
    mirror: true
    crop_size: 227
    mean_file: "data/ilsvrc12/imagenet_mean.binaryproto"
  }
  window_data_param {
    source: "examples/finetune_pascal_detection/window_file_2007_trainval.txt"
                       # 一个文本文件的名字
    batch_size: 128    # 每次处理的数据个数,即图片数
    fg_threshold: 0.5
    bg_threshold: 0.5
    fg_fraction: 0.25
    context_pad: 16
    crop_mode: "warp"
  }
}

  

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值