【问题标题】:Implementation of a 3D convolutional neural network3D卷积神经网络的实现
【发布时间】:2019-06-27 12:18:52
【问题描述】:

我正在尝试实现this approach 用于物体检测和跟踪。而且我无法将注意力集中在细节上。我试图寻找这篇文章的评论和解释。我不明白的是:

对于时间信息,我们从过去 5 个时间戳中获取所有 3D 点。因此,我们的输入是由时间、高度、X 和 Y 组成的 4 维张量。对于我们的早期融合和晚期融合模型,我们使用 Adam 优化器从头开始训练,学习率为 1e-4。该模型在 4 Titan XP GPU 服务器上进行训练,批量大小为 12

我知道一个CNN输入如下

[batch_size, 通道, X, Y]

但这里他们正在考虑

[时间、频道、X、Y]

然后他们提到批量大小是 12!我不明白的是他们在哪里考虑 batch_size 以及它代表 5 个时间戳。

希望有人能提供见解。

由于他们的数据集不是开源的,我正在研究 KITTI 跟踪基准。

【问题讨论】:

    标签: python tensorflow deep-learning conv-neural-network


    【解决方案1】:

    如果考虑tf.nn.conv3d,输入形状为:

    形状 [batch, in_depth, in_height, in_width, in_channels]

    您可以看到批次维度的去向,您可以随意对待in_depth。对于时间任务,您可以说这代表了一些时间步长。


    好的,特别是在他们的情况下。他们有一个点云。每个点(或体素)都位于(X, Y) 位置。这个数据点也有height。他们非常具体地说:

    "[...] 并将 height 维度视为 channel 维度"

    因此,如果我们使用 channels-last 表示法(作为默认的 TensorFlow 文档),我们就有 [X, Y, height](即 3D 点)。然后,他们说:

    “[...] 对于时间信息,我们从过去 5 个时间戳中获取所有 3D 点

    这意味着我们需要一个时间维度,例如,[time, X, Y, height],这正是他们所说的(除了他们使用 channels-first 表示法)。有了这个 4D 张量,我们可以使用 3D 卷积。但是,我们通常需要它们对批量样本而不是单个样本进行操作。因此批处理维度:[batch, time, X, Y, height]。具体来说,他们使用[12, 5, X, Y, height] 进行训练,其中batch=12time=5

    【讨论】:

    • 据我了解,他们的输入是 4D 张量,因此他们使用的是tf.nn.conv2d
    • @Barriel 你能详细说明一下吗?我不确定我是否理解
    • @OneManArmy 设 X 为尺寸为 [时间、高度、宽度、通道] 的输入。如果在一个批次中有 N 个样本(batch_size=N),那么输入的有效维度将为 [batch_size=N, time, height, width, channels]。
    • @Barriel 谢谢你的解释。但是你把它的方式你必须使用带有tf.nn.conv3d的3D卷积,因为你输入的方式有5维。但是在论文中他们使用2D卷积(如果我理解正确的话)所以张量有4维,这是我想不通的。
    • @OneManArmy 不,他们说“我们的方法是一个单级检测器,它采用从多个连续时间帧创建的 4D 张量作为输入”,很明显他们按照我的建议做了。 N-D 卷积在 N+1 个体积上运行(例如,图像的 2D 卷积)。它们在 N+2 卷上运行的事实是 w.r.t. 的实施问题。处理批次。
    猜你喜欢
    • 2019-05-31
    • 2017-01-01
    • 1970-01-01
    • 2017-08-06
    • 2017-07-30
    • 2019-07-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多