zoukankan      html  css  js  c++  java
  • [caffe]网络各层参数设置

    数据层

    数据层是模型最底层,提供提供数据输入和数据从Blobs转换成别的格式进行保存输出,通常数据预处理(减去均值,放大缩小,裁剪和镜像等)也在这一层设置参数实现.

    参数设置:

    • name: 名称
    • type: 类型
      • Data: 从LMDB/LEVELDB读取数据和标签, 转换(http://deepdish.io/2015/04/28/creating-lmdb-in-python/) 可以使用convert_imageset转换
      • ImageData: 直接读取图片数据
      • ....
    • top: 输出数据(和下一层的bottom一样)
    • bottom: 输入数据()
    • include: 一般训练和测试的时候,模型层不一样,由include指定在哪一层出现, TRIAN/TEST
    • transform_params: 数据预处理
    • data_params: 数据参数
      • source: 数据位置
      • backend
      • batchsize: 设置batch的大小

    例如,caffe中自带的mnist example

    layer {
      name: "mnist" #名称
      type: "Data" #输入的是LMDB数据,前面的create_mnist.sh做了转换
      include: TRIAN  #只在训练的时候才包括(测试没有label)
      transform_param {
        scale: 0.00390625 #缩放参数
      }
      data_param {
        source: "examples/mnist/mnist_train_lmdb" #数据来源是在当前文件夹中的 mnist_train_lmdb中
        backend: LMDB
        batch_size: 64 #batch的大小
      }
      top: "data" #第一层输出data和label, 无bottom
      top: "label" #
    }

    --------------------------------------------------------------------------------------------------------------------------------------------------

    convert_imageset [FLAGS] ROOTFOLDER/  LISTFILE DB_NAME

    前面我们提到数据层中Data类型输入是LMDB/LEVELDB数据,而我们有的经常是原始图片数据,而且有可能原始图片的大小还不一致,我们需要将其转换为格式一致的可输入数据,caffe中的convert_imageset 为我们提供了这样的工具。

    FLAGS:图片组参数

    • -gray: 是否以灰度图的方式打开图片,程序调用opencv库中的imread()函数来打开图片,默认为false
    • -shuffle: 是否随机打乱图片顺序,默认为false
    • -backend: 需要转换成db文件格式,可选为leveldb或lmdb默认为lmdb
    • -resize_width/resize_height: 改变图片大小,需要的时候可以使得图片大小一致,程序调用opencv的resize()函数来对图片进行缩放,默认为0,不变
    • -check_size: 检查所有的数据是否有相同的尺寸,默认为false, 不检查
    • -encoded: 是否将原图片的编码放入最终的数据,默认为false
    • -encoded_type: 与前一个参数对应,将图片编码为一个格式

    ROOTFOLDER: 图片存放的绝对路径,从linux系统根目录开始

    LISTFILE: 图片文件列表清单,一般为一个txt文件,一行一张图片及其类别标签

    DB_NAME: 最终生成的db文件存放目录

    例如:

    #!/usr/bin/env sh
    DATA=examples/images/cropimage/  #路径变量
    rm -rf $DATA/img_train_lmdb #如果文件存在,先删除再重新创建
    build/tools/convert_imageset --shuffle --gray --check_size=true  /home/vicent/caffe/examples/images/cropimage/ $DATA/batchfile.txt $DATA/img_train_lmdb
    
    #乱序,转换为灰度,检查大小是否一致                                                   
    

      

    --------------------------------------------------------------------------------------------------------------------------------------------------

    视觉层

    卷积层

    卷积的目的是提取feature

    • name: 名称
    • type: 层类型
    • bottom: 输入
    • top: 输出
    • lr_mt: 学习率速率, 最终学习率是这个数乘以solver.prototxt 配置文件中的base_lr; 如果有两个lr_mt一个表示偏置学习率,一个表示权值学习率
    • num_outputs: filter的个数
    • kernel_size: 卷积核大小
    • stride: 步长
    • pad: 边缘扩充
    • weight_filler: 权值初始化, 默认为constant, 值全为0,经常用xavier, 也可设置为gaussian
    • bias_filler: 偏置初始化方法, 一般偏置初始化方法可以不设置

    例如:

    layer {
      name: "conv1" #名称
      type: "Convolution" #层类型
      bottom: "data" #上一层输入数据
      top: "conv1" #这一层输出数据
      param {
        lr_mult: 1  #权重学习率速率
      }
      param {
        lr_mult: 2  #偏置学习率速率
      }
      convolution_param {
        num_output: 20  #filter的个数
        kernel_size: 5    #卷积核的大小
        stride: 1  
        weight_filler {
          type: "xavier"  #权重初始化方法
        }
        bias_filler {
          type: "constant"  #偏置初始化方法
        }
      }
    }
    

    池化层

    减少数据量和数据维度

    • kernel_size:池化核大小
    • pool: 池化方法, max, ave, stochastic
    • pad:
    • stride

    Normalization

     

     
  • 相关阅读:
    监视用户是保存用户编辑还是放弃参照编辑
    AutoCAD: 添加鼠标快捷键/鼠标右键
    C# List<T>集合布尔运算
    List<T>的用法详解
    天正的坑
    C#札记
    AUTOCAD2013 以上利用ACCORECONSOLE+ SCR后台批量清理图纸
    BaiduSitemap
    三一邮件群发
    Windows+IIS+Mysql+php安装
  • 原文地址:https://www.cnblogs.com/vincentcheng/p/8474506.html
Copyright © 2011-2022 走看看