使用caffe训练我自己的jpg数据集:键入"caffe.ImageDataParameter"没有名为“后端"的字段, [英] use caffe to train my own jpg datasets:type "caffe.ImageDataParameter" has no field named "backend"

查看:55
本文介绍了使用caffe训练我自己的jpg数据集:键入"caffe.ImageDataParameter"没有名为“后端"的字段,的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

当我运行train_caffenet.sh时,出现以下错误:

I0906 10:56:42.327703 21556 solver.cpp:91] Creating training net from net file: /home/pris/caffe-master/examples/myself/train_val.prototxt
[libprotobuf ERROR google/protobuf/text_format.cc:245] Error parsing text-format caffe.NetParameter: 26:12: Message type "caffe.ImageDataParameter" has no field named "backend".
F0906 10:56:42.327837 21556 upgrade_proto.cpp:79] Check failed: ReadProtoFromTextFile(param_file, param) Failed to parse NetParameter file: /home/pris/caffe-master/examples/myself/train_val.prototxt
*** Check failure stack trace: ***
    @     0x7f5013ca0daa  (unknown)
    @     0x7f5013ca0ce4  (unknown)
    @     0x7f5013ca06e6  (unknown)
    @     0x7f5013ca3687  (unknown)
    @     0x7f50142b019e  caffe::ReadNetParamsFromTextFileOrDie()
    @     0x7f501429e76b  caffe::Solver<>::InitTrainNet()
    @     0x7f501429f83c  caffe::Solver<>::Init()
    @     0x7f501429fb6a  caffe::Solver<>::Solver()
    @     0x7f50143de663  caffe::Creator_SGDSolver<>()
    @           0x40e9be  caffe::SolverRegistry<>::CreateSolver()
    @           0x407b62  train()
    @           0x4059ec  main
    @     0x7f5012faef45  (unknown)
    @           0x406121  (unknown)
    @              (nil)  (unknown)
Aborted (core dumped)

我已经尝试解决了几天,但仍然不知道怎么回事.
这是我的train_val.prototxt,主要是对$CAFFE_TOOT/models/bvlc_reference_caffenet

中的内容进行了修改

name: "CaffeNet"
layer {
  name: "data"
  type: "ImageData"
  top: "data"
  top: "label"
  include {
    phase: TRAIN
  }
  transform_param {
    mirror: true
    crop_size: 227
    mean_file: "/home/pris/caffe-master/data/myself/myimagenet_mean.binaryproto"
  }
# mean pixel / channel-wise mean instead of mean image
#  transform_param {
#    crop_size: 227
#    mean_value: 104
#    mean_value: 117
#    mean_value: 123
#    mirror: true
#  }
  image_data_param {
    source: "/home/pris/caffe-master/examples/myself/imagenet_train_leveldb"
    batch_size: 256
    backend: LEVELDB
  }
}
layer 
{
  name: "data"
  type: "ImageData"
  top: "data"
  top: "label"
  include { phase: TEST }
  transform_param 
  {
    mirror: false
    crop_size: 227
    mean_file: "/home/pris/caffe-master/data/myself/myimagenet_mean.binaryproto"
  }
# mean pixel / channel-wise mean instead of mean image
#  transform_param {
#    crop_size: 227
#    mean_value: 104
#    mean_value: 117
#    mean_value: 123
#    mirror: false
#  }
  image_data_param 
  {
    source: "/home/pris/caffe-master/examples/myself/imagenet_val_leveldb"
    batch_size: 50
    backend: LEVELDB
  }
}
layer {
  name: "conv1"
  type: "Convolution"
  bottom: "data"
  top: "conv1"
  param 
  {
    lr_mult: 1
    decay_mult: 1
  }
  param 
  {
    lr_mult: 2
    decay_mult: 0
  }
  convolution_param 
  {
    num_output: 96
    kernel_size: 11
    stride: 4
    weight_filler 
    {
      type: "gaussian"
      std: 0.01
    }
    bias_filler 
    {
      type: "constant"
      value: 0
    }
  }
}
layer {
  name: "relu1"
  type: "ReLU"
  bottom: "conv1"
  top: "conv1"
}
layer {
  name: "pool1"
  type: "Pooling"
  bottom: "conv1"
  top: "pool1"
  pooling_param {
    pool: MAX
    kernel_size: 3
    stride: 2
  }
}
layer {
  name: "norm1"
  type: "LRN"
  bottom: "pool1"
  top: "norm1"
  lrn_param {
    local_size: 5
    alpha: 0.0001
    beta: 0.75
  }
}
layer {
  name: "conv2"
  type: "Convolution"
  bottom: "norm1"
  top: "conv2"
  param 
  {
    lr_mult: 1
    decay_mult: 1
  }
  param 
  {
    lr_mult: 2
    decay_mult: 0
  }
  convolution_param 
  {
    num_output: 256
    pad: 2
    kernel_size: 5
    group: 2
    weight_filler 
    {
      type: "gaussian"
      std: 0.01
    }
    bias_filler 
    {
      type: "constant"
      value: 1
    }
  }
}
layer {
  name: "relu2"
  type: "ReLU"
  bottom: "conv2"
  top: "conv2"
}
layer {
  name: "pool2"
  type: "Pooling"
  bottom: "conv2"
  top: "pool2"
  pooling_param {
    pool: MAX
    kernel_size: 3
    stride: 2
  }
}
layer {
  name: "norm2"
  type: "LRN"
  bottom: "pool2"
  top: "norm2"
  lrn_param {
    local_size: 5
    alpha: 0.0001
    beta: 0.75
  }
}
layer {
  name: "conv3"
  type: "Convolution"
  bottom: "norm2"
  top: "conv3"
  param 
  {
    lr_mult: 1
    decay_mult: 1
  }
  param 
  {
    lr_mult: 2
    decay_mult: 0
  }
  convolution_param 
  {
    num_output: 384
    pad: 1
    kernel_size: 3
    weight_filler 
    {
      type: "gaussian"
      std: 0.01
    }
    bias_filler 
    {
      type: "constant"
      value: 0
    }
  }
}
layer {
  name: "relu3"
  type: "ReLU"
  bottom: "conv3"
  top: "conv3"
}
layer {
  name: "conv4"
  type: "Convolution"
  bottom: "conv3"
  top: "conv4"
  param 
  {
    lr_mult: 1
    decay_mult: 1
  }
  param 
  {
    lr_mult: 2
    decay_mult: 0
  }
  convolution_param 
  {
    num_output: 384
    pad: 1
    kernel_size: 3
    group: 2
    weight_filler 
    {
      type: "gaussian"
      std: 0.01
    }
    bias_filler 
    {
      type: "constant"
      value: 1
    }
  }
}
layer {
  name: "relu4"
  type: "ReLU"
  bottom: "conv4"
  top: "conv4"
}
layer {
  name: "conv5"
  type: "Convolution"
  bottom: "conv4"
  top: "conv5"
  param 
  {
    lr_mult: 1
    decay_mult: 1
  }
  param 
  {
    lr_mult: 2
    decay_mult: 0
  }
  convolution_param {
    num_output: 256
    pad: 1
    kernel_size: 3
    group: 2
    weight_filler {
      type: "gaussian"
      std: 0.01
    }
    bias_filler {
      type: "constant"
      value: 1
    }
  }
}
layer {
  name: "relu5"
  type: "ReLU"
  bottom: "conv5"
  top: "conv5"
}
layer {
  name: "pool5"
  type: "Pooling"
  bottom: "conv5"
  top: "pool5"
  pooling_param {
    pool: MAX
    kernel_size: 3
    stride: 2
  }
}
layer {
  name: "fc6"
  type: "InnerProduct"
  bottom: "pool5"
  top: "fc6"
  param 
  {
    lr_mult: 1
    decay_mult: 1
  }
  param 
  {
    lr_mult: 2
    decay_mult: 0
  }
  inner_product_param {
    num_output: 4096
    weight_filler {
      type: "gaussian"
      std: 0.005
    }
    bias_filler {
      type: "constant"
      value: 1
    }
  }
}
layer {
  name: "relu6"
  type: "ReLU"
  bottom: "fc6"
  top: "fc6"
}
layer {
  name: "drop6"
  type: "Dropout"
  bottom: "fc6"
  top: "fc6"
  dropout_param {
    dropout_ratio: 0.5
  }
}
layer {
  name: "fc7"
  type: "InnerProduct"
  bottom: "fc6"
  top: "fc7"
  param {
    lr_mult: 1
    decay_mult: 1
  }
  param {
    lr_mult: 2
    decay_mult: 0
  }
  inner_product_param {
    num_output: 4096
    weight_filler {
      type: "gaussian"
      std: 0.005
    }
    bias_filler {
      type: "constant"
      value: 1
    }
  }
}
layer {
  name: "relu7"
  type: "ReLU"
  bottom: "fc7"
  top: "fc7"
}
layer {
  name: "drop7"
  type: "Dropout"
  bottom: "fc7"
  top: "fc7"
  dropout_param {
    dropout_ratio: 0.5
  }
}
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 {
    num_output: 1000
    weight_filler {
      type: "gaussian"
      std: 0.01
    }
    bias_filler {
      type: "constant"
      value: 0
    }
  }
}
layer {
  name: "accuracy"
  type: "Accuracy"
  bottom: "fc8"
  bottom: "label"
  top: "accuracy"
  include {
    phase: TEST
  }
}
layer {
  name: "loss"
  type: "SoftmaxWithLoss"
  bottom: "fc8"
  bottom: "label"
  top: "loss"
}

sovler.prototxt

net: "/home/pris/caffe-master/examples/myself/train_val.prototxt"
test_iter: 10
test_interval: 500
base_lr: 0.001
lr_policy: "step"
gamma: 0.1
stepsize: 100000
display: 20
max_iter: 450000
momentum: 0.9
weight_decay: 0.0005
snapshot: 2000
snapshot_prefix:"/home/pris/caffe-master/examples/myself/result"
solver_mode: GPU

train_caffenet.sh:

#!/usr/bin/env sh

/home/pris/caffe-master/build/tools/caffe train \
    --solver=/home/pris/caffe-master/examples/myself/solver.prototxt

如果有人可以帮助我修复它,我将不胜感激.

解决方案

您正在从leveldb数据库中读取训练数据,应该使用类型为"Data"不是 "ImageData"的输入层. /p>

when I run train_caffenet.sh, I get the following errors:

I0906 10:56:42.327703 21556 solver.cpp:91] Creating training net from net file: /home/pris/caffe-master/examples/myself/train_val.prototxt
[libprotobuf ERROR google/protobuf/text_format.cc:245] Error parsing text-format caffe.NetParameter: 26:12: Message type "caffe.ImageDataParameter" has no field named "backend".
F0906 10:56:42.327837 21556 upgrade_proto.cpp:79] Check failed: ReadProtoFromTextFile(param_file, param) Failed to parse NetParameter file: /home/pris/caffe-master/examples/myself/train_val.prototxt
*** Check failure stack trace: ***
    @     0x7f5013ca0daa  (unknown)
    @     0x7f5013ca0ce4  (unknown)
    @     0x7f5013ca06e6  (unknown)
    @     0x7f5013ca3687  (unknown)
    @     0x7f50142b019e  caffe::ReadNetParamsFromTextFileOrDie()
    @     0x7f501429e76b  caffe::Solver<>::InitTrainNet()
    @     0x7f501429f83c  caffe::Solver<>::Init()
    @     0x7f501429fb6a  caffe::Solver<>::Solver()
    @     0x7f50143de663  caffe::Creator_SGDSolver<>()
    @           0x40e9be  caffe::SolverRegistry<>::CreateSolver()
    @           0x407b62  train()
    @           0x4059ec  main
    @     0x7f5012faef45  (unknown)
    @           0x406121  (unknown)
    @              (nil)  (unknown)
Aborted (core dumped)

I've tried to solve it for a few days but still can't figure out how it comes wrong.
here is my train_val.prototxt, mainly modified from the one in $CAFFE_TOOT/models/bvlc_reference_caffenet

name: "CaffeNet"
layer {
  name: "data"
  type: "ImageData"
  top: "data"
  top: "label"
  include {
    phase: TRAIN
  }
  transform_param {
    mirror: true
    crop_size: 227
    mean_file: "/home/pris/caffe-master/data/myself/myimagenet_mean.binaryproto"
  }
# mean pixel / channel-wise mean instead of mean image
#  transform_param {
#    crop_size: 227
#    mean_value: 104
#    mean_value: 117
#    mean_value: 123
#    mirror: true
#  }
  image_data_param {
    source: "/home/pris/caffe-master/examples/myself/imagenet_train_leveldb"
    batch_size: 256
    backend: LEVELDB
  }
}
layer 
{
  name: "data"
  type: "ImageData"
  top: "data"
  top: "label"
  include { phase: TEST }
  transform_param 
  {
    mirror: false
    crop_size: 227
    mean_file: "/home/pris/caffe-master/data/myself/myimagenet_mean.binaryproto"
  }
# mean pixel / channel-wise mean instead of mean image
#  transform_param {
#    crop_size: 227
#    mean_value: 104
#    mean_value: 117
#    mean_value: 123
#    mirror: false
#  }
  image_data_param 
  {
    source: "/home/pris/caffe-master/examples/myself/imagenet_val_leveldb"
    batch_size: 50
    backend: LEVELDB
  }
}
layer {
  name: "conv1"
  type: "Convolution"
  bottom: "data"
  top: "conv1"
  param 
  {
    lr_mult: 1
    decay_mult: 1
  }
  param 
  {
    lr_mult: 2
    decay_mult: 0
  }
  convolution_param 
  {
    num_output: 96
    kernel_size: 11
    stride: 4
    weight_filler 
    {
      type: "gaussian"
      std: 0.01
    }
    bias_filler 
    {
      type: "constant"
      value: 0
    }
  }
}
layer {
  name: "relu1"
  type: "ReLU"
  bottom: "conv1"
  top: "conv1"
}
layer {
  name: "pool1"
  type: "Pooling"
  bottom: "conv1"
  top: "pool1"
  pooling_param {
    pool: MAX
    kernel_size: 3
    stride: 2
  }
}
layer {
  name: "norm1"
  type: "LRN"
  bottom: "pool1"
  top: "norm1"
  lrn_param {
    local_size: 5
    alpha: 0.0001
    beta: 0.75
  }
}
layer {
  name: "conv2"
  type: "Convolution"
  bottom: "norm1"
  top: "conv2"
  param 
  {
    lr_mult: 1
    decay_mult: 1
  }
  param 
  {
    lr_mult: 2
    decay_mult: 0
  }
  convolution_param 
  {
    num_output: 256
    pad: 2
    kernel_size: 5
    group: 2
    weight_filler 
    {
      type: "gaussian"
      std: 0.01
    }
    bias_filler 
    {
      type: "constant"
      value: 1
    }
  }
}
layer {
  name: "relu2"
  type: "ReLU"
  bottom: "conv2"
  top: "conv2"
}
layer {
  name: "pool2"
  type: "Pooling"
  bottom: "conv2"
  top: "pool2"
  pooling_param {
    pool: MAX
    kernel_size: 3
    stride: 2
  }
}
layer {
  name: "norm2"
  type: "LRN"
  bottom: "pool2"
  top: "norm2"
  lrn_param {
    local_size: 5
    alpha: 0.0001
    beta: 0.75
  }
}
layer {
  name: "conv3"
  type: "Convolution"
  bottom: "norm2"
  top: "conv3"
  param 
  {
    lr_mult: 1
    decay_mult: 1
  }
  param 
  {
    lr_mult: 2
    decay_mult: 0
  }
  convolution_param 
  {
    num_output: 384
    pad: 1
    kernel_size: 3
    weight_filler 
    {
      type: "gaussian"
      std: 0.01
    }
    bias_filler 
    {
      type: "constant"
      value: 0
    }
  }
}
layer {
  name: "relu3"
  type: "ReLU"
  bottom: "conv3"
  top: "conv3"
}
layer {
  name: "conv4"
  type: "Convolution"
  bottom: "conv3"
  top: "conv4"
  param 
  {
    lr_mult: 1
    decay_mult: 1
  }
  param 
  {
    lr_mult: 2
    decay_mult: 0
  }
  convolution_param 
  {
    num_output: 384
    pad: 1
    kernel_size: 3
    group: 2
    weight_filler 
    {
      type: "gaussian"
      std: 0.01
    }
    bias_filler 
    {
      type: "constant"
      value: 1
    }
  }
}
layer {
  name: "relu4"
  type: "ReLU"
  bottom: "conv4"
  top: "conv4"
}
layer {
  name: "conv5"
  type: "Convolution"
  bottom: "conv4"
  top: "conv5"
  param 
  {
    lr_mult: 1
    decay_mult: 1
  }
  param 
  {
    lr_mult: 2
    decay_mult: 0
  }
  convolution_param {
    num_output: 256
    pad: 1
    kernel_size: 3
    group: 2
    weight_filler {
      type: "gaussian"
      std: 0.01
    }
    bias_filler {
      type: "constant"
      value: 1
    }
  }
}
layer {
  name: "relu5"
  type: "ReLU"
  bottom: "conv5"
  top: "conv5"
}
layer {
  name: "pool5"
  type: "Pooling"
  bottom: "conv5"
  top: "pool5"
  pooling_param {
    pool: MAX
    kernel_size: 3
    stride: 2
  }
}
layer {
  name: "fc6"
  type: "InnerProduct"
  bottom: "pool5"
  top: "fc6"
  param 
  {
    lr_mult: 1
    decay_mult: 1
  }
  param 
  {
    lr_mult: 2
    decay_mult: 0
  }
  inner_product_param {
    num_output: 4096
    weight_filler {
      type: "gaussian"
      std: 0.005
    }
    bias_filler {
      type: "constant"
      value: 1
    }
  }
}
layer {
  name: "relu6"
  type: "ReLU"
  bottom: "fc6"
  top: "fc6"
}
layer {
  name: "drop6"
  type: "Dropout"
  bottom: "fc6"
  top: "fc6"
  dropout_param {
    dropout_ratio: 0.5
  }
}
layer {
  name: "fc7"
  type: "InnerProduct"
  bottom: "fc6"
  top: "fc7"
  param {
    lr_mult: 1
    decay_mult: 1
  }
  param {
    lr_mult: 2
    decay_mult: 0
  }
  inner_product_param {
    num_output: 4096
    weight_filler {
      type: "gaussian"
      std: 0.005
    }
    bias_filler {
      type: "constant"
      value: 1
    }
  }
}
layer {
  name: "relu7"
  type: "ReLU"
  bottom: "fc7"
  top: "fc7"
}
layer {
  name: "drop7"
  type: "Dropout"
  bottom: "fc7"
  top: "fc7"
  dropout_param {
    dropout_ratio: 0.5
  }
}
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 {
    num_output: 1000
    weight_filler {
      type: "gaussian"
      std: 0.01
    }
    bias_filler {
      type: "constant"
      value: 0
    }
  }
}
layer {
  name: "accuracy"
  type: "Accuracy"
  bottom: "fc8"
  bottom: "label"
  top: "accuracy"
  include {
    phase: TEST
  }
}
layer {
  name: "loss"
  type: "SoftmaxWithLoss"
  bottom: "fc8"
  bottom: "label"
  top: "loss"
}

and the sovler.prototxt

net: "/home/pris/caffe-master/examples/myself/train_val.prototxt"
test_iter: 10
test_interval: 500
base_lr: 0.001
lr_policy: "step"
gamma: 0.1
stepsize: 100000
display: 20
max_iter: 450000
momentum: 0.9
weight_decay: 0.0005
snapshot: 2000
snapshot_prefix:"/home/pris/caffe-master/examples/myself/result"
solver_mode: GPU

train_caffenet.sh:

#!/usr/bin/env sh

/home/pris/caffe-master/build/tools/caffe train \
    --solver=/home/pris/caffe-master/examples/myself/solver.prototxt

I will really appreciate if someone could help me fixed it.

解决方案

You are reading training data from leveldb database, you should use input layer of type "Data" and not "ImageData".

这篇关于使用caffe训练我自己的jpg数据集:键入"caffe.ImageDataParameter"没有名为“后端"的字段,的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆