Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Neural network 如何在caffe中将多个N-D阵列输入网络?_Neural Network_Computer Vision_Deep Learning_Caffe_Image Segmentation - Fatal编程技术网

Neural network 如何在caffe中将多个N-D阵列输入网络?

Neural network 如何在caffe中将多个N-D阵列输入网络?,neural-network,computer-vision,deep-learning,caffe,image-segmentation,Neural Network,Computer Vision,Deep Learning,Caffe,Image Segmentation,我想为需要多个输入的caffe中的语义分段创建一个自定义丢失层。我希望这个损失函数有一个额外的输入因子,以惩罚小对象中的漏检 为此,我创建了一个图像GT,其中包含每个像素的权重。如果像素属于小对象,则权重较高 我是caffe的新手,我不知道如何同时向我的网络输入三个二维信号(图像、gt掩码和每像素权重)。我对caffe如何在rgb数据和gt数据之间进行对应表示怀疑。 我想扩展它,以便有2个gt,一个用于类标签图像,另一个用于将此因子放入损失函数中 为了达到这个目的,你能给点提示吗 谢谢,您希望c

我想为需要多个输入的caffe中的语义分段创建一个自定义丢失层。我希望这个损失函数有一个额外的输入因子,以惩罚小对象中的漏检

为此,我创建了一个图像GT,其中包含每个像素的权重。如果像素属于小对象,则权重较高

我是caffe的新手,我不知道如何同时向我的网络输入三个二维信号(图像、gt掩码和每像素权重)。我对caffe如何在rgb数据和gt数据之间进行对应表示怀疑。
我想扩展它,以便有2个gt,一个用于类标签图像,另一个用于将此因子放入损失函数中

为了达到这个目的,你能给点提示吗


谢谢,

您希望caffe为每个训练样本使用多个N-D信号。您关心的是,默认的
“数据”
层只能处理一个图像作为训练样本。
针对这一问题,有几种解决方案:

  • 使用多个
    “数据”
    (就像您在模型中所做的那样)。为了在三个
    “数据”
    层之间同步,您需要知道caffe按顺序从底层LMDB读取样本。因此,如果您以相同的顺序准备三个LMDB,caffe将按照样本放置的顺序一次从每个LMDB中读取一个样本,因此三个输入将在培训/验证期间同步。
    请注意,如果有一个
    'shuffle'
    标志,请不要使用它,因为它将在三个LMDB中的每个LMDB中以不同的方式洗牌样本,并且您将无法进行同步。在准备LMDB之前,强烈建议您自己,但在某种程度上,相同的“shuffle”应用于所有三个输入,使它们彼此保持同步

  • 使用5通道输入。caffe可以在LMDB中存储N-D数据,而不仅仅是彩色/灰度图像。您可以创建LMDB,每个“图像”是一个5通道阵列,前三个通道是图像的RGB,后两个是地面真实值标签和每像素损失的权重。
    在您的模型中,您只需在
    “数据”
    上添加一层:

  • 使用图层(我个人的最爱)。您可以以二进制
    hdf5
    格式存储输入,并从这些文件中读取caffe。在caffe中,使用“HDF5Data”更为灵活,并允许您根据需要对输入进行任意调整。在您的情况下,您需要准备一个包含三个“数据集”的二进制hdf5文件:
    'rgb'
    'gt'
    'weight'
    。创建hdf5文件时,需要确保同步样本。一旦准备好了,您就可以有一个带有三个“top”的
    “HDF5Data”
    层供使用

  • 编写自己的“Python”输入层。我不会在这里详述细节。但是您可以用python实现自己的输入层。有关更多详细信息,请参阅


  • 您希望caffe为每个训练样本使用多个N-D信号。您关心的是,默认的
    “数据”
    层只能处理一个图像作为训练样本。
    针对这一问题,有几种解决方案:

  • 使用多个
    “数据”
    (就像您在模型中所做的那样)。为了在三个
    “数据”
    层之间同步,您需要知道caffe按顺序从底层LMDB读取样本。因此,如果您以相同的顺序准备三个LMDB,caffe将按照样本放置的顺序一次从每个LMDB中读取一个样本,因此三个输入将在培训/验证期间同步。
    请注意,如果有一个
    'shuffle'
    标志,请不要使用它,因为它将在三个LMDB中的每个LMDB中以不同的方式洗牌样本,并且您将无法进行同步。在准备LMDB之前,强烈建议您自己,但在某种程度上,相同的“shuffle”应用于所有三个输入,使它们彼此保持同步

  • 使用5通道输入。caffe可以在LMDB中存储N-D数据,而不仅仅是彩色/灰度图像。您可以创建LMDB,每个“图像”是一个5通道阵列,前三个通道是图像的RGB,后两个是地面真实值标签和每像素损失的权重。
    在您的模型中,您只需在
    “数据”
    上添加一层:

  • 使用图层(我个人的最爱)。您可以以二进制
    hdf5
    格式存储输入,并从这些文件中读取caffe。在caffe中,使用“HDF5Data”更为灵活,并允许您根据需要对输入进行任意调整。在您的情况下,您需要准备一个包含三个“数据集”的二进制hdf5文件:
    'rgb'
    'gt'
    'weight'
    。创建hdf5文件时,需要确保同步样本。一旦准备好了,您就可以有一个带有三个“top”的
    “HDF5Data”
    层供使用

  • 编写自己的“Python”输入层。我不会在这里详述细节。但是您可以用python实现自己的输入层。有关更多详细信息,请参阅


  • 试着阅读。你应该开始了。一旦你有了更具体的问题,请在这里随意提问。就目前的情况而言,你的问题“太宽泛了”。谢谢你的回答。我已经看过你的帖子了。但我也有同样的怀疑。首先,我将其用作网络参考fcn_alexnet()我不明白的第一件事是:此网络有4个输入数据:-列车数据-列车gt-val数据-val gt caffe如何同步此信息?我是说,咖啡馆怎么样
    layer {
      name: "slice_input"
      type: "Slice"
      bottom: "raw_input" # 5-channel "image" stored in LMDB
      top: "rgb"
      top: "gt"
      top: "weight"
      slice_param { 
        axis: 1
        slice_point: 3
        slice_point: 4
      }
    }