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=(1−NfNk)×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:
提取关键帧所用时间
相关开源仓库