Skip to content

Instantly share code, notes, and snippets.

@kndt84
Last active December 23, 2021 14:17
Show Gist options
  • Select an option

  • Save kndt84/a9af7b1bfed3324de13ae95cceaf6766 to your computer and use it in GitHub Desktop.

Select an option

Save kndt84/a9af7b1bfed3324de13ae95cceaf6766 to your computer and use it in GitHub Desktop.

Revisions

  1. kndt84 revised this gist Mar 4, 2018. 1 changed file with 31 additions and 3 deletions.
    34 changes: 31 additions & 3 deletions mobilenet.prototxt
    Original file line number Diff line number Diff line change
    @@ -2005,26 +2005,54 @@ layer {
    }
    }
    }
    layer {
    name: "fc8"
    type: "InnerProduct"
    bottom: "fc7"
    top: "fc8"
    param {
    lr_mult: 1
    decay_mult: 1
    }
    param {
    lr_mult: 2
    decay_mult: 0
    }
    inner_product_param {
    # Since num_output is unset, DIGITS will automatically set it to the
    # number of classes in your dataset.
    # Uncomment this line to set it explicitly:
    #num_output: 1000
    weight_filler {
    type: "gaussian"
    std: 0.01
    }
    bias_filler {
    type: "constant"
    value: 0
    }
    }
    }
    layer {
    name: "accuracy"
    type: "Accuracy"
    bottom: "fc7"
    bottom: "fc8"
    bottom: "label"
    top: "accuracy"
    include { stage: "val" }
    }
    layer {
    name: "loss"
    type: "SoftmaxWithLoss"
    bottom: "fc7"
    bottom: "fc8"
    bottom: "label"
    top: "loss"
    exclude { stage: "deploy" }
    }
    layer {
    name: "softmax"
    type: "Softmax"
    bottom: "fc7"
    bottom: "fc8"
    top: "softmax"
    include { stage: "deploy" }
    }
  2. kndt84 revised this gist Mar 4, 2018. 1 changed file with 1 addition and 7 deletions.
    8 changes: 1 addition & 7 deletions mobilenet.prototxt
    Original file line number Diff line number Diff line change
    @@ -1,10 +1,4 @@
    name: "MOBILENET"
    # transform_param {
    # scale: 0.017
    # mirror: false
    # crop_size: 224
    # mean_value: [103.94,116.78,123.68]
    # }
    layer {
    name: "train-data"
    type: "Data"
    @@ -2000,7 +1994,7 @@ layer {
    decay_mult: 0
    }
    convolution_param {
    num_output: 1000
    #num_output: 1000
    kernel_size: 1
    weight_filler {
    type: "msra"
  3. kndt84 created this gist Mar 4, 2018.
    2,036 changes: 2,036 additions & 0 deletions mobilenet.prototxt
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,2036 @@
    name: "MOBILENET"
    # transform_param {
    # scale: 0.017
    # mirror: false
    # crop_size: 224
    # mean_value: [103.94,116.78,123.68]
    # }
    layer {
    name: "train-data"
    type: "Data"
    top: "data"
    top: "label"
    transform_param {
    mirror: true
    crop_size: 224
    }
    data_param {
    batch_size: 32
    }
    include { stage: "train" }
    }
    layer {
    name: "val-data"
    type: "Data"
    top: "data"
    top: "label"
    transform_param {
    mirror: false
    crop_size: 224
    }
    data_param {
    batch_size: 16
    }
    include { stage: "val" }
    }
    layer {
    name: "conv1"
    type: "Convolution"
    bottom: "data"
    top: "conv1"
    param {
    lr_mult: 1
    decay_mult: 1
    }
    convolution_param {
    num_output: 32
    bias_term: false
    pad: 1
    kernel_size: 3
    stride: 2
    weight_filler {
    type: "msra"
    }
    }
    }
    layer {
    name: "conv1/bn"
    type: "BatchNorm"
    bottom: "conv1"
    top: "conv1"
    param {
    lr_mult: 0
    decay_mult: 0
    }
    param {
    lr_mult: 0
    decay_mult: 0
    }
    param {
    lr_mult: 0
    decay_mult: 0
    }
    batch_norm_param {
    use_global_stats: true
    eps: 1e-5
    }
    }
    layer {
    name: "conv1/scale"
    type: "Scale"
    bottom: "conv1"
    top: "conv1"
    param {
    lr_mult: 1
    decay_mult: 0
    }
    param {
    lr_mult: 1
    decay_mult: 0
    }
    scale_param {
    filler {
    value: 1
    }
    bias_term: true
    bias_filler {
    value: 0
    }
    }
    }
    layer {
    name: "relu1"
    type: "ReLU"
    bottom: "conv1"
    top: "conv1"
    }
    layer {
    name: "conv2_1/dw"
    type: "Convolution"
    bottom: "conv1"
    top: "conv2_1/dw"
    param {
    lr_mult: 1
    decay_mult: 1
    }
    convolution_param {
    num_output: 32
    bias_term: false
    pad: 1
    kernel_size: 3
    group: 32
    engine: CAFFE
    stride: 1
    weight_filler {
    type: "msra"
    }
    }
    }
    layer {
    name: "conv2_1/dw/bn"
    type: "BatchNorm"
    bottom: "conv2_1/dw"
    top: "conv2_1/dw"
    param {
    lr_mult: 0
    decay_mult: 0
    }
    param {
    lr_mult: 0
    decay_mult: 0
    }
    param {
    lr_mult: 0
    decay_mult: 0
    }
    batch_norm_param {
    use_global_stats: true
    eps: 1e-5
    }
    }
    layer {
    name: "conv2_1/dw/scale"
    type: "Scale"
    bottom: "conv2_1/dw"
    top: "conv2_1/dw"
    param {
    lr_mult: 1
    decay_mult: 0
    }
    param {
    lr_mult: 1
    decay_mult: 0
    }
    scale_param {
    filler {
    value: 1
    }
    bias_term: true
    bias_filler {
    value: 0
    }
    }
    }
    layer {
    name: "relu2_1/dw"
    type: "ReLU"
    bottom: "conv2_1/dw"
    top: "conv2_1/dw"
    }
    layer {
    name: "conv2_1/sep"
    type: "Convolution"
    bottom: "conv2_1/dw"
    top: "conv2_1/sep"
    param {
    lr_mult: 1
    decay_mult: 1
    }
    convolution_param {
    num_output: 64
    bias_term: false
    pad: 0
    kernel_size: 1
    stride: 1
    weight_filler {
    type: "msra"
    }
    }
    }
    layer {
    name: "conv2_1/sep/bn"
    type: "BatchNorm"
    bottom: "conv2_1/sep"
    top: "conv2_1/sep"
    param {
    lr_mult: 0
    decay_mult: 0
    }
    param {
    lr_mult: 0
    decay_mult: 0
    }
    param {
    lr_mult: 0
    decay_mult: 0
    }
    batch_norm_param {
    use_global_stats: true
    eps: 1e-5
    }
    }
    layer {
    name: "conv2_1/sep/scale"
    type: "Scale"
    bottom: "conv2_1/sep"
    top: "conv2_1/sep"
    param {
    lr_mult: 1
    decay_mult: 0
    }
    param {
    lr_mult: 1
    decay_mult: 0
    }
    scale_param {
    filler {
    value: 1
    }
    bias_term: true
    bias_filler {
    value: 0
    }
    }
    }
    layer {
    name: "relu2_1/sep"
    type: "ReLU"
    bottom: "conv2_1/sep"
    top: "conv2_1/sep"
    }
    layer {
    name: "conv2_2/dw"
    type: "Convolution"
    bottom: "conv2_1/sep"
    top: "conv2_2/dw"
    param {
    lr_mult: 1
    decay_mult: 1
    }
    convolution_param {
    num_output: 64
    bias_term: false
    pad: 1
    kernel_size: 3
    group: 64
    engine: CAFFE
    stride: 2
    weight_filler {
    type: "msra"
    }
    }
    }
    layer {
    name: "conv2_2/dw/bn"
    type: "BatchNorm"
    bottom: "conv2_2/dw"
    top: "conv2_2/dw"
    param {
    lr_mult: 0
    decay_mult: 0
    }
    param {
    lr_mult: 0
    decay_mult: 0
    }
    param {
    lr_mult: 0
    decay_mult: 0
    }
    batch_norm_param {
    use_global_stats: true
    eps: 1e-5
    }
    }
    layer {
    name: "conv2_2/dw/scale"
    type: "Scale"
    bottom: "conv2_2/dw"
    top: "conv2_2/dw"
    param {
    lr_mult: 1
    decay_mult: 0
    }
    param {
    lr_mult: 1
    decay_mult: 0
    }
    scale_param {
    filler {
    value: 1
    }
    bias_term: true
    bias_filler {
    value: 0
    }
    }
    }
    layer {
    name: "relu2_2/dw"
    type: "ReLU"
    bottom: "conv2_2/dw"
    top: "conv2_2/dw"
    }
    layer {
    name: "conv2_2/sep"
    type: "Convolution"
    bottom: "conv2_2/dw"
    top: "conv2_2/sep"
    param {
    lr_mult: 1
    decay_mult: 1
    }
    convolution_param {
    num_output: 128
    bias_term: false
    pad: 0
    kernel_size: 1
    stride: 1
    weight_filler {
    type: "msra"
    }
    }
    }
    layer {
    name: "conv2_2/sep/bn"
    type: "BatchNorm"
    bottom: "conv2_2/sep"
    top: "conv2_2/sep"
    param {
    lr_mult: 0
    decay_mult: 0
    }
    param {
    lr_mult: 0
    decay_mult: 0
    }
    param {
    lr_mult: 0
    decay_mult: 0
    }
    batch_norm_param {
    use_global_stats: true
    eps: 1e-5
    }
    }
    layer {
    name: "conv2_2/sep/scale"
    type: "Scale"
    bottom: "conv2_2/sep"
    top: "conv2_2/sep"
    param {
    lr_mult: 1
    decay_mult: 0
    }
    param {
    lr_mult: 1
    decay_mult: 0
    }
    scale_param {
    filler {
    value: 1
    }
    bias_term: true
    bias_filler {
    value: 0
    }
    }
    }
    layer {
    name: "relu2_2/sep"
    type: "ReLU"
    bottom: "conv2_2/sep"
    top: "conv2_2/sep"
    }
    layer {
    name: "conv3_1/dw"
    type: "Convolution"
    bottom: "conv2_2/sep"
    top: "conv3_1/dw"
    param {
    lr_mult: 1
    decay_mult: 1
    }
    convolution_param {
    num_output: 128
    bias_term: false
    pad: 1
    kernel_size: 3
    group: 128
    engine: CAFFE
    stride: 1
    weight_filler {
    type: "msra"
    }
    }
    }
    layer {
    name: "conv3_1/dw/bn"
    type: "BatchNorm"
    bottom: "conv3_1/dw"
    top: "conv3_1/dw"
    param {
    lr_mult: 0
    decay_mult: 0
    }
    param {
    lr_mult: 0
    decay_mult: 0
    }
    param {
    lr_mult: 0
    decay_mult: 0
    }
    batch_norm_param {
    use_global_stats: true
    eps: 1e-5
    }
    }
    layer {
    name: "conv3_1/dw/scale"
    type: "Scale"
    bottom: "conv3_1/dw"
    top: "conv3_1/dw"
    param {
    lr_mult: 1
    decay_mult: 0
    }
    param {
    lr_mult: 1
    decay_mult: 0
    }
    scale_param {
    filler {
    value: 1
    }
    bias_term: true
    bias_filler {
    value: 0
    }
    }
    }
    layer {
    name: "relu3_1/dw"
    type: "ReLU"
    bottom: "conv3_1/dw"
    top: "conv3_1/dw"
    }
    layer {
    name: "conv3_1/sep"
    type: "Convolution"
    bottom: "conv3_1/dw"
    top: "conv3_1/sep"
    param {
    lr_mult: 1
    decay_mult: 1
    }
    convolution_param {
    num_output: 128
    bias_term: false
    pad: 0
    kernel_size: 1
    stride: 1
    weight_filler {
    type: "msra"
    }
    }
    }
    layer {
    name: "conv3_1/sep/bn"
    type: "BatchNorm"
    bottom: "conv3_1/sep"
    top: "conv3_1/sep"
    param {
    lr_mult: 0
    decay_mult: 0
    }
    param {
    lr_mult: 0
    decay_mult: 0
    }
    param {
    lr_mult: 0
    decay_mult: 0
    }
    batch_norm_param {
    use_global_stats: true
    eps: 1e-5
    }
    }
    layer {
    name: "conv3_1/sep/scale"
    type: "Scale"
    bottom: "conv3_1/sep"
    top: "conv3_1/sep"
    param {
    lr_mult: 1
    decay_mult: 0
    }
    param {
    lr_mult: 1
    decay_mult: 0
    }
    scale_param {
    filler {
    value: 1
    }
    bias_term: true
    bias_filler {
    value: 0
    }
    }
    }
    layer {
    name: "relu3_1/sep"
    type: "ReLU"
    bottom: "conv3_1/sep"
    top: "conv3_1/sep"
    }
    layer {
    name: "conv3_2/dw"
    type: "Convolution"
    bottom: "conv3_1/sep"
    top: "conv3_2/dw"
    param {
    lr_mult: 1
    decay_mult: 1
    }
    convolution_param {
    num_output: 128
    bias_term: false
    pad: 1
    kernel_size: 3
    group: 128
    engine: CAFFE
    stride: 2
    weight_filler {
    type: "msra"
    }
    }
    }
    layer {
    name: "conv3_2/dw/bn"
    type: "BatchNorm"
    bottom: "conv3_2/dw"
    top: "conv3_2/dw"
    param {
    lr_mult: 0
    decay_mult: 0
    }
    param {
    lr_mult: 0
    decay_mult: 0
    }
    param {
    lr_mult: 0
    decay_mult: 0
    }
    batch_norm_param {
    use_global_stats: true
    eps: 1e-5
    }
    }
    layer {
    name: "conv3_2/dw/scale"
    type: "Scale"
    bottom: "conv3_2/dw"
    top: "conv3_2/dw"
    param {
    lr_mult: 1
    decay_mult: 0
    }
    param {
    lr_mult: 1
    decay_mult: 0
    }
    scale_param {
    filler {
    value: 1
    }
    bias_term: true
    bias_filler {
    value: 0
    }
    }
    }
    layer {
    name: "relu3_2/dw"
    type: "ReLU"
    bottom: "conv3_2/dw"
    top: "conv3_2/dw"
    }
    layer {
    name: "conv3_2/sep"
    type: "Convolution"
    bottom: "conv3_2/dw"
    top: "conv3_2/sep"
    param {
    lr_mult: 1
    decay_mult: 1
    }
    convolution_param {
    num_output: 256
    bias_term: false
    pad: 0
    kernel_size: 1
    stride: 1
    weight_filler {
    type: "msra"
    }
    }
    }
    layer {
    name: "conv3_2/sep/bn"
    type: "BatchNorm"
    bottom: "conv3_2/sep"
    top: "conv3_2/sep"
    param {
    lr_mult: 0
    decay_mult: 0
    }
    param {
    lr_mult: 0
    decay_mult: 0
    }
    param {
    lr_mult: 0
    decay_mult: 0
    }
    batch_norm_param {
    use_global_stats: true
    eps: 1e-5
    }
    }
    layer {
    name: "conv3_2/sep/scale"
    type: "Scale"
    bottom: "conv3_2/sep"
    top: "conv3_2/sep"
    param {
    lr_mult: 1
    decay_mult: 0
    }
    param {
    lr_mult: 1
    decay_mult: 0
    }
    scale_param {
    filler {
    value: 1
    }
    bias_term: true
    bias_filler {
    value: 0
    }
    }
    }
    layer {
    name: "relu3_2/sep"
    type: "ReLU"
    bottom: "conv3_2/sep"
    top: "conv3_2/sep"
    }
    layer {
    name: "conv4_1/dw"
    type: "Convolution"
    bottom: "conv3_2/sep"
    top: "conv4_1/dw"
    param {
    lr_mult: 1
    decay_mult: 1
    }
    convolution_param {
    num_output: 256
    bias_term: false
    pad: 1
    kernel_size: 3
    group: 256
    engine: CAFFE
    stride: 1
    weight_filler {
    type: "msra"
    }
    }
    }
    layer {
    name: "conv4_1/dw/bn"
    type: "BatchNorm"
    bottom: "conv4_1/dw"
    top: "conv4_1/dw"
    param {
    lr_mult: 0
    decay_mult: 0
    }
    param {
    lr_mult: 0
    decay_mult: 0
    }
    param {
    lr_mult: 0
    decay_mult: 0
    }
    batch_norm_param {
    use_global_stats: true
    eps: 1e-5
    }
    }
    layer {
    name: "conv4_1/dw/scale"
    type: "Scale"
    bottom: "conv4_1/dw"
    top: "conv4_1/dw"
    param {
    lr_mult: 1
    decay_mult: 0
    }
    param {
    lr_mult: 1
    decay_mult: 0
    }
    scale_param {
    filler {
    value: 1
    }
    bias_term: true
    bias_filler {
    value: 0
    }
    }
    }
    layer {
    name: "relu4_1/dw"
    type: "ReLU"
    bottom: "conv4_1/dw"
    top: "conv4_1/dw"
    }
    layer {
    name: "conv4_1/sep"
    type: "Convolution"
    bottom: "conv4_1/dw"
    top: "conv4_1/sep"
    param {
    lr_mult: 1
    decay_mult: 1
    }
    convolution_param {
    num_output: 256
    bias_term: false
    pad: 0
    kernel_size: 1
    stride: 1
    weight_filler {
    type: "msra"
    }
    }
    }
    layer {
    name: "conv4_1/sep/bn"
    type: "BatchNorm"
    bottom: "conv4_1/sep"
    top: "conv4_1/sep"
    param {
    lr_mult: 0
    decay_mult: 0
    }
    param {
    lr_mult: 0
    decay_mult: 0
    }
    param {
    lr_mult: 0
    decay_mult: 0
    }
    batch_norm_param {
    use_global_stats: true
    eps: 1e-5
    }
    }
    layer {
    name: "conv4_1/sep/scale"
    type: "Scale"
    bottom: "conv4_1/sep"
    top: "conv4_1/sep"
    param {
    lr_mult: 1
    decay_mult: 0
    }
    param {
    lr_mult: 1
    decay_mult: 0
    }
    scale_param {
    filler {
    value: 1
    }
    bias_term: true
    bias_filler {
    value: 0
    }
    }
    }
    layer {
    name: "relu4_1/sep"
    type: "ReLU"
    bottom: "conv4_1/sep"
    top: "conv4_1/sep"
    }
    layer {
    name: "conv4_2/dw"
    type: "Convolution"
    bottom: "conv4_1/sep"
    top: "conv4_2/dw"
    param {
    lr_mult: 1
    decay_mult: 1
    }
    convolution_param {
    num_output: 256
    bias_term: false
    pad: 1
    kernel_size: 3
    group: 256
    engine: CAFFE
    stride: 2
    weight_filler {
    type: "msra"
    }
    }
    }
    layer {
    name: "conv4_2/dw/bn"
    type: "BatchNorm"
    bottom: "conv4_2/dw"
    top: "conv4_2/dw"
    param {
    lr_mult: 0
    decay_mult: 0
    }
    param {
    lr_mult: 0
    decay_mult: 0
    }
    param {
    lr_mult: 0
    decay_mult: 0
    }
    batch_norm_param {
    use_global_stats: true
    eps: 1e-5
    }
    }
    layer {
    name: "conv4_2/dw/scale"
    type: "Scale"
    bottom: "conv4_2/dw"
    top: "conv4_2/dw"
    param {
    lr_mult: 1
    decay_mult: 0
    }
    param {
    lr_mult: 1
    decay_mult: 0
    }
    scale_param {
    filler {
    value: 1
    }
    bias_term: true
    bias_filler {
    value: 0
    }
    }
    }
    layer {
    name: "relu4_2/dw"
    type: "ReLU"
    bottom: "conv4_2/dw"
    top: "conv4_2/dw"
    }
    layer {
    name: "conv4_2/sep"
    type: "Convolution"
    bottom: "conv4_2/dw"
    top: "conv4_2/sep"
    param {
    lr_mult: 1
    decay_mult: 1
    }
    convolution_param {
    num_output: 512
    bias_term: false
    pad: 0
    kernel_size: 1
    stride: 1
    weight_filler {
    type: "msra"
    }
    }
    }
    layer {
    name: "conv4_2/sep/bn"
    type: "BatchNorm"
    bottom: "conv4_2/sep"
    top: "conv4_2/sep"
    param {
    lr_mult: 0
    decay_mult: 0
    }
    param {
    lr_mult: 0
    decay_mult: 0
    }
    param {
    lr_mult: 0
    decay_mult: 0
    }
    batch_norm_param {
    use_global_stats: true
    eps: 1e-5
    }
    }
    layer {
    name: "conv4_2/sep/scale"
    type: "Scale"
    bottom: "conv4_2/sep"
    top: "conv4_2/sep"
    param {
    lr_mult: 1
    decay_mult: 0
    }
    param {
    lr_mult: 1
    decay_mult: 0
    }
    scale_param {
    filler {
    value: 1
    }
    bias_term: true
    bias_filler {
    value: 0
    }
    }
    }
    layer {
    name: "relu4_2/sep"
    type: "ReLU"
    bottom: "conv4_2/sep"
    top: "conv4_2/sep"
    }
    layer {
    name: "conv5_1/dw"
    type: "Convolution"
    bottom: "conv4_2/sep"
    top: "conv5_1/dw"
    param {
    lr_mult: 1
    decay_mult: 1
    }
    convolution_param {
    num_output: 512
    bias_term: false
    pad: 1
    kernel_size: 3
    group: 512
    engine: CAFFE
    stride: 1
    weight_filler {
    type: "msra"
    }
    }
    }
    layer {
    name: "conv5_1/dw/bn"
    type: "BatchNorm"
    bottom: "conv5_1/dw"
    top: "conv5_1/dw"
    param {
    lr_mult: 0
    decay_mult: 0
    }
    param {
    lr_mult: 0
    decay_mult: 0
    }
    param {
    lr_mult: 0
    decay_mult: 0
    }
    batch_norm_param {
    use_global_stats: true
    eps: 1e-5
    }
    }
    layer {
    name: "conv5_1/dw/scale"
    type: "Scale"
    bottom: "conv5_1/dw"
    top: "conv5_1/dw"
    param {
    lr_mult: 1
    decay_mult: 0
    }
    param {
    lr_mult: 1
    decay_mult: 0
    }
    scale_param {
    filler {
    value: 1
    }
    bias_term: true
    bias_filler {
    value: 0
    }
    }
    }
    layer {
    name: "relu5_1/dw"
    type: "ReLU"
    bottom: "conv5_1/dw"
    top: "conv5_1/dw"
    }
    layer {
    name: "conv5_1/sep"
    type: "Convolution"
    bottom: "conv5_1/dw"
    top: "conv5_1/sep"
    param {
    lr_mult: 1
    decay_mult: 1
    }
    convolution_param {
    num_output: 512
    bias_term: false
    pad: 0
    kernel_size: 1
    stride: 1
    weight_filler {
    type: "msra"
    }
    }
    }
    layer {
    name: "conv5_1/sep/bn"
    type: "BatchNorm"
    bottom: "conv5_1/sep"
    top: "conv5_1/sep"
    param {
    lr_mult: 0
    decay_mult: 0
    }
    param {
    lr_mult: 0
    decay_mult: 0
    }
    param {
    lr_mult: 0
    decay_mult: 0
    }
    batch_norm_param {
    use_global_stats: true
    eps: 1e-5
    }
    }
    layer {
    name: "conv5_1/sep/scale"
    type: "Scale"
    bottom: "conv5_1/sep"
    top: "conv5_1/sep"
    param {
    lr_mult: 1
    decay_mult: 0
    }
    param {
    lr_mult: 1
    decay_mult: 0
    }
    scale_param {
    filler {
    value: 1
    }
    bias_term: true
    bias_filler {
    value: 0
    }
    }
    }
    layer {
    name: "relu5_1/sep"
    type: "ReLU"
    bottom: "conv5_1/sep"
    top: "conv5_1/sep"
    }
    layer {
    name: "conv5_2/dw"
    type: "Convolution"
    bottom: "conv5_1/sep"
    top: "conv5_2/dw"
    param {
    lr_mult: 1
    decay_mult: 1
    }
    convolution_param {
    num_output: 512
    bias_term: false
    pad: 1
    kernel_size: 3
    group: 512
    engine: CAFFE
    stride: 1
    weight_filler {
    type: "msra"
    }
    }
    }
    layer {
    name: "conv5_2/dw/bn"
    type: "BatchNorm"
    bottom: "conv5_2/dw"
    top: "conv5_2/dw"
    param {
    lr_mult: 0
    decay_mult: 0
    }
    param {
    lr_mult: 0
    decay_mult: 0
    }
    param {
    lr_mult: 0
    decay_mult: 0
    }
    batch_norm_param {
    use_global_stats: true
    eps: 1e-5
    }
    }
    layer {
    name: "conv5_2/dw/scale"
    type: "Scale"
    bottom: "conv5_2/dw"
    top: "conv5_2/dw"
    param {
    lr_mult: 1
    decay_mult: 0
    }
    param {
    lr_mult: 1
    decay_mult: 0
    }
    scale_param {
    filler {
    value: 1
    }
    bias_term: true
    bias_filler {
    value: 0
    }
    }
    }
    layer {
    name: "relu5_2/dw"
    type: "ReLU"
    bottom: "conv5_2/dw"
    top: "conv5_2/dw"
    }
    layer {
    name: "conv5_2/sep"
    type: "Convolution"
    bottom: "conv5_2/dw"
    top: "conv5_2/sep"
    param {
    lr_mult: 1
    decay_mult: 1
    }
    convolution_param {
    num_output: 512
    bias_term: false
    pad: 0
    kernel_size: 1
    stride: 1
    weight_filler {
    type: "msra"
    }
    }
    }
    layer {
    name: "conv5_2/sep/bn"
    type: "BatchNorm"
    bottom: "conv5_2/sep"
    top: "conv5_2/sep"
    param {
    lr_mult: 0
    decay_mult: 0
    }
    param {
    lr_mult: 0
    decay_mult: 0
    }
    param {
    lr_mult: 0
    decay_mult: 0
    }
    batch_norm_param {
    use_global_stats: true
    eps: 1e-5
    }
    }
    layer {
    name: "conv5_2/sep/scale"
    type: "Scale"
    bottom: "conv5_2/sep"
    top: "conv5_2/sep"
    param {
    lr_mult: 1
    decay_mult: 0
    }
    param {
    lr_mult: 1
    decay_mult: 0
    }
    scale_param {
    filler {
    value: 1
    }
    bias_term: true
    bias_filler {
    value: 0
    }
    }
    }
    layer {
    name: "relu5_2/sep"
    type: "ReLU"
    bottom: "conv5_2/sep"
    top: "conv5_2/sep"
    }
    layer {
    name: "conv5_3/dw"
    type: "Convolution"
    bottom: "conv5_2/sep"
    top: "conv5_3/dw"
    param {
    lr_mult: 1
    decay_mult: 1
    }
    convolution_param {
    num_output: 512
    bias_term: false
    pad: 1
    kernel_size: 3
    group: 512
    engine: CAFFE
    stride: 1
    weight_filler {
    type: "msra"
    }
    }
    }
    layer {
    name: "conv5_3/dw/bn"
    type: "BatchNorm"
    bottom: "conv5_3/dw"
    top: "conv5_3/dw"
    param {
    lr_mult: 0
    decay_mult: 0
    }
    param {
    lr_mult: 0
    decay_mult: 0
    }
    param {
    lr_mult: 0
    decay_mult: 0
    }
    batch_norm_param {
    use_global_stats: true
    eps: 1e-5
    }
    }
    layer {
    name: "conv5_3/dw/scale"
    type: "Scale"
    bottom: "conv5_3/dw"
    top: "conv5_3/dw"
    param {
    lr_mult: 1
    decay_mult: 0
    }
    param {
    lr_mult: 1
    decay_mult: 0
    }
    scale_param {
    filler {
    value: 1
    }
    bias_term: true
    bias_filler {
    value: 0
    }
    }
    }
    layer {
    name: "relu5_3/dw"
    type: "ReLU"
    bottom: "conv5_3/dw"
    top: "conv5_3/dw"
    }
    layer {
    name: "conv5_3/sep"
    type: "Convolution"
    bottom: "conv5_3/dw"
    top: "conv5_3/sep"
    param {
    lr_mult: 1
    decay_mult: 1
    }
    convolution_param {
    num_output: 512
    bias_term: false
    pad: 0
    kernel_size: 1
    stride: 1
    weight_filler {
    type: "msra"
    }
    }
    }
    layer {
    name: "conv5_3/sep/bn"
    type: "BatchNorm"
    bottom: "conv5_3/sep"
    top: "conv5_3/sep"
    param {
    lr_mult: 0
    decay_mult: 0
    }
    param {
    lr_mult: 0
    decay_mult: 0
    }
    param {
    lr_mult: 0
    decay_mult: 0
    }
    batch_norm_param {
    use_global_stats: true
    eps: 1e-5
    }
    }
    layer {
    name: "conv5_3/sep/scale"
    type: "Scale"
    bottom: "conv5_3/sep"
    top: "conv5_3/sep"
    param {
    lr_mult: 1
    decay_mult: 0
    }
    param {
    lr_mult: 1
    decay_mult: 0
    }
    scale_param {
    filler {
    value: 1
    }
    bias_term: true
    bias_filler {
    value: 0
    }
    }
    }
    layer {
    name: "relu5_3/sep"
    type: "ReLU"
    bottom: "conv5_3/sep"
    top: "conv5_3/sep"
    }
    layer {
    name: "conv5_4/dw"
    type: "Convolution"
    bottom: "conv5_3/sep"
    top: "conv5_4/dw"
    param {
    lr_mult: 1
    decay_mult: 1
    }
    convolution_param {
    num_output: 512
    bias_term: false
    pad: 1
    kernel_size: 3
    group: 512
    engine: CAFFE
    stride: 1
    weight_filler {
    type: "msra"
    }
    }
    }
    layer {
    name: "conv5_4/dw/bn"
    type: "BatchNorm"
    bottom: "conv5_4/dw"
    top: "conv5_4/dw"
    param {
    lr_mult: 0
    decay_mult: 0
    }
    param {
    lr_mult: 0
    decay_mult: 0
    }
    param {
    lr_mult: 0
    decay_mult: 0
    }
    batch_norm_param {
    use_global_stats: true
    eps: 1e-5
    }
    }
    layer {
    name: "conv5_4/dw/scale"
    type: "Scale"
    bottom: "conv5_4/dw"
    top: "conv5_4/dw"
    param {
    lr_mult: 1
    decay_mult: 0
    }
    param {
    lr_mult: 1
    decay_mult: 0
    }
    scale_param {
    filler {
    value: 1
    }
    bias_term: true
    bias_filler {
    value: 0
    }
    }
    }
    layer {
    name: "relu5_4/dw"
    type: "ReLU"
    bottom: "conv5_4/dw"
    top: "conv5_4/dw"
    }
    layer {
    name: "conv5_4/sep"
    type: "Convolution"
    bottom: "conv5_4/dw"
    top: "conv5_4/sep"
    param {
    lr_mult: 1
    decay_mult: 1
    }
    convolution_param {
    num_output: 512
    bias_term: false
    pad: 0
    kernel_size: 1
    stride: 1
    weight_filler {
    type: "msra"
    }
    }
    }
    layer {
    name: "conv5_4/sep/bn"
    type: "BatchNorm"
    bottom: "conv5_4/sep"
    top: "conv5_4/sep"
    param {
    lr_mult: 0
    decay_mult: 0
    }
    param {
    lr_mult: 0
    decay_mult: 0
    }
    param {
    lr_mult: 0
    decay_mult: 0
    }
    batch_norm_param {
    use_global_stats: true
    eps: 1e-5
    }
    }
    layer {
    name: "conv5_4/sep/scale"
    type: "Scale"
    bottom: "conv5_4/sep"
    top: "conv5_4/sep"
    param {
    lr_mult: 1
    decay_mult: 0
    }
    param {
    lr_mult: 1
    decay_mult: 0
    }
    scale_param {
    filler {
    value: 1
    }
    bias_term: true
    bias_filler {
    value: 0
    }
    }
    }
    layer {
    name: "relu5_4/sep"
    type: "ReLU"
    bottom: "conv5_4/sep"
    top: "conv5_4/sep"
    }
    layer {
    name: "conv5_5/dw"
    type: "Convolution"
    bottom: "conv5_4/sep"
    top: "conv5_5/dw"
    param {
    lr_mult: 1
    decay_mult: 1
    }
    convolution_param {
    num_output: 512
    bias_term: false
    pad: 1
    kernel_size: 3
    group: 512
    engine: CAFFE
    stride: 1
    weight_filler {
    type: "msra"
    }
    }
    }
    layer {
    name: "conv5_5/dw/bn"
    type: "BatchNorm"
    bottom: "conv5_5/dw"
    top: "conv5_5/dw"
    param {
    lr_mult: 0
    decay_mult: 0
    }
    param {
    lr_mult: 0
    decay_mult: 0
    }
    param {
    lr_mult: 0
    decay_mult: 0
    }
    batch_norm_param {
    use_global_stats: true
    eps: 1e-5
    }
    }
    layer {
    name: "conv5_5/dw/scale"
    type: "Scale"
    bottom: "conv5_5/dw"
    top: "conv5_5/dw"
    param {
    lr_mult: 1
    decay_mult: 0
    }
    param {
    lr_mult: 1
    decay_mult: 0
    }
    scale_param {
    filler {
    value: 1
    }
    bias_term: true
    bias_filler {
    value: 0
    }
    }
    }
    layer {
    name: "relu5_5/dw"
    type: "ReLU"
    bottom: "conv5_5/dw"
    top: "conv5_5/dw"
    }
    layer {
    name: "conv5_5/sep"
    type: "Convolution"
    bottom: "conv5_5/dw"
    top: "conv5_5/sep"
    param {
    lr_mult: 1
    decay_mult: 1
    }
    convolution_param {
    num_output: 512
    bias_term: false
    pad: 0
    kernel_size: 1
    stride: 1
    weight_filler {
    type: "msra"
    }
    }
    }
    layer {
    name: "conv5_5/sep/bn"
    type: "BatchNorm"
    bottom: "conv5_5/sep"
    top: "conv5_5/sep"
    param {
    lr_mult: 0
    decay_mult: 0
    }
    param {
    lr_mult: 0
    decay_mult: 0
    }
    param {
    lr_mult: 0
    decay_mult: 0
    }
    batch_norm_param {
    use_global_stats: true
    eps: 1e-5
    }
    }
    layer {
    name: "conv5_5/sep/scale"
    type: "Scale"
    bottom: "conv5_5/sep"
    top: "conv5_5/sep"
    param {
    lr_mult: 1
    decay_mult: 0
    }
    param {
    lr_mult: 1
    decay_mult: 0
    }
    scale_param {
    filler {
    value: 1
    }
    bias_term: true
    bias_filler {
    value: 0
    }
    }
    }
    layer {
    name: "relu5_5/sep"
    type: "ReLU"
    bottom: "conv5_5/sep"
    top: "conv5_5/sep"
    }
    layer {
    name: "conv5_6/dw"
    type: "Convolution"
    bottom: "conv5_5/sep"
    top: "conv5_6/dw"
    param {
    lr_mult: 1
    decay_mult: 1
    }
    convolution_param {
    num_output: 512
    bias_term: false
    pad: 1
    kernel_size: 3
    group: 512
    engine: CAFFE
    stride: 2
    weight_filler {
    type: "msra"
    }
    }
    }
    layer {
    name: "conv5_6/dw/bn"
    type: "BatchNorm"
    bottom: "conv5_6/dw"
    top: "conv5_6/dw"
    param {
    lr_mult: 0
    decay_mult: 0
    }
    param {
    lr_mult: 0
    decay_mult: 0
    }
    param {
    lr_mult: 0
    decay_mult: 0
    }
    batch_norm_param {
    use_global_stats: true
    eps: 1e-5
    }
    }
    layer {
    name: "conv5_6/dw/scale"
    type: "Scale"
    bottom: "conv5_6/dw"
    top: "conv5_6/dw"
    param {
    lr_mult: 1
    decay_mult: 0
    }
    param {
    lr_mult: 1
    decay_mult: 0
    }
    scale_param {
    filler {
    value: 1
    }
    bias_term: true
    bias_filler {
    value: 0
    }
    }
    }
    layer {
    name: "relu5_6/dw"
    type: "ReLU"
    bottom: "conv5_6/dw"
    top: "conv5_6/dw"
    }
    layer {
    name: "conv5_6/sep"
    type: "Convolution"
    bottom: "conv5_6/dw"
    top: "conv5_6/sep"
    param {
    lr_mult: 1
    decay_mult: 1
    }
    convolution_param {
    num_output: 1024
    bias_term: false
    pad: 0
    kernel_size: 1
    stride: 1
    weight_filler {
    type: "msra"
    }
    }
    }
    layer {
    name: "conv5_6/sep/bn"
    type: "BatchNorm"
    bottom: "conv5_6/sep"
    top: "conv5_6/sep"
    param {
    lr_mult: 0
    decay_mult: 0
    }
    param {
    lr_mult: 0
    decay_mult: 0
    }
    param {
    lr_mult: 0
    decay_mult: 0
    }
    batch_norm_param {
    use_global_stats: true
    eps: 1e-5
    }
    }
    layer {
    name: "conv5_6/sep/scale"
    type: "Scale"
    bottom: "conv5_6/sep"
    top: "conv5_6/sep"
    param {
    lr_mult: 1
    decay_mult: 0
    }
    param {
    lr_mult: 1
    decay_mult: 0
    }
    scale_param {
    filler {
    value: 1
    }
    bias_term: true
    bias_filler {
    value: 0
    }
    }
    }
    layer {
    name: "relu5_6/sep"
    type: "ReLU"
    bottom: "conv5_6/sep"
    top: "conv5_6/sep"
    }
    layer {
    name: "conv6/dw"
    type: "Convolution"
    bottom: "conv5_6/sep"
    top: "conv6/dw"
    param {
    lr_mult: 1
    decay_mult: 1
    }
    convolution_param {
    num_output: 1024
    bias_term: false
    pad: 1
    kernel_size: 3
    group: 1024
    engine: CAFFE
    stride: 1
    weight_filler {
    type: "msra"
    }
    }
    }
    layer {
    name: "conv6/dw/bn"
    type: "BatchNorm"
    bottom: "conv6/dw"
    top: "conv6/dw"
    param {
    lr_mult: 0
    decay_mult: 0
    }
    param {
    lr_mult: 0
    decay_mult: 0
    }
    param {
    lr_mult: 0
    decay_mult: 0
    }
    batch_norm_param {
    use_global_stats: true
    eps: 1e-5
    }
    }
    layer {
    name: "conv6/dw/scale"
    type: "Scale"
    bottom: "conv6/dw"
    top: "conv6/dw"
    param {
    lr_mult: 1
    decay_mult: 0
    }
    param {
    lr_mult: 1
    decay_mult: 0
    }
    scale_param {
    filler {
    value: 1
    }
    bias_term: true
    bias_filler {
    value: 0
    }
    }
    }
    layer {
    name: "relu6/dw"
    type: "ReLU"
    bottom: "conv6/dw"
    top: "conv6/dw"
    }
    layer {
    name: "conv6/sep"
    type: "Convolution"
    bottom: "conv6/dw"
    top: "conv6/sep"
    param {
    lr_mult: 1
    decay_mult: 1
    }
    convolution_param {
    num_output: 1024
    bias_term: false
    pad: 0
    kernel_size: 1
    stride: 1
    weight_filler {
    type: "msra"
    }
    }
    }
    layer {
    name: "conv6/sep/bn"
    type: "BatchNorm"
    bottom: "conv6/sep"
    top: "conv6/sep"
    param {
    lr_mult: 0
    decay_mult: 0
    }
    param {
    lr_mult: 0
    decay_mult: 0
    }
    param {
    lr_mult: 0
    decay_mult: 0
    }
    batch_norm_param {
    use_global_stats: true
    eps: 1e-5
    }
    }
    layer {
    name: "conv6/sep/scale"
    type: "Scale"
    bottom: "conv6/sep"
    top: "conv6/sep"
    param {
    lr_mult: 1
    decay_mult: 0
    }
    param {
    lr_mult: 1
    decay_mult: 0
    }
    scale_param {
    filler {
    value: 1
    }
    bias_term: true
    bias_filler {
    value: 0
    }
    }
    }
    layer {
    name: "relu6/sep"
    type: "ReLU"
    bottom: "conv6/sep"
    top: "conv6/sep"
    }
    layer {
    name: "pool6"
    type: "Pooling"
    bottom: "conv6/sep"
    top: "pool6"
    pooling_param {
    pool: AVE
    global_pooling: true
    }
    }
    layer {
    name: "fc7"
    type: "Convolution"
    bottom: "pool6"
    top: "fc7"
    param {
    lr_mult: 1
    decay_mult: 1
    }
    param {
    lr_mult: 2
    decay_mult: 0
    }
    convolution_param {
    num_output: 1000
    kernel_size: 1
    weight_filler {
    type: "msra"
    }
    bias_filler {
    type: "constant"
    value: 0
    }
    }
    }
    layer {
    name: "accuracy"
    type: "Accuracy"
    bottom: "fc7"
    bottom: "label"
    top: "accuracy"
    include { stage: "val" }
    }
    layer {
    name: "loss"
    type: "SoftmaxWithLoss"
    bottom: "fc7"
    bottom: "label"
    top: "loss"
    exclude { stage: "deploy" }
    }
    layer {
    name: "softmax"
    type: "Softmax"
    bottom: "fc7"
    top: "softmax"
    include { stage: "deploy" }
    }