【问题标题】:Auto selecting a thumbnail for a video自动选择视频的缩略图
【发布时间】:2017-07-24 18:14:33
【问题描述】:

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

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

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

【问题讨论】:

    标签: video machine-learning tensorflow thumbnails


    【解决方案1】:

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

    假设视频由 n 帧组成,并且每个帧都可以表示为 3D 张量(高度、宽度、通道)。可以使用卷积神经网络 (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 有所帮助,以便更好地了解如何解决此任务。

    【讨论】:

    • 某事告诉我,OP 采用了旧的 "...提取关键帧并计算颜色分布...' 方法:)))
    猜你喜欢
    • 1970-01-01
    • 2010-12-01
    • 1970-01-01
    • 2023-04-05
    • 1970-01-01
    • 2016-05-05
    • 2018-06-06
    • 2012-02-03
    • 2013-06-15
    相关资源
    最近更新 更多