首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Google Cloud ML Engine中处理大型视频数据集?

如何在Google Cloud ML Engine中处理大型视频数据集?
EN

Stack Overflow用户
提问于 2018-10-26 22:51:22
回答 1查看 198关注 0票数 1

我正在尝试使用Cloud ML Engine中的Keras进行视频分类。我的数据集包含在另存为单独图像的视频序列中(例如,seq1_frame1.png,seq1.frame2.png...)我已经上传到了GCS存储桶中。

我使用了一个引用不同子剪辑结束帧开始的csv文件,以及一个向模型提供批量剪辑的生成器。生成器负责从存储桶中加载帧,将它们作为图像读取,并将它们连接为numpy数组。

我的训练是相当长的,我怀疑生成器是我的瓶颈,因为大量的读取操作。

在我在网上找到的例子中,人们通常将预先格式化的剪辑直接保存为tfrecords文件到GCS。我觉得这个解决方案对于非常大的数据集并不理想,因为它意味着复制数据,如果我们决定提取重叠的子剪辑,就更是如此。

我的方法有什么问题吗?更重要的是,对于使用大型视频数据集进行机器学习,是否有一个“黄金标准”?

PS :我解释了我的设置以供参考,但我的问题并不局限于Keras,generators或Cloud ML。

EN

回答 1

Stack Overflow用户

发布于 2018-10-26 23:12:42

在这种情况下,你几乎总是要用时间来换取空间。你只需要找出哪个更重要。

理论上,每一帧都有高度*宽度*3个字节。假设有3个颜色通道。节省空间的一种可能方法是只使用一个通道(可能选择绿色,或者更好地将整个数据集转换为灰度)。这将使您的全尺寸视频数据减少到三分之一。视频中的颜色数据往往比亮度数据的分辨率低,因此它可能不会影响您的训练,但这取决于源文件。

正如您可能知道的,.png是一种无损图像压缩。每次加载时,生成器都必须先解压缩,然后连接到剪辑。您可以使用不同的压缩编解码器来节省更多的空间,但这意味着每个剪辑都需要完全解压缩,并且可能会增加您的时间。你说得对,反复解压需要时间。并且保存未压缩的视频将占用相当多的空间。不过,也有一些地方可以节省空间:

  • reduce to greyscale (或作为above)
  • temporally子采样帧的绿色比例)
  • 您是使用整个帧还是只使用补丁?您可以裁剪或重新缩放视频序列吗?
  • 您是否正在使用光流?这相当占用处理器资源,也可以将其视为预处理步骤,因此每个剪辑只需执行一次(同样,这是用空间换取时间)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53011315

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档