Neural network 在caffe中从lmdb数据库读取编码图像数据

Neural network 在caffe中从lmdb数据库读取编码图像数据,neural-network,deep-learning,caffe,lmdb,Neural Network,Deep Learning,Caffe,Lmdb,我对使用caffe比较陌生,我正在尝试创建可以(稍后)调整的最小工作示例。我在使用caffe的例子和MNIST数据时没有遇到任何困难。我下载了图像网络数据(ILSVRC12),并使用caffe的工具将其转换为lmdb数据库,使用: $CAFFE_ROOT/build/install/bin/convert_imageset -shuffle -encoded=true top_level_data_dir/ fileNames.txt lmdb_name 创建包含编码(jpeg)图像数据的lm

我对使用caffe比较陌生,我正在尝试创建可以(稍后)调整的最小工作示例。我在使用caffe的例子和MNIST数据时没有遇到任何困难。我下载了图像网络数据(ILSVRC12),并使用caffe的工具将其转换为lmdb数据库,使用:

$CAFFE_ROOT/build/install/bin/convert_imageset -shuffle -encoded=true top_level_data_dir/ fileNames.txt lmdb_name
创建包含编码(jpeg)图像数据的lmdb。这是因为编码的lmdb约为64GB,而未编码的lmdb约为240GB

我的.prototxt文件描述的网络是最小的(一对内部产品层,主要是从MNIST示例中借用的——这里不考虑准确性,我只想让它工作)

当列车lmdb未编码时,此.prototxt文件工作正常(精度极低,但caffe不会崩溃)。但是,如果对列车lmdb进行编码,则会出现以下错误:

data_transformer.cpp:239] Check failed: channels == img_channels (3 vs. 1)
问题:是否必须在.prototxt文件中设置一些“标志”来指示列车lmdb已编码?(可能必须为测试数据层test lmdb提供相同的标志。)

一点研究:

通过谷歌搜索,我发现了一个似乎很有前途的网站。但是,将
'force\u encoded\u color'
设置为true并没有解决我的问题


我还发现答案对创建lmdb非常有用(特别是启用编码的说明),但是,没有提到应该做什么,以便caffe知道图像已编码。

您收到的错误消息:

表示caffe数据转换器期望输入3个
通道(即彩色图像),但仅获得1个
img_通道(即灰度图像)

看起来您应该在
转换参数设置参数:

layer {
  name: "imagenet"
  type: "Data"
  top: "data"
  top: "label"
  include {
    phase: TRAIN
  }
  transform_param {
    scale: 0.00390625
    force_color: true  ##  try this
  }
  data_param {
    source: "train-lmdb"
    batch_size: 100
    backend: LMDB
    force_encoded_color: true  ## cannot hurt...
  }
}

这似乎有效!这是否意味着数据中混入了一些灰度图像?我认为/假设它们都是彩色的(我看到的那一把肯定是彩色的)。如果我在创建lmdb时使用--check_size选项,可能会发现这个问题?我之前已将所有图像的大小调整为256x256,因此我不必进行检查。@TravisJ我不确定
--check_size
检查通道数,因为它只检查宽度和高度,但我可能对此有误。我假设大小为宽度x高度x深度(即通道数)。。。但我可能错了。。。对caffe来说非常陌生。
data_transformer.cpp:239] Check failed: channels == img_channels (3 vs. 1)
layer {
  name: "imagenet"
  type: "Data"
  top: "data"
  top: "label"
  include {
    phase: TRAIN
  }
  transform_param {
    scale: 0.00390625
    force_color: true  ##  try this
  }
  data_param {
    source: "train-lmdb"
    batch_size: 100
    backend: LMDB
    force_encoded_color: true  ## cannot hurt...
  }
}