首页 文章

Caffe中的图像通道不匹配

提问于
浏览
0

我知道在caffe用户组中可能会有更好的问题,但我无法访问用户组,也不知道在哪里提出问题,因为我不确定这是否需要在git中引发问题 . 无论如何,我正在做的是:

我有一组灰度图像,我想用它来训练使用caffe的CNN . 我正在使用所提供的caffenet模型定义的修改版本,只需稍加修改(即:因为我有灰度图像,通道= 1而不是3) . 到目前为止,我使用imagenet提供的平均图像来训练CNN,并训练和生成结果 . 现在我想计算我自己的火车/测试数据集的图像平均值,并将其用作平均图像,因此我使用build / tools /中的文件来执行此操作 . 它需要图像在lmdb中,所以我首先使用convert_imageset将图像转换为lmdb,然后使用compute_mean来计算均值 . 我确保在使用convert_imageset时使用--gray标志,因为我的图像是灰度的 . 当我重新运行caffe时,我收到以下错误 . 根据我的理解,这是一个渠道不匹配,但我不知道如何解决这个问题 . 对此有任何帮助非常感谢 .

I0829 20:41:50.429733 17065 layer_factory.hpp:77] Creating layer data
I0829 20:41:50.429764 17065 net.cpp:100] Creating Layer data
I0829 20:41:50.429769 17065 net.cpp:408] data -> data
I0829 20:41:50.429790 17065 net.cpp:408] data -> label
I0829 20:41:50.429805 17065 data_transformer.cpp:25] Loading mean file from: data/flickr_style/train_mean.binaryproto
I0829 20:41:50.438251 17065 image_data_layer.cpp:38] Opening file data/flickr_style/train.txt
I0829 20:41:50.446666 17065 image_data_layer.cpp:58] A total of 31740 images.
I0829 20:41:50.451941 17065 image_data_layer.cpp:85] output data size: 10,3,227,227
I0829 20:41:50.459661 17065 net.cpp:150] Setting up data
I0829 20:41:50.459692 17065 net.cpp:157] Top shape: 10 3 227 227 (1545870)
I0829 20:41:50.459697 17065 net.cpp:157] Top shape: 10 (10)
I0829 20:41:50.459699 17065 net.cpp:165] Memory required for data: 6183520
I0829 20:41:50.459707 17065 layer_factory.hpp:77] Creating layer conv1
I0829 20:41:50.459728 17065 net.cpp:100] Creating Layer conv1
I0829 20:41:50.459733 17065 net.cpp:434] conv1 <- data
I0829 20:41:50.459744 17065 net.cpp:408] conv1 -> conv1
F0829 20:41:50.463794 17106 data_transformer.cpp:257] Check failed: img_channels == data_mean_.channels() (3 vs. 1) 
*** Check failure stack trace: ***
    @     0x7f0712106daa  (unknown)
    @     0x7f0712106ce4  (unknown)
    @     0x7f07121066e6  (unknown)
    @     0x7f0712109687  (unknown)
    @     0x7f071287d6cd  caffe::DataTransformer<>::Transform()
    @     0x7f07127fde60  caffe::ImageDataLayer<>::load_batch()
    @     0x7f0712839539  caffe::BasePrefetchingDataLayer<>::InternalThreadEntry()
    @     0x7f0712886020  caffe::InternalThread::entry()
    @     0x7f070a762a4a  (unknown)
    @     0x7f070603e184  start_thread
    @     0x7f07111eb37d  (unknown)
    @              (nil)  (unknown)

我在train_val.prototxt中有以下内容

name: "FlickrStyleCaffeNet"
layer {
  name: "data"
  type: "ImageData"
  top: "data"
  top: "label"
  include {
    phase: TRAIN
  }
  transform_param {
    mirror: true
    crop_size: 227
    mean_file: "data/ilsvrc12/imagenet_mean.binaryproto"
  }
  image_data_param {
    source: "data/flickr_style/mri_train.txt"
    batch_size: 10
    new_height: 256
    new_width: 256
  }
}

这在deploy.prototxt中

name: "FlickrStyleCaffeNet"
layer {
  name: "data"
  type: "Input"
  top: "data"
  input_param { shape: { dim: 10 dim: 3 dim: 227 dim: 227 } }
}

2 回答

  • 0

    我想出了如何做到这一点 . 在train_val.prototxt中,数据层下有一个 image_data_param 部分 . 我不得不在其中添加 is_color: false 并解决了这个问题 .

    感谢大家的评论和回复,感谢它 .

  • 0

    您(或界面)未能调整灰度输入 . Gray只有1个输入通道(值);该模型需要3个通道(RGB) . 图层的 top 形状中的 3 应为 1 .


    在你的* .prototxt文件中查找顶部附近的类似内容(输入图层):

    shape {
      dim: 10
      dim: 3
      dim: 227 
      dim: 227
    }
    

    这些维度是batch_size,channels,rows和columns . 无论您在此订单上有什么内容(应该只有一个,只在输入文件中),请将3更改为1 .

相关问题