我们都听说过YouTube使用深度学习为用户视频选择代表性缩略图。但有没有人尝试过成功的张量流?
我确实发现https://github.com/yahoo/hecate声称这样做但结果却不那么令人印象深刻。实际上,我使用ffmpeg提取关键帧,然后计算颜色分布以选择“最佳”图像,从而获得更好的效果。
但是很想知道是否有人使用更“智能”的算法做得更好。
答案 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 来预测最合适的视频帧。
在我看来,有两种可能的策略来定义网络应该解决的最小化问题的损失函数。第一个比第二个容易。我简要描述如下:
我在实践中没有尝试过任何一个,所以我无法确定我的方法是否有效,但我确信这样做是合理的,以便有效地完成这项任务。无论如何,我希望这个答案可能对OP有所帮助,以便更好地理解如何解决这个任务。