视频场景检测实现

发布于 2024-10-13 22:24:51 字数 161 浏览 8 评论 0原文

我正在寻找视频场景检测算法的实现。 用于实现的任何编程语言都是可接受的。 我发现这个 实现 但它对小变化且不准确。

I am looking for a video scene detection algorithm implementation.
Any programming language used for the implementation is acceptable.
I found this implementation but it is very sensitive to small changes and inaccurate.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

缪败 2024-10-20 22:24:51

另一种选择是托管视频理解嵌入模型。如果将您的视频分成 N 个片段,然后嵌入捕获动作、上下文等的每个片段,您可以执行语义查询,例如“接球”或“破冰”。

mixpeek 有一个模型 vuse-generic-v1: https://learn.mixpeek.com/ vuse-v1-release/

这是一个示例索引管道:

obj = {
    "embedding": mixpeek.embed.video(chunk, "mixpeek/vuse-generic-v1"),
    "tags": mixpeek.extract.video(chunk, ""),
    "description": mixpeek.extract.video(chunk, ""),
    "file_url": file_url,
    "parent_id": FileTools.uuid(),
    "metadata": {
        "time_start": chunk.start_time,
        "time_end": chunk.end_time,
        "duration": chunk.duration,
        "fps": chunk.fps,
        "video_codec": chunk.video_codec,
        "audio_codec": chunk.audio_codec
    }
}

并在对视频嵌入建立索引后进行查询:
embedding = mixpeek.embed("打破僵局", "vuse-generic-v1")

another option is a managed video understanding embedding model. if split your video into N segments, then embed each segment capturing motion, context etc you can do semantic queries like "catching a ball" or "breaking the ice".

mixpeek has a model, vuse-generic-v1: https://learn.mixpeek.com/vuse-v1-release/

here's an example indexing pipeline:

obj = {
    "embedding": mixpeek.embed.video(chunk, "mixpeek/vuse-generic-v1"),
    "tags": mixpeek.extract.video(chunk, ""),
    "description": mixpeek.extract.video(chunk, ""),
    "file_url": file_url,
    "parent_id": FileTools.uuid(),
    "metadata": {
        "time_start": chunk.start_time,
        "time_end": chunk.end_time,
        "duration": chunk.duration,
        "fps": chunk.fps,
        "video_codec": chunk.video_codec,
        "audio_codec": chunk.audio_codec
    }
}

and to query once you have the video embeddings indexed:
embedding = mixpeek.embed("breaking the ice", "vuse-generic-v1")

你另情深 2024-10-20 22:24:51

最后,我通过比较 2 个连续帧做了一个简单的实现:

  1. 调整当前帧的大小:用于计算时间 + 内存
  2. 生成 颜色调整大小后的帧的直方图
  3. 计算当前帧与前一帧的欧几里得距离
  4. 如果欧几里得距离大于给定阈值,则场景发生变化。

阈值因视频而异......但我得到了可以接受的结果。

Finally I did an simple implementation, by comparing 2 consecutive frames:

  1. Resize current frame: For computation time + Memory
  2. Generate the Color Histogram for the resized frame
  3. Calculate the Euclidean Distance of the current frame with the previous frame's.
  4. If the Euclidean Distance is greater than a given threshold, then we have a scene change.

The threshold varies from a video to another ... but I got acceptable results.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文