从视频样本中减少样本

数据挖掘 Python 深度学习 数据流挖掘
2022-02-23 11:55:36

好吧,在找到正确的位置之前,我在主堆栈中发布了相同的问题,抱歉。

我的一个朋友正在使用 100 多个视频作为他的神经网络的样本。每个视频持续超过几分钟,每秒大约 24 帧。使用深度学习的目标是检测所有样本的运动。

对他来说,问题在于他正在处理的数据量。培训部分需要/消耗太多时间。我不是数据准备方面的专家,但我想也许他可以将所有帧变成数据帧,从单色图像(全黑/白)中清除它们,将它们变成灰色而不是全rgb并压缩它们,但是,我不确定是否足够。

你有没有更好的方法来减少训练样本?

1个回答
  • 减小尺寸,例如使用cv2.resize()
  • 压缩图像(它不是无损的)例如cv2.imencode()
  • 降低帧率
  • 使用较低的精度 - 加载图像uint8时,但float32默认使用深度学习框架。您可以尝试float16或混合精度。

使用 JPEG 压缩在内存减少和性能损失最小方面已被证明是相当好的。看看这个研究

您也可以降低帧速率,例如 10 FPS。实际值可以根据移动物体的预期速度来计算 -> 你真的需要24 FPS 来完成任务吗?

否则,您使用的硬件将决定之后要采取的步骤。内存、操作次数、推理速度等将改变您优化过程的方式。


你提到了“数据框”,所以我只想指出,使用 Pandas Dataframes 来保存原始图像数据,虽然看起来很容易,但由于涉及的数据点(像素)的数量,以及 Pandas DataFrames 的事实,它通常非常低效本质上是带注释的 NumPy 数组 - 注释占用了大量空间。最好加载到纯 numpy 数组中,并将 OpenCV 用于诸如从 RGB 制作灰度(黑白)图像、调整它们的大小、标准化像素值等。