【问题标题】:Can someone explain how to use Conv3d and ConvND in caffe?有人可以解释如何在 caffe 中使用 Conv3d 和 ConvND 吗?
【发布时间】:2017-04-13 23:00:19
【问题描述】:

谁能解释一下如何使用Conv3DConvND 表示Depth-imagesCaffe 中的视频或几乎任何3d(n-d?)数据?
Conv3D 是否有任何示例或演示?

【问题讨论】:

    标签: computer-vision neural-network deep-learning video-processing caffe


    【解决方案1】:

    您可以使用常规的"Convolution" 层来处理任何维度的 blob。您只需要密切关注参数:

    layer {
      type: "Convolution"
      name: "conv_nd"
      bottom: "in" # 5D blob 
      too: "out"
      convolution_param {
         kernel_size: 3
         kernel_size: 5
         kernel_size: 5 # define 3 by 5 by 5 kernel
    
         pad: 1
         pad: 2
         pad: 2  # pad according to kernel size
    
         stride: 1
         stride: 2
         stride: 2 # you can have different stride for different dimensions
    
         axis: 1  # the "channel" dimension
         num_output: 30 # output 30 dim per 3D voxel
      }
    }
    

    有关更多信息,请阅读 caffe.proto file 中有关卷积参数的 cmets。

    【讨论】:

    • 3 by 5 by 5 = depth by height by width 对吗? @Shai
    • @thigi 坦率地说,我不能 100% 确定这里的尺寸顺序。您可能需要尝试一下。
    • @Shai:谢谢,请告诉我我是否正确。假设我有 5 个 200x200 色帧作为输入,我的第一个 conv 层有 10 个输出(num_output)。这个 Conv3D 是如何发生的?与普通的 Conv2D 相比,有一个内核,应用于输入,给出一个新的特征图。所以在 conv2d 中我们将有 10 个特征图。在 Conv3D 中,每个内核都应用于每一帧,为每一帧创建一个特征图,结果堆叠在一起。那么第一层的最终输出将是 10*7 的特征图?
    • @shai:还有那些填充,步幅是如何使用的?一个pad用于空间扩展,一个stride也用于同一件事。当 padding 不同时,宽度和高度分别使用两个。 3在这里是什么意思? padding 或 stride 对时间扩展有何意义?
    • 如果你有 5 个时间帧,每帧 1 个通道,那么你有 1×5×200×200 的输入。如果num_output: 10 则输出为10-by-5-by-200-by-200(假设您根据kernel_size 填充)。
    猜你喜欢
    • 2011-12-26
    • 2011-03-08
    • 1970-01-01
    • 2012-05-29
    • 2010-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-05
    相关资源
    最近更新 更多