video - 自动选择视频的缩略图

标签 video machine-learning tensorflow thumbnails

我们都听说过 YouTube 使用深度学习来为用户视频选择具有代表性的缩略图。但是有人在 tensorflow 上成功地尝试过吗?

我确实找到了 https://github.com/yahoo/hecate声称这样做但对结果印象不深。我实际上使用 ffmpeg 提取关键帧然后计算颜色分布以选择“最佳”图像得到了更好的结果。

但很想知道是否有人使用更“智能”的算法做得更好。

最佳答案

我想向 OP 澄清,这个答案并不代表对方法的正式描述,而是以直观的方式描述预期方法。

假设一个视频由 n 帧组成,并且每一帧都可以表示为 3D 张量(高度、宽度、 channel )。可以使用卷积神经网络 (CNN) 为每个帧生成潜在表示。

视频可以表示为帧序列 (f_1, f_2, ..., f_n)。最适合序列建模的神经网络架构是递归神经网络 (RNN)。我们可以使用 RNN 对 CNN 生成的一系列视频帧潜在表示进行编码。之后,对于 RNN 直接生成的每个帧,您将拥有一个潜在表示(f_1f_2、...、f_n)取决于之前的(这是 RNN 的一个众所周知的属性)。

正如您在最近发布的 Youtube-8M dataset 中看到的那样,每个视频都有关联的高质量缩略图,因此您可以将它们用作目标。特别是,给定由应用于帧序列的 RNN 生成的潜在表示,您可以生成上下文向量 c,其生成方式如下:

alpha = softmax(FNN(f_1), FNN(f_2), ..., FNN(f_n))
c = f_1 * alpha_1 + f_2 * alpha_2 + ... + f_n * alpha_n

其中 FNN 是一个前馈神经网络,它接收帧 f_i 的潜在表示 f_i 并生成一个分数,该分数表示当前序列中的重要性。我们可以利用上下文向量 c 来预测最合适的视频帧。

在我看来,有两种可能的策略来定义网络应该解决的最小化问题的损失函数。第一个比第二个容易。我简要描述如下:

  • 预测缩略图索引:通过利用上下文向量c,我们可以训练网络通过最小化交叉来预测表示所选帧位置的整数值-生成的索引与目标索引之间的熵损失;
  • 重建错误:通过利用上下文向量c,我们可以训练网络通过最小化评估的重建错误来生成新图像模型生成的图像与目标图像之间的差异。

我没有在实践中尝试过它们中的任何一个,所以我不能确定我的方法是否有效,但我相信为了有效地完成这项任务,这样做是合理的。无论如何,我希望这个答案可能对 OP 有所帮助,以便更好地理解如何解决这个任务。

关于video - 自动选择视频的缩略图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42599150/

相关文章:

html - FFMPEG 命令将视频流复用到 HLS fMP4

Python 和 OpenCV - 在某些点获取视频的持续时间

Python tesseract 提高了 OCR 的准确性

machine-learning - 用于实值数据的受限玻尔兹曼机 - 高斯线性单位 (glu) -

tensorflow - tf.losses.mean_squared_error 目标为负

python - 使用 google colab TPU 时出现 ValueError : slice index 0 of dimension 0 out of bounds.

tensorflow - 在 IBM power8 上安装 TensorFlow

video - ffmpeg,如何准确地剪切到开始和结束时间?

video - OpenCV:如何对GMM计算的概率进行分类

java - 木槌主题建模