论文笔记: 视频关键帧抽取相关工作

news2024/11/12 15:51:44

2024-08-06,星期二,北京,晴

今天来看视频关键帧抽取主题。随着最近Sora文生视频的火热,视频相关的数据获得逐渐变得重要起来。这也就涉及到提取视频关键帧的问题。

从文本生成视频,我们拆分来看,一般流程是先将文本扩写生成几部分,之后将每部分生成对应的图像,这步的图像就可以看做视频的关键帧;最后由这一些关键帧扩展为完整的视频。

而视频关键帧抽取任务则是上述过程的反向操作,目的是构造训练数据使用。目前互联网上完整视频最多。而有对应关键帧的视频数据集则少之又少。

我们主要来看一篇2020年的综述文章Keyframe Extraction Techniques: A Review(https://elektrika.utm.my/index.php/ELEKTRIKA_Journal/article/download/221/136),该工作中系统总结了视频关键帧抽取部分的常用流程和方法。主要有以下几步来做:

在这里插入图片描述

其中,Keyframe Extraction Process主要有Sampling-Based、Shot-Based、Clustering-Based和其他方法

Sampling-Based:

  • 不考虑视频内容,从视频帧中,均匀或者随机采样即可。直白来说就是每隔几帧采样一次。
  • 缺点是:sample所得帧并不一定代表整个video,而且会有大量内容相似的帧。

Shot-Based:

  • 该方法分为两步:首先检测镜头边缘或转换卡点,将video分成小的shots,之后再做关键帧提取,通常选择小的shots的第一帧和最后一帧最为关键帧。因为这两帧图像,很确定有镜头变换的

Clustering-Based:

  • 聚类相似的视频帧图像点,在每一个cluster中,挑选距离cluster最近的作为关键帧。
  • 缺点是:事先确定cluster数量比较困难

关键帧提取算法评估指标:
Compress ratio:
C R = ( 1 − N k N f ) × 100 % CR = (1 - \frac{N_{k}}{N_{f}}) \times 100\% CR=(1NfNk)×100%
N f N_{f} Nf: 视频总帧数

N k N_{k} Nk: 提取的关键帧数目

Precision and Recall:
P r e c i s i o n = N a N k × 100 % R e c a l l = N a N a + N m × 100 % Precision = \frac{N_{a}}{N_{k}} \times 100\% \\ Recall = \frac{N_{a}}{N_{a} + N_{m}} \times 100\% Precision=NkNa×100%Recall=Na+NmNa×100%

N a N_{a} Na: 准确的keyframes数
N k N_{k} Nk: 提取得到的keyframes数目
N m N_{m} Nm: 丢失的key frame数目

F-Measure:
F = 2 × p r e c i s i o n i × r e c a l l p r e c i s i o n + r e c a l l F = 2 \times \frac{precisioni \times recall}{precision + recall} F=2×precision+recallprecisioni×recall

Computational Time:
提取关键帧所用时间

相关开源仓库

  • https://github.com/Breakthrough/PySceneDetect
  • https://github.com/keplerlab/katna
  • https://github.com/amanwalia123/KeyFramesExtraction

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1986941.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

泳泳馆押金原路退回系统,一键操作秒到账 押金+手牌+电子押金单

一、游泳馆手牌收押金必要性 游泳馆手牌收押金有以下必要性: 1. 防止手牌丢失:手牌是顾客在游泳馆内存储个人物品和进出更衣室的重要凭证。收押金可以让顾客更加重视手牌,降低丢失的概率。比如说,有的顾客可能会因为粗心大意随手…

用Python进行数据可视化——seaborn库详解

内容: 安装和导入Seaborn使用Seaborn创建基本图形了解Seaborn的默认数据集 代码: # 安装和导入Seaborn !pip install seaborn import seaborn as sns import matplotlib.pyplot as plt# 使用Seaborn创建基本图形 tips sns.load_dataset("tips&q…

python库(19):flashtext库实现高效文本查找与替换

1 FlashText简介 FlashText 是一个用于高效查找和替换关键词的 Python 库。它的优势在于能够在 O(n) 时间复杂度内完成任务,而不是像正则表达式那样需要 O(m*n) 的时间复杂度。FlashText 使用 Aho-Corasick 自动机算法,在大量关键词匹配时表现尤为出色。…

【Python机器学习】非均衡分类问题

在大多数情况下不同类比的分类代价并不相等。 分类性能度量指标:正确率、召回率及ROC曲线 通常情况下,我们可以基于错误率来衡量分类器任务的成功程度。错误率指的是在所有测试样例中错分的样例比例。实际上,这样的度量错误掩盖了样例如何被…

image.convert()函数转换格式及显示图像的RGB三通道图像

引 言 视觉任务处理的图片按照图像通道深度分为单通道图像和多通道图像。单通道图像有grayscale灰度图、binary二值图、PNG图,多通道图像有三通道24位真彩色RGB图,8位伪彩色图像,YCbCr图像等。本文先介绍各种格式图像的特点,随后讲…

c++初阶-----STL---list

作者前言 🎂 ✨✨✨✨✨✨🍧🍧🍧🍧🍧🍧🍧🎂 ​🎂 作者介绍: 🎂🎂 🎂 🎉🎉&#x1f389…

playwrite今日头条自动发帖

目的 大家好,我是watchpoints ,一个只为自己打工程序员, watchpoints是我github用户名 ,也是我的wechat 用户名, 每天看新闻浪费大量时间,写一个程序 自动提醒你21点远离手机 python实现 步骤1:自动登录 # …

在 Linux 9 上安装 Oracle 19c:克服兼容性问题 (INS-08101)

Oracle 数据库 19c 的基础版本 (19.3) 发布的时候还没有 Linux 9 ,因此在Linux 9上面安装Oracle 19c会遇到很多兼容性问题。本文将探讨如何解决这些问题。 安装步骤 设置环境变量以绕过操作系统检查: Oracle 19.3 安装程序无法识别 Linux 9。 [WARNIN…

sql二次注入实战--2018年网顶杯

网址:BUUCTF在线评测 (buuoj.cn) 当我们进入后显示这个页面: 当我们第一次点击发帖的时候就会跳转到登陆页面,上面有提示,告诉我们账号为zhangwei,密码为zhangwei***: 这里我们可以使用bp抓包工具来进行暴力破解密码&…

《剑来》语句摘录(十二)

◆ 第二百零三章 休要略过不提 >> 怨怼与仇恨是快刀斩乱麻,一往无前。金铁相错,激起的火星,就是大丈夫的恩怨分明。无非敢作敢当。 愧疚和遗憾却是一把钝刀,刀刃上边的缺口,皆是曾经犯过的错误。关门磨刀即是后悔…

LVS四层架构部署

LVS四层架构部署 LVS集群的类型 lvs-nat: 修改请求报文的目标IP,多目标IP的DNATlvs-dr: 操纵封装新的MAC地址lvs-tun: 在原请求IP报文之外新加一个IP首部lvs-fullnat: 修改请求报文的源和目标IP LVS-NAT 工作流程 可以理解na…

主从备份(复制)

一、备份的三种类型 备份的三种主要类型包括热备份、逻辑备份和物理备份,每种备份类型都有其特定的应用场景和优缺点。 1. 热备份 定义: 热备份是在数据库或系统处于正常运行状态下进行的备份。这种备份方式允许在不停机的情况下对数据库或系统数据进…

用Python构建一个简单的神经网络

准备工作 首先我们需要使用到vscode 在终端 窗口下输入安装:pip3 install tensorflow pandas numpy keras 代码编写 导入库 import tensorflow as tf from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense import panda…

PyTorch深度学习实战(3)—— 小试牛刀:CIFAR-10分类

下面尝试从零搭建一个PyTorch模型来完成CIFAR-10数据集上的图像分类任务,步骤如下。 (1)使用torchvision加载并预处理CIFAR-10数据集。 (2)定义网络。 (3)定义损失函数和优化器。 (4…

面向服务架构(SOA)介绍

在汽车电子电气架构还处于分布式时代时,汽车软件的开发方式主要是采用嵌入式软件进行开发,而随着汽车智能化程度的加深,更加复杂且多样的功能需求让汽车软件在复杂度上再上一层。在整车的自动驾驶方面,由于未来高阶自动驾驶能力的…

JavaScript constructor原型原型继承

constructor 在 JavaScript 中,构造函数是一种特殊的函数,使用 new 关键字来调用,用于创建对象实例。JavaScript 中的构造函数通常通过 function 关键字定义。 例如: function Person(name, age) {this.name name;this.age a…

C语言预处理:开启编程新境界

✨✨ 欢迎大家来到贝蒂大讲堂✨✨ 🎈🎈养成好习惯,先赞后看哦~🎈🎈 所属专栏:C语言学习 贝蒂的主页:Betty‘s blog 1. 预处理符号 在C语言中,我们可以通过一些预定义符号查看文件的…

vue中post请求返回二进制流文件下载

1 .调用接口返回的如下图所示,此时看到是一个流文件 2.不管是get请求还是post请求都需要加上 下面这行代码 responseType: "blob", 3.我们自行二次封装的axios可能会导致乱码现象,建议直接用axios调用接口请求 4.关于Excel导出 POI 响应头设置 Content-Type: applica…

Tomcat高可用集群(实例详解)

一.环境准备 虚拟机的版本:VMware-workstation-full-15.5.6-16341506.exe系统镜像版本:CentOS-6.10-x86_64-bin-DVD1.iso,全新安装,桌面版,可上网系统内存大小:1GB系统硬盘大小:20GB连接工具版…

《决胜B端 产品经理升级之路》 知识点总结

什么是b端产品? b端产品是指面向企业或组织的经营管理问题,旨在解决企业规模、成本、效率、品质和风控等方面的产品。这些产品主要帮助企业提高运营效率、降低成本、改善品质和控制风险等。b端产品适用于各种行业和企业类型,可以为企业带来深…