gpt4 book ai didi

python - Keras 中的 3D 卷积是否适用于 RGB 视频?

转载 作者:行者123 更新时间:2023-11-30 09:31:08 25 4
gpt4 key购买 nike

Keras 的 Conv3D 需要输入 5D 张量,其形状为:(batch、conv_dim1、conv_dim2、conv_dim3、 channel )(假设 data_format 为“channels_last”)。现在假设我的过滤器大小为 (3,3,3),我的输入为 (10,125,300,200,3),这是一个包含 10 个视频的视频数据集,每个视频有 125 帧,空间大小为 300x200,由于帧为 RGB,因此 channel 为 3。默认步幅值为 (1, 1, 1)。我脑海中关于这个卷积如何工作的图片如图 here at 9:28

我无法弄清楚的是,沿着时间维度的步长 1 是否一次移动 1 帧,或者一次移动一帧的 1 个 channel 。我尝试查找 conv3D here 的代码并且无法收集太多。我尝试使用 3D CNNS 和 RGB 视频训练深度学习网络,生成的图像颜色困惑(几乎是灰色),所以我假设颜色 channel 有些困惑。我检查了我的输入,看起来不错,所以网络可能很有趣。

Tl:博士

需要弄清楚 RGB 视频是否需要有意识地改变步幅,以便用 2D 卷积处理一帧的 channel ,并且也将不胜感激处理 RGB 视频和 3D CNN 的代码/论文的指针

最佳答案

在所有卷积中,滤波器大小一起包含所有 channel 。 channel 不参与跨步。

因此,大步发生就像您的视频是一个立方体一样。在每个维度 (x,y,z) 上跨步 1 步,直到扫描整个立方体。 (卷积不知道维度是什么,并且不会以不同于对待像素的方式对待帧)。

你有一个 3x3x3 的小立方体,逐像素、逐帧地扫过一个巨大的 125x300,200 平行六面体。因此:步幅一次移动一帧,但仅考虑图像的 3x3 部分。

这对于视频来说“似乎”不太好(但机器学习有它的惊喜),除非在某些时候你有一个非常小的分辨率,这样过滤器就开始在每一帧中看到整个图片。

您可以继续测试 3D 转换以查看会发生什么,但“看起来”更好的一些建议是:

  • 使用 TimeDistributed(Conv2D(...))TimeDistributed(MaxPooling2D(...)) 直到中间获得小分辨率视频模型的(或者甚至是 1x1,如果你走极端的话)。然后开始使用:

    • Conv3D(如果仍然存在空间维度)
    • Conv1D(如果消除了空间维度)
    • 在这两种情况下,最好增加帧维度中的内核大小,3 帧可能太少而无法解释正在发生的情况(除非帧速率较低)
  • 使用TimeDistributed(Conv2D(...)),消除某个点的空间维度并开始使用LSTM等RNN

    <
  • 使用 ConvLSTM2D 层。

关于python - Keras 中的 3D 卷积是否适用于 RGB 视频?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57493538/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com