【问题标题】:How I can give input to the 3d Convolutional Neural Network?如何为 3d 卷积神经网络提供输入?
【发布时间】:2021-10-08 01:03:18
【问题描述】:

3d CNN 适用于视频、MRI 和扫描数据集。你能告诉我如果我必须将输入(视频)提供给提议的 3d CNN 网络,并训练它的权重,我怎么能做到这一点?由于 3d CNN 期望 5 维输入;

[batch size, channels, depth, height, weight]

如何从视频中提取深度?

如果我有 10 个不同课程的 10 个视频。每个视频的持续时间为 6 秒。我每秒提取 2 帧,每个视频大约 12 帧。

RGB 视频大小为 112x112 --> 高度 = 112,宽度 = 112,通道 = 3

如果我保持批量大小等于 2

1 个视频 --> 6 秒 --> 12 帧(1 秒 == 2 帧)[每帧 (3,112,112)]

10 个视频(10 个类)--> 60 秒--> 120 帧

所以 5 个维度将是这样的; [2, 3, 12, 112, 112]

2 --> 每个批次大小将处理两个视频。

3 --> RGB 通道

12 --> 每个视频包含 12 帧

112 --> 每个视频的高度

112 --> 每个视频的宽度

我说的对吗?

【问题讨论】:

    标签: python-3.x tensorflow deep-learning pytorch video-processing


    【解决方案1】:

    是的,如果您希望使用 3D CNN,这似乎是有道理的。您实际上是在为输入添加一个维度,即时间维度,使用depth 维度是合乎逻辑的。这样,您可以将通道轴保持为特征通道(不是时空维度)。

    请记住,3D CNN 确实是内存密集型的。还有其他方法可以处理时间相关输入。在这里,您并没有真正处理第三维度(即“空间”维度),因此您不需要使用 3D CNN。


    编辑:

    如果我将上述维度的输入提供给 3d CNN,它会同时学习两个特征(空间和时间)吗? [...] 你能让我理解时空特征吗?

    如果您使用 3D CNN,那么您的过滤器将具有 3D 内核,并且卷积将是三维的:沿着两个空间维度(宽度和高度)以及深度维度(这里对应于时间维度,因为您对视频帧序列使用深度维度。3D CNN 将允许您捕获局部(“局部”,因为感知场受到内核大小和 CNN 中的总层数的限制)空间和时间信息。

    【讨论】:

    • 是的,我可以使用 CNN+LSTM 来学习时空信息,但 3d CNN(例如 I3D、ResNext (3d))可以很好地处理动作识别 (UCF101) 数据集。
    • 好吧,我不明白你的意思,如果我想从视频格式的数据中学习时空信息,如果我将上述维度的输入提供给 3d CNN,它会学习两种特征(空间和时间)吗?
    • 你能让我理解,空间和时间特征吗?我怎样才能提取两者?就像我给图像提供第三维,即深度并且用于时间信息,而其他二维将用于空间信息?不是吗?
    • 我明白了,如果我想同时提取空间和时间特征(不是本地),我应该怎么做?如何将视频数据集提供给 3d CNN?还是应该将我的 RGB 视频转换为光流(时间信息),然后通过 LSTM 传递以找到时间特征?
    • 这是 CNN 局部性概念的限制,感知场是有限的,或者需要一个巨大的网络。这意味着您的模型将需要根据输入序列的持续时间(深度)以及图像的空间尺寸(高度和宽度)进行缩放。即使使用 LSTM,您的时间依赖性也将是有限的,但原因不同,这将是因为梯度难以反向传播。
    猜你喜欢
    • 2017-07-30
    • 2020-05-06
    • 1970-01-01
    • 1970-01-01
    • 2018-07-29
    • 2017-08-31
    • 2016-10-20
    • 2020-05-26
    • 2017-01-01
    相关资源
    最近更新 更多