用于使用距离关联性散列法对媒体数据库定址的系统和方法_3

文档序号:9422738阅读:来源:国知局
数据的服务器进行匹配。使用索引602来仅对可以装配于CPU 606的主存储器中的数据605的一部分进行定址。对此数据进行搜索,并且如果结果是负的,那么将另一个数据片段取入主存储器603并且搜索继续。
[0077]使用分页的这种访问手段是常用的但是显著降低了计算机系统的效率。实际上,这种方式不能与搜索大媒体数据库的ACR系统一起使用,因为硬盘驱动器的读/写速度不足以跟上该任务。多年来已经开发出许多不同的算法方式来解决将搜索分割为多个较小的部分并且将较小的搜索分配到多个计算机服务器系统的这种问题。
[0078]—个知名的示例可能是相当大的谷歌(Google)搜索引擎。技术人员知晓此系统是迄今为止所建立的最大的计算机系统之一。谷歌搜索过程的速度和准确性是出色的。然而,谷歌搜索手段是明显不同的,并且完全不适用于对未知媒体与已知媒体的数据库进行匹配,即使该两个数据库具有相同的非常大的大小。这是因为谷歌搜索手段采用映射-归约(map-reduce)算法,该算法被设计为用于搜索基本上不关联的数据的大数据库。虽然较分页系统先进,映射-归约是计算密集型过程,该过程也要求参与的计算机系统之间的相当大的数据通信带宽。相反,本发明在处理资源和通信资源的使用上是高效的。
[0079]在本发明中,距离关联性散列函数提供了一种按扇区来对数据库进行定址的手段,从而使得所述定址手段的数据装配于服务器组的单独的服务器装置的主存储器中。所述分组通过使用距离关联性散列步骤作为实现所述分组的手段来将多维阵列中的通过距离而相关的数据分组为相同的扇区来完成。用于对数据元素进行定址的扇区标识是从散列索引计算出的,通过提取所述散列函数的总位的子集并且使用所述子集对所期望的扇区进行定址以在其中将数据存储在参考数据库中来从所述过程中来生成该散列索引。
[0080]以此方式,散列索引子集是包含与多个散列值相关联的距离的扇区的地址(在第一发明中被称为存储桶)O然后,使用该散列地址的剩余部分来对扇区的用于存储新数据的存储桶进行定址。替代性地,可以通过对第一散列值再次进行散列来找到扇区地址。
[0081]这种通过多个散列标引步骤的数据库定址系统和方法产生了高效的数据库访问方案,该方案具有显著的性能益处以及较以上所描述的传统数据库访问方法提高的效率。
[0082]距离关联性散列法提供了一种通过找到不是完全匹配而是在所寻求的值的预先确定的半径(距离关联性的)之内的数据来快速地对非常复杂(多维)的数据库进行定址的手段。重要的是,有时候这种定址手段将导致根本没有匹配。在面向商业的数据库无法容忍不准确性的情况下,媒体匹配系统可以轻易地容忍丢失的匹配并且一旦在第一专利中所接收并教导的下一个数据到达时将简单地继续匹配过程。当然,来自有待通过ACR系统确定的未知源的数据到达是周期性的,但是可以受本发明的系统命令以基于对准确性的要求或通过由系统的状态(如,系统可能正在接近过载时)所施加的要求以不同的间隔到达,并且然后这些发送客户端受到命令以发送一个较低采样率。例如,典型的数据接收率可能是1/10秒的间隔。
[0083]对于参考媒体数据库,像素值组是从来自有待成为参考数据库的一部分的每个视频源的每个视频帧中导出的。然后,将视频节目的广播时间以及某个元数据附到像素值组上,该元数据是节目的信息,如内容标识(ID)、节目标题、演员姓名、播送时间、简短大纲等。所述元数据通常是从商用电子节目指南源获取的。
[0084]然后,将添加有时间代码加上元数据的所述经处理的像素值的阵列存储于参考数据库中,并且然后将所述存储的数据的地址添加到在对应的散列值和扇区ID值处的散列索引上。此外,通过将来自元数据的内容ID用作另一种用于对参考数据库进行定址的手段来建立并维护第二数据库索引。
[0085]建立并持续更新数据库的过程是连续的,并且由数据库维护的数据的天数是基于用户的需要的但是例如可以在从一天到一个月的范围内。
[0086]对来自接收自大量客户端装置的数据的未知视频片段进行标识的过程以类似于以上用于建立参考数据库的程序的程序开始。在图3中,此程序涉及电视监视器301,如通常属于被称为智能TV的类型的流行平面屏幕HDTV,其中,该TV包含具有能够执行类似于当今常用的智能电话上所找到的类型的应用程序的存储器的处理装置。本发明的系统在通常大量的位置内对视频帧缓冲器301的区域302进行采样。所述样本具有与在建立参考数据库的过程中所使用的那些像素分片完全相同的大小、形状和位置。然后,以算法方式对所收集的这些像素分片中的每个像素分片都进行处理以便以与用于创建参考数据库的方法完全相同的方式针对每个分片的红色值、绿色值和蓝色值产生计算出的值。
[0087]然后,本发明的所述系统计算所收集的平均值的与以上所描述的内容摄取函数完全相同的距离关联性散列索引。同样与以上所描述的摄取系统完全相同的,所产生的扇区标识(ID)值被提取为散列索引的总位的子集。该散列索引的剩余部分用于对所期望的扇区进行定址以在其中搜索属于与未知的数据点相同的存储桶的所有候选(潜在)匹配。
[0088]可选地,如果从以上过程可获得对匹配的良好猜测(成功的匹配),本发明的系统还将使用内容ID索引从数据库中收集候选项以对围绕(成功匹配的候选项的)时间戳的时间半径r’的多个参考提示进行定址,该数据库负责属于潜在的内容ID的如以上所描述的在摄取过程中所创建的所述扇区。接下来,如在第一专利中所教导的,移除重复的候选项以及与未知点相距太远(半径r)的候选项。
[0089]为了针对将未知视频片段与已知视频数据的参考数据库的匹配进行测试,假设来自上一个步骤的候选项列表,其中,每个候选项(即,每个可能的匹配)已经将其与以下数据项相关联:内容ID、媒体时间、作为与当前未知点(与未知视频流)的距离计算的逆百分比分布半径,其中,100%表不未知点的确切值并且0%是超出从未知点的半径r (分布)之夕卜的值。
[0090]在本发明的匹配系统的存储器中为每个匹配候选项501分配一个数据结构502。除其他项外,该数据结构由通过某个任意量来分组的任意的时间箱(例如,大约一秒)组成。出于示例的目的,假设所述数据结构由一百个表示十秒的视频提示点的箱组成。这些箱在时间上通常不是相等间隔的。
[0091]对于在参考(匹配)数据库中所找到的每个候选项:首先,通过从未知视频的任意时间中减去候选项时间来计算相对时间。候选项时间是在参考节目播送期间与候选项相关联的每个视频提示的播放时间。
[0092]未知视频的任意时间来自于电视监视器的从在所述电视的存储器或在附接至所述电视的机顶盒中运行的本发明的应用内部生成的时刻,并且与所采样的视频提示点一起由所述应用发送至本发明的中央服务器装置。时刻是技术人员所众所周知的并且通常用于计算机系统中。所述时间作为自1970年I月I日起的时间单元的当前数量。
[0093]例如,如果来自(在家庭中的)电视的任意时间与真实媒体时间之间的时间差是100秒,那么那些实际上匹配的候选项的相对时间应该接近于那个值。同样,不是良好匹配的候选项不可能具有接近于本示例的100秒的相对时间。
[0094]在候选项数据结构中,当未知视频的提示点与参考提示点相匹配时,本发明的系统将令牌添加至候选项数据结构的对应箱内。然后,所述系统如在上一段中所描述的那样针对下一个候选项重复该过程。
[0095]用于对结果进行评分的另一个并且重要的步骤是向所有的箱施加时间折扣。这是一个相对简单的过程,该过程针对每个时间周期将所有箱内的值递减一个较小的量。技术人员将认识到,这是一种“漏桶(leaky bucket) ”评分方法。通过定义,经过所述过程的多个周期,不再通过匹配提示点来填充的箱将最终递减至零。同样,慢慢地通过系统中的随机噪声而填充的箱将同样被递减。所以,时间折扣最终清空由假正匹配和随机噪声填充的箱。技术人员还将清楚地看到,没有所述时间折扣分箱(time discount binning),所有的箱都将最终填充至容量并且无法从过程中获得任何结果。
[0096]在通过以下各项中的任何一项来以任何方式改变来自客户端电视监视器的视频流时,所述时间折扣还将具有在匹配阈值504的水平之上的任何箱(如503)递减至零:改变频道、快退、快进、暂停视频等。
[0097]如果候选项数据结构的任何箱(如箱503)在某个阈值504之上,那么内容被声明匹配。限定匹配的进一步的手段可能包括在大于确定秒数(例如,三秒)的时间内针对候选项片段的连贯匹配进行测试。
[0098]图8展示了如何计算散列值。首先,通过对所述位置的在所述位置处来自表示有待由本发明标识的典型的电视节目的多个电视频道中的采集值的许多天的时间上的那些值进行求和来找到有助于视频指纹的每个像素位置的中值。一旦确定了中值,其可以无限期地用作常数而不需要进一步的计算或调整。首先通过减去所述像素位置的中值来处理从客户端发送至服务器匹配系统的像素值。将所产生的结果与视频帧的其他像素位置一起存储在矩阵中,并且将适当的散列函数应用于所述矩阵。然后,从所产生的点积中导出多个散列值。
[0099]图9展示了作为计算散列值的过程的一部分而使用将像素位置的中值的有益结果。图表901示出了典型的未经优化的散列函数的输出的所产生的曲线,该散列函数具有在曲线的左边上占用相对窄范围的相对小数量的散列值。所产生的中值902较低。图表903示出了由于计算参与匹配过程的每个像素位置的中值并且将所述中值作为散列函数的一部分而应用所引起的对散列值的有利再分布。散列值的分布更加散开,伴随有所有的散列键904的中值中的上升。
[0100]图9a展示了当在对数据集进行分区之前未找到中值时所述数据集发生了什么。如果系统对每个视频帧的十六个像素位置进行采样并且如果每个像素位置具有红色像素值、绿色像素值和蓝色像素值,将有64维(或轴线)至该图。出于展示的目的,在本示例中,数据集仅包括单个视频帧的两个样本点906和908。进一步地,该示例假设在每个像素点处仅获得单个亮度值。通过在对角线方向907上将数据集分割为顺时针扇区907c和逆时针扇区907cc并且竖直轴线908和水平轴线906在零值905处相交叉,在该两个所述像素位置之间仅有八个扇区中的两个扇区910和911。
[0101]图9b展示了找到每个像素位置的中值的益处。本示例继续使用像素值是从零至255的单个亮度值的假设,虽然绝对值对本方法并不重要。本示例展示了对于两个像素位置而言中值均是128的简化假设。现在,通过将分区点移位至905’,竖直轴线和水平轴线分别移位至908’和906’。对角切片909移至909’。从示图中清楚地看到现在所有八个扇区都包含数据。
[0102]在以此方式对数据集进行分区时,所计算的中值既不一定也不需要在数据集的中间。所期望的结果是将数据分散开从而使得当所述数据被分区并且指派至各个服务器时,系统更统一地访问所述服务器。相反,图9的未经优化的数据如果如所示的那样在八个服务器之间进行分区则将仅看到八个被访问的服务器中的两个服务器。在图9b所展示的方法中,通过在每个像素位置处的那些颜色值并且通过16个像素位置的示例,实际计算导致如48维图那样计算的48个中值的施加。进一步地,根据需要可以围绕48维图的每个中间点进行多于一次的数据拼接,从而使得可以使由所述切片产生的所述数据集装配于系统的单独计算机服务器的操作约束之内。在任何情况下,在每个分区切片的顺时针侧和逆时针侧上的大多数时间都将找到数据。
[0103]图10展示了表示关于使用距离关联性散列法来对媒体数据库进行定址的多个示例操作的操作流程1000。在图10中以及在包括操作流程的各个示例的下图中,将关于图1到图9的上述示例和/或关于其他示例和上下文来提供讨论和阐释。然而,应理解,可以在许多其他环境和上下文中和/或在图1到图9的经修改版本中执行这些操作流程。而且,虽然以所说明的序列来呈现各个操作流,但应理解,可以用与所说明的顺序不同的其他顺序来执行各个操作,或者可以同时执行这些操作。
[0104]在开始操作之后,操作流程1000移动到操作1002。操作1002描绘了接收对一个视频片段的一个样本的一个或多个指示。例如,如在图1至图9中所示出的和/或关于其所描述的,这些指示可以与来自摄取系统的一个或多个像素分片相关联。
[0105]然后,操作1004描绘了针对包括至少一个分片的至少一个或多个像素的一个视频片段的该样本的该至少一个分片来确定每个分片的该一个或多个像素的一个以算法方式导出的值。例如,如在图1至图9中所示出的和/或关于其所描述的,可以计算每个分片中的那些红色像素、每个分片中的那些绿色像素、以及每个分片中的那些蓝色像素的平均值。
[0106]然后,操作1006描绘了从针对每个分片的平均值中减去针对每个分片所建立的一个中间点值。例如,如在图1至图9中所示出的和/或关于其所描述的,可以通过对所述位置的在所述位置处来自多个电视频道中的采集值的许多天的时间上的那些值进行求和来找到有助于视频指纹的每个像素位置的中值。
[0107]然后,操作1008描绘了使用预先导出的一个函数来变换由于该减法而产生的这些值以均匀地分布这些值。例如,如在图1至图9中所示出的和/或关于其所描述的,由减法所产生的这些值填充一个矩阵。可以计算那个矩阵与预先导出的静态矩阵的点积。该预先导出的静态矩阵可以在对操作流程1000进行实例化之前被确定并且可以基于过去所摄取的数据来以算法方式被优化,从而使得与其相交叉的多个矩阵将产生比直接来自减法操作的结果分布更均匀的结果。
[0108]然后,操作1010描绘了从这些经变换的值中构建一个散列值。例如,如在图1至图9中所示出的和/或关于其所描述的,能够保持RGB值的值被减小至位形式,从而使得散列值可以是一个位串。
[0109]然后,操作1012描绘了引用所构建的该散列值的多个最高有效位以确定一个数据库扇区。例如,如在图1至图9中所示出的和/或关于其所描述的,可以预先确定多个位,从而使得一个散列值的所预先确定的该多个位用于对一个或多个数据库扇区进行定址。
[0110]然后,操作1014描绘了至少将该散列值存储在所确定的该数据库扇区上。例如,如在图1至图9中所示出的和/或关于其所描述的,可以将该散列值存储在一个存储桶中,该存储桶包括在数学上接近的其他散列值,其中,这些散列值至少与具体的视频片段和偏移相关联。
[0111]图11展示了图10的
当前第3页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1