一种视频库的索引表建立方法、装置、服务器及存储介质转让专利

申请号 : CN202010301298.5

文献号 : CN111368133B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 龚国平徐敘遠杨喻茸方杨

申请人 : 腾讯科技(深圳)有限公司

摘要 :

本发明公开了一种视频库的索引表建立方法、装置、服务器及存储介质,该方法包括:对视频库中每个视频的目标视频帧进行特征提取得到目标视频帧的特征向量;根据预设第一维度划分策略将特征向量划分为对应多个第一分段的多个特征子向量;对每个第一分段对应的特征子向量进行聚类,确定各第一分段的分段中心向量;确定各分段中心向量之间的笛卡尔积得到库中心向量集;针对任一目标视频帧,根据其与库中心向量之间的距离确定目标库中心向量;根据目标库中心向量确定量化向量;根据目标库中心向量和量化向量,确定目标视频帧在索引表中对应的第一索引字段和第二索引字段。本发明缩短了码本向量的训练耗时和迭代周期,提高了索引表的构建效率。

权利要求 :

1.一种视频库的索引表建立方法,其特征在于,所述方法包括:对视频库中每个视频的目标视频帧进行特征提取,得到N个所述目标视频帧的特征向量;

根据预设第一维度划分策略,将每个所述目标视频帧的特征向量划分为对应M个第一分段的M个特征子向量;

针对所述M个第一分段中的第i个第一分段,对所述第i个第一分段在N个所述目标视频帧中对应的特征子向量进行聚类,确定所述第i个第一分段的分段中心向量;所述i=1~M,所述M>1;

确定所述M个第一分段的分段中心向量之间的笛卡尔积,得到所述视频库对应的库中心向量集;

针对任一所述目标视频帧,根据所述目标视频帧与所述库中心向量集中库中心向量之间的距离,确定所述目标视频帧对应的目标库中心向量;

确定所述目标视频帧的特征向量与所述目标库中心向量的差,得到残差向量;

根据预设的第二维度划分策略,将所述残差向量划分为对应M个第二分段的M个分段残差子向量;

针对所述M个第二分段中的第i个第二分段,对所述第i个第二分段在N个所述目标视频帧中对应的分段残差子向量进行聚类,确定所述第i个第二分段的分段类簇;

根据所述M个第二分段的分段类簇,确定所述M个分段残差子向量对应的分段类簇的类簇标识;

根据所述M个分段残差子向量对应的分段类簇的类簇标识,确定所述目标视频帧的量化向量;

根据所述目标库中心向量和所述量化向量,确定所述目标视频帧在索引表中对应的第一索引字段和第二索引字段。

2.根据权利要求1所述的视频库的索引表建立方法,其特征在于,在确定所述M个第一分段的分段中心向量之间的笛卡尔积之前,所述方法还包括:确定所述M个第一分段中各第一分段的分段中心向量对应的分段旋转矩阵;

将所述各第一分段的分段中心向量分别与对应的分段旋转矩阵相乘,得到各第一分段的分段旋转中心向量;

将所述分段旋转中心向量作为对应第一分段的分段中心向量。

3.根据权利要求2所述的视频库的索引表建立方法,其特征在于,在确定所述M个第一分段中各第一分段的分段中心向量对应的分段旋转矩阵之前,所述方法还包括:确定所述M个第一分段中各第一分段对应的特征子向量之间的相关程度;

判断所述各第一分段对应的特征子向量之间的相关程度是否均满足预设条件;

在判断的结果为是时,执行所述确定所述M个第一分段中各第一分段的分段中心向量对应的分段旋转矩阵的步骤。

4.根据权利要求3所述的视频库的索引表建立方法,其特征在于,所述方法还包括:在判断的结果为否时,确定满足所述预设条件的所述相关程度所对应的目标第一分段;

将所述目标第一分段对应的分段中心向量确定为待调整分段中心向量;

确定所述待调整分段中心向量的分段旋转矩阵;

将所述待调整分段中心向量与相应的所述分段旋转矩阵相乘,得到调整分段旋转中心向量;

将所述调整分段旋转中心向量作为所述目标第一分段的分段中心向量。

5.根据权利要求1所述的视频库的索引表建立方法,其特征在于,所述针对任一所述目标视频帧,根据所述目标视频帧与所述库中心向量集中库中心向量之间的距离,确定所述目标视频帧对应的目标库中心向量包括:针对所述M个第一分段中的每个第一分段,确定所述任一目标视频帧的特征向量与所述第一分段的分段中心向量之间的距离;

从所述第一分段的分段中心向量中选取所述距离最近的目标分段中心向量,得到每个第一分段对应的目标分段中心向量;

确定所述每个第一分段对应的目标分段中心向量的分段哈希值;

根据所述M个第一分段中各第一分段对应的目标分段中心向量的分段哈希值,确定目标哈希值;

根据预先建立的库中心向量与哈希值的映射关系,确定所述目标哈希值对应的库中心向量;所述目标哈希值对应的库中心向量作为所述目标库中心向量。

6.根据权利要求1所述的视频库的索引表建立方法,其特征在于,所述根据所述目标库中心向量和所述量化向量,确定所述目标视频帧在索引表中对应的第一索引字段和第二索引字段包括:

根据所述M个第一分段中各第一分段对应的分段中心向量的分段哈希值,确定所述目标库中心向量的哈希值;

将所述目标库中心向量的哈希值作为第一索引数据添加到索引表的第一索引字段;

获取所述目标视频帧的帧标识;

建立所述目标视频帧的帧标识与所述目标视频帧的量化向量之间的对应关系;

将所述量化向量以及所述对应关系作为第二索引数据添加到所述索引表的第二索引字段;所述第二索引字段作为所述第一索引字段的下级字段。

7.根据权利要求6所述的视频库的索引表建立方法,其特征在于,在对视频库中每个视频的目标视频帧进行特征提取,得到所述目标视频帧的特征向量之前,所述方法还包括:针对视频库中的任一视频,确定所述任一视频的视频标识;

提取所述任一视频中的目标视频帧,确定所述目标视频帧的帧标识;

建立所述目标视频帧的帧标识与所述任一视频的视频标识之间的对应关系。

8.一种视频库的索引表建立装置,其特征在于,所述装置包括:特征提取模块,用于对视频库中每个视频的目标视频帧进行特征提取,得到N个所述目标视频帧的特征向量;

第一划分模块,用于根据预设第一维度划分策略,将每个所述目标视频帧的特征向量划分为对应M个第一分段的M个特征子向量;

第一聚类模块,用于针对所述M个第一分段中的第i个第一分段,对所述第i个第一分段在N个所述目标视频帧中对应的特征子向量进行聚类,确定所述第i个第一分段的分段中心向量;所述i=1~M,所述M>1;

第一确定模块,用于确定所述M个第一分段的分段中心向量之间的笛卡尔积,得到所述视频库对应的库中心向量集;

第二确定模块,用于针对任一所述目标视频帧,根据所述目标视频帧与所述库中心向量集中库中心向量之间的距离,确定所述目标视频帧对应的目标库中心向量;

量化向量确定模块,用于确定所述目标视频帧的特征向量与所述目标库中心向量的差,得到残差向量;根据预设的第二维度划分策略,将所述残差向量划分为对应M个第二分段的M个分段残差子向量;针对所述M个第二分段中的第i个第二分段,对所述第i个第二分段在N个所述目标视频帧中对应的分段残差子向量进行聚类,确定所述第i个第二分段的分段类簇;根据所述M个第二分段的分段类簇,确定所述M个分段残差子向量对应的分段类簇的类簇标识;根据所述M个分段残差子向量对应的分段类簇的类簇标识,确定所述目标视频帧的量化向量;

索引字段确定模块,用于根据所述目标库中心向量和所述量化向量,确定所述目标视频帧在索引表中对应的第一索引字段和第二索引字段。

9.一种服务器,其特征在于,包括处理器和存储器,所述存储器中存储有至少一条指令或至少一段程序,所述至少一条指令或所述至少一段程序由所述处理器加载并执行以实现如权利要求1~7中任一项所述的视频库的索引表建立方法。

10.一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一条指令或至少一段程序,所述至少一条指令或所述至少一段程序由处理器加载并执行以实现如权利要求1~7任一项所述的视频库的索引表建立方法。

说明书 :

一种视频库的索引表建立方法、装置、服务器及存储介质

技术领域

[0001] 本发明涉及计算机技术领域,特别涉及一种视频库的索引表建立方法、装置、服务器及存储介质。

背景技术

[0002] 随着视频业务的快速发展,对于相关视频的查找效率要求也越来越高。在进行相关视频的查找时,一般基于视频库的索引表进行,该索引表在建立时首先获取视频库中视
频的视频指纹(视频帧的特征向量),然后通过聚类算法对全维度的视频指纹进行训练得到
视频库的码本向量,进而通过码本向量构建索引表。
[0003] 可以理解的,视频库的码本向量越长,那么每个桶(即构成码本向量的聚类中心向量对应的类簇)中的视频数据就越少,越有利于提高查找效率。相关技术中基于全维度的视
频指纹来构建索引表,当要得到更长的码本向量时,系统的运算量将大大增加,码本向量的
训练耗时以及迭代周期都大大延长,进而导致索引表的构建效率低。

发明内容

[0004] 为了解决现有技术的问题,本发明实施例提供了一种视频库的索引表建立方法、装置、服务器及存储介质。所述技术方案如下:
[0005] 一方面,提供了一种视频库的索引表建立方法,所述方法包括:
[0006] 对视频库中每个视频的目标视频帧进行特征提取,得到所述目标视频帧的特征向量;
[0007] 根据预设第一维度划分策略,将所述目标视频帧的特征向量划分为对应多个第一分段的多个特征子向量;
[0008] 针对所述多个第一分段中的每个第一分段,对所述第一分段对应的特征子向量进行聚类,确定所述第一分段的分段中心向量;
[0009] 确定所述多个第一分段中各第一分段的分段中心向量之间的笛卡尔积,得到所述视频库对应的库中心向量集;
[0010] 针对任一所述目标视频帧,根据所述目标视频帧与所述库中心向量集中库中心向量之间的距离,确定所述目标视频帧对应的目标库中心向量;
[0011] 根据所述目标库中心向量,确定所述目标视频帧对应的量化向量;
[0012] 根据所述目标库中心向量和所述量化向量,确定所述目标视频帧在索引表中对应的第一索引字段和第二索引字段。
[0013] 另一方面,提供了一种视频库的索引表建立装置,所述装置包括:
[0014] 特征提取模块,用于对视频库中每个视频的目标视频帧进行特征提取,得到所述目标视频帧的特征向量;
[0015] 第一划分模块,用于根据预设第一维度划分策略,将所述目标视频帧的特征向量划分为对应多个第一分段的多个特征子向量;
[0016] 第一聚类模块,用于针对所述多个第一分段中的每个第一分段,对所述第一分段对应的特征子向量进行聚类,确定所述第一分段的分段中心向量;
[0017] 第一确定模块,用于确定所述多个第一分段中各第一分段的分段中心向量之间的笛卡尔积,得到所述视频库对应的库中心向量集;
[0018] 第二确定模块,用于针对任一所述目标视频帧,根据所述目标视频帧与所述库中心向量集中库中心向量之间的距离,确定所述目标视频帧对应的目标库中心向量;
[0019] 量化向量确定模块,用于根据所述目标库中心向量,确定所述目标视频帧对应的量化向量;
[0020] 索引字段确定模块,用于根据所述目标库中心向量和所述量化向量,确定所述目标视频帧在索引表中对应的第一索引字段和第二索引字段。
[0021] 可选的,所述装置还包括:
[0022] 第三确定模块,用于确定所述多个第一分段中各第一分段的分段中心向量对应的分段旋转矩阵;
[0023] 第一计算模块,用于将所述各第一分段的分段中心向量分别与对应的分段旋转矩阵相乘,得到各第一分段的分段旋转中心向量;
[0024] 第四确定模块,用于将所述分段旋转中心向量作为对应第一分段的分段中心向量。
[0025] 可选的,所述装置还包括:
[0026] 第五确定模块,用于确定所述多个第一分段中各第一分段对应的特征子向量之间的相关程度;
[0027] 判断模块,用于判断所述各第一分段对应的特征子向量之间的相关程度是否均满足预设条件;在判断的结果为是时,执行所述确定所述多个第一分段中各第一分段的分段
中心向量对应的分段旋转矩阵的步骤。
[0028] 可选的,所述装置还包括:
[0029] 第六确定模块,用于在判断模块判断的结果为否时,确定满足所述预设条件的所述相关程度所对应的目标第一分段;
[0030] 第七确定模块,用于将所述目标第一分段对应的分段中心向量确定为待调整分段中心向量;
[0031] 第八确定模块,用于确定所述待调整分段中心向量的分段旋转矩阵;
[0032] 第二计算模块,用于将所述待调整分段中心向量与相应的所述分段旋转矩阵相乘,得到调整分段旋转中心向量;
[0033] 第九确定模块,用于将所述调整分段旋转中心向量作为所述目标第一分段的分段中心向量。
[0034] 可选的,所述量化向量确定模块包括:
[0035] 第一残差确定模块,用于确定所述目标视频帧的特征向量与所述目标库中心向量的差,得到残差向量;
[0036] 第二划分模块,用于根据预设的第二维度划分策略,将所述残差向量划分为对应多个第二分段的多个分段残差子向量;
[0037] 第二聚类模块,用于针对所述多个第二分段中的每个第二分段,对所述第二分段对应的分段残差子向量进行聚类,确定所述第二分段的分段类簇;
[0038] 第十确定模块,用于根据所述多个第二分段中各第二分段的分段类簇,确定所述多个分段残差子向量中每个分段残差子向量对应的分段类簇的类簇标识;
[0039] 量化向量确定子模块,用于根据所述多个分段残差子向量中每个分段残差子向量对应的分段类簇的类簇标识,确定所述目标视频帧的量化向量。
[0040] 可选的,所述索引字段确定模块包括:
[0041] 第一哈希确定模块,用于根据所述多个第一分段中各第一分段对应的分段中心向量的分段哈希值,确定所述目标库中心向量的哈希值;
[0042] 第一添加模块,用于将所述目标库中心向量的哈希值作为第一索引数据添加到索引表的第一索引字段;
[0043] 第一获取模块,用于获取所述目标视频帧的帧标识;
[0044] 第一关系建立模块,用于建立所述目标视频帧的帧标识与所述目标视频帧的量化向量之间的对应关系;
[0045] 第二添加模块,用于将所述量化向量以及所述对应关系作为第二索引数据添加到所述索引表的第二索引字段;所述第二索引字段作为所述第一索引字段的下级字段。
[0046] 可选的,所述装置还包括:
[0047] 第一标识确定模块,用于针对视频库中的任一视频,确定所述任一视频的视频标识;
[0048] 第二标识确定模块,用于提取所述任一视频中的目标视频帧,确定所述目标视频帧的帧标识;
[0049] 第二关系建立模块,用于建立所述目标视频帧的帧标识与所述任一视频的视频标识之间的对应关系。
[0050] 可选的,所述第二确定模块包括:
[0051] 距离确定模块,用于针对所述多个第一分段中的每个第一分段,确定所述任一目标视频帧的特征向量与所述第一分段的分段中心向量之间的距离;
[0052] 选取模块,用于从所述第一分段的分段中心向量中选取所述距离最近的目标分段中心向量,得到每个第一分段对应的目标分段中心向量;
[0053] 分段哈希值确定模块,用于确定所述每个第一分段对应的目标分段中心向量的分段哈希值;
[0054] 目标哈希值确定模块,用于根据所述多个第一分段中各第一分段对应的目标分段中心向量的分段哈希值,确定目标哈希值;
[0055] 目标库中心向量确定模块,用于根据预先建立的库中心向量与哈希值的映射关系,确定所述目标哈希值对应的库中心向量;所述目标哈希值对应的库中心向量作为所述
目标库中心向量。另一方面,提供了一种服务器,包括处理器和存储器,所述存储器中存储
有至少一条指令或至少一段程序,所述至少一条指令或所述至少一段程序由所述处理器加
载并执行以实现上述视频库的索引表建立方法。
[0056] 另一方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一条指令或至少一段程序,所述至少一条指令或所述至少一段程序由处理器加载并执
行以实现如上述的视频库的索引表建立方法。
[0057] 本发明实施例通过将目标视频帧的特征向量切分为多个分段,并针对每个分段单独训练得到各个分段的分段码本向量(即分段中心向量),然后将各个分段的分段码本向量
计算笛卡尔积得到一个完整的码本向量(即视频库对应的库中心向量集),并基于该完整的
码本向量构建视频库的索引表。基于本发明的以上技术方案,当需要得到长度为n*n的码本
向量时,只需分别训练两个长度为n的分段码本向量即可,而现有技术中的方案则需要直接
训练长度为n*n的码本向量,可见,本发明实施例的技术方案能够在不改变运算量的基础上
得到更长的码本向量,码本向量的训练耗时和迭代周期都大大缩短,进而提高了索引表的
构建效率,且构建的索引表具有更高的检索效率。

附图说明

[0058] 为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于
本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他
的附图。
[0059] 图1是本发明实施例提供的一种实施环境的示意图;
[0060] 图2是本发明实施例提供的一种视频库的索引表建立方法的流程示意图;
[0061] 图3是本发明实施例提供的另一种视频库的索引表建立方法的流程示意图;
[0062] 图4是本发明实施例提供的另一种视频库的索引表建立方法的流程示意图;
[0063] 图5是本发明实施例提供的一种视频库的索引表建立方法的一个可选实例示意图;
[0064] 图6是本发明实施例提供的一种视频库的索引表建立装置的结构示意图;
[0065] 图7是本发明实施例提供的一种服务器的硬件结构框图。

具体实施方式

[0066] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于
本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其
他实施例,都属于本发明保护的范围。
[0067] 需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用
的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或
描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆
盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或服务器不必限
于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产
品或设备固有的其它步骤或单元。
[0068] 本发明实施例提供的视频库的索引表建立方法可以应用于任意具有图像处理能力的计算机设备,该计算机设备可以是终端或服务器,计算机设备在执行本发明实施例提
供的视频库的索引表建立方法时,可以是独立执行,也可以通过集群协作的方式执行。
[0069] 在实际应用中,本发明实施例提供的视频库的索引表建立方法可以但不限于应用于图1所示的实施环境中。
[0070] 请参阅图1,其所示为本发明实施例提供的一种实施环境示意图,该实施环境可以包括通过网络连接的服务器110和视频库120。视频库120中存储有视频,视频的类型可以是
完整视频,也可以是从完整视频中剪辑得到的短视频,还可以是用户拍摄上传的小视频等。
具体实现中,服务器110可以连接多个视频库120,每个视频库120存储的视频来源可以不
同,例如存储原创视频的视频库,存储电影视频的视频库等等。
[0071] 服务器110可以对视频库120中存储的视频中的视频帧进行特征提取,以得到视频帧的特征向量集,并对视频帧的特征向量进行分段处理,将每个视频帧的特征向量划分为
对应多个分段的特征子向量,然后针对多个分段中的每个分段,对该分段对应的特征子向
量进行聚类,以得到各个分段的分段码本即分段中心向量,进而计算各分段对应的分段码
本之间的笛卡尔积,以得到视频库的码本向量即库中心向量集,服务器110进一步针对每个
视频帧,确定该视频帧对应的目标库中心向量,基于该目标库中心向量确定相应视频帧的
量化向量,并根据目标库中心向量和量化向量确定相应视频帧在索引表中对应的第一索引
字段和第二索引字段,从而可以得到视频库120的索引表。
[0072] 服务器110可以在本地存储该索引表并基于该索引表提供相关视频的检索服务,服务器110还可以将建立的索引表发送给相应的检索服务器,由检索服务器基于该索引表
提供相关视频的检索服务。服务器110可以是一台或多台,当服务器110是多台时,存在至少
两台服务器用于提供不同的服务,和/或,存在至少两台服务器用于提供相同的服务,比如
以负载均衡方式提供同一种服务或者以主服务器和镜像服务器的方式提供同一种服务,本
发明实施例对此不加以限定。
[0073] 在一个可能的实现方式中,服务器110和视频库120均可以为区块链系统中的节点设备,能够将获取到以及生成的信息共享给区块链系统中的其他节点设备,实现多个节点
设备之间的信息共享。
[0074] 本发明实施例基于计算机视觉等技术为视频库建立索引表。计算机视觉(Computer Vision,CV)是一门研究如何使机器“看”的科学,更进一步的说,就是指用摄影
机和电脑代替人眼对目标进行识别、跟踪和测量等机器视觉,并进一步做图形处理,使电脑
处理成为更适合人眼观察或传送给仪器检测的图像。作为一个科学学科,计算机视觉研究
相关的理论和技术,试图建立能够从图像或者多维数据中获取信息的人工智能系统。计算
机视觉技术通常包括图像处理、图像识别、图像语义理解、图像检索、OCR、视频处理、视频语
义理解、视频内容/行为识别、三维物体重建、3D技术、虚拟现实、增强现实、同步定位与地图
构建等技术,还包括常见的人脸识别、指纹识别等生物特征识别技术。
[0075] 请参阅图2,其所示为本发明实施例提供的一种视频库的索引表建立方法的流程示意图,该方法可以应用于图1所示实施环境的服务器中。需要说明的是,本说明书提供了
如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的劳动可以包括更多或
者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不
代表唯一的执行顺序。在实际中的系统或产品执行时,可以按照实施例或者附图所示的方
法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境)。具体的如图2所示,所
述方法可以包括:
[0076] S201,对视频库中每个视频的目标视频帧进行特征提取,得到所述目标视频帧的特征向量。
[0077] 其中,目标视频帧可以是构成视频的全部视频帧中的每一视频帧,目标视频帧还可以是构成视频的全部视频帧中的关键视频帧。关键视频帧是指角色或者物体运动或者变
化中的关键动作所处的视频帧,具体的实施中,服务器在对视频解码时可以获得帧内编码
帧,该帧内编码帧是一种自带全部信息的独立帧,服务器可以将视频解码所获得的帧内编
码帧确定为关键视频帧。
[0078] 服务器对视频库中每个视频的目标视频帧进行特征提取可以包括:服务器抽取每个视频的目标视频帧,得到每个视频的目标视频帧序列,将目标视频帧序列中的每个目标
视频帧输入到预先训练好的特征提取模型,通过特征提取模型提取特征向量,得到与每个
目标视频帧具有一一对应关系的特征向量。
[0079] 特征提取模型可以是深度学习网络模型,例如可以是包含多个inception模块的卷积神经网络(Convolutional Neural Networks,CNN)模型,如为包括4个inceptionV3模
块的CNN模型。将目标视频帧作为该模型的输入,取全连接层的输出向量作为表征该目标视
频帧的特征向量,其中,全连接层输出向量的维度可以根据实际需要进行设定,例如取全连
接层输出的32维向量作为特征向量。
[0080] 实际应用中,为了扩充数据集,服务器在抽取视频的目标视频帧后,还可以对目标视频帧进行图片攻击处理,如黑框、crop、滤镜、旋转等,可以将攻击处理得到的图片作为视
频的扩充目标视频帧,并将该扩充目标视频帧也作为目标视频帧进入本说明书实施例的后
续处理步骤。
[0081] 实际应用中,服务器可以为抽取的每个目标视频帧配置帧标识,并建立目标视频帧的帧标识与其所属的视频的视频标识之间的对应关系,在提取得到每个目标视频帧的特
征向量后可以进一步基于目标视频帧的帧标识建立对应特征向量与视频标识的对应关系,
也就是说,服务器中可以存储视频标识、目标视频帧的帧标识和目标视频帧的特征向量三
者之间的对应关系,以便在提供视频检索服务时能够基于该对应关系确定出相匹配的目标
视频帧的特征向量所对应的视频。
[0082] 基于以上描述,服务器在执行步骤S201之前,还可以包括:针对视频库中的任一视频,确定该任一视频的视频标识,该视频标识用于服务器唯一标识一个视频;提取任一视频
中的目标视频帧,确定目标视频帧的帧标识。该帧标识用于服务器唯一标识一个目标视频
帧;建立目标视频帧的帧标识与视频标识之间的对应关系。由于目标视频帧与其特征向量
具有一一对应关系,因此目标视频帧的帧标识也可以用于唯一标识该目标视频帧的特征向
量。
[0083] S203,根据预设第一维度划分策略,将所述目标视频帧的特征向量划分为对应多个第一分段的多个特征子向量。
[0084] 服务器通过步骤S201可以得到视频库对应的N个目标视频帧的特征向量,然后服务器针对N个目标视频帧的特征向量中的每个特征向量,根据预设第一维度划分策略,将各
个目标视频帧的特征向量分别进行分段,每个目标视频帧的特征向量被划分为多个第一分
段,每个目标视频帧的特征向量都具有对应该多个第一分段中各个第一分段的特征子向
量。
[0085] 预设第一维度划分策略可以是规定划分后的各特征子向量的向量维度,其中各特征子向量的向量维度可以相同也可以不同,当各特征子向量的向量维度相同时,预设第一
维度划分策略还可以是规定将目标视频帧的特征向量平均划分为预设数量个,以使得划分
后的各个特征子向量具有相同的向量维度。例如,目标视频帧的特征向量是32维,预设第一
维度划分策略是划分后的特征子向量为均为16维,则每个目标视频帧的特征向量划分后可
以得到两个16维的特征子向量。
[0086] S205,针对所述多个第一分段中的每个第一分段,对所述第一分段对应的特征子向量进行聚类,确定所述第一分段的分段中心向量。
[0087] N个目标视频帧的特征向量经过服务器的分段处理后,每个分段对应有N个特征子向量,服务器对每个分段的N个特征子向量分别进行聚类,确定每个分段的聚类中心和分段
类簇,从而得到每个分段的分段中心向量。以将每个32维的目标视频帧的特征向量划分为
两个16维的特征子向量为例,每个目标视频帧的特征向量被分为了两个分段,分别表示为
分段1和分段2,则分段1对应有N个特征子向量,分段2也对应有N个特征子向量。对分段1对
应的N个特征子向量进行聚类,确定分段1的聚类中心(即分段中心向量)和类簇;对分段2对
应的N个特征子向量进行聚类,确定分段2的聚类中心(即分段中心向量)和类簇。可以理解
的,每个分段都对应有至少一个分段中心向量。
[0088] 本说明书实施例中,对每个分段对应的N个特征子向量进行聚类时,可以采用K‑means算法实现。以多个第一分段中的一个第一分段i为例,K‑means算法在实现时可以包
括:从第一分段i对应的N个特征子向量中随机选取n个特征子向量作为初始的聚类中心;计
算第一分段i对应的N个特征子向量中剩余的各个特征子向量到n个初始的聚类中心的距
离,将特征子向量归类到距离最近的聚类中心,每个聚类中心下的特征子向量构成一个类
簇;针对每个类簇,计算该类簇中特征子向量的均值,将该均值作为该类簇对应的新的聚类
中心;重复以上步骤,直至聚类中心的移动距离小于距离阈值或者聚类次数达到次数阈值。
[0089] 基于 步 骤S 20 5得 到各 第一 分段 的分 段中 心向 量可 以 表示 为其中,i表示第一分段i,i=1~M,M>1, 表示第一分段i的第n个分
段中心向量,n为聚类中心的数量。
[0090] S207,确定所述多个第一分段中各第一分段的分段中心向量之间的笛卡尔积,得到所述视频库对应的库中心向量集。
[0091] 本说明书实施例中,服务器在得到各个第一分段的分段中心向量Ci后,计算各第i
一分段的分段中心向量C 的笛卡尔积,并将该笛卡尔积的结果作为视频库的库中心向量
集。具体的,笛卡尔积可以通过以下方式表示:
[0092] C=C1×C2×…×CM
[0093] 其中,M为第一分段的数量,M>1;C表示库中心向量集。
[0094] 可以理解的,库中心向量集C的长度为各分段中心向量集长度的乘积,即库中心向i
量集C的长度为n。仍以将每个32维的目标视频帧的特征向量划分为两个16维的特征子向
量为例,每个目标视频帧的特征向量被分为了两个分段,分别表示为分段1和分段2,假设分
段 1的 分 段 中 心 向 量 为 分 段 2 的 分 段 中 心 向 量 为
则库中心向量集
其长度为n*n。
[0095] 可见,本发明实施例在得到长度为n*n的码本向量即库中心向量集的过程中,只需分别训练长度为n的两个分段码本向量即分段中心向量即可,而无需直接训练n*n的码本向
量,从而大大缩短了获得更长码本向量的训练耗时和迭代周期,有利于提高索引表构建的
整体效率。
[0096] 实际应用中,每个第一分段对应的N个特征子向量构成一个特征子空间,当不同第一分段对应的特征子空间相互独立时,可以使得库中心向量集的长度达到最优,也即数据
的分布均匀性达到最好,能最大限度的减少目标视频帧的特征向量在后续量化时的损失,
从而有利于提高索引表的搜索效率。基于此,在一个可能的实现方式中,如图3所示,步骤
S207之前还可以包括以下步骤:
[0097] S301,确定所述多个第一分段中各第一分段的分段中心向量对应的分段旋转矩阵。
[0098] 具体的,各第一分段对应的分段旋转矩阵R可以基于以下目标函数训练得到:
[0099]
[0100] s.t.
[0101] 其中,x表示特征子向量;c(i(x))表示与特征子向量x距离最近的聚类中心向量;M表示第一分段的数量,M>1;R表示分段旋转矩阵;c表示聚类中心向量;I表示单位矩阵;s.t.
表示约束条件。
[0102] 下面以第一分段i为例来介绍其对应分段旋转矩阵Ri的训练过程,该训练过程可i i
以同时训练得到第一分段i的分段中心向量C以及分段旋转矩阵R ,具体包括:(1)设置初始
i i i i
R、初始的聚类中心向量、聚类中心的数量n;(2)计算y=Rx ,其中x 为第一分段i对应的特
i
征子向量;(3)计算y与各个聚类中心向量之间的距离,找到距离最近的聚类中心向量,将x
i
归类到距离最近的类簇,按照平均法更新各个类簇的聚类中心向量;(4)将更新后的、x 所
i i
属类簇的聚类中心向量c(i(x))代入上述目标函数中,得到更新的R ;(5)基于更新的R 和聚
类中心向量,重复执行上述步骤(2)至(4),直至聚类中心向量的移动距离小于距离阈值或
i
者聚类次数达到次数阈值时迭代结束。获取迭代结束时的R和聚类中心向量即可得到第一
i i
分段i对应的分段旋转矩阵R以及分段中心向量C。
[0103] S303,将所述各第一分段的分段中心向量分别与对应的分段旋转矩阵相乘,得到各第一分段的分段旋转中心向量。
[0104] 具体的,第一分段i的分段旋转中心向量(Ci)′=Ci·Ri,其中,i=1~M,M为第一分段的数量,M>1。
[0105] S305,将所述分段旋转中心向量作为对应第一分段的分段中心向量。
[0106] 即,后续在计算库中心向量集C时计算各个第一分段对应的分段旋转中心向量i 1 ′1 2 ′2 i ′M
(C)′的笛卡尔积,也即C=(C) ×(C) ×…×(C) 。本发明实施例通过为各个第一分段
的分段中心向量添加对应的分段旋转矩阵,从而避免了各个第一分段的特征子空间之间的
相互重叠对库中心向量集的影响,使得库中心向量集的长度达到最优,数据的分布均匀性
达到最好,有利于提高后续基于该库中心向量集建立的索引表的搜索效率。
[0107] 以上图3所示方法实施例中针对多个第一分段中的每个第一分段都进行了分段旋转矩阵的训练,而实际应用中一般常出现的情况是多个第一分段中只有部分第一分段对应
的特征子空间之间存在重叠或相关,此时若对所有的第一分段都进行分段旋转矩阵的训练
势必会造成运算资源的浪费,并影响索引表的整体构建效率。基于此,在另一个可能的实现
方式中,如图4所示,在执行步骤S301,确定所述多个第一分段中各第一分段的分段中心向
量对应的分段旋转矩阵之前,还可以包括以下步骤:
[0108] S401,确定所述多个第一分段中各第一分段对应的特征子向量之间的相关程度。
[0109] 具体实施中,对于多个第一分段中的任意两个第一分段i和第一分段j,判断第一分段i中的任意一个特征子向量 (k=1~N)是否包含在第一分段j对应的特征子向量
中,若存在特征子向量 包含在第一分段j对应的特征子向量
中,则表明第一分段i对应的特征子空间与第一分段j对应的特征子空间
相互之间不独立,此时可以统计包含在第一分段j对应的特征子向量中的特征子向量 的
数量,以下将包含在第一分段j对应的特征子向量中的特征子向量 称之为目标特征子向
量 根据目标特征子向量 的数量来表征第一分段i对应的特征子向量和第一分段j对
应的特征子向量之间的相关程度rij。
[0110] 实际应用中,可以直接使用目标特征子向量 的数量表征相关程序rij,还可以计算目标特征子向量 的数量与第一分段i对应的全部特征子向量的数量N的比值,采用该
比值来表征相关程度rij。可以理解的,相关程序rij的值越大则表明第一分段i对应的特征
子向量和第一分段j对应的特征子向量之间的相关程度越大。
[0111] S403,判断所述各第一分段对应的特征子向量之间的相关程度是否均满足预设条件。
[0112] 其中,预设条件可以根据相关程序的表征形式进行设定,若采用目标特征子向量的数量表征相关程度rij,则预设条件可以是目标特征子向量 的数量大于预设数量阈
值,该预设数量阈值可以根据实际需要进行设定,例如预设数量阈值可以设定为零,也可以
设定为其它大于零的数值;若采用目标特征子向量 的数量与第一分段i对应的全部特征
子向量的数量N的比值表征相关程度rij,则预设条件可以是上述比值大于预设比值阈值,该
预设比值阈值可以根据实际需要进行设定,例如预设比值阈值可以设定为零,也可以设定
为其他大于零且小于1的数值。
[0113] 本说明书实施例中,若相关程度rij满足预设条件,表明该相关程度rij对应的第一分段i和第一分段j的特征子空间之间相互不独立;若相关程度rij不满足预设条件,表明该
相关程度rij对应的第一分段i和第一分段j的特征子空间之间相互独立。
[0114] 具体的,当步骤S403判断的结果为是即各第一分段对应的特征子向量之间的相关程度均满足预设条件时,则表明各个第一分段对应的特征子空间之间存在重叠,可以执行
步骤S301,即对多个第一分段中每个第一分段都进行分段旋转矩阵的训练;当步骤S403判
断的结果为否即存在不满足上述预设条件的相关程度,也就是说,多个第一分段中存在对
应的特征子空间之间相互独立的第一分段,此时可以执行步骤S405。
[0115] S405,确定满足所述预设条件的所述相关程度所对应的目标第一分段。
[0116] 本说明书实施例中,为了避免运算资源的浪费,提高后续索引表建立的效率,在对多个第一分段的分段中心向量进行修正时只针对特征子空间之间存在重叠的第一分段的
分段中心向量进行修正,因此,当多个第一分段中存在对应的特征子空间之间相互独立的
第一分段时,不对这些第一分段的分段中心向量进行修正,而是确定出满足上述预设条件
的相关程度所对应的目标第一分段,这些目标第一分段对应的特征子空间之间相互不独
立,将这些目标第一分段的分段中心向量作为修正的对象。
[0117] S407,将所述目标第一分段对应的分段中心向量确定为待调整分段中心向量。
[0118] S409,确定所述待调整分段中心向量的分段旋转矩阵。
[0119] 具体的,可以参见前述图3所示方法实施例中的步骤S301,在此不再赘述。
[0120] S411,将所述待调整分段中心向量与相应的所述分段旋转矩阵相乘,得到调整分段旋转中心向量。
[0121] 具体的,可以参见前述图3所示方法实施例中的步骤S303,在此不再赘述。
[0122] S413,将所述调整分段旋转中心向量作为所述目标第一分段的分段中心向量。
[0123] 本说明书实施例通过前述步骤S201至步骤S207确定了视频库对应的库中心向量集,接下来即根据该库中心向量集进行视频库的索引表的建立。
[0124] S209,针对任一所述目标视频帧,根据所述目标视频帧与所述库中心向量集中库中心向量之间的距离,确定所述目标视频帧对应的目标库中心向量。
[0125] 服务器针对任一目标视频帧,确定库中心向量集中与该任一目标视频帧的距离最近的目标库中心向量。
[0126] 具体的,服务器计算目标视频帧的特征向量与库中心向量集中库中心向量之间的距离,并将距离最小的库中心向量作为目标视频帧对应的目标库中心向量。其中,目标视频
帧的特征向量与库中心向量之间的距离可以但不限于为欧式距离。也就是说,目标库中心
向量是与目标视频帧的特征向量距离最近的库中心向量。
[0127] 实际应用中,服务器在确定目标库中心向量时,可以将目标视频帧的特征向量依次与库中心向量集中的所有库中心向量进行距离计算,然后找出最小距离值对应的库中心
向量得到目标库中心向量。然而,当库中心向量集很大,也即长度很长时,直接从库中心向
量集中寻找最小距离时将会面临非常庞大的计算量,耗时长,导致索引表的建立效率低。
[0128] 鉴于此,在一个可能的实现方式中,服务器在确定目标库中心向量时可以基于多个第一分段中各第一分段的分段中心向量,下面将对此进行详细说明。
[0129] 服务器在确定目标库中心向量之前,需要对各第一分段对应的分段中心向量进行编码,并基于该编码来对库中心向量集中的库中心向量进行编码,以确定每个库中心向量
对应的哈希值,建立该哈希值与相应库中心向量之间的映射关系。服务器对库中心向量集
中的库中心向量的编码可以包括以下步骤:
[0130] 服务器对多个第一分段中各第一分段的分段中心向量进行顺序编码,得到用于表征每个第一分段中分段中心向量的分段哈希值,并将各第一分段中分段中心向量与相应的
分段哈希值进行对应存储。
[0131] 服务器根据各第一分段的分段中心向量对应的分段哈希值,确定库中心向量集中库中心向量对应的哈希值。具体的,库中心向量集中库中心向量对应的哈希值可以通过以
下公式计算:
[0132]
[0133] 其中,i=1~n;n表示各第一分段对应的聚类中心的数量,可以理解的,不同第一分段对应的聚类中心的数量可以不同;M表示第一分段的数量,M>1。
[0134] 以目标视频帧的特征向量分为两个第一分段为例,第一分段1的分段中心向量为第一分段2的分段中心向量为 其中,两个第
一分段对应的聚类中心的数量n相同。分别顺序编码后,得到第一分段1对应的哈希值序列
为 第一分段2对应的哈希值序列为 则库中心向量集中
库中心向量对应的哈希值
[0135] 服务器在完成对库中心向量集的编码后,可以对库中心向量集以及对应的哈希值序列进行分别存储,并建立库中心向量与哈希值的映射关系,之后,在执行步骤S209时可以
包括以下步骤:
[0136] (1)服务器针对多个第一分段中的每个第一分段,确定该任一目标视频帧的特征向量与所述第一分段的分段中心向量之间的距离。具体的,该距离可以但不限于为欧式距
离。
[0137] (2)从所述第一分段的分段中心向量中选取所述距离最近的目标分段中心向量,得到每个第一分段对应的目标分段中心向量。
[0138] (3)确定所述每个第一分段对应的目标分段中心向量的分段哈希值。
[0139] (4)根据所述多个第一分段中各第一分段对应的目标分段中心向量的分段哈希值,确定目标哈希值。
[0140] 其中,各第一分段对应的目标分段中心向量的分段哈希值的计算公式可以表示为: 其中,j表示第一分段j,j=1~M,M表示第一分段的数量,M>
1; 表示第一分段j对应的第i个分段中心向量,i=1~n,n表示聚类中心的数量; 表示
j
的分段哈希值;k表示第一分段j中距离目标视频帧的特征向量Y最近的分段中心向量的
分段哈希值。
[0141] 则目标哈希值k=k1*n(M‑1)+…+k(M‑1)*n(1)+kM。
[0142] (5)基于库中心向量与哈希值的映射关系,确定目标哈希值对应的目标库中心向量。该目标库中心向量即为目标视频帧对应的目标库中心向量。
[0143] 仍以目标视频帧的特征向量分为两个第一分段为例,各第一分段对应的分段中心向量的长度均为n,则库中心向量集的长度为n*n,若直接对库中心向量集进行距离计算确
定目标库中心向量,则需要进行(n*n)次的距离计算。而基于本说明书实施例的上述方法,
1 2
在第一分段1中进行n次计算确定k ,在第一分段2中进行n次计算确定k ,则目标哈希值为k
1 2
=k*n+k,进而可以确定出目标库中心向量,其总距离计算次数为(n+n)次。由此可见,本发
明实施例的上述确定目标库中心向量的方法可以大大降低服务器的运算量,提高目标库中
心向量的确定速度,进而有利于提高索引表的构建效率。
[0144] S211,根据所述目标库中心向量,确定所述目标视频帧对应的量化向量。
[0145] 其中,量化向量是对目标视频帧的量化表示,具体为对目标视频帧的特征向量的量化表示,以节省索引表存储时所占用的内存,提高检索效率。
[0146] 在一个可能的实现方式中,服务器根据目标库中心向量,确定目标视频帧对应的量化向量可以包括以下步骤:
[0147] (1)确定所述目标视频帧的特征向量与所述目标库中心向量的差,得到残差向量。
[0148] 假设目标视频帧的特征向量为Y,目标库中心向量为Ci,残差向量为u,则每个目标视频帧对应的残差向量u=Y‑Ci,从而可以得到N个目标视频帧对应的N个残差向量。
[0149] (2)根据预设的第二维度划分策略,将所述残差向量划分为对应多个第二分段的多个分段残差子向量。
[0150] 其中,第二维度划分策略可以与第一维度划分策略相同也可以不同,具体的划分方法可以参见前述步骤S203,在此不再赘述。
[0151] (3)针对所述多个第二分段中的每个第二分段,对所述第二分段对应的分段残差子向量进行聚类,确定所述第二分段的分段类簇。
[0152] 该步骤的实施具体内容可以参见前述步骤S205中的相关描述,在此不再赘述。
[0153] (4)根据所述多个第二分段中各第二分段的分段类簇,确定所述多个分段残差子向量中每个分段残差子向量对应的分段类簇的类簇标识。
[0154] 在上述步骤(3)完成聚类后,针对每个残差向量,可以确定该残差向量对应的多个分段残差子向量中每个分段残差子向量在对应第二分段中所归属的分段类簇,然后获取每
个分段残差子向量在对应第二分段中所归属的分段类簇的类簇标识,其中,分段类簇的类
簇标识可以唯一标识一个分段类簇。具体的实施中,可以对每个第二分段对应的分段类簇
进行顺序编号,以得到各分段类簇的类簇标识。
[0155] (5)根据所述多个分段残差子向量中每个分段残差子向量对应的分段类簇的类簇标识,确定所述目标视频帧的量化向量。
[0156] 具体的,针对每个残差向量,将多个分段残差子向量中每个分段残差子向量对应的分段类簇的类簇标识作为特征值来表征该残差向量,从而实现了对目标视频帧的特征向
量的量化,得到目标视频帧的量化向量。
[0157] S213,根据所述目标库中心向量和所述量化向量,确定所述目标视频帧在索引表中对应的第一索引字段和第二索引字段。
[0158] 本说明书实施例中,在为视频库建立索引表时,为索引表设置第一索引字段和第二索引字段,其中,第一索引字段用于存储根据目标中心向量确定的第一索引数据,第二索
引字段用于存储目标视频帧对应的量化向量以及量化向量与目标视频帧的帧标识之间的
对应关系,也即在第二索引字段中将帧标识与量化向量对应存储。
[0159] 在一个可能的实现方式中,服务器根据目标库中心向量和所述量化向量,确定所述目标视频帧在索引表中对应的第一索引字段和第二索引字段可以包括以下步骤:
[0160] (1)根据所述多个第一分段中各第一分段对应的分段中心向量的分段哈希值,确定所述目标库中心向量的哈希值。
[0161] 本说明书实施例中,服务器对多个第一分段中各第一分段的分段中心向量进行顺序编码,得到用于表征每个第一分段中分段中心向量的分段哈希值。服务器根据各第一分
段的分段中心向量对应的分段哈希值,确定库中心向量集中库中心向量对应的哈希值。具
体的,库中心向量集中库中心向量对应的哈希值可以通过以下公式计算:
[0162]
[0163] 其中,i=1~n;n表示各第一分段对应的聚类中心的数量,可以理解的,不同第一分段对应的聚类中心的数量可以不同;M表示第一分段的数量,M>1。
[0164] 服务器对上述多个第一分段中各第一分段的分段中心向量以及相应的分段哈希值进行对应存储。
[0165] (2)将所述目标库中心向量的哈希值作为第一索引数据添加到索引表的第一索引字段。
[0166] (3)获取所述目标视频帧的帧标识。
[0167] (4)建立所述目标视频帧的帧标识与所述目标视频帧的量化向量之间的对应关系。
[0168] (5)将所述量化向量以及所述对应关系作为第二索引数据添加到所述索引表的第二索引字段。
[0169] 其中,第二索引字段作为第一索引字段的下级字段,也即以目标库中心向量的哈希值为节点,在该节点下存储距离该目标库中心向量最近的目标视频帧的量化向量以及帧
标识。
[0170] 可以理解的,在上述步骤(2)将目标库中心向量的哈希值作为第一索引数据添加到索引表的第一索引字段之前,还可以对索引表第一索引字段中的第一索引数据进行查
找,以判断第一索引数据中是否已存在目标库中心向量的哈希值,若存在,则可以不再重复
添加该目标库中心向量的哈希值,此时可以直接执行步骤(3)至(5),将目标视频帧的量化
向量和帧标识对应存储在查找到的已有哈希值对应的节点下。
[0171] 在一个可能的实现方式中,在步骤S213中得到索引表之后,还可以对索引表进行处理,获得倒排索引。具体的,对上述得到的索引表的第二索引字段进行索引倒排,得到倒
排索引表。索引倒排是反向的从索引值确定出数据项的过程。由于第二索引字段记录了目
标视频帧的量化向量和帧标识,通过对第二索引字段进行索引倒排,可以反过来确定出各
个帧标识所对应的目标视频帧,当然也可以确定出目标视频帧的特征向量,以及目标视频
帧所属的视频。
[0172] 需要说明的是,本说明书实施例的上述索引表建立过程可以预先离线进行,以便加快在线检索时的速度。
[0173] 下面以将每个32维的目标视频帧的特征向量划分为两个16维的特征子向量为例来说明本发明实施例的视频库的索引表建立方法,如图5所示,视频库对应有N个目标视频
帧,每个目标视频帧的特征向量为32维,将每个目标视频帧的特征向量拆分为两个分段,每
个分段的特征子向量为16维,对这两个分段的特征子向量分别训练码本,得到两个长度均
为4096的分段码本,通过两个分段码本的笛卡尔积得到库中心向量,通过两个分段码本的
顺序编码处理得到库中心向量的哈希值,结合库中心向量得到目标视频帧的量化向量,最
后根据哈希值和量化向量构建了索引表。
[0174] 由本发明实施例的上述技术方案可见,本发明实施例通过将目标视频帧的特征向量切分为多个分段,并针对每个分段单独训练得到各个分段的分段码本向量(即分段中心
向量),然后将各个分段的分段码本向量计算笛卡尔积得到一个完整的码本向量(即视频库
对应的库中心向量集),并基于该完整的码本向量构建视频库的索引表。基于本发明的以上
技术方案,当需要得到长度为n*n的码本向量时,只需分别训练两个长度为n的分段码本向
量即可,而现有技术中的方案则需要直接训练长度为n*n的码本向量,可见,本发明实施例
的技术方案能够在不改变运算量的基础上得到更长的码本向量,码本向量的训练耗时和迭
代周期都大大缩短,进而提高了索引表的构建效率,且构建的索引表具有更高的检索效率。
[0175] 下面对在线检索过程进行说明。
[0176] 服务器获取待检测视频,其中待检测视频可以但不限于是在以下场景中获取的视频。在一种场景下,用户浏览从完整视频如电影中剪辑出来的短视频,在对其中某个短视频
感兴趣时,通过客户端将该短视频上传至服务器,从而服务器获取到该短视频并将该短视
频作为待检测视频。在另一种场景下,视频库中存储了大量的原创视频,视频管理平台为了
对这些原创视频的版权进行保护,从外网中抓取视频以确定这些被抓取的视频是否侵权,
则这些被抓取的外网视频即为待检测视频。
[0177] 服务器抽取待检测视频中的目标视频帧,提取每个目标视频帧的特征向量X。其中,目标视频帧可以是关键视频帧。
[0178] 服务器获取索引表建立过程中存储的多个第一分段中各第一分段的分段中心向量以及相应的分段哈希值。
[0179] 针对每个目标视频帧的特征向量X,服务器计算特征向量X与各第一分段的分段中心向量之间的距离,从各第一分段的分段中心向量中分别确定距离最近的分段中心向量。
[0180] 分别获取各第一分段中距离最近的分段中心向量的分段哈希值。
[0181] 根据各第一分段中距离最近的分段中心向量的分段哈希值计算目标哈希值。其中,各第一分段中距离最近的分段中心向量的分段哈希值的计算公式可以表示为:
其中,j表示第一分段j,j=1~M,M表示第一分段的数量,M>1;
表示第一分段j对应的第i个分段中心向量,i=1~n,n表示聚类中心的数量; 表示
j
的分段哈希值;k表示第一分段j中距离特征向量X最近的分段中心向量的分段哈希值。目
1 (M‑1) (M‑1) (1) M
标哈希值k=k*n +…+k *n +k。
[0182] 基于库中心向量与哈希值的映射关系,确定目标哈希值k对应的目标库中心向量Ci。上述基于分段中心向量来确定目标库中心向量的方式相对于直接从库中心向量集中确
定目标库中心向量,降低了服务器的运算量,提高了目标库中心向量的确定速度,进而有利
于提高在线检索效率。
[0183] 计算特征向量X与目标库中心向量Ci的差,得到残差向量u=X‑Ci;
[0184] 基于索引表,获取目标哈希值k节点下存储的多个量化向量p。
[0185] 计算残差向量u与多个量化向量p中每个量化向量之间的距离,并确定距离满足预设筛选条件的至少一个目标量化向量p。其中,预设筛选条件可以是距离最近的一个目标量
化向量,也可以是距离最近的预设数量个目标量化向量,还可以是距离小于预设距离阈值
的目标量化向量。其中,预设数量可以根据实际需要进行设定,例如5个等;预设距离阈值也
可以根据实际需要进行设定。
[0186] 基于索引表,确定至少一个目标量化向量对应的帧标识,从而根据帧标识确定特征向量X对应的至少一个目标视频。将待检测视频的每个目标视频帧的特征向量X对应的至
少一个目标视频作为该待检测视频的相关视频集。
[0187] 与上述几种实施例提供的视频库的索引表建立方法相对应,本发明实施例还提供一种视频库的索引表建立装置,由于本发明实施例提供的视频库的索引表建立装置与上述
几种实施例提供的视频库的索引表建立方法相对应,因此前述视频库的索引表建立方法的
实施方式也适用于本实施例提供的视频库的索引表建立装置,在本实施例中不再详细描
述。
[0188] 请参阅图6,其所示为本发明实施例提供的一种视频库的索引表建立装置的结构示意图,该装置600具有实现上述方法实施例中视频库的索引表建立方法的功能,所述功能
可以由硬件实现,也可以由硬件执行相应的软件实现。如图6所示,该装置600可以包括:
[0189] 特征提取模块610,用于对视频库中每个视频的目标视频帧进行特征提取,得到所述目标视频帧的特征向量;
[0190] 第一划分模块620,用于根据预设第一维度划分策略,将所述目标视频帧的特征向量划分为对应多个第一分段的多个特征子向量;
[0191] 第一聚类模块630,用于针对所述多个第一分段中的每个第一分段,对所述第一分段对应的特征子向量进行聚类,确定所述第一分段的分段中心向量;
[0192] 第一确定模块640,用于确定所述多个第一分段中各第一分段的分段中心向量之间的笛卡尔积,得到所述视频库对应的库中心向量集;
[0193] 第二确定模块650,用于针对任一所述目标视频帧,根据所述目标视频帧与所述库中心向量集中库中心向量之间的距离,确定所述目标视频帧对应的目标库中心向量;
[0194] 量化向量确定模块660,用于根据所述目标库中心向量,确定所述目标视频帧对应的量化向量;
[0195] 索引字段确定模块670,用于根据所述目标库中心向量和所述量化向量,确定所述目标视频帧在索引表中对应的第一索引字段和第二索引字段。
[0196] 在一个可能的实现方式中,该装置600还可以包括:
[0197] 第三确定模块,用于确定所述多个第一分段中各第一分段的分段中心向量对应的分段旋转矩阵;
[0198] 第一计算模块,用于将所述各第一分段的分段中心向量分别与对应的分段旋转矩阵相乘,得到各第一分段的分段旋转中心向量;
[0199] 第四确定模块,用于将所述分段旋转中心向量作为对应第一分段的分段中心向量。
[0200] 在另一个可能的实现方式中,该装置600还可以包括:
[0201] 第五确定模块,用于确定所述多个第一分段中各第一分段对应的特征子向量之间的相关程度;
[0202] 判断模块,用于判断所述各第一分段对应的特征子向量之间的相关程度是否均满足预设条件;在判断的结果为是时,执行所述确定所述多个第一分段中各第一分段的分段
中心向量对应的分段旋转矩阵的步骤。
[0203] 在另一个可能的实现方式中,该装置600还可以包括:
[0204] 第六确定模块,用于在判断模块判断的结果为否时,确定满足所述预设条件的所述相关程度所对应的目标第一分段;
[0205] 第七确定模块,用于将所述目标第一分段对应的分段中心向量确定为待调整分段中心向量;
[0206] 第八确定模块,用于确定所述待调整分段中心向量的分段旋转矩阵;
[0207] 第二计算模块,用于将所述待调整分段中心向量与相应的所述分段旋转矩阵相乘,得到调整分段旋转中心向量;
[0208] 第九确定模块,用于将所述调整分段旋转中心向量作为所述目标第一分段的分段中心向量。
[0209] 在一个可能的实现方式中,量化向量确定模块660可以包括:
[0210] 第一残差确定模块,用于确定所述目标视频帧的特征向量与所述目标库中心向量的差,得到残差向量;
[0211] 第二划分模块,用于根据预设的第二维度划分策略,将所述残差向量划分为对应多个第二分段的多个分段残差子向量;
[0212] 第二聚类模块,用于针对所述多个第二分段中的每个第二分段,对所述第二分段对应的分段残差子向量进行聚类,确定所述第二分段的分段类簇;
[0213] 第十确定模块,用于根据所述多个第二分段中各第二分段的分段类簇,确定所述多个分段残差子向量中每个分段残差子向量对应的分段类簇的类簇标识;
[0214] 量化向量确定子模块,用于根据所述多个分段残差子向量中每个分段残差子向量对应的分段类簇的类簇标识,确定所述目标视频帧的量化向量。
[0215] 在一个可能的实现方式中,索引字段确定模块670可以包括:
[0216] 第一哈希确定模块,用于根据所述多个第一分段中各第一分段对应的分段中心向量的分段哈希值,确定所述目标库中心向量的哈希值;
[0217] 第一添加模块,用于将所述目标库中心向量的哈希值作为第一索引数据添加到索引表的第一索引字段;
[0218] 第一获取模块,用于获取所述目标视频帧的帧标识;
[0219] 第一关系建立模块,用于建立所述目标视频帧的帧标识与所述目标视频帧的量化向量之间的对应关系;
[0220] 第二添加模块,用于将所述量化向量以及所述对应关系作为第二索引数据添加到所述索引表的第二索引字段;所述第二索引字段作为所述第一索引字段的下级字段。
[0221] 在一个可能的实现方式中,该装置600还可以包括:
[0222] 第一标识确定模块,用于针对视频库中的任一视频,确定所述任一视频的视频标识;
[0223] 第二标识确定模块,用于提取所述任一视频中的目标视频帧,确定所述目标视频帧的帧标识;
[0224] 第二关系建立模块,用于建立所述目标视频帧的帧标识与所述任一视频的视频标识之间的对应关系。
[0225] 在一个可能的实现方式中,第二确定模块650可以包括:
[0226] 距离确定模块,用于针对所述多个第一分段中的每个第一分段,确定所述任一目标视频帧的特征向量与所述第一分段的分段中心向量之间的距离;
[0227] 选取模块,用于从所述第一分段的分段中心向量中选取所述距离最近的目标分段中心向量,得到每个第一分段对应的目标分段中心向量;
[0228] 分段哈希值确定模块,用于确定所述每个第一分段对应的目标分段中心向量的分段哈希值;
[0229] 目标哈希值确定模块,用于根据所述多个第一分段中各第一分段对应的目标分段中心向量的分段哈希值,确定目标哈希值;
[0230] 目标库中心向量确定模块,用于根据预先建立的库中心向量与哈希值的映射关系,确定所述目标哈希值对应的库中心向量;所述目标哈希值对应的库中心向量作为所述
目标库中心向量。
[0231] 需要说明的是,上述实施例提供的装置,在实现其功能时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,
即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,
上述实施例提供的装置与方法实施例属于同一构思,其具体实现过程详见方法实施例,这
里不再赘述。
[0232] 本发明实施例的视频库的索引表建立装置通过将目标视频帧的特征向量切分为多个分段,并针对每个分段单独训练得到各个分段的分段码本向量(即分段中心向量),然
后将各个分段的分段码本向量计算笛卡尔积得到一个完整的码本向量(即视频库对应的库
中心向量集),并基于该完整的码本向量构建视频库的索引表。基于本发明的以上技术方
案,当需要得到长度为n*n的码本向量时,只需分别训练两个长度为n的分段码本向量即可,
而现有技术中的方案则需要直接训练长度为n*n的码本向量,可见,本发明实施例的技术方
案能够在不改变运算量的基础上得到更长的码本向量,码本向量的训练耗时和迭代周期都
大大缩短,进而提高了索引表的构建效率,且构建的索引表具有更高的检索效率。
[0233] 本发明实施例提供了一种服务器,该服务器包括处理器和存储器,该存储器中存储有至少一条指令或至少一段程序,该至少一条指令或该至少一段程序由该处理器加载并
执行以实现如上述方法实施例所提供的视频库的索引表建立方法。
[0234] 存储器可用于存储软件程序以及模块,处理器通过运行存储在存储器的软件程序以及模块,从而执行各种功能应用以及视频库的索引表建立。存储器可主要包括存储程序
区和存储数据区,其中,存储程序区可存储操作系统、功能所需的应用程序等;存储数据区
可存储根据所述设备的使用所创建的数据等。此外,存储器可以包括高速随机存取存储器,
还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存
储器件。相应地,存储器还可以包括存储器控制器,以提供处理器对存储器的访问。
[0235] 本发明实施例所提供的方法实施例可以在计算机终端、服务器或者类似的运算装置中执行。以运行在服务器上为例,图7是本发明实施例提供的运行一种视频库的索引表建
立方法的服务器的硬件结构框图,如图7所示,该服务器700可因配置或性能不同而产生比
较大的差异,可以包括一个或一个以上中央处理器(Central Processing Units,CPU)710
(处理器710可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)、用于存
储数据的存储器730,一个或一个以上存储应用程序723或数据722的存储介质720(例如一
个或一个以上海量存储设备)。其中,存储器730和存储介质720可以是短暂存储或持久存
储。存储在存储介质720的程序可以包括一个或一个以上模块,每个模块可以包括对服务器
中的一系列指令操作。更进一步地,中央处理器710可以设置为与存储介质720通信,在服务
器700上执行存储介质720中的一系列指令操作。服务器700还可以包括一个或一个以上电
源760,一个或一个以上有线或无线网络接口750,一个或一个以上输入输出接口740,和/
或,一个或一个以上操作系统721,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,
FreeBSDTM等等。
[0236] 输入输出接口740可以用于经由一个网络接收或者发送数据。上述的网络具体实例可包括服务器700的通信供应商提供的无线网络。在一个实例中,输入输出接口740包括
一个网络适配器(Network Interface Controller,NIC),其可通过基站与其他网络设备相
连从而可与互联网进行通讯。在一个实例中,输入输出接口740可以为射频(Radio 
Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。
[0237] 本领域普通技术人员可以理解,图7所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,服务器700还可包括比图7中所示更多或者更少的组件,或者具有与
图7所示不同的配置。
[0238] 本发明的实施例还提供了一种计算机可读存储介质,所述存储介质可设置于服务器之中以保存用于实现一种视频库的索引表建立方法相关的至少一条指令或至少一段程
序,该至少一条指令或该至少一段程序由该处理器加载并执行以实现上述方法实施例提供
的视频库的索引表建立方法。
[0239] 可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(ROM,Read‑Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者
光盘等各种可以存储程序代码的介质。
[0240] 需要说明的是:上述本发明实施例先后顺序仅仅为了描述,不代表实施例的优劣。且上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一
些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且
仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连
续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者
可能是有利的。
[0241] 本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实
施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例
的部分说明即可。
[0242] 本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读
存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
[0243] 以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。