【问题标题】:Use images as labels in CNN with Caffe在带有 Caffe 的 CNN 中使用图像作为标签
【发布时间】:2016-11-26 03:42:03
【问题描述】:

我正在开发一个 CNN 来进行生物医学图像的分割。

作为输入,我有 572x572x3 图像,我的标签是具有基本事实的图像。

这是我的数据层:

layer {top: 'image'  name: 'loadMydata_image'    type: 'HDF5Data'  hdf5_data_param { source: '/home/alexandra/Documents/my-u-net/my_data.txt' batch_size: 1} include: { phase: TRAIN }}

layer {top: 'anno'  name: 'loadMydata_anno'    type: "HDF5Data"  hdf5_data_param { source: '/home/alexandra/Documents/my-u-net/my_data.txt' batch_size: 1} include: { phase: TRAIN }}

问题是,最后我的输出小于标签图像,欧几里得损失层不能工作。 这是我的最后一层:

layer { name: 'label_reshape' type: 'Reshape' bottom: 'anno' top: 'anno_reshaped' reshape_param { shape : {dim:0 dim:-1 dim:0 dim:0}  }}

layer { bottom: 'score' bottom: 'anno_reshaped'  top: 'loss'  name: 'loss_tune'   type: "EuclideanLoss" include: { phase: TRAIN }}

我有这个错误:

F0722 10:43:42.478071 10809 euclidean_loss_layer.cpp:12] Check failed: bottom[0]->count(1) == bottom[1]->count(1) (980000 vs. 981552) Inputs must have the same dimension.

我尝试使用重塑图层,但无法获得完全相同的大小..

有人知道如何解决这个问题吗?

【问题讨论】:

    标签: neural-network protocol-buffers caffe labels


    【解决方案1】:

    尺寸不匹配很可能是由于卷积层造成的。如果你没有在卷积层中设置填充,那么边框就会丢失。

    例如,3x3 内核的 32x32 输入将产生 30x30 输出。

    要解决这个问题,您可以在所有卷积层中使用填充或裁剪标签图像以匹配输出的大小。

    或者,如果您的大小不匹配是因为您使用了一些池化层(这会在空间上缩小图像)并且没有在后面的层中放大,那么您需要调整标签图像的大小以匹配输出中的大小.

    注意:重塑图层不会调整图像大小。它用于“重塑”数据。重塑层后,总值保持不变。

    【讨论】:

      猜你喜欢
      • 2016-02-14
      • 2020-10-14
      • 2018-05-17
      • 2015-12-23
      • 1970-01-01
      • 2019-01-06
      • 1970-01-01
      • 2020-11-20
      • 2020-02-21
      相关资源
      最近更新 更多