自动选择视频的缩略图

时间:2017-03-04 17:40:29

标签: video machine-learning tensorflow thumbnails

我们都听说过YouTube使用深度学习为用户视频选择代表性缩略图。但有没有人尝试过成功的张量流?

我确实发现https://github.com/yahoo/hecate声称这样做但结果却不那么令人印象深刻。实际上,我使用ffmpeg提取关键帧,然后计算颜色分布以选择“最佳”图像,从而获得更好的效果。

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

1 个答案:

答案 0 :(得分:4)

我想向OP明确表示,这个答案并不代表对该方法的正式描述,以便以直观的方式描述预期方法。

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

视频可以表示为帧序列(f_1,f_2,...,f_n)。用于序列建模的最合适的神经网络架构是递归神经网络(RNN)。我们可以使用RNN来编码由CNN生成的视频帧潜在表示的序列。之后,您将为RNN生成的每个帧直接表示( f_1 f_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有所帮助,以便更好地理解如何解决这个任务。