MPEG-CDVA标准的特征提取(除深度学习) 视频匹配 视频检索

article/2025/9/22 16:40:24

依据可查阅资料对CDVA标准中的特征提取(不涉及深度特征部分),视频匹配和视频检索流程做了分析说明。

1. 概要

1.1 描述子提取:
使用关键帧描述子
提取关键帧之前,视频做一个降采样,每隔2-10帧左右取一帧
关键帧通过比较彩色直方图的相似性而得,每一帧与前一个关键帧作比较
视频降采样之后,提取关键帧之前,提取视频帧的时间信息
在提取关键帧的流水线中,将视频划分成小段(我认为就是shot的划分)
1.2 视频匹配:
双重循环的匹配,待匹配视频中每一个关键帧,和其他所有视频中的所有关键帧匹配
由粗到精,对于每一次迭代中的两个关键帧,先比较其全局描述子,再比较局部描述子
用两个阈值控制,不符合条件的直接略过。
1.3 视频检索:
对于待检索视频中的每一个关键帧,先使用全局描述子进行检索,得到前500个,再使用局部描述子,得到最相似的前50个视频。

2. 描述子提取过程

MPEG CDVA整体框架
这里写图片描述
CDVA描述子提取
这里写图片描述
CDVA描述子提取(不含深度学习部分)
这里写图片描述
1. 分段的选择(segment)
从第一个关键帧开始,第一个关键帧作为第一个分段的段边界(segment boundary),从段边界开始,之后的帧,直到遇到下一个段边界或文件结束,都是同一段中的。
2. 帧的降采样(我理解的是,每隔多少帧取一帧,典型的参数2-10)
3. 对帧进行解码
4. 计算彩(颜)色直方图,使用RGB颜色空间,每个颜色空间32个bin(将颜色空间划分为若干个小的颜色区间,每个小区间成为直方图的一个bin,称为颜色量化)。
5. 检验当前帧和之前的帧的彩色直方图差值,如果大于一个给定的阈值,就被选做关键帧,否则就把当前帧丢弃。就是说如果当前帧,和之前已经编码过的帧相似,就舍弃。
6. 关键帧的颜色直方图保存下来,当做下一次迭代中的前一直方图
7. 对独立的帧提取CDVS描述子,使用CDVS标准中的模式0。
8. 检验当前帧和段首(也应该是一个关键帧)的彩色直方图差值,如果大于某个阈值,当前帧被选做一个新的分段的第一帧(分段边界)
9. 计算当前帧的描述子和分段中第一帧的描述子的全局CDVS相似性,如果小于某一个阈值,即相似性较小,就把这个帧选定为新的分段边界。
10. 选定为新的分段边界的帧,存储描述子,以便和段中的之后的帧作比较
11. 对帧的描述子进行编码,使用cdvs提取器得到的当前帧的数据结构,以二进制方式进行编码。
12. Mux: 视频帧的时间戳,描述子大小,分段开始的信息以及二进制的CDVS描述子,都被联接起来,然后再附加上当前的CDVA描述子,成为一个描述子。

3. 成对匹配过程

3.1 描述子级别的匹配

匹配对象:Qi和Rj Q:待匹配的视频的关键帧的集合 R:其他视频中所有关键帧的集合。
for(Qi∈Q)
for(Rj∈R)
这样一个匹配关系。
即,需要匹配的视频中的所有关键帧与其他视频中所有关键帧进行比较。
视频匹配通过把两个描述子进行一个由粗到精的匹配策略来实现:
一个视频中的每一个关键帧首先与其他视频中的所有关键帧,即Qi与Rj,通过全局特征相似度来比较。如果这个相似度大于给定的阈值,就表明两帧有可能匹配,局部描述子比较会被几何校验这一模块进一步完成。关键帧级别的相似度再之后通过全局和局部描述子的匹配值进一步得到。最后,我们可以通过在所有关键帧级别的相似性中选择最大的匹配值,得到视频级别的相似性。

CDVA成对匹配
这里写图片描述
1. Decode CDVS descriptors Q and R
对于两个地方的描述子:Q表示CDVA查询描述子,R代表CDVA参考描述子,进行CDVS描述子的解码
2. Get next pair CDVS Qi Rj
解码过程得到成对的Q和R,成对的查询和参考描述子,Qi和Rj。
3. Match Global descriptor
对Qi和Rj描述子的全局描述子做一个CDVS匹配操作
4. Match local descriptors
如果3中全局匹配的值大于th1(小于th1的丢弃了),则再继续做一个局部描述子的匹配(由粗到精)
5. Determine score
由全局和局部的匹配值,得到最终的一个匹配值,如果这个值大于th2转6(小于th2的丢弃)
6. Set time of Qi
如果全局和局部结合生成的匹配值大于th2,则存储Qi这个描述子所属的分段的时间。
当迭代过程结束,所有的Qi和Rj都匹配过之后,找到一个最大的间隔,然后使相邻的间隔融合。
7. Update score
默认的更新匹配值策略是:在所有当前的匹配值中选取一个最大值;也可选择另外一种:取均值。每得到一对Qi和Rj就更新一次匹配值,直到迭代结束。

3.2 基于时间定位(temporal localization)的匹配/基于shot的匹配

视频匹配中的另外一个标准是时间定位temporal localization,可以基于记录下的时间戳,定位包含感兴趣项目的视频片段。意大利电信的提案中提出了shot(镜头,连续镜头,景)级别的定位模式。
定义shot为一组连续的关键帧,shot中每个关键帧的颜色直方图和这个shot中第一个关键帧的颜色直方图之间的距离,都小于某个给定的阈值。如果关键帧级别的相似性,大于某个阈值,则包含这个关键帧的shot被认为是匹配间隔(matching interval)。多个匹配间隔也可以连接起来得到最终用于定位的间隔。

16年10月,意大利电信的提案
简单迅速的shot检测算法:
使用同样的颜色直方图算法来检测关键帧,引入了一个新的阈值来检测shot的变化,定义shot为一组连续的关键帧,shot中每个关键帧的颜色直方图和这个shot中第一个关键帧的颜色直方图之间的距离,都小于某个给定的阈值。Shot的起始时间是shot中第一个和最后一个关键帧的时间。时间定位间隔通过如下方法计算:对于每一对做匹配的局部描述子,检查查询关键帧(query keyframe)的信息来确定包含帧的shot;shot的起始时间传给评价框架,作为匹配间隔(matching interval),即匹配间隔就是这个shot的起止时间。如果不止一个shot匹配上,间隔会被自动连接起来(shot被连接起来)
使用暴力(brute-farce)匹配的方式来做关键帧的匹配:在查询和参考关键帧的所有可能的组合上应用全局+局部描述子匹配,将计算过程分为三部分:
1. 计算所有的全局描述子匹配值(在这个部分,只对全局描述子匹配使用暴力算法)
2. 根据全局描述子匹配值选出匹配对中的前64对。
3. 计算这前64对的局部描述子匹配值,如果这个值大于给定的阈值,则将这个shot的起止时间传递给评价框架。

4. 视频检索过程

视频检索使用的是一对多的模式,数据库中的视频都会被检查,并且顶端的那几个有更高的匹配值。特别地,关键帧级别的和全局描述子进行的匹配,是通过提取数据库中前Kg个候选关键帧实现的。然后,这些关键帧会使用局部描述子匹配进一步检验,然后候选帧的数据集被进一步缩小到Kl,依据是全局和局部相似性的结合的排序。这些关键帧在视频中被重新组织,最终遵循视频检索流水线的原则在视频级别上进行相似性排序。

CDVA视频检索流水线
这里写图片描述
1. Decode CDVS descriptors Q
CDVA查询描述子中的所有描述子,解码其CDVS描述子
2. Get next CDVS Qi
每次的CDVS描述子:Qi,循环迭代
3. Query in the Global Descriptor Index
在全局描述子数据库索引中查询Qi,使用的是CDVS的检索操作
4. Sort by descending score
排序,将检索结果按降序排序
5. Get the top 500 elements from the list
在排序名单中,选择前500个描述子
6. Local descriptor matching for each item in the list
500个描述子进行CDVS局部描述子匹配
7. Rerank by the local score
通过局部值进行一个重排序,迭代继续,取下一个Qi
8. Merge results and remove duplicates
全部迭代结束之后,融合结果,去掉重复,返回前50个匹配上的视频


http://chatgpt.dhexx.cn/article/sxE43rZ3.shtml

相关文章

CLIP4Clip:用于端到端视频检索的CLIP实证研究

Luo, Huaishao, Lei Ji, Ming Zhong, Yang Chen, Wen Lei, Nan Duan and Tianrui Li. “CLIP4Clip: An Empirical Study of CLIP for End to End Video Clip Retrieval.” ArXiv abs/2104.08860 (2021). 1. Abstract 视频文本检索在多模态研究中起着至关重要的作用&#xff0c…

同时利用字幕、音频、视频进行检索!Inria谷歌提出MMT用于高效跨模态视频检索,代码已开源!...

关注公众号,发现CV技术之美 ▊ 写在前面 检索与自然语言查询相关的视频内容对于有效处理互联网规模的数据集起着关键作用。现有的大多数文本到视频检索方法都没有充分利用视频中的跨模态线索。此外,它们以有限或没有时间信息的方式聚合每帧视觉特征。 在…

视频检索——BLSTM(论文翻译、理解)

视频检索BLSTM方法论文翻译 摘要1 介绍2 相关工作3 自监督时序哈希3.1 时序感知的哈希函数3.2 二进制的LSTM3.3 学习目标3.4 框架细节 4 二进制优化4.1 二进制求导4.2 算法细节 5 实验5.1 数据集5.2 实验设置5.3 结果分析 6 结论 Play and Rewind: Optimizing Binary Represent…

基于内容的视频检索(CBVR)

参考 1. 视频检索的基本流程 2. 视频的结构分层 各层都可以用一些属性来描述: 1. 视频序列的属性主要包括场景的个数和持续时间; 2. 场景的属性包括标题、持续时间、镜头数目、开始镜头、结束镜头等; 3. 镜头的属性包括持续时间、动态特征…

人脸视频检索系统设计(C++)

目录 人脸检索系统框架的构建 1 一.软件实现的主要界面 1 二.软件的需求概括 1 三.软件代码设计过程中需要注意的问题 2 四.程序到目前为止产生的诸多缺陷 4 五.程序的详细设计过程 4 1.输入部分的设计 4 2.检测结果部分的设计过程 10 人脸检索系统框架的构建 ------FaceMFC_v…

AAAI 2023 | 基于多模态标签聚合的视频检索模型TABLE,多项SOTA

©作者 | QQ浏览器搜索技术中心、腾讯PCG ARC Lab 来源 | 机器之心 近年来,互联网短小视频内容的爆发式增长,对视频 - 文本检索(Video-Text Retrieval)的能力提出了更高的要求。在 QQ 浏览器搜索中,视频通常包含标…

5分钟实现「视频检索」:基于内容理解,无需任何标签

Notebook 教程:text-video retrieval 「视频检索」任务就是输入一段文本,检索出最符合文本描述的视频。随着各类视频平台的兴起和火爆,网络上视频的数量呈现井喷式增长,「视频检索」成为人们高效查找视频的一项新需求。传统的视频…

视频内容检索概述

视频内容检索 针对目前多媒体搜索引擎技术,视频数量的井喷式增加以及多媒体视频内容的多样性和数据结构的复杂性,如何快速的从有效地这些视频检索出人们感兴趣的已经成为当今信息化时代的难题。 数字视频内容检索 基于内容的视频检索(CBVR…

ad建集成库_手把手教你创建自己的Altium Designer集成元件库

一个善于规划、管理及总结的硬件开发工程师都喜欢创建自己的集成库,这样就相当于给自己打造了一款更适合自己的尖兵利器,无论是硬件设计的统一性还是硬件模块的可重用性,都会给工程师带来更多的设计便利。 一个管理规范的硬件开发企业,在集成库的制作及使用方面都会做出很多…

NC57中间表数据源的设置流程

目前场景如下:NC定时将数据写入中间库中,第三方去中间库中抓取; 方式一: 第一步:在NC客户端【客户化】——【二次开发工具】——【参数设置】——【参数模板管理】添加所设置的数据源数据 找到对应的数据库表pub_sysi…

分库分表介绍

目录 一、前言 二、何谓数据切分? 三、垂直切分 1、垂直分库 2、垂直分表 3、垂直切分优缺点 4、拆分需考虑的业务因素 四、水平切分 1、水平分库 2、水平分表 3、水平切分优缺点 五、垂直与水平切分的联合使用 六、数据分片规则 1、Hash取模分表 2、数…

分库分表入门介绍

本文收集网上资料,多合一 编撰于2020年4月21日 原文链接1 原文链接2 原文链接3 目录 为什么要分库分表读写分离,主从复制Why Not NoSQL/NewSQL?什么是RDBMS 分库分表概述切分策略路由规则范围路由hash算法路由配置 分库分表带来的问题join操作COUNT&…

工作区、暂存区、仓库三者关系

区分三者关系 Git最让你迷惑的无非是它里面的各种概念了,如果是刚开始接触Git希望看完本篇介绍之后有一个清晰的认识,笔者认识也有限这里只说说个人对使用Git的感受,说一下它里面的几个最常用的概念的理解。 在初始化git版本库之后会生成一个…

浅谈MYSQL中的基本表、中间表、临时表、派生表和视图

简单介绍 首先我们先了解一下什么叫虚拟表虚拟表,顾名思义就是就是实际上并不存在(物理上不存在),但是逻辑上存在的表。 在MYSQL中存在三种虚拟表:临时表、内存表、视图 1、基本表 基本表是本身独立存在的表&#x…

常见的系统间接口方式(02)-中间件的数据接口模式

导读: 原文路径:https://mp.weixin.qq.com/s/uq9DfxE5_cvAsitqlcblBg 大家可以关注我个人公众号,所有分享内容,会在公众号第一时间推送,且阅读排版更好。 愿大家的学习,轻松且愉快。 如果大家觉得有用&…

python matlab库使用_python matlab库

python与matlab的优缺点比较matlab主要是用来做数值计算的(矩阵,向量是强项),当然还加入了其他的许许多多的库。主要用来模拟一些东西。 python是一门语言,现在也有模拟matlab的库,不过功能显然还是很弱的。 python与matlab哪个简单 简单对比: python和matlab的共同点都是…

MYSQL:创建中间表

mysql> create table role_to_privilege( -> id int primary key auto_increment, -> rId int not null, -> pId int not null -> ); Query OK, 0 rows affected (0.09 sec)

中间表是什么?和报表有什么关系?会带来怎样的问题?又如何解决?

在数据库中有一类用于保存中间计算结果的物理表,通常被称为“中间表”。中间表主要跟 OLAP(在线联机分析)业务有关,产生的原因主要有以下几方面。 中间表来源 1. 计算逻辑复杂 在 OLAP(报表或查询)业务中&…

mysql 中中间表是什么意思_为什么会有这么多中间表?

中间表的由来 中间表是数据库中专门存放中间计算结果的数据表。报表系统中的中间表是普遍存在的。那么,这些中间表是如何出现的?为什么中间表会越来越多?中间表会给项目组带来什么样的困扰,如何解决这些困扰?这里我们就尝试探讨一下这个问题。 中间表出现的典型场景主要有…

IT 接口对接:足迹第十二步接口对接的定义(接口对接分三种:中间库方式的接口对接,Rest格式URL对接和HTTP格式URL对接;)

1)接口对接的定义:服务端通过暴露地址/参数名称/编码,指引客户端发送一个Rest风格的URL请求,服务端读取Rest风格的URL,并返回一个响应; 接口有四部分组成:方法、uri、请求参数、返回参数&#…