Deep learning CNN中的卷积层

Deep learning CNN中的卷积层,deep-learning,caffe,Deep Learning,Caffe,我们知道CNN中的卷积层使用滤波器,不同的滤波器会在输入图像中寻找不同的信息 但在这里,我们有prototxt文件,它有卷积层的规范 layer { name: "conv2_1" type: "Convolution" bottom: "pool1" top: "conv2_1" param { lr_mult: 1.0 decay_mult: 1.0 } param { lr_mult: 2.0 decay_mult: 0.0

我们知道CNN中的卷积层使用滤波器,不同的滤波器会在输入图像中寻找不同的信息

但在这里,我们有prototxt文件,它有卷积层的规范

layer {
  name: "conv2_1"
  type: "Convolution"
  bottom: "pool1"
  top: "conv2_1"
  param {
    lr_mult: 1.0
    decay_mult: 1.0
  }
  param {
    lr_mult: 2.0
    decay_mult: 0.0
  }
  convolution_param {
    num_output: 128
    pad: 1
    kernel_size: 3
    weight_filler {
      type: "xavier"
    }
    bias_filler {
      type: "constant"
      value: 0.0
    }
  }
}
不同网络(如GoogleNet、AlexNet、VGG等)中的所有卷积层或多或少都是相似的。
看看这个,如何理解,卷积层中的滤波器试图提取输入图像的哪些信息

编辑: 让我澄清我的问题。 我从prototxt文件中看到两个卷积层,如下所示。他们来自SSD

layer {
  name: "conv1_1"
  type: "Convolution"
  bottom: "data"
  top: "conv1_1"
  param {
    lr_mult: 1.0
    decay_mult: 1.0
  }
  param {
    lr_mult: 2.0
    decay_mult: 0.0
  }
  convolution_param {
    num_output: 64
    pad: 1
    kernel_size: 3
    weight_filler {
      type: "xavier"
    }
    bias_filler {
      type: "constant"
      value: 0.0
    }
  }
}

layer {
  name: "conv2_1"
  type: "Convolution"
  bottom: "pool1"
  top: "conv2_1"
  param {
    lr_mult: 1.0
    decay_mult: 1.0
  }
  param {
    lr_mult: 2.0
    decay_mult: 0.0
  }
  convolution_param {
    num_output: 128
    pad: 1
    kernel_size: 3
    weight_filler {
      type: "xavier"
    }
    bias_filler {
      type: "constant"
      value: 0.0
    }
  }
}
然后我在这里打印他们的输出

资料

conv1_1和conv2_1图像是和

所以我的问题是这两个conv层如何产生不同的输出。但是prototxt文件没有区别。

“卷积”
层不仅在参数(例如
内核大小
跨步
等)上不同,而且在其权重上也不同:卷积内核的可训练参数。
您会看到不同的输出(也称为“响应”),因为过滤器的权重不同

关于caffe中“数据”blob和“参数/权重”blob之间的差异,请参见。

“卷积”
层不仅在其参数(例如,
内核大小
步幅
等)上不同,而且在其权重上也不同:卷积内核的可训练参数。
您会看到不同的输出(也称为“响应”),因为过滤器的权重不同

有关caffe中“数据”Blob和“参数/权重”Blob之间的差异,请参见。

早期图层上的过滤器表示边缘等低级特征 (这些功能保留了更高的 利用与Gabor滤波器响应图相似的低层视觉信息进行精确定位的空间分辨率(1)。另一方面,中间层的过滤器提取更复杂的特征,如角点或斑点

随着你深入,你无法可视化和解释这些特征,因为中层和高层的过滤器并没有直接连接到输入图像。例如,当你得到第一层的输出时,你实际上可以将它可视化并解释为边,但当你深入并将第二个卷积层应用到这些提取的边(第一层的输出)时,你会得到类似边的边(或类似的东西)并捕获更多的语义信息和更少的细粒度空间细节。在prototxt文件中,所有卷积和其他类型的操作可以彼此相似。但由于它们的阶数和权重不同,因此提取的特征种类也不同。

早期图层上的过滤器表示边缘等低级特征 (这些功能保留了更高的 利用与Gabor滤波器响应图相似的低层视觉信息进行精确定位的空间分辨率(1)。另一方面,中间层的过滤器提取更复杂的特征,如角点或斑点

随着你深入,你无法可视化和解释这些特征,因为中层和高层的过滤器并没有直接连接到输入图像。例如,当你得到第一层的输出时,你实际上可以将它可视化并解释为边,但当你深入并将第二个卷积层应用到这些提取的边(第一层的输出)时,你会得到类似边的边(或类似的东西)并捕获更多的语义信息和更少的细粒度空间细节。在prototxt文件中,所有卷积和其他类型的操作可以彼此相似。但由于它们的阶数和权重不同,因此提取的特征种类也不同。

“看看这一点,如何理解,这个卷积层中的过滤器试图提取输入图像的哪些信息?”你没听懂吗?我没听懂你的问题。您想知道每一层上的每个过滤器都在寻找什么吗?通常,第一层提取类似边缘的特征(适用于精确定位),但随着您深入网络,过滤器主要作用于斑点形状特征,适用于相互区分对象。@HosseinKa是的。这就是我的意思。如何判断第一次卷积是在寻找边,接下来是在寻找斑点形状?prototxt文件中的那些,它们看起来都一样。你怎么知道哪个卷积在寻找哪个信息。@FalconUA我在编辑中更新了。“看看这个,怎么理解,卷积层中的过滤器试图提取输入图像的哪个信息?”你不明白吗?我不明白你的问题。您想知道每一层上的每个过滤器都在寻找什么吗?通常,第一层提取类似边缘的特征(适用于精确定位),但随着您深入网络,过滤器主要作用于斑点形状特征,适用于相互区分对象。@HosseinKa是的。这就是我的意思。如何判断第一次卷积是在寻找边,接下来是在寻找斑点形状?prototxt文件中的那些,它们看起来都一样。你们怎么知道哪个卷积在寻找哪个信息。@FalconUA我在编辑中更新了。很好的可视化图像!顺便问一下,如何为这些conv输出打印图像。我一个人策划那些小家伙。有什么工具可以绘图吗?我画出这些斑点,我得到的只是灰度。比如说,对于随机权重的新鲜网络,我们需要开始训练权重。在这种情况下,我们只知道最后一层的损失信息,我们计算梯度并逐层反向传播。然后根据损失更新每个conv层的权重。权重根据SGD自行更新。然后