CN105320685B - 哈希编码方法和装置 - Google Patents
哈希编码方法和装置 Download PDFInfo
- Publication number
- CN105320685B CN105320685B CN201410364922.0A CN201410364922A CN105320685B CN 105320685 B CN105320685 B CN 105320685B CN 201410364922 A CN201410364922 A CN 201410364922A CN 105320685 B CN105320685 B CN 105320685B
- Authority
- CN
- China
- Prior art keywords
- projecting direction
- value
- threshold value
- coding
- projection
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本发明实施例提供一种哈希编码方法和装置,其中,所述方法包括:首先利用多个投影对数据投影得到多维数据投影值,然后在每维数据下通过k‑means聚类得到k个聚类中心,假定两两相邻聚类中心存在一个阈值,根据熵最大化原则求得(k‑1)个阈值并利用这些阈值及预设的编码方案对每维数据进行编码,最后拼合所有投影下的编码得到最终的二值编码。通过在每个投影方向下使用多个阈值,克服了单阈值量化中无法有效对数据划分问题且可以选择使用任意多个阈值;通过使用多个自适应学习的阈值来对每维数据进行量化,有效地保持了近邻结构,从而为大规模数据索引及近邻查询提供良好基础。
Description
技术领域
本发明涉及数据检索领域,尤其涉及一种哈希编码方法和装置。
背景技术
随着互联网上的数据如文本、图像及视频等呈爆炸式增长,对大规模数据的索引和近邻查询已经越来越引起人们的关注。
哈希编码是一种常用的将任意实值多维数据转换成0-1二值串的技术。它具有低存储及高速查询的优点,因此非常适于大规模数据索引及查找。
传统的哈希编码技术首先生成若干投影,然后对每个投影方向下的投影数据进行单阈值量化,从而得到0-1二值编码串。单阈值量化方法往往无法很好地分辨数据,这使得相邻的数据可能具有不同编码,进而影响基于哈希编码的大规模数据索引和近邻查询效果。双阈值哈希方法是最近提出的一种多阈值哈希编码方法,它先利用多个投影对数据投影得到多维数据投影值,然后在每维数据中使用自适应学习的双阈值对数据进行量化和编码,最后拼合所有投影下的编码生成最终的二值编码。
应该注意,上面对技术背景的介绍只是为了方便对本发明的技术方案进行清楚、完整的说明,并方便本领域技术人员的理解而阐述的。不能仅仅因为这些方案在本发明的背景技术部分进行了阐述而认为上述技术方案为本领域技术人员所公知。
发明内容
上述方法在每个投影下只使用两个阈值量化且其中的阈值学习算法只针对两个阈值,因此无法扩展到多个阈值量化。
本发明实施例提供一种哈希编码方法和装置,以解决背景技术指出的问题。
根据本发明实施例的一个方面,提供一种哈希编码装置,其中,所述装置包括:
投影单元,其基于给定的训练数据集生成多个投影方向;
聚类单元,其将所述训练数据集中的所有训练数据在每一个所述投影方向上进行投影,得到对应每一个投影方向的一组投影值,利用预先设定的聚类算法对每一个投影方向对应的投影值进行聚类,得到对应每一个投影方向的预定数量的聚类中心;
阈值确定单元,其根据每一个投影方向对应的预定数量的聚类中心,根据熵最大化原则确定对应每一个投影方向的多个阈值,包括:对于每一个投影方向,根据所述投影方向对应的聚类中心的个数确定所述阈值的个数,其中,所述阈值的个数为所述聚类中心的个数减1;对每个阈值赋予候选值;迭代所有阈值的所有候选值,分别计算出相应的熵值;将熵值最大所对应的一组阈值的候选值作为所述多个阈值;
编码单元,其利用对应每一个投影方向的多个阈值,对输入数据在所述每一个投影方向的投影值进行编码,得到所述输入数据的编码。
根据本发明实施例的第二方面,提供一种哈希编码装置,其中,所述装置包括:
投影单元,其基于给定的训练数据集生成多个投影方向;
聚类单元,其将所述训练数据集中的所有训练数据在每一个所述投影方向上进行投影,得到对应每一个投影方向的一组投影值,利用预先设定的聚类算法对每一个投影方向对应的投影值进行聚类,得到对应每一个投影方向的预定数量的聚类中心;
阈值确定单元,其根据每一个投影方向对应的预定数量的聚类中心,确定对应每一个投影方向的多个阈值,包括:将每一个投影方向的每两个相邻的聚类中心的线性加权组合值作为该投影方向的一个阈值,得到对应该投影方向的多个阈值;
编码单元,其利用对应每一个投影方向的多个阈值,对输入数据在所述每一个投影方向的投影值进行编码,得到所述输入数据的编码。
根据本发明实施例的第三方面,提供一种哈希编码方法,其中,所述方法包括:
基于给定的训练数据集生成多个投影方向;
将所述训练数据集中的所有训练数据在每一个所述投影方向上进行投影,得到对应每一个投影方向的一组投影值,利用预先设定的聚类算法对每一个投影方向对应的投影值进行聚类,得到对应每一个投影方向的预定数量的聚类中心;
根据每一个投影方向对应的预定数量的聚类中心,根据熵最大化原则确定对应每一个投影方向的多个阈值,包括:对于每一个投影方向,根据所述投影方向对应的聚类中心的个数确定所述阈值的个数,其中,所述阈值的个数为所述聚类中心的个数减1;对每个阈值赋予候选值;迭代所有阈值的所有候选值,分别计算出相应的熵值;将熵值最大所对应的一组阈值的候选值作为所述多个阈值;
利用对应每一个投影方向的多个阈值,对输入数据在所述每一个投影方向的投影值进行编码,得到所述输入数据的编码。
本发明的有益效果在于:通过在每个投影方向下使用多个阈值,克服了单阈值量化中无法有效对数据划分问题且可以选择使用任意多个阈值;通过使用多个自适应学习的阈值来对每维数据进行量化,有效地保持了近邻结构,从而为大规模数据索引及近邻查询提供良好基础。
参照后文的说明和附图,详细公开了本发明的特定实施方式,指明了本发明的原理可以被采用的方式。应该理解,本发明的实施方式在范围上并不因而受到限制。在所附权利要求的精神和条款的范围内,本发明的实施方式包括许多改变、修改和等同。
针对一种实施方式描述和/或示出的特征可以以相同或类似的方式在一个或更多个其它实施方式中使用,与其它实施方式中的特征相组合,或替代其它实施方式中的特征。
应该强调,术语“包括/包含”在本文使用时指特征、整件、步骤或组件的存在,但并不排除一个或更多个其它特征、整件、步骤或组件的存在或附加。
附图说明
所包括的附图用来提供对本发明实施例的进一步的理解,其构成了说明书的一部分,用于例示本发明的实施方式,并与文字描述一起来阐释本发明的原理。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。在附图中:
图1是本发明实施例的哈希编码方法的流程图;
图2是本发明实施例的哈希编码方法中映射学习部分的流程图;
图3是本发明实施例的哈希编码方法中数据编码部分的流程图;
图4是本发明实施例的哈希编码方法中阈值示意图;
图5是本发明实施例的哈希编码方法中确定多个阈值的一个实施方式的流程图;
图6是对输入数据在每一个投影方向的投影值进行编码的一个实施方式的流程图;
图7是区域编码示意图;
图8是哈希编码装置的一个实施方式的组成示意图;
图9是哈希编码装置的另一个实施方式的组成示意图;
图10是本发明实施例的编码器的组成示意图。
具体实施方式
参照附图,通过下面的说明书,本发明的前述以及其它特征将变得明显。在说明书和附图中,具体公开了本发明的特定实施方式,其表明了其中可以采用本发明的原则的部分实施方式,应了解的是,本发明不限于所描述的实施方式,相反,本发明包括落入所附权利要求的范围内的全部修改、变型以及等同物。
本发明实施例提出了一种哈希编码方法和装置,在一个实施方式中,首先利用多个投影对数据投影得到多维数据投影值,然后在每维数据下通过k-means聚类得到k个聚类中心,假定两两相邻聚类中心存在一个阈值,根据熵最大化原则求得(k-1)个阈值并利用这些阈值及预设的编码方案对每维数据进行编码,最后拼合所有投影下的编码得到最终的二值编码。
下面结合附图和具体实施方式对本实施例的方法和装置进行说明。
实施例1
本发明实施例提供了一种哈希编码方法。图1是该方法的处理流程图,请参照图1,该方法包括:
步骤101:生成投影,也即,基于给定的训练数据集生成多个投影方向;
步骤102:生成聚类中心,也即,将所述训练数据集中的所有训练数据在每一个所述投影方向上进行投影,得到对应每一个投影方向的一组投影值,利用预先设定的聚类算法对每一个投影方向对应的投影值进行聚类,得到对应每一个投影方向的预定数量的聚类中心;
步骤103:确定阈值,也即,根据每一个投影方向对应的预定数量的聚类中心,根据熵最大化原则确定对应每一个投影方向的多个阈值;
步骤104:多阈值量化编码,也即,利用对应每一个投影方向的多个阈值,对输入数据在所述每一个投影方向的投影值进行编码,得到所述输入数据的编码。
在本实施例中,该方法主要包括映射学习部分和数据编码部分,映射学习部分包括投影生成(步骤101)、聚类中心生成(步骤102)和阈值确定(步骤103),数据编码部分包括多阈值量化编码(步骤104)。
图2为映射学习部分的流程图,图3是数据编码部分的流程图。下面结合具体的实施方式中对本实施例的方法进行说明。
在本实施例中,为了将任一数据xi转成c位二值编码yi∈{0,1}c,需要根据给定的一组训练数据集S={x1,x2,…,xn},xi∈Rd自动学习一种映射方法。
在步骤101中,可以基于给定的训练数据集生成多个投影方向。例如,基于d维的0-1高斯分布随机采样得到l个d维向量作为l个投影;或者,也可以采用对训练数据集进行主成分分析,选取前l个主方向作为l个投影;或者,还可以应用现有一些哈希编码方法中使用的投影生成方法,如迭代量化方法等,生成该l个投影。本实施例并不以此作为限制。
在步骤102中,可以将该训练数据集中的所有训练数据在每一个所述投影方向上进行投影,得到对应每一个投影方向的一组投影值,再利用预先设定的聚类算法对每一个投影方向对应的投影值进行聚类,得到对应每一个投影方向的预定数量的聚类中心。例如,将所生成的l个投影(p1,…,pl)对所有训练数据(x1,x2,…,xn)投影,得到每个训练数据的l维数据值。对于每维数据,可以利用k-means聚类算法生成k个聚类中心(c1,…,ck)。其中,k-means聚类算法只是举例说明,在具体实施过程中,也可以利用其它聚类算法生成该k个聚类中心。其中,具体的生成该k个聚类中心的过程可以参考现有技术,这里不再赘述。
在步骤103中,可以根据每一个投影方向对应的预定数量的聚类中心,根据熵最大化原则确定对应每一个投影方向的多个阈值。仍以前述为例,假设每维投影数据值下对应生成k个聚类中心,则两两相邻的聚类中心之间存在一个阈值,因此需要确定k-1个阈值。
图4为阈值示意图,如图4所示,在聚类中心c1和c2之间存在阈值1,在聚类中心c2和c3之间存在阈值2,以此类推。
图5为确定该多个阈值的一个实施方式的流程图,请参照图5,该方法包括:
步骤501:对于每一个投影方向,根据所述投影方向对应的聚类中心的个数确定所述阈值的个数,其中,所述阈值的个数为所述聚类中心的个数减1;
步骤502:对每个阈值赋予候选值;
步骤503:迭代所有阈值的所有候选值,分别计算出相应的熵值;
步骤504:将熵值最大所对应的一组阈值的候选值作为所述多个阈值。
在步骤501中,由于每个阈值都处于两个聚类中心之间,因此由每个投影方向对应的聚类中心的个数,可以得到阈值的个数,也即阈值的个数为聚类中心的个数减1。仍以前述为例,对应每个投影方向的聚类中心的个数为k,则需要确定的阈值的个数为k-1。
在步骤502中,由于每个阈值都处于两个聚类中心之间,因此可以预先为每个阈值赋予候选值。在一个实施方式中,可以利用公式(1)为每个阈值赋予候选值:
Thri∈{ci+b*(ci+1-ci)/B},b=2,…,B-1 (1)
其中,ci为第i个聚类中心的值,ci+1为第i+1个聚类中心的值,B为预指定的块数,i=1,…,k-1。
在步骤503中,对于一组阈值,也即k-1个阈值{Thr1,Thr2,…,Thrk-1},会产生k个划分区域R1,R2,…,Rk,如图2所示,2个阈值会得到3个划分区域。假定在区域Ri内包含ni个数据,则在本实施方式中,可以根据公式(2)计算每一组阈值对应的熵值:
其中,如前所述,k为聚类中心的个数,k-1为阈值的个数,probi为利用该k-1个阈值将该投影方向对应的投影值划分为k个区域后,第i个区域的概率,ni为第i个区域所包含的数据的个数。
在步骤504中,迭代所有阈值的所有候选值,分别计算出每一组阈值的熵值,找出产生最大熵的一组阈值作为该多个阈值。
在步骤103中,是根据熵最大化原则来确定对应每一个投影方向的多个阈值,但本实施例并不以此作为限制,在其它实施方式中,也可以采用其它方式来确定该多个阈值。
例如,在一个实施方式中,可以以两个相邻聚类中心的中间值作为该两个相邻的聚类中心之间的阈值,从而得到该多个阈值。也即,Thri=(ci+ci+1)/2,其中,各字母的含义如前所述,在此不再赘述。
再例如,在另一个实施方式中,还可以通过线性组合相邻聚类中心的值,从而得到该多个阈值。也即,将每一个投影方向的每两个相邻的聚类中心的线性加权组合值作为该投影方向的一个阈值,得到对应该投影方向的多个阈值。例如,Thri=wici+wi+1ci+1,其中,wi=mi/(mi+mi+1),wi+1=mi+1/(mi+mi+1),mi为第i个聚类所包含的数据个数,mi+1为第i+1个聚类所包含的数据个数。
在步骤104中,可以利用对应每一个投影方向的多个阈值,对输入数据在每一个投影方向的投影值进行编码,得到该输入数据的编码。例如,根据l个投影以及每个投影下生成的k-1个阈值,对任意新的数据转换成l*(k-1)位0-1编码。
图6是对输入数据在每一个投影方向的投影值进行编码的一个实施方式的流程图,请参照图6,该方法包括:
步骤601:将所述输入数据在每一个所述投影方向进行投影,得到所述输入数据在每一个所述投影方向的投影值;
步骤602:利用对应每一个投影方向的多个阈值和预先设定的编码策略,将所述输入数据在每一个所述投影方向上的投影值转换为相应的编码;
步骤603:连接所述输入数据在所有投影方向上的投影值的编码,得到所述输入数据的编码。
在步骤601中,投影方法可以参考现有技术,通过将输入数据在每一个投影方向进行投影,可以得到该输入数据在每一个投影方向的投影值。
在步骤602中,该预先设定的编码策略可以是:由k-1个阈值划分出k个区域,每个划分区域预先按如下方式编码:从k-1位全0码串依次每位递增变为1,分别赋值给这k个区域。
在一个实施方式中,对于第i个区域Ri(i=1,…,k),Ri的码串是由k-i个0和i-1个1组成,也即Ri=0…01…1。图7是区域编码的示意图,如图7所示,对于第t个区域,其编码由k-t个0和t-1个1组成。由此,输入数据在每个投影方向上的投影值可以转换为相应的编码。
在一个实施方式中,可以将该输入数据在每一个所述投影方向上的投影值与对应该投影方向的多个阈值进行比较,确定该输入数据在该投影方向上的投影值所属的数据区域;然后将该输入数据在该投影方向上的投影值所属的数据区域的编码作为该输入数据在该投影方向上的投影值的编码。
在步骤603中,连接该输入数据在所有投影方向上的投影值的编码,可以得到该输入数据的编码。
例如,给定一个数据x,由l个投影得到l维数据值(x1,x2,…,xl);对于每维数据值xi,将xi与该维下对应的k-1个阈值比较,确定其所属划分区域Rt,t∈{1,…,k},xi将被赋于其所属区域Rt的k-1位0-1编码;通过拼合每维数据值下生成的k-1位0-1编码,得到最终的l*(k-1)位0-1编码。
本实施例提供的方法,通过在每个投影方向下使用多个阈值,克服了单阈值量化中无法有效对数据划分问题且可以选择使用任意多个阈值;通过使用多个自适应学习的阈值来对每维数据进行量化,有效地保持了近邻结构,从而为大规模数据索引及近邻查询提供良好基础。
实施例2
本发明实施例还提供了一种哈希编码装置,由于该装置解决问题的原理与实施例1的方法类似,因此其具体的实施可以参照实施例1的方法的实施,内容相同之处不再重复说明。
图8是该哈希编码装置的组成示意图,如图8所示,该装置包括:投影单元801、聚类单元802、阈值确定单元803以及编码单元804,其中:
投影单元801基于给定的训练数据集生成多个投影方向。
聚类单元802将所述训练数据集中的所有训练数据在每一个所述投影方向上进行投影,得到对应每一个投影方向的一组投影值,并利用预先设定的聚类算法对每一个投影方向对应的投影值进行聚类,得到对应每一个投影方向的预定数量的聚类中心。
阈值确定单元803根据每一个投影方向对应的预定数量的聚类中心,根据熵最大化原则确定对应每一个投影方向的多个阈值,包括:对于每一个投影方向,根据所述投影方向对应的聚类中心的个数确定所述阈值的个数,其中,所述阈值的个数为所述聚类中心的个数减1;对每个阈值赋予候选值;迭代所有阈值的所有候选值,分别计算出相应的熵值;将熵值最大所对应的一组阈值的候选值作为所述多个阈值。
编码单元804利用对应每一个投影方向的多个阈值,对输入数据在所述每一个投影方向的投影值进行编码,得到所述输入数据的编码。
在本实施例的一个实施方式中,阈值确定单元803可以根据候选值的计算公式Thri=ci+b*(ci+1-ci)/B,b=2,…,B-1对每个阈值赋予候选值,其中,ci为第i个聚类中心的值,ci+1为第i+1个聚类中心的值,B为预先指定的块数。
在本实施例的一个实施方式中,阈值确定单元803可以根据熵的计算公式Entropy=∑i=1,...,k-probilogprobi计算每个阈值的候选值的熵,其中,k为所述聚类中心的个数,k-1为所述阈值的个数,probi为利用所述k-1个阈值将所述投影方向对应的投影值划分为k个区域后,第i个区域的概率,并且,ni为第i个区域所包含的数据的个数。
在本实施例的一个实施方式中,如图8所示,编码单元804可以包括:投影模块8041、编码模块8042以及连接模块8043,其中,
投影模块8041将所述输入数据在每一个所述投影方向进行投影,得到所述输入数据在每一个所述投影方向的投影值。
编码模块8042利用对应每一个投影方向的多个阈值和预先设定的编码策略,将所述输入数据在每一个所述投影方向上的投影值转换为相应的编码。
连接模块8043连接所述输入数据在所有投影方向上的投影值的编码,得到所述输入数据的编码。
其中,该编码模块8042所采用的预先设定的编码策略为:每一个投影方向所对应的投影值下k-1个阈值划分出的k个区域按照如下方式编码:从k-1位全0码串依次每位递增变为1,分别赋值给这k个区域。
其中,对于第i个区域Ri,i=1,…,k,Ri的码串是由k-i个0和i-1个1组成,也即Ri=0…01…1。
在本实施例的一个实施方式中,如图8所示,该编码模块8042可以包括:比较子模块80421和编码子模块80422,其中,
比较子模块80421将所述输入数据在每一个所述投影方向上的投影值与对应所述投影方向的多个阈值进行比较,确定所述输入数据在所述投影方向上的投影值所属的数据区域。
编码子模块80422将所述输入数据在所述投影方向上的投影值所属的数据区域的编码作为所述输入数据在所述投影方向上的投影值的编码。
本实施例提供的哈希编码装置,通过在每个投影方向下使用多个阈值,克服了单阈值量化中无法有效对数据划分问题且可以选择使用任意多个阈值;通过使用多个自适应学习的阈值来对每维数据进行量化,有效地保持了近邻结构,从而为大规模数据索引及近邻查询提供良好基础。
实施例3
本发明实施例还提供了一种哈希编码装置,如实施例2的哈希编码装置不同的是,在本实施例中,阈值确定单元是通过线性加权的方式确定对应每一个投影方向的多个阈值。其中,与实施例2相同的内容将不再重复说明。
图9是本实施例的哈希编码装置的组成示意图,如图9所示,该哈希编码装置包括:投影单元901、聚类单元902、阈值确定单元903以及编码单元904,其中:
投影单元901基于给定的训练数据集生成多个投影方向。
聚类单元902将所述训练数据集中的所有训练数据在每一个所述投影方向上进行投影,得到对应每一个投影方向的一组投影值,利用预先设定的聚类算法对每一个投影方向对应的投影值进行聚类,得到对应每一个投影方向的预定数量的聚类中心。
阈值确定单元903根据每一个投影方向对应的预定数量的聚类中心,确定对应每一个投影方向的多个阈值,包括:将每一个投影方向的每两个相邻的聚类中心的线性加权组合值作为该投影方向的一个阈值,得到对应该投影方向的多个阈值。
编码单元904利用对应每一个投影方向的多个阈值,对输入数据在所述每一个投影方向的投影值进行编码,得到所述输入数据的编码。
其中,投影单元901、聚类单元902以及编码单元904的具体实施方式与实施例2的投影单元801、聚类单元802以及编码单元804的实施方式相同,其内容被合并于此,在此不再赘述。
其中,阈值确定单元903可以根据下式确定每一个投影方向的每一个阈值:
Thri=wici+wi+1ci+1;
其中,wi=mi/(mi+mi+1);wi+1=mi+1/(mi+mi+1),mi为第i个聚类所包含的数据个数;mi+1为第i+1个聚类所包含的数据个数。
本实施例提供的哈希编码装置,通过在每个投影方向下使用多个阈值,克服了单阈值量化中无法有效对数据划分问题且可以选择使用任意多个阈值;通过使用多个自适应学习的阈值来对每维数据进行量化,有效地保持了近邻结构,从而为大规模数据索引及近邻查询提供良好基础。
实施例4
本发明实施例还提供了一种编码器,该编码器包括如实施例2或实施例3所述的哈希编码装置。
图10是本发明实施例的编码器的一构成示意图。如图10所示,编码器1000可以包括:中央处理器(CPU)1001和存储器1002;存储器1002耦合到中央处理器1001。其中该存储器1002可存储各种数据;此外还存储信息处理的程序,并且在中央处理器1001的控制下执行该程序,以实现哈希编码装置的功能。
在一个实施方式中,哈希编码装置的功能可以被集成到中央处理器1001中。其中,中央处理器1001可以被配置为:基于给定的训练数据集生成多个投影方向,将所述训练数据集中的所有训练数据在每一个所述投影方向上进行投影,得到对应每一个投影方向的一组投影值;利用预先设定的聚类算法对每一个投影方向对应的投影值进行聚类,得到对应每一个投影方向的预定数量的聚类中心;根据每一个投影方向对应的预定数量的聚类中心,确定对应每一个投影方向的多个阈值。利用对应每一个投影方向的多个阈值,对输入数据在所述每一个投影方向的投影值进行编码,得到所述输入数据的编码。
可选的,该中央处理器1001还可以被配置为:根据熵最大化原则确定对应每一个投影方向的多个阈值,包括:对于每一个投影方向,根据所述投影方向对应的聚类中心的个数确定所述阈值的个数,其中,所述阈值的个数为所述聚类中心的个数减1;对每个阈值赋予候选值;迭代所有阈值的所有候选值,分别计算出相应的熵值;将熵值最大所对应的一组阈值的候选值作为所述多个阈值。
其中,可选的,该中央处理器1001还可以被配置为:根据候选值的计算公式Thri=ci+b*(ci+1-ci)/B,b=2,…,B-1对每个阈值赋予候选值,其中,ci为第i个聚类中心的值,ci+1为第i+1个聚类中心的值,B为预先指定的块数。
其中,可选的,该中央处理器1001还可以被配置为:根据熵的计算公式Entropy=∑i=1,...,k-probilogprobi计算每个阈值的候选值的熵,其中,k为所述聚类中心的个数,k-1为所述阈值的个数,probi为利用所述k-1个阈值将所述投影方向对应的投影值划分为k个区域后,第i个区域的概率,并且,ni为第i个区域所包含的数据的个数。
可选的,该中央处理器1001还可以被配置为:将每一个投影方向的每两个相邻的聚类中心的线性加权组合值作为该投影方向的一个阈值,得到对应该投影方向的多个阈值。其中,可选的,该中央处理器1001还可以被配置为:根据下式确定每一个投影方向的每一个阈值:Thri=wici+wi+1ci+1;其中,wi=mi/(mi+mi+1);wi+1=mi+1/(mi+mi+1),mi为第i个聚类所包含的数据个数;mi+1为第i+1个聚类所包含的数据个数。
可选的,该中央处理器1001还可以被配置为:将所述输入数据在每一个所述投影方向进行投影,得到所述输入数据在每一个所述投影方向的投影值;利用对应每一个投影方向的多个阈值和预先设定的编码策略,将所述输入数据在每一个所述投影方向上的投影值转换为相应的编码;连接所述输入数据在所有投影方向上的投影值的编码,得到所述输入数据的编码。
其中,预先设定的编码策略为:每一个投影方向所对应的投影值下k-1个阈值划分出的k个区域按照如下方式编码:从k-1位全0码串依次每位递增变为1,分别赋值给这k个区域。
其中,对于第i个区域Ri,i=1,…,k,Ri的码串是由(k-i)个0和(i-1)个1组成,也即Ri=0…01…1。
可选的,该中央处理器1001还可以被配置为:将所述输入数据在每一个所述投影方向上的投影值与对应所述投影方向的多个阈值进行比较,确定所述输入数据在所述投影方向上的投影值所属的数据区域;将所述输入数据在所述投影方向上的投影值所属的数据区域的编码作为所述输入数据在所述投影方向上的投影值的编码。
在另一个实施方式中,哈希编码装置可以与中央处理器分开配置,例如可以将哈希编码装置配置为与中央处理器1001连接的芯片,通过中央处理器1001的控制来实现哈希编码装置的功能。
此外,如图10所示,该编码器1000还可以包括:通信模块1003、输入单元1004、音频处理单元1005、显示器1006、电源1007等。值得注意的是,该编码器1000也并不是必须要包括图10中所示的所有部件;此外,该编码器1000还可以包括图10中没有示出的部件,可以参考现有技术。
如图10所示,中央处理器1001有时也称为控制器或操作控件,可以包括微处理器或其他处理器装置和/或逻辑装置,该中央处理器1001接收输入并控制编码器1000的各个部件的操作。
其中,存储器1002,例如可以是缓存器、闪存、硬驱、可移动介质、易失性存储器、非易失性存储器或其它合适装置中的一种或更多种。并且中央处理器1001可执行该存储器1002存储的该程序,以实现信息存储或处理等。其他部件的功能与现有类似,此处不再赘述。编码器1000的各部件可以通过专用硬件、固件、软件或其结合来实现,而不偏离本发明的范围。
本实施例提供的编码器,利用实施例2或实施例3的哈希编码装置,通过在每个投影方向下使用多个阈值,克服了单阈值量化中无法有效对数据划分问题且可以选择使用任意多个阈值;通过使用多个自适应学习的阈值来对每维数据进行量化,有效地保持了近邻结构,从而为大规模数据索引及近邻查询提供良好基础。
本发明实施例还提供一种计算机可读程序,其中当在信息处理装置或编码器中执行所述程序时,所述程序使得计算机在所述信息处理装置或编码器中执行实施例1所述的哈希编码方法。
本发明实施例还提供一种存储有计算机可读程序的存储介质,其中所述计算机可读程序使得计算机在信息处理装置或编码器中执行实施例1所述的哈希编码方法。
本发明以上的装置和方法可以由硬件实现,也可以由硬件结合软件实现。本发明涉及这样的计算机可读程序,当该程序被逻辑部件所执行时,能够使该逻辑部件实现上文所述的装置或构成部件,或使该逻辑部件实现上文所述的各种方法或步骤。本发明还涉及用于存储以上程序的存储介质,如硬盘、磁盘、光盘、DVD、flash存储器等。
以上结合具体的实施方式对本发明进行了描述,但本领域技术人员应该清楚,这些描述都是示例性的,并不是对本发明保护范围的限制。本领域技术人员可以根据本发明的精神和原理对本发明做出各种变型和修改,这些变型和修改也在本发明的范围内。
关于包括以上实施例的实施方式,还公开下述的附记:
附记1、一种哈希编码方法,其中,所述方法包括:
基于给定的训练数据集生成多个投影方向;
将所述训练数据集中的所有训练数据在每一个所述投影方向上进行投影,得到对应每一个投影方向的一组投影值,利用预先设定的聚类算法对每一个投影方向对应的投影值进行聚类,得到对应每一个投影方向的预定数量的聚类中心;
根据每一个投影方向对应的预定数量的聚类中心,确定对应每一个投影方向的多个阈值;
利用对应每一个投影方向的多个阈值,对输入数据在所述每一个投影方向的投影值进行编码,得到所述输入数据的编码。
附记2、根据附记1所述的方法,其中,确定对应每一个投影方向的多个阈值包括:
根据熵最大化原则确定对应每一个投影方向的多个阈值,包括:对于每一个投影方向,根据所述投影方向对应的聚类中心的个数确定所述阈值的个数,其中,所述阈值的个数为所述聚类中心的个数减1;对每个阈值赋予候选值;迭代所有阈值的所有候选值,分别计算出相应的熵值;将熵值最大所对应的一组阈值的候选值作为所述多个阈值;
附记3、根据附记2所述的方法,其中,对每个阈值赋予候选值包括:
根据候选值的计算公式Thri=ci+b*(ci+1-ci)/B,b=2,…,B-1对每个阈值赋予候选值,其中,ci为第i个聚类中心的值,ci+1为第i+1个聚类中心的值,B为预先指定的块数。
附记4、根据附记2所述的方法,其中,分别计算出相应的熵值包括:
根据熵的计算公式Entropy=∑i=1,...,k-probilogprobi计算每个阈值的候选值的熵,其中,k为所述聚类中心的个数,k-1为所述阈值的个数,probi为利用所述k-1个阈值将所述投影方向对应的投影值划分为k个区域后,第i个区域的概率,并且,ni为第i个区域所包含的数据的个数。
附记5、根据附记1所述的方法,其中,确定对应每一个投影方向的多个阈值,包括:将每一个投影方向的每两个相邻的聚类中心的线性加权组合值作为该投影方向的一个阈值,得到对应该投影方向的多个阈值。
附记6、根据附记5所述的方法,其中,根据下式确定每一个投影方向的每一个阈值:Thri=wici+wi+1ci+1;其中,wi=mi/(mi+mi+1);wi+1=mi+1/(mi+mi+1),mi为第i个聚类所包含的数据个数;mi+1为第i+1个聚类所包含的数据个数。
附记7、根据附记1所述的方法,其中,利用对应每一个投影方向的多个阈值,对输入数据在所述每一个投影方向的投影值进行编码,包括:
将所述输入数据在每一个所述投影方向进行投影,得到所述输入数据在每一个所述投影方向的投影值;
利用对应每一个投影方向的多个阈值和预先设定的编码策略,将所述输入数据在每一个所述投影方向上的投影值转换为相应的编码;
连接所述输入数据在所有投影方向上的投影值的编码,得到所述输入数据的编码。
附记8、根据附记7所述的方法,其中,所述预先设定的编码策略为:
每一个投影方向所对应的投影值下k-1个阈值划分出的k个区域按照如下方式编码:从k-1位全0码串依次每位递增变为1,分别赋值给这k个区域。
附记9、根据附记8所述的方法,其中,
对于第i个区域Ri,i=1,…,k,Ri的码串是由(k-i)个0和(i-1)个1组成,也即Ri=0…01…1。
附记10、根据附记7所述的方法,其中,将所述输入数据在每一个所述投影方向上的投影值转换为相应的编码,包括:
将所述输入数据在每一个所述投影方向上的投影值与对应所述投影方向的多个阈值进行比较,确定所述输入数据在所述投影方向上的投影值所属的数据区域;
将所述输入数据在所述投影方向上的投影值所属的数据区域的编码作为所述输入数据在所述投影方向上的投影值的编码。
附记11、一种哈希编码装置,其中,所述装置包括:
投影单元,其基于给定的训练数据集生成多个投影方向,将所述训练数据集中的所有训练数据在每一个所述投影方向上进行投影,得到对应每一个投影方向的一组投影值;
聚类单元,其利用预先设定的聚类算法对每一个投影方向对应的投影值进行聚类,得到对应每一个投影方向的预定数量的聚类中心;
阈值确定单元,其根据每一个投影方向对应的预定数量的聚类中心,根据熵最大化原则确定对应每一个投影方向的多个阈值,包括:对于每一个投影方向,根据所述投影方向对应的聚类中心的个数确定所述阈值的个数,其中,所述阈值的个数为所述聚类中心的个数减1;对每个阈值赋予候选值;迭代所有阈值的所有候选值,分别计算出相应的熵值;将熵值最大所对应的一组阈值的候选值作为所述多个阈值;
编码单元,其利用对应每一个投影方向的多个阈值,对输入数据在所述每一个投影方向的投影值进行编码,得到所述输入数据的编码。
附记12、根据附记11所述的装置,其中,
所述阈值确定单元根据候选值的计算公式Thri=ci+b*(ci+1-ci)/B,b=2,…,B-1对每个阈值赋予候选值,其中,ci为第i个聚类中心的值,ci+1为第i+1个聚类中心的值,B为预先指定的块数。
附记13、根据附记11所述的装置,其中,
所述阈值确定单元根据熵的计算公式Entropy=∑i=1,...,k-probilogprobi计算每个阈值的候选值的熵,其中,k为所述聚类中心的个数,k-1为所述阈值的个数,probi为利用所述k-1个阈值将所述投影方向对应的投影值划分为k个区域后,第i个区域的概率,并且,ni为第i个区域所包含的数据的个数。
附记14、根据附记11所述的装置,其中,所述编码单元包括:
投影模块,其将所述输入数据在每一个所述投影方向进行投影,得到所述输入数据在每一个所述投影方向的投影值;
编码模块,利用对应每一个投影方向的多个阈值和预先设定的编码策略,将所述输入数据在每一个所述投影方向上的投影值转换为相应的编码;
连接模块,连接所述输入数据在所有投影方向上的投影值的编码,得到所述输入数据的编码。
附记15、根据附记14所述的装置,其中,所述编码模块所采用的预先设定的编码策略为:
每一个投影方向所对应的投影值下k-1个阈值划分出的k个区域按照如下方式编码:
从k-1位全0码串依次每位递增变为1,分别赋值给这k个区域。
附记16、根据附记15所述的装置,其中,
对于第i个区域Ri,i=1,…,k,Ri的码串是由(k-i)个0和(i-1)个1组成,也即Ri=0…01…1。
附记17、根据附记14所述的装置,其中,所述编码模块包括:
比较子模块,其将所述输入数据在每一个所述投影方向上的投影值与对应所述投影方向的多个阈值进行比较,确定所述输入数据在所述投影方向上的投影值所属的数据区域;
编码子模块,其将所述输入数据在所述投影方向上的投影值所属的数据区域的编码作为所述输入数据在所述投影方向上的投影值的编码。
附记18、一种哈希编码装置,其中,所述装置包括:
投影单元,其基于给定的训练数据集生成多个投影方向,将所述训练数据集中的所有训练数据在每一个所述投影方向上进行投影,得到对应每一个投影方向的一组投影值;
聚类单元,其利用预先设定的聚类算法对每一个投影方向对应的投影值进行聚类,得到对应每一个投影方向的预定数量的聚类中心;
阈值确定单元,其根据每一个投影方向对应的预定数量的聚类中心,确定对应每一个投影方向的多个阈值,包括:将每一个投影方向的每两个相邻的聚类中心的线性加权组合值作为该投影方向的一个阈值,得到对应该投影方向的多个阈值;
编码单元,其利用对应每一个投影方向的多个阈值,对输入数据在所述每一个投影方向的投影值进行编码,得到所述输入数据的编码。
附记19、根据附记18所述的装置,其中,所述阈值确定单元根据下式确定每一个投影方向的每一个阈值:
Thri=wici+wi+1ci+1;
其中,wi=mi/(mi+mi+1);wi+1=mi+1/(mi+mi+1),mi为第i个聚类所包含的数据个数;mi+1为第i+1个聚类所包含的数据个数。
Claims (10)
1.一种哈希编码装置,其中,所述装置包括:
投影单元,其基于给定的训练数据集生成多个投影方向;
聚类单元,其将所述训练数据集中的所有训练数据在每一个所述投影方向上进行投影,得到对应每一个投影方向的一组投影值,利用预先设定的聚类算法对每一个投影方向对应的投影值进行聚类,得到对应每一个投影方向的预定数量的聚类中心;
阈值确定单元,其根据每一个投影方向对应的预定数量的聚类中心,根据熵最大化原则确定对应每一个投影方向的多个阈值,包括:对于每一个投影方向,根据所述投影方向对应的聚类中心的个数确定所述阈值的个数,其中,所述阈值的个数为所述聚类中心的个数减1;对每个阈值赋予候选值;迭代所有阈值的所有候选值,分别计算出相应的熵值;将熵值最大所对应的一组阈值的候选值作为所述多个阈值;所述多个阈值不包含两个阈值;
编码单元,其利用对应每一个投影方向的多个阈值,对输入数据在所述每一个投影方向的投影值进行编码,得到所述输入数据的编码。
2.根据权利要求1所述的装置,其中,
所述阈值确定单元根据候选值的计算公式Thri=ci+b*(ci+1-ci)/B,b=2,…,B-1对每个阈值赋予候选值,其中,ci为第i个聚类中心的值,ci+1为第i+1个聚类中心的值,B为预先指定的块数。
3.根据权利要求1所述的装置,其中,
所述阈值确定单元根据熵的计算公式Entropy=∑i=1,...,k-probilogprobi计算每个阈值的候选值的熵,其中,k为所述聚类中心的个数,k-1为所述阈值的个数,probi为利用所述k-1个阈值将所述投影方向对应的投影值划分为k个区域后,第i个区域的概率,并且,ni为第i个区域所包含的数据的个数。
4.根据权利要求1所述的装置,其中,所述编码单元包括:
投影模块,其将所述输入数据在每一个所述投影方向进行投影,得到所述输入数据在每一个所述投影方向的投影值;
编码模块,利用对应每一个投影方向的多个阈值和预先设定的编码策略,将所述输入数据在每一个所述投影方向上的投影值转换为相应的编码;
连接模块,连接所述输入数据在所有投影方向上的投影值的编码,得到所述输入数据的编码。
5.根据权利要求4所述的装置,其中,所述编码模块所采用的预先设定的编码策略为:
每一个投影方向所对应的投影值下k-1个阈值划分出的k个区域按照如下方式编码:
从k-1位全0码串依次每位递增变为1,分别赋值给这k个区域。
6.根据权利要求5所述的装置,其中,
对于第i个区域Ri,i=1,…,k,Ri的码串是由(k-i)个0和(i-1)个1组成,也即Ri=0…01…1。
7.根据权利要求4所述的装置,其中,所述编码模块包括:
比较子模块,其将所述输入数据在每一个所述投影方向上的投影值与对应所述投影方向的多个阈值进行比较,确定所述输入数据在所述投影方向上的投影值所属的数据区域;
编码子模块,其将所述输入数据在所述投影方向上的投影值所属的数据区域的编码作为所述输入数据在所述投影方向上的投影值的编码。
8.一种哈希编码装置,其中,所述装置包括:
投影单元,其基于给定的训练数据集生成多个投影方向;
聚类单元,其将所述训练数据集中的所有训练数据在每一个所述投影方向上进行投影,得到对应每一个投影方向的一组投影值,利用预先设定的聚类算法对每一个投影方向对应的投影值进行聚类,得到对应每一个投影方向的预定数量的聚类中心;
阈值确定单元,其根据每一个投影方向对应的预定数量的聚类中心,确定对应每一个投影方向的多个阈值,包括:将每一个投影方向的每两个相邻的聚类中心的线性加权组合值作为该投影方向的一个阈值,得到对应该投影方向的多个阈值;所述多个阈值不包含两个阈值;
编码单元,其利用对应每一个投影方向的多个阈值,对输入数据在所述每一个投影方向的投影值进行编码,得到所述输入数据的编码。
9.根据权利要求8所述的装置,其中,所述阈值确定单元根据下式确定每一个投影方向的每一个阈值:
Thri=wici+wi+1ci+1;
其中,wi=mi/(mi+mi+1);wi+1=mi+1/(mi+mi+1),mi为第i个聚类所包含的数据个数;mi+1为第i+1个聚类所包含的数据个数。
10.一种哈希编码方法,其中,所述方法包括:
基于给定的训练数据集生成多个投影方向;
将所述训练数据集中的所有训练数据在每一个所述投影方向上进行投影,得到对应每一个投影方向的一组投影值,利用预先设定的聚类算法对每一个投影方向对应的投影值进行聚类,得到对应每一个投影方向的预定数量的聚类中心;
根据每一个投影方向对应的预定数量的聚类中心,根据熵最大化原则确定对应每一个投影方向的多个阈值,包括:对于每一个投影方向,根据所述投影方向对应的聚类中心的个数确定所述阈值的个数,其中,所述阈值的个数为所述聚类中心的个数减1;对每个阈值赋予候选值;迭代所有阈值的所有候选值,分别计算出相应的熵值;将熵值最大所对应的一组阈值的候选值作为所述多个阈值;所述多个阈值不包含两个阈值;
利用对应每一个投影方向的多个阈值,对输入数据在所述每一个投影方向的投影值进行编码,得到所述输入数据的编码。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410364922.0A CN105320685B (zh) | 2014-07-29 | 2014-07-29 | 哈希编码方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410364922.0A CN105320685B (zh) | 2014-07-29 | 2014-07-29 | 哈希编码方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105320685A CN105320685A (zh) | 2016-02-10 |
CN105320685B true CN105320685B (zh) | 2019-03-19 |
Family
ID=55248086
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410364922.0A Active CN105320685B (zh) | 2014-07-29 | 2014-07-29 | 哈希编码方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105320685B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106485316B (zh) * | 2016-10-31 | 2019-04-02 | 北京百度网讯科技有限公司 | 神经网络模型压缩方法以及装置 |
CN106815362B (zh) * | 2017-01-22 | 2019-12-31 | 福州大学 | 一种基于kpca多表索引图像哈希检索方法 |
CN107341178B (zh) * | 2017-05-24 | 2020-05-29 | 北京航空航天大学 | 一种基于自适应的二进制量化哈希编码的数据检索方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6122628A (en) * | 1997-10-31 | 2000-09-19 | International Business Machines Corporation | Multidimensional data clustering and dimension reduction for indexing and searching |
CN1949226A (zh) * | 2006-11-23 | 2007-04-18 | 金蝶软件(中国)有限公司 | 一种联机分析处理系统中多维数据读写的方法和装置 |
-
2014
- 2014-07-29 CN CN201410364922.0A patent/CN105320685B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6122628A (en) * | 1997-10-31 | 2000-09-19 | International Business Machines Corporation | Multidimensional data clustering and dimension reduction for indexing and searching |
CN1949226A (zh) * | 2006-11-23 | 2007-04-18 | 金蝶软件(中国)有限公司 | 一种联机分析处理系统中多维数据读写的方法和装置 |
Non-Patent Citations (1)
Title |
---|
"Hashing with Graphs";Wei Liu et al.;《In Proceedings of International Conference on Machine Learning》;20111231;第1页第1栏摘要-第8页第1栏第5节 |
Also Published As
Publication number | Publication date |
---|---|
CN105320685A (zh) | 2016-02-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11477468B2 (en) | Method and device for compressing image and neural network using hidden variable | |
Cao et al. | Collective deep quantization for efficient cross-modal retrieval | |
US8280839B2 (en) | Nearest neighbor methods for non-Euclidean manifolds | |
US8676725B1 (en) | Method and system for entropy-based semantic hashing | |
KR20200018283A (ko) | 컨볼루션 순환 신경망을 훈련시키는 방법 및 훈련된 컨볼루션 순환 신경망을 사용하는 입력된 비디오의 의미적 세그먼트화 방법 | |
CN109783691B (zh) | 一种深度学习和哈希编码的视频检索方法 | |
CN105320685B (zh) | 哈希编码方法和装置 | |
CN109885728B (zh) | 基于元学习的视频摘要方法 | |
US10839226B2 (en) | Neural network training | |
CN104881449B (zh) | 基于流形学习数据压缩哈希的图像检索方法 | |
TW202042559A (zh) | 用以壓縮類神經網路參數之方法與裝置 | |
CN115293348A (zh) | 一种多模态特征提取网络的预训练方法及装置 | |
EP4390725A1 (en) | Video retrieval method and apparatus, device, and storage medium | |
CN114926770A (zh) | 视频动作识别方法、装置、设备和计算机可读存储介质 | |
KR100984234B1 (ko) | 벡터 코딩/디코딩 방법 및 장치 그리고 스트림 미디어플레이어 | |
Liu et al. | Scaling up probabilistic circuits by latent variable distillation | |
KR20210086233A (ko) | 완화된 프루닝을 통한 행렬 데이터 처리 방법 및 그 장치 | |
CN112199533B (zh) | 一种基于节点表征的无监督深度哈希模型训练方法及图像检索方法 | |
CN113592008A (zh) | 一种基于自编码器的图神经网络机制解决小样本图像分类的系统、方法、设备及存储介质 | |
US20160357812A1 (en) | System and method for transforming and compressing genomics data | |
Cao et al. | Image retrieval via gated multiscale NetVLAD for social media applications | |
CN114742988B (zh) | 多阶段检测器进行点标注到框标注转换的方法 | |
CN116069985A (zh) | 一种基于标签语义增强的鲁棒在线跨模态哈希检索方法 | |
CN114020948B (zh) | 基于排序聚类序列辨别选择的草图图像检索方法及系统 | |
CN118318441A (zh) | 特征图编解码方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |