CN114329029B - 对象检索方法、装置、设备及计算机存储介质 - Google Patents

对象检索方法、装置、设备及计算机存储介质 Download PDF

Info

Publication number
CN114329029B
CN114329029B CN202111261599.0A CN202111261599A CN114329029B CN 114329029 B CN114329029 B CN 114329029B CN 202111261599 A CN202111261599 A CN 202111261599A CN 114329029 B CN114329029 B CN 114329029B
Authority
CN
China
Prior art keywords
sample
feature
hash value
candidate
hash
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
Application number
CN202111261599.0A
Other languages
English (en)
Other versions
CN114329029A (zh
Inventor
郭卉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202111261599.0A priority Critical patent/CN114329029B/zh
Publication of CN114329029A publication Critical patent/CN114329029A/zh
Application granted granted Critical
Publication of CN114329029B publication Critical patent/CN114329029B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请公开了一种对象检索方法、装置、设备及计算机存储介质,涉及对象检索技术领域,用于降低对象检索时所需占用的内存,且提升了对象检索的效率,该方法包括:确定待检索的目标对象对应的目标特征向量,并基于参考维度,将所述目标特征向量映射为相应的目标哈希值;获得各个候选对象各自对应的候选哈希值;其中,每个候选哈希值,是基于所述参考维度,对相应的候选对象的候选特征向量进行映射得到的;基于各个候选哈希值各自与所述目标哈希值之间的哈希相似度,从所述各个候选对象中确定出至少一个召回对象;基于所述目标特征向量,与所述至少一个召回对象各自对应的候选特征向量之间的向量相似度,获得所述目标对象的对象检索结果。

Description

对象检索方法、装置、设备及计算机存储介质
技术领域
本申请涉及计算机技术领域,尤其涉及对象检索技术领域,提供一种对象检索方法、装置、设备及计算机存储介质。
背景技术
在图像检索领域中,提取图像特征向量(embedding)以计算图像相似度是较为常见的方式。随着技术的发展,用于图像检索的特征维度常常需要升级;例如:从图像表征效果不佳的32维升级到64维等,而在特征维度升级过程中,由于历史提取的embedding的数量巨大,将其全部从原本的32维全部更新到64维需要消耗大量的资源;因此,通常历史库存embedding不会更新,而只会对新增加的图像进行64维特征的提取。
但是在后续的检索应用中,则面临着不同维度特征无法实现检索上的兼容的问题,而需要分别建立不同的独立检索系统实现不同维度特征的检索;例如:针对32维特征建立32维特征检索系统,针对64维特征建立64维特征检索系统;而通过不同的独立检索系统进行检索,则需要占用更大的内存,检索效率更低。
发明内容
本申请实施例提供一种对象检索方法、装置、设备及计算机存储介质,用于降低对象检索时所需占用的内存,且提升了对象检索的效率。
一方面,提供一种对象检索方法,所述方法包括:
确定待检索的目标对象对应的目标特征向量,并基于参考维度,将所述目标特征向量映射为相应的目标哈希值;
获得各个候选对象各自对应的候选哈希值;其中,每个候选哈希值,是基于所述参考维度,对相应的候选对象的候选特征向量进行映射得到的;
基于各个候选哈希值各自与所述目标哈希值之间的哈希相似度,从所述各个候选对象中确定出至少一个召回对象;
基于所述目标特征向量,与所述至少一个召回对象各自对应的候选特征向量之间的向量相似度,获得所述目标对象的对象检索结果。
一方面,提供一种对象检索装置,所述装置包括:
哈希值确定单元,用于确定待检索的目标对象对应的目标特征向量,并基于参考维度,将所述目标特征向量映射为相应的目标哈希值;以及,获得各个候选对象各自对应的候选哈希值;其中,每个候选哈希值,是基于所述参考维度,对相应的候选对象的候选特征向量进行映射得到的;
召回单元,用于基于各个候选哈希值各自与所述目标哈希值之间的哈希相似度,从所述各个候选对象中确定出至少一个召回对象;
检索输出单元,用于基于所述目标特征向量,与所述至少一个召回对象各自对应的候选特征向量之间的向量相似度,获得所述目标对象的对象检索结果。
可选的,所述哈希值确定单元,具体用于:
针对所述各个候选对象,分别获得相应的候选特征向量;
调用已训练的哈希值确定模型中,与所述各个候选对象各自的候选特征向量的维度对应的特征映射网络,分别对所述各个候选对象各自的候选特征向量进行映射,获得所述各个候选对象各自对应的候选哈希值;其中,所述哈希值确定模型包括分别进行预训练后进行了联合训练的多个特征映射网络,每个特征映射网络对应于候选特征向量的一种维度。
可选的,所述装置还包括模型训练单元,用于:
针对一个特征映射网络,基于多个样本对,对所述一个特征映射网络的参数进行多次迭代训练,直至满足收敛条件;其中,每一次迭代训练过程包括如下步骤:
将所述多个样本对划分为至少一个批次,并基于所述至少一个批次中各个批次包括的至少两个样本对,构造所述各个批次各自对应的多个三元组;其中,每个三元组包括对象相似度大于第一相似度阈值的第一样本对象和第二样本对象,以及与所述第一样本对象和所述第二样本对象的对象相似度小于第二相似度阈值的第三样本对象;
基于所述各个批次各自对应的多个三元组,对所述一个特征映射网络进行多次参数调整。
可选的,所述模型训练单元,具体用于:
针对所述至少两个样本对中各个样本对,分别执行如下操作:
针对一个样本对,分别获得所述一个样本对与相应批次中其余样本对之间的对象相似度;
基于获得的各个对象相似度,从所述其余样本对中选取出至少一个样本对;
将所述至少一个样本对包含的样本对象作为负样本,并分别与所述一个样本对进行组合,获得至少一个三元组。
可选的,所述模型训练单元,具体用于:
调用所述哈希值确定模型中,与所述一个特征映射网络对应的特征提取网络,对本批次的多个三元组包括的样本对象进行特征提取,获得相应的样本特征向量;
针对获得的各个样本特征向量,调用所述一个特征映射网络进行特征映射,获得相应的样本哈希值;
基于获得的各个样本哈希值,获得所述一个特征映射网络的哈希损失,所述哈希损失用于表征所述一个特征映射网络在预训练时的收敛程度;
基于获得的哈希损失,对所述一个特征映射网络进行参数调整。
可选的,所述模型训练单元,具体用于:
基于各个三元组包括的各个样本对象各自对应的样本哈希值,分别获得所述各个三元组各自对应的三元组损失;
对所述各个样本对象各自对应的样本哈希值进行量化处理,分别获得相应的量化哈希值,并基于获得的各个量化哈希值,获得所述各个样本对象各自对应的量化损失,所述量化损失用于表征样本哈希值与量化哈希值之间的差异程度;
基于获得的各个三元组损失和各个量化损失,获得所述一个特征映射网络的哈希损失。
可选的,所述模型训练单元,具体用于:
针对每个样本哈希值,分别进行如下操作:
针对一个样本哈希值,调用符号函数,分别对所述一个样本哈希值包括的各个指示位进行量化处理,获得所述一个样本哈希值对应的量化哈希值;
基于所述一个样本哈希值与相应的量化哈希值中相同指示位的差值,获得所述一个样本哈希值对应的量化损失。
可选的,所述模型训练单元,还用于:
基于所述多个样本对,构造多个三元组,并基于所述多个三元组,对所述多个特征映射网络进行多次参数调整,直至满足收敛条件;其中,每一次参数调整过程包括如下步骤:
针对本次输入的各个三元组包括的样本对象,调用所述各个特征映射网络,分别获得各个样本对象各自对应的样本哈希值集合,每个样本哈希值集合对应一个样本特征向量,且每个样本哈希值集合中的一个样本哈希值对应于一个特征映射网络;
基于获得的各个样本哈希值集合,获得联合训练损失,并基于获得的联合训练损失,对所述多个特征映射网络进行参数调整。
可选的,所述模型训练单元,具体用于:
基于各个样本对象各自对应的样本哈希值,获得所述各个样本对象各自对应的量化损失;
针对所述各个三元组,分别执行如下步骤:
针对一个三元组,基于所述一个三元组包括的各个样本对象各自对应的样本哈希值集合,获得多个哈希值组,每个哈希值组包括所述各个样本对象各自对应的样本哈希值,且不同哈希值组中至少一个样本哈希值不同;
基于所述多个哈希值组,相应获得多个三元组损失;
基于获得的各个量化损失以及所述各个三元组各自对应的多个三元组损失,获得所述联合训练损失。
可选的,所述模型训练单元,具体用于:
固定所述多个特征映射网络中,除目标特征映射网络之外的其余特征映射网络的参数,所述目标特征映射网络为任一特征映射网络;
基于获得的联合训练损失,对所述目标特征映射网络进行参数调整。
可选的,所述检索输出单元,具体用于:
针对所述至少一个召回对象对应的候选特征向量,分别执行如下步骤:
针对一个候选特征向量,比较所述一个候选特征向量的第一维度与所述目标特征向量的第二维度;
若所述第一维度低于所述第二维度,则按照所述第一维度,对所述目标特征向量进行裁剪,并基于裁剪后的目标特征向量与所述一个候选特征向量,获得相应的向量相似度;
若所述第一维度与所述第二维度相同,则基于所述一个候选特征向量与所述目标特征向量,获得相应的向量相似度;
基于获得的各个向量相似度,对所述至少一个召回对象进行排序,获得所述对象检索结果。
一方面,提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述任一种方法的步骤。
一方面,提供一种计算机存储介质,其上存储有计算机程序指令,该计算机程序指令被处理器执行时实现上述任一种方法的步骤。
一方面,提供一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述任一种方法的步骤。
本申请实施例中,可针对所有库中的候选对象,将每个候选对象的候选特征向量,基于参考维度映射为相应的目标哈希值,这样,所得到的各个候选对象的目标哈希值都是同属于一个维度,相互之间具备度量学习特性,从而可以利用哈希值进行候选对象之间的比较。同样的,在进行对象检索时,可以针对待检索的目标对象,将对其提取到的目标特征向量,并基于参考维度映射为相应的目标哈希值,这样,则可以以目标哈希值与各个候选哈希值之间的哈希相似度,来获得至少一个召回对象,并利用特征向量之间的向量相似度,获得最终的对象检索结果。可见,通过将特征向量映射称为同一参考维度的哈希值,可以使得不管是原本特征向量是何种维度,都可以统一利用哈希值进行对象召回,而无需分别针对不同维度的特征向量分别进行检索;例如,将32维的特征向量和64维的特征向量均映射为128维的哈希值后,则可以统一利用映射后128维的哈希值进行召回,而无需分别针对32维和64维构建检索系统,以降低进行对象检索时所需占用的内存,并且提升了对象检索的效率。
附图说明
为了更清楚地说明本申请实施例或相关技术中的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请实施例提供的应用场景示意图;
图2为本申请实施例提供的对象检索系统的一种架构示意图;
图3为本申请实施例提供的对象检索方法的流程示意图;
图4为本申请实施例提供的哈希值的入库过程示意图;
图5为本申请实施例提供的不同情况时相似度计算的示意图;
图6为本申请实施例提供的哈希值确定模型的模型结构示意图;
图7为本申请实施例提供的特征提取网络的结构示意图;
图8为本申请实施例提供的哈希值确定模型的训练过程示意图;
图9为本申请实施例提供的特征映射网络的预训练过程的流程示意图;
图10为本申请实施例提供的特征映射网络的联合训练过程的流程示意图;
图11为本申请实施例提供的一种哈希值提取过程的示意图;
图12为本申请实施例提供的图像检索过程的示意图;
图13为本申请实施例提供的对象检索装置的一种结构示意图;
图14为本申请实施例提供的计算机设备的一种结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚明白,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
为便于理解本申请实施例提供的技术方案,这里先对本申请实施例使用的一些关键名词进行解释:
对象检索:本申请实施例的对象可以为任何可进行存储和检索的信息,例如可以为图像、视频、音乐、书籍或者文章等。对象检索其含义在于利用输入的待检索的对象在对象库中检索获取相同或者相似的对象,以对象为图像为例,则对象检索为图像检索,即用户输入待检索的图像,在图像库中检索与之相同或者相似的图像。
参考维度:或称参考域或者参考哈西域,在实际情况中,特征向量可能存在版本升级的情况,例如初始版本可能为32维,而随着技术的发展,可能需要升级到新版本,如新版本为64维,因而存在新旧版本无法通用的问题,因而本申请实施例提出了参考维度,参考维度是指将新旧版本的特征向量统一映射到该参考维度中,使得所有特征向量能在参考维度中进行统一的度量,以避免实际应用中所带来的许多问题。其中,参考维度的具体维数并不限制,但所有对象在参考维度中其维数是相同的,且具备度量学习特性,即相似的对象映射到参考维度后哈希值之间的距离更近,即哈希值仍然是相似的,不相似的对象映射到参考维度后哈希值之间的距离更远,即哈希值仍然是不相似的。
特征向量:或称embedding,特征向量是指对对象进行特征提取所得到的向量,例如对象为图像时,则可利用图像特征提取网络对图像进行特征提取,以得到能够表征该图像包含的特征的向量。一般而言,特征向量可以采用浮点型(float)数据类型。
哈希值:哈希值是对特征向量进行特征映射后所得到的。一般而言,哈希值是一种二进制(binary)型向量,因而相较于浮点型的特征向量而言,在进行检索时内存占用更小,并且基于汉明距离检索速度更快。
预训练:本申请实施例中的预训练是指对不同维度的特征映射网络分别进行的常规性学习过程,在预训练时,不同维度的特征映射网络的训练过程是独立进行的,互不干扰。
联合训练:又称兼容性训练,是指对预训练所得到的特征映射网络联合进行的微调学习过程。微调学习是指对于已训练好的模型,当仅需要更新部分网络参数,或者,增加新数据重新训练网络参数的这些任务均为微调学习,微调的目的是为了在原始模型参数上获得更好的模型或者获得某些下游任务。本申请实施例的联合训练其目的在于使得各个特征映射网络之间能够兼容,即通过对网络参数的调整,使得各个特征映射网络能够将特征向量映射至同一参考维度,以获得能够相互兼容的哈希值。
三元组损失(triplet loss):triplet loss是深度学习的一种损失函数,在训练目标是得到样本的特征表示向量(embedding)任务中,triplet loss也经常使用,比如图像的embedding。triplet loss的输入为三元组,一个三元组包括锚(Anchor,a)示例、正(Positive,p)示例、负(Negative,n)示例,通过优化锚示例与正示例的距离小于锚示例与负示例的距离,实现样本之间的相似性计算。
例如,在图像特征学习中,则一个三元组包括三个图像样本,即图像样本a、图像样本p和图像样本n,图像样本a和图像样本p为正样本,即图像样本a和图像样本p为相似图像样本或者为同一类别图像样本,图像样本a和图像样本n为负样本,即图像样本a和图像样本p为相似度较低的图像样本或者为不同类别图像样本,最终的优化目标是拉近图像样本a和图像样本p的embedding之间的距离,即使得图像样本a和图像样本p之间的第一相似度更高,拉远图像样本a和图像样本n的embedding之间的距离,即使得图像样本a和图像样本n之间的第二相似度更低,即使得正样本与负样本的距离差尽量大,一个三元组的三元组损失值用于表征第一相似度与第二相似度之间的差异程度,因而三元组损失值的目标函数定义如下:
L=max(d(a,p)-d(a,n)+margin,0)
其中,L为三元组损失值,d(a,p)表征图像样本a和图像样本p之间的距离,d(a,n)表征图像样本a和图像样本n之间的距离,margin是一个大于0的常数。
本申请实施例涉及人工智能和机器学习技术,主要基于人工智能中的机器学习而设计。
人工智能(Artificial Intelligence,AI)是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用系统。换句话说,人工智能是计算机科学的一个综合技术,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器。人工智能也就是研究各种智能机器的设计原理与实现方法,使机器具有感知、推理与决策的功能。
人工智能技术是一门综合学科,涉及领域广泛,既有硬件层面的技术也有软件层面的技术。人工智能基础技术一般包括如传感器、专用人工智能芯片、云计算、分布式存储、大数据处理技术、操作/交互系统、机电一体化等技术。人工智能软件技术主要包括计算机视觉技术、语音处理技术、自然语言处理技术以及机器学习/深度学习、自动驾驶、智慧交通等几大方向。
计算机视觉技术(Computer Vision,CV)是一门研究如何使机器“看”的科学,更进一步的说,就是指用摄影机和电脑代替人眼对目标进行识别、跟踪和测量等机器视觉,并进一步做图形处理,使电脑处理成为更适合人眼观察或传送给仪器检测的图像。作为一个科学学科,计算机视觉研究相关的理论和技术,试图建立能够从图像或者多维数据中获取信息的人工智能系统。计算机视觉技术通常包括图像处理、图像识别、图像语义理解、图像检索、光学字符识别(Optical Character Recognition,OCR)、视频处理、视频语义理解、视频内容/行为识别、三维物体重建、3D技术、虚拟现实、增强现实、同步定位与地图构建、自动驾驶、智慧交通等技术,还包括常见的人脸识别、指纹识别等生物特征识别技术。
语音技术(Speech Technology)的关键技术有自动语音识别技术和语音合成技术以及声纹识别技术。让计算机能听、能看、能说、能感觉,是未来人机交互的发展方向,其中语音成为未来最被看好的人机交互方式之一。
自然语言处理(Nature Language processing,NLP)是计算机科学领域与人工智能领域中的一个重要方向。它研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法。自然语言处理是一门融语言学、计算机科学、数学于一体的科学。因此,这一领域的研究将涉及自然语言,即人们日常使用的语言,所以它与语言学的研究有着密切的联系。自然语言处理技术通常包括文本处理、语义理解、机器翻译、机器人问答、知识图谱等技术。
机器学习是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。机器学习是人工智能的核心,是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域。机器学习和深度学习通常包括人工神经网络、置信网络、强化学习、迁移学习、归纳学习、式教学习等技术。
机器学习是人工智能的核心,是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域。机器学习和深度学习通常包括人工神经网络、置信网络、强化学习、迁移学习、归纳学习等技术。人工神经网络(Artificial Neural Network,ANN),从信息处理角度对人脑神经元网络进行抽象,建立某种简单模型,按不同的连接方式组成不同的网络。神经网络是一种运算模型,由大量的节点(或称神经元)之间相互联接构成,每个节点代表一种特定的输出函数,称为激励函数(activation function),每两个节点间的连接都代表一个对于通过该连接信号的加权值,称之为权重,这相当于人工神经网络的记忆,网络的输出则依网络的连接方式,权重值和激励函数的不同而不同,而网络自身通常都是对自然界某种算法或者函数的逼近,也可能是对一种逻辑策略的表达。
随着人工智能技术研究和进步,人工智能技术在多个领域展开研究和应用,例如常见的智能家居、智能穿戴设备、虚拟助理、智能音箱、智能营销、无人驾驶、自动驾驶、无人机、机器人、智能医疗、智能客服、车联网、自动驾驶、智慧交通等,相信随着技术的发展,人工智能技术将在更多的领域得到应用,并发挥越来越重要的价值。
本申请实施例提供的方案涉及人工智能的机器学习、语音技术以及计算机视觉技术等技术。本申请实施例采用语音技术或者计算机视觉技术能够从对象中提取得到对象信息,并采用机器学习技术学习得到的特征提取网络进行特征提取,从而得到表达对象特征的特征向量,并且利用机器学习技术学习得到的特征映射网络进行特征映射,以得到对象对应的哈希值,并利用哈希值以及特征向量两者结合,以实现对象的检索应用。
具体的,本申请实施例中在获取特征向量或者哈希值时,采用基于深度学习的人工神经网络模型。在本申请实施例中的特征向量或者哈希值均可分为两部分,包括训练部分和应用部分。其中,训练部分就涉及到机器学习这一技术领域,在训练部分中,通过机器学习这一技术训练人工神经网络模型(如后续提及的哈希值确定模型),使得基于本申请实施例中给出的多个样本对以及训练方法训练人工神经网络模型,并通过优化算法不断调整模型参数,直至模型收敛;应用部分用于使用在训练部分训练得到的人工神经网络模型中特征提取网络来对对象进行特征提取,获得特征向量以及利用训练得到的人工神经网络模型中特征映射网络来对特征向量进行特征映射,获得哈希值,获得的哈希值和特征向量可用于辅助实现对象的检索应用。另外,还需要说明的是,本申请实施例中人工神经网络模型可以是在线训练也可以是离线训练,在此不做具体限定,在本文中是以离线训练为例进行举例说明的。
下面对本申请实施例的设计思想进行简要介绍。
目前,在图像检索领域中,针对特征版本升级特征无法兼容的问题,通常可采用如下两种方式来解决:
(1)一种方式是将历史版本的特征向量库存全部更新到新版本,但是,在实际操作中,大规模的库存更新需要大量的显存资源,另一方面历史库存通常是快要被淘汰的,进行更新后收益可能并不明显,从而不仅浪费资源,还得不到相应的收益效果。
(2)另一种方式是分别建立不同的独立检索系统实现不同维度特征的检索。例如,针对32维特征建立32维特征检索系统,针对64维特征建立64维特征检索系统,但是通过不同的独立检索系统进行检索,则需要占用更大的内存,检索效率更低。
由此可见,目前尚未有能够对不同版本特征进行兼容性的检索的解决方案,由此,针对上述问题,若想最大程度的降低资源消耗,则不能对历史库存进行更新,因为这将消耗大量的资源,另外,为了提升检索效率,还需要实现不同版本的特征的统一检索。
鉴于此,本申请实施例提供一种基于对象检索方法,在该方法中,可针对所有库中的候选对象,将每个候选对象的候选特征向量,基于参考维度映射为相应的目标哈希值,这样,所得到的各个候选对象的目标哈希值都是同属于一个维度,相互之间具备度量学习特性,从而可以利用哈希值进行候选对象之间的比较。同样的,在进行对象检索时,可以针对待检索的目标对象,将对其提取到的目标特征向量,并基于参考维度映射为相应的目标哈希值。
这样,则可以以目标哈希值与各个候选哈希值之间的哈希相似度,来获得至少一个召回对象,并利用特征向量之间的向量相似度,获得最终的对象检索结果。可见,通过将特征向量映射称为同一参考维度的哈希值,可以使得不管是原本特征向量是何种维度,都可以统一利用哈希值进行对象召回,而无需分别针对不同维度的特征向量分别进行检索;例如,将32维的特征向量和64维的特征向量均映射为128维的哈希值后,则可以统一利用映射后128维的哈希值进行召回,而无需分别针对32维和64维构建检索系统,以降低进行对象检索时所需占用的内存,并且提升了对象检索的效率。
本申请实施例中,通过利用新旧版本的embedding维度监督下联合学习哈希模型,实现了统一的哈希值确定模型,来支持不同维度的embedding到同一哈希域的变换,进而方便后续应用中通过统一维度的哈希值作为召回依据,并结合embedding作为排序依据,实现检索系统的压缩和检索效率的提升。
此外,在进行联合学习时,通过预训练来保证不同版本特征向量对应的特征映射网络的哈希正常学习,并在预训练后,针对不同版本特征向量对应的特征映射网络进行兼容性训练学习,保证经过不同分支映射得到的哈希值能够满足度量学习特性,从而可以在应用中能够相互检索。
下面对本申请实施例的技术方案能够适用的应用场景做一些简单介绍,需要说明的是,以下介绍的应用场景仅用于说明本申请实施例而非限定。在具体实施过程中,可以根据实际需要灵活地应用本申请实施例提供的技术方案。
本申请实施例提供的方案可以适用于大多数对象检索场景和对象推荐场景中,例如视频或者图像等对象检索场景,以及视频或者图像等对象推荐场景等。如图1所示,为本申请实施例提供的一种应用场景示意图,在该场景中,可以包括终端设备101和服务器102。
终端设备101例如可以为手机、平板电脑(PAD)、笔记本电脑、台式电脑、智能电视、智能车载设备以及智能可穿戴设备等。终端设备101可以安装有对象检索应用,本申请实施例涉及的应用可以是软件客户端,也可以是网页、小程序等客户端,服务器则是与软件或是网页、小程序等相对应的后台服务器,不限制客户端的具体类型。
服务器102可以为终端设备101上安装的对象检索应用所对应的后台服务器,其可以实现对象检索系统的功能,来实现本申请实施例所提供的对象检索方法的步骤。例如可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、即内容分发网络(Content Delivery Network,CDN)、以及大数据和人工智能平台等基础云计算服务的云服务器,但并不局限于此。
服务器102可以包括一个或多个处理器1021、存储器1022以及与终端交互的I/O接口1023等。此外,服务器102还可以配置数据库1024,数据库1024可以用于存储各个对象特征向量、哈希值以及训练得到的模型参数等。其中,服务器102的存储器1022中还可以存储本申请实施例提供的对象检索方法的程序指令,这些程序指令被处理器1021执行时能够用以实现本申请实施例提供的对象检索方法的步骤,以实现对象检索过程。
同样的,在对象推荐场景中,则可以基于输入的目标对象,目标对象例如可以为用户最近浏览过的对象,并按照本申请实施例提供的对象检索方法的步骤,检索得到目标对象的多个相似对象,并将这些相似对象推荐给用户。
终端设备101和服务器102之间可以通过一个或者多个网络103进行直接或间接的通信连接。该网络103可以是有线网络,也可以是无线网络,例如无线网络可以是移动蜂窝网络,或者可以是无线保真(Wireless-Fidelity,WIFI)网络,当然还可以是其他可能的网络,本发明实施例对此不做限制。
需要说明的是,在本申请实施例中,终端设备101的数量可以为一个,也可以为多个,同样的,服务器102的数量也可以为一个,也可以为多个,也就是说对于,终端设备101或者服务器102的数量并不进行限制。
如图2所示,为本申请实施例提供的一种对象检索系统的架构示意图,在该架构中,包括特征提取模块、特征映射模块、检索模块、特征向量库和哈希库。
其中,特征提取模块包括对应于各个维度的特征提取模块,相应的每个特征提取模块对应一个维度的特征向量库,并利用各自的特征提取网络提取得到特征向量,并将特征向量存储到相应的特征向量库中。如图2所示,特征提取模块包括特征提取模块1~N,特征向量库包括维度1~N对应的特征向量库,每个特征提取模块对应于一个维度,如特征提取模块1提取得到的维度1的特征向量,存储至维度1对应的特征向量库中,特征提取模块2提取得到的维度2的特征向量,存储至维度2对应的特征向量库中,依此类推。需要说明的是,这里的维度1和维度2并不是指维数,而仅仅用于区分不同的维数,例如维度1可以为32维,维度2可以为64维等。
特征映射模块也可以包括对应于各个维度的特征映射模块,如图2所示的特征映射模块1~N,各个特征映射模块利用各自的特征映射网络,将相应维度的特征向量映射到同一维度,获得哈希值,并将哈希值统一存储至哈希库中,例如,特征映射模块1能够对维度1的特征向量进行特征映射,特征映射模块2能够对维度2的特征向量进行特征映射,以此类推。
检索模块用于实现对象检索,检索模块可对外提供检索接口,并基于检索接口提供的待目标对象进行检索。具体的,在进行检索时,可以利用任一版本的特征提取模块(如最新版本的特征提取模块)对该待目标对象进行特征提取获得特征向量,并利用相应的特征映射模块(如最新版本的特征映射模块)对特征向量进行特征映射得到哈希值,进而利用该哈希值在哈希库中进行匹配,获得相似度排序靠前的多个对象,作为召回对象,进而利用这些召回对象的特征向量与待目标对象的特征向量进行相似度计算,以获得召回对象的排序,作为对象检索结果返回。
示例性的,以新旧版本分别为32维和64维为例,即原本存在特征提取模块1,其提取得到32维的特征向量,但为了提升特征向量的表征效果,将32维升级扩展为64维,因而得到了新的特征提取模块2,为了不对历史库存的32维的特征向量进行更新,同时兼容32维和64维的检索,设计了相应的特征映射模块1和特征映射模块2,特征映射模块1对32维的特征向量进行映射,获得哈希值(以128维为例),特征映射模块2对64维的特征向量进行映射,同样获得128维的哈希值,获得哈希值统一纳入哈希库中,这样,在后续检索时,则可以利用128维的哈希值实现统一的检索过程,避免针对32维和64维需要分别进行检索。
本申请实施例中,针对旧版本的特征向量,根据相应的特征映射网络提取哈希值,存储至哈希库中,而特征向量记录在旧版本的embedding表中,如采用对象i-embedding特征向量这样的对象id与embedding特征向量一对一的映射关系;而针对新版本的特征向量,根据相应的特征映射网络提取哈希值,存储至哈希库中,特征向量记录在新版本的embedding表中。
在本申请实施例的检索架构中,哈希库存作为召回层的依据,以混合了新旧版本样本的哈希库直接提供给检索服务。在实际应用中,若需要提升检索速度,可以采用倒排(inverted,ivf)索引构建哈希索引系统。
在进行检索时,针对输入的目标对象query,可以采用新版本的特征提取网络和特征映射网络,提取得到特征向量和新哈希值,并根据提取的新哈希值从哈希库中召回对象,根据召回样本从新、旧版本的embedding表找到相应的embedding特征向量,计算召回样本与query的L2距离,根据距离从小到大排序返回。
针对新入库的对象,可以提取新版本的embedding特征向量和新版本的哈希值,哈希值送入哈希库中,embedding特征向量记录在embedding表中。
在一种可能的应用场景中,本申请实施例中涉及的相关数据(如特征向量以及哈希值等)以及模型参数可以采用云存储(cloud storage)技术进行存储。云存储是在云计算概念上延伸和发展出来的一个新的概念,分布式云存储系统是指通过集群应用、网格技术以及分布存储文件系统等功能,将网络中大量各种不同类型的存储设备(或称存储节点)通过应用软件或应用接口集合起来协同工作,共同对外提供数据存储和业务访问功能的一个存储系统。
在一种可能的应用场景中,为了便于降低检索的通信时延,可以在各个地区部署服务器102,或为了负载均衡,可以由不同的服务器102分别去服务不同地区的终端设备101,例如,终端设备101位于地点a,与服务地点a的服务器102建立通信连接,终端设备101位于地点b,与服务地点b的服务器102建立通信连接,多个服务器102组成一数据共享系统,通过区块链实现数据的共享。
对于数据共享系统中的每个服务器102,均具有与该服务器102对应的节点标识,数据共享系统中的每个服务器102均可以存储有数据共享系统中其他服务器102的节点标识,以便后续根据其他服务器102的节点标识,将生成的区块广播至数据共享系统中的其他服务器102。每个服务器102中可维护一个节点标识列表,将服务器102名称和节点标识对应存储至该节点标识列表中。其中,节点标识可为网络之间互联的协议(Internet Protocol,IP)地址以及其他任一种能够用于标识该节点的信息。
当然,本申请实施例提供的方法并不限用于图1所示的应用场景或者图2的架构中,还可以用于其他可能的应用场景,本申请实施例并不进行限制。对于图1所示的应用场景的各个设备所能实现的功能将在后续的方法实施例中一并进行描述,在此先不过多赘述。
本申请各实施例中提供的方法流程,可以通过图1中的服务器102或者终端设备101来执行,也可以由服务器102和终端设备101共同执行,这里主要以服务器102来执行为例进行介绍。
参见图3所示,为本申请实施例提供的对象检索方法的流程示意图。
步骤301:确定待检索的目标对象对应的目标特征向量,并基于参考维度,将目标特征向量映射为相应的目标哈希值。
本申请实施例中,针对待检索的目标对象,可以对其进行特征提取,获得目标对象的目标特征向量。其中,特征提取的过程可以采用已训练的特征提取网络来实现。
在实际应用中,当特征维度升级扩展后,可能存在对应于多个特征维度的特征提取网络,在进行目标对象的特征提取时,可以利用其中任意一个进行特征提取,也可以采用最新版本的特征提取网络进行特征提取,以最大程度的表征目标对象的特征。例如,当特征维度从32维升级到新的64维之后,则可以采用64维对应的特征提取网络进行特征提取,以提升所得到的特征向量的表征效果。
本申请实施例中,在特征向量的维度升级后,如从旧的32维升级到新的64维后,为了提升召回层检索效率,可以将所有特征向量映射到同一参考维度下,从而采用参考维度下的哈希值来进行检索召回,由于以哈希值表示的特征是一种binary特征,相对float浮点型的特征向量,内存占用小,基于汉明距离检索更快。因此,在获得目标对象的特征向量之后,还需要将特征向量映射到参考维度下,获得相应的以哈希值表示的特征。需要说明的是,哈希值并不是指一个值,而是表示一种以哈希表示的特征,其本身也可以理解成为一种哈西型的向量。
本申请实施例中,可以通过训练得到的特征映射网络实现映射的过程,该特征映射网络是与特征提取过程所使用的特征提取网络相对应的,例如在利用32维对应的特征提取网络提取得到32维的特征向量后,则需要利用32维对应的特征映射网络进行特征映射;而若是64维对应的特征提取网络提取得到64维的特征向量后,则需要利用64维对应的特征映射网络进行特征映射。
其中,特征提取和特征映射的过程将在后续的实施例中进行详细的介绍,因而在此先不过多介绍。
步骤302:获得各个候选对象各自对应的候选哈希值;其中,每个候选哈希值,是基于参考维度,对相应的候选对象的候选特征向量进行映射得到的。
本申请实施例中,候选对象是指待检索的对象库中的一个或者多个对象,例如进行图像检索时,则候选对象为图像库中的各个图像。为了对目标对象与候选对象的特征向量或者哈希值区分开来,采用了不同的名称进行表达,但是候选哈希值与目标哈希值的提取过程是类似的,即同样是在提取得到候选对象的候选特征向量之后,采用特征映射网络进行特征映射后得到的。
在实际应用时,可以预先将对象库中的各个候选对象提取候选哈希值,并存储至哈希库中,那么在后续的检索时,则可以直接在哈希库中获得这些候选哈希值,以进行对象的召回,提升对象的召回速度。参见图4所示,将所有候选对象的候选特征向量提取哈希值,统一入库到哈希库中。
具体的,针对各个候选对象,分别获得相应的候选特征向量,并可调用已训练的哈希值确定模型中,与各个候选对象各自的候选特征向量的维度对应的特征映射网络,分别对各个候选对象各自的候选特征向量进行映射,获得各个候选对象各自对应的候选哈希值。
其中,哈希值确定模型包括分别进行预训练后进行了联合训练的多个特征映射网络,每个特征映射网络对应于候选特征向量的一种维度,参见图4所示,不同维度的候选特征向量进行哈希值的提取时,采用每种维度对应的特征映射网络来进行,从而各个候选哈希值可能是由不同版本的候选特征向量映射得到的。
以特征维度从32维升级到64维为例,则32维的库存特征向量采用32维对应的特征映射网络计算各个32维的候选特征向量的哈希值,而对64维的库存特征向量采用64维对应的特征映射网络计算各个64维的候选特征向量的哈希值,由于各个维度对应的特征映射网络都经过兼容训练,故不同维度特征向量得到的哈希值可以实现相互检索,这样,在构建基于哈希值的检索库(即上述的哈希库)时可以将不同维度体系进行合并,实现一套哈希检索系统兼容不同维度的浮点型特征向量的检索。
需要说明的是,特征维度的升级本申请实施例并不限于从32维升级到64维,也可以是升级到其他的维度,例如256维或者更高的512维等等。
步骤303:基于各个候选哈希值各自与目标哈希值之间的哈希相似度,从各个候选对象中确定出至少一个召回对象。
本申请实施例中,目标哈希值与候选哈希值是基于同样的参考维度进行映射的,不仅维度相同,并且满足度量学习特性,因而可以实现相互之间的检索,进而,可以计算各个候选哈希值与目标哈希值之间的哈希相似度,并利用哈希相似度对各个候选对象进行排序,以选取哈希相似度排序较高的至少一个候选对象镜像召回。
在一种实施方式中,哈希值之间的相似度可以采用汉明距离进行衡量,即,计算目标哈希值分别与各个候选哈希值之间的汉明距离,汉明距离越近的两个对象,哈希相似度越高。
步骤304:基于目标特征向量,与至少一个召回对象各自对应的候选特征向量之间的向量相似度,获得目标对象的对象检索结果。
本申请实施例中,虽然哈希值能够实现不同维度特征向量之间的相互检索,但在进行特征映射时,不可避免的会产生特征表征的损失,即特征向量相较哈希值而言,显然更能够准确的表达一个对象的特征,因此,在利用哈希值进行对象召回后,为了准确的得到检索结果,还可以基于目标特征向量,与至少一个召回对象各自对应的候选特征向量之间的向量相似度,来获得本次的对象检索结果,由于通过哈希值可以快速的进行候选对象的召回,而召回的对象相较于对象库中大量的候选对象而言,其数量显然是更少的,因而目标特征向量与少量召回对象的候选特征向量的相似度计算能够更快的进行,提升整个对象检索过程的速度,进而提升检索效率。
具体的,可以基于向量相似度,对各个召回对象进行重排序,从而得到目标对象的对象检索结果;或者,在基于向量相似度进行重排序之后,对各个召回对象进行二次筛选,以从中获取向量相似度更高的召回对象,作为最终的对象检索结果。
在一种可能的实施方式中,向量相似度可以采用任意向量之间相似度度量,例如可采用余弦相似度或者欧式距离等。
本申请实施例中,考虑到召回对象中可能涉及到不同维度的特征向量,而目标特征向量与这些召回对象的候选特征向量的维度可能相同,也可能不同,因而在计算向量相似度时需要采用不同的方式,以准确的计算特征向量之间的相似度。
具体的,针对一个候选特征向量,比较该候选特征向量的第一维度与目标特征向量的第二维度,若第一维度低于第二维度,则按照第一维度,对目标特征向量进行裁剪,并基于裁剪后的目标特征向量与一个候选特征向量,获得相应的向量相似度,例如第一维度为32维,第二维度为64维,即第一维度低于第二维度,则需要按照32维对目标特征向量进行裁剪,例如可以将目标特征向量的后32位裁剪掉,而采用前32位与候选特征向量进行向量相似度的计算;若第一维度与第二维度相同,则基于一个候选特征向量与目标特征向量,获得相应的向量相似度,例如第一维度与第二维度均为64维,则可以直接计算候选特征向量与目标特征向量之间的向量相似度。进而,基于获得的各个向量相似度,对至少一个召回对象进行排序,获得对象检索结果。
在实际应用时,当目标特征向量采用最新版本的特征提取网络进行特征提取时,最新版本的特征提取网络的维度通常较高,也就是说,有两种情况存在,即各个候选特征向量的维度与目标特征向量相同,以及各个候选特征向量的维度低于目标特征向量,下面分别进行介绍。
(1)若召回对象为升级后的新对象,即该召回对象的候选特征向量与目标特征向量的维度相同,均为最高的维度,则可直接计算这两个特征向量之间的向量相似度。参见图5所示,为不同情况时相似度计算的示意图,当目标特征向量与召回对象的候选特征向量均为64维时,即维度相同,则可直接以当前的两个特征向量进行相似度的计算。
(2)若召回对象为升级后的旧对象,即该召回对象的候选特征向量的维度低于目标特征向量的维度,则需要对目标特征向量进行一定的处理,使其与候选特征的维度相同后再来进行相似度的计算。
在一种可能的实施方式中,可以选取目标特征向量中,与该候选特征向量维数相同的一部分,来与候选特征向量计算向量相似度。参见图5所示,当目标特征向量为64维,而召回对象的候选特征向量为32维时,则以目标特征向量的钱32位与候选特征向量进行相似度的计算,当然,亦可以选择后32位或者其他为32位的部分来与候选特征向量进行相似度的计算
在一种可能的实施方式中,还可以对目标特征向量进行池化处理,以得到与候选特征向量的维度相同的向量。例如当目标特征向量为64维,而召回对象的候选特征向量为32维时,可将目标特征向量池化为32维的向量,再以池化后的向量来计算向量相似度。
本申请实施例中,由于本申请的对象检索方法中涉及到的哈希值可以是基于已训练的哈希值确定模型进行提取的,下面,则先对哈希值确定模型的训练过程进行介绍。请参见图6,图6为本申请实施例提供的哈希值确定模型的模型结构示意图。
其中,哈希值确定模型包括对应于不同维度的特征提取网络和特征映射网络,如图6中所示,输入的对象经特征提取网络1进行特征提取后,获得特征向量em1,em1表示一个维度的特征向量,而不是特定的一个特征向量,进而,再经与特征提取网络1对应的特征映射网络1进行特征映射后,获得哈希值hash1,同理,其余以此类推。
本申请实施例中,特征提取网络可以为任意可以编码得到特征向量的神经网络,例如可以采用卷积神经网络(Convolutional Neural Networks,CNN)或者残差网络(Residual Network,ResNet),如基于resnet101、resnet34、Densenet、mobilenet或者GoogleNet等基础embedding模型的特征提取网络,当然,也可以采用其他可能的网络结构,本申请实施例对此不做限制。
参见图7所示,为本申请实施例提供的一种特征提取网络的结构示意图。其中,特征提取网络可以包括基础特征提取层和特征压缩层,基础特征提取层对各个对象分别进行至少一次基础特征提取,获得相应的基础特征向量,进而特征压缩层分别对获得的各个基础特征向量进行特征压缩,获得各个对象各自对应的特征向量。
在实际应用时,为了提升哈希值确定模型的收敛速度,可以采用经过预训练的特征提取网络,即可以将经过预训练的特征提取网络的基础特征参数应用到本申请实施例提供的哈希值确定模型中,从而在进行哈希值确定模型的特征映射网络的训练时,则无需更新特征提取网络的参数,参见图5所示,则是以特征提取网络采用resnet101为例示出的结构示意。
如表1所示,为采用resnet101为例的基础特征提取层的结构参数。
其中,卷积层1输出的特征图大小为300x500,卷积层1的卷积核大小为7x7,通道数为64,卷积步长(stride)为2;卷积层2最终输出的特征图大小为150x250,卷积层2包括一个大小为3x3且步长为2的最大池化层,还包括3种大小的卷积核,分别为大小为1x1,通道数为64的卷积核、大小为3x3,通道数为64的卷积核以及大小为1x1,通道数为256的卷积核,后续卷积层3、4和5则依次类推。
表1
本申请实施例中,上述基础特征提取层的参数初始化,如上述表1中的Conv1~Conv5可以采用Imagenet预训练模型的模型参数,也就是在ImageNet数据集上预训练的ResNet101的参数,当然,也可以采用openimage预训练模型的模型参数,也就是在openimage数据集上预训练的基础特征提取层。
本申请实施例中,特征压缩层用于将把基础特征提取层提取得到的稀疏高维向量压缩至稠密的低维向量。由于计算机内存空间有限,对于大规模检索而言特征越紧凑存储空间越小,则在同一时间(或者同一内存下)能容纳更大的检索库进行相似度对比,因此,进而特征压缩的目的除了可以让特征更稠密外,还可以减少特征存储空间,还可以提升后续向量检索效率。
本申请实施例中,不同特征提取网络的网络结构可以相同,但即使采用相同的网络结构,由于不同的特征提取网络采用不同的训练过程进行训练,因而网络参数值也是有所不同的。当然,不同特征提取网络的网络结构也可以不同,例如不同的特征提取网络可以包括相同的基础特征提取层,而在特征压缩层上有所不同。
下面,以特征维度从32维升级到64维为例,则特征映射网络包括分别对应于32维的特征映射网络1和对应于64维的特征映射网络2,特征映射网络1和特征映射网络2可采用相同的基础特征提取层(例如表1所示ResNet101),而在特征压缩层上有所不同。参见图7所示,特征映射网络1包括基础特征提取层和特征压缩层1,特征压缩层1可以包括池化(pooling)层1和全连接(fc)层1,即经基础特征提取层提取得到的基础特征向量经池化层进行池化后,再经fc1进行全连接操作,获得32维的特征向量;特征映射网络2包括基础特征提取层和特征压缩层2,特征压缩层2可以包括全连接层2,即经基础特征提取层提取得到的基础特征向量经fc2进行全连接操作,获得64维的特征向量。
如表2所示,为特征压缩层1的一种可能的结构参数示意。
层名称 输出特征大小 层操作
池化层 1x2048 最大池化(Max pool)
全连接层1 1x32 全连接
表2
其中,池化层用于对基础特征提取层输出的基础特征向量进行池化处理,如表2所示,可获得大小为1x2048的特征向量,池化层可采用如表2所示的最大池化,当然也可以采用其他可能的池化方式,如均值池化等。全连接层1对池化之后的特征向量进行压缩,获得维度更低的特征向量,如表2所示,全连接层1获得的特征向量大小为1x32。
如表3所示,为特征压缩层2的一种可能的结构参数示意。
层名称 输出特征大小 层操作
全连接层2 1x64 全连接
表3
其中,全连接层2对基础特征向量进行映射,获得维度更低的特征向量,如表3所示,全连接层2获得的特征向量大小为64。
本申请实施例中,特征映射网络可以为任意可实现映射的神经网络,参见表4和表5所示,分别为本申请实施例提供的一种可能的特征映射网络1和特征映射网络2的结构参数示意。
层名称 输出特征大小 层操作
hash1 1x128 全连接
表4
其中,特征映射网络1包括哈希(hash)层1,hash1对特征提取网络1输出的特征向量进行映射,获得在参考维度(如128维)下的哈希值,如表4所示,经hash1获得的哈希值大小为128。
层名称 输出特征大小 层操作
hash2 1x128 全连接
表5
其中,特征映射网络2包括哈希hash2,hash2对特征提取网络2输出的特征向量进行映射,获得在参考维度(如128维)下的哈希值,如表5所示,经hash2获得的哈希值大小为128。
需要说明的是,虽然特征映射网络1和特征映射网络2的结构相同,但是其包含的网络参数值可以是不同的。并且,在实际应用中,还可以采用其他的结构,例如,一种可能的方式是对表4或者表5的结构进行加深,如增加多个全连接层、线性整流函数(RectifiedLinear Unit,ReLU)激活层或者卷积层等,另一种可能的方式是采用其他深度神经网络结构。
需要说明的是,上述的模型结构以及参数均为一种可能性的示例,在实际应用中也可以使用其他可能的结构和参数,本申请实施例对此不做限制。
参见图8所示,图8为本申请实施例提供的哈希值确定模型的训练过程示意图。本申请实施例中,所需要的是一种支持特征扩张的兼容性哈希值确定模型,指在特征向量的特征扩张下,例如从旧的32维特征向量升级到新的64维特征向量后,为了提升召回层检索效率,需要采用哈希值进行检索,进而产生了新旧两种特征向量的哈希值的相互兼容问题,即需要使得新特征向量的哈希值与旧特征向量的哈希值可相互检索,从而应用中避免新旧哈希两个检索系统,以及避免新旧特征不可相互检索的问题,从而这可以认为时一种针对特征维度升级时新特征向量的哈希值在提供新检索效果的同时支持旧特征向量的哈希值检索的任务设计。
本申请实施例中,哈希值确定模型的训练思路是首先保证新旧哈希映射网络的哈希值正常学习,进而在学习到新旧哈希映射网络后,对两个哈希映射网络进行兼容性训练学习,保证经过两个分支提取到的哈希满足度量学习特性,从而可以在应用中相互检索,在应用上,可以分别根据新、旧库存特征向量提取对应的哈希值,建立一个统一的哈希库,检索中根据待检索的,目标对象提取最新版的哈希值进行检索。应用中,除了历史库存维护旧特征向量和旧哈希值外,新增的对象量都会进入新版本的特征向量库存。
因此,哈希值确定模型的训练过程,可以划分为2个阶段,即预训练阶段和联合训练阶段。其中,预训练阶段是指对各个特征映射网络分别进行训练,在训练过程中,分别得到各自的预训练损失(loss),并基于预训练loss进行网络参数的调整,如8所示,特征提取网络1训练时获得预训练loss1,并基于预训练loss进行特征提取网络1的网络参数调整,其余特征提取网络以此类推;联合训练阶段则是对各个特征映射网络进行兼容性训练学习,保证经过两个分支提取到的哈希满足度量学习特性,从而可以在应用中相互检索,因此,在训练中,以联合训练loss衡量联合训练过程的收敛程度。
本申请实施例中,由于本方法中各个特征提取网络均为已经学习好的embedding模型,不需要再学习,故后续各个特征提取网络的模型参数固定不参与哈希学习,仅学习特征映射网络,因此在预训练或者联合训练阶段,特征提取网络的参数均可以是固定的,即不参与训练过程的更新,从而能够加快预训练或者联合训练的收敛速度。
下面,将分阶段对训练过程进行介绍。
(1)预训练阶段
由于预训练阶段中,各个特征映射网络的预训练过程均是相同的,因而这里以一个特征映射网络的预训练过程为例进行介绍,参见图9所示,为特征映射网络的预训练过程的流程示意图。
步骤901:获得多个样本对。
其中,每个样本对包括对象相似度大于相似度阈值的两个样本对象,即每个样本对为正样本对。以样本为图像为例,则每个样本对包含标注了两张图是否为相同或者相似图的样本对的图像对。
步骤902:将多个样本对划分为至少一个批次,并基于至少一个批次中各个批次包括的至少两个样本对,构造各个批次各自对应的多个三元组。
本申请实施例中,基于多个样本进行epoch迭代训练,每次迭代训练将多个样本对划分为batch-size(bs)个批次,每个批次用于一次参数更新过程,且每个批次包含多个样本对,并需要针对每个批次构成相应的多个三元组。例如,在训练中会对所有样本每bs个样本分成一批,模型每学习完一个批次更新一次参数,直到所有样本都已经学习完,完成一次模型迭代。
具体的,由于不同样本对构造三元组的过程相同,这里以一个批次中的一个样本对为例进行介绍。针对该样本对,分别获得该样本对与该批次中其余样本对之间的对象相似度,进而基于获得的各个对象相似度,从其余样本对中选取出相似度较大的至少一个样本对,并将这些样本对包含的样本对象作为负样本,并分别与一个样本对进行组合,获得至少一个三元组。其中,每个三元组包括对象相似度大于第一相似度阈值的第一样本对象和第二样本对象,以及与所述第一样本对象和所述第二样本对象的对象相似度小于第二相似度阈值的第三样本对象,第一样本对象又可称为锚(anchor)样本对象,第二样本对象又可称为正(positive)样本对象,第三样本对象又可称为负(negative)样本对象,positive样本对象为锚anchor样本对象的正样本,negative样本对象为锚anchor样本对象的负样本。
由于每个样本对均包含两个样本对象,在计算对象相似度时,可以选取其中一个样本对象来计算对象相似度以及三元组的构造,例如,每个样本对包含,则可以选取锚样本对象来计算对象相似度。
本申请实施例中,对象相似度的计算可以采用任意相似度衡量方式,例如余弦相似度或者欧式距离等等。
示例性的,以每个样本对包含两张图像为例,对每个batch的样本对(总共是bs对)挖掘三元组时,针对某个样本对x,选取其中一个图像A,并从剩余的bs-1个样本对中,每个样本对选择一个图像B,计算其与样本对x中图像A的欧式距离,并按照欧式距离从小到大进行排序,选取排序靠前的10个图像B作为负样本,分别与样本对x中的正样本组成三元组,故每个样本对可以产生10个三元组,整个batch得到10*bs个三元组。上述从小到大排序后的图像相对样本对x的图像A是从相似到不相似的排序,由于三元组学习中难负样本对模型的效果更好,故选择最难的10个负样本构成三元组。
需要说明的是,虽然是以相似度进行模型学习,实际上每一图像在训练集中都存在相同图(指同一张图,如视频中同一故事情节中的前后帧常构成相同图)、极度相似图(如对同一个物体的不同角度拍摄等)、语义相似图(如图中都是金毛狗,但却是两只不同金毛)以及不同图,本申请实施例主要针对相同图以及极其相似图进行学习,故对于某一张图像来说,所有的不同图都可以称为负样本,上述相同图以及极度相似图则均可视为正样本。
本申请实施例中,上述构造的各个批次的三元组可以用于后续的迭代训练过程,以对特征映射网络进行多次参数调整。需要说明的是,上述三元组的构造过程可以是在进行训练之前完成的,那么也就是说,每次迭代训练过程可以采用相同的三元组样本,当然,也可以是在训练过程中完成的,例如在进入每次迭代训练之前,重新进行批次的划分,并重新在每个批次中构造三元组。同样的,上述的三元组构造也适用于联合训练阶段。
本申请实施例中,在进入实际的训练之前,需要对哈希值确定模型进行模型初始化。其中,特征提取网络则可采用已训练得到的参数进行初始化,例如当从旧版本的32维升级到新版本的64维时,旧版本的特征提取网络则可采用旧模型参数进行初始化,而新版本的特征提取网络采用新模型参数进行初始化,并且特征提取网络的模型参数可以不参与学习;而特征映射网络由于还未进行过学习,则可采用其他初始化方法进行初始化,例如可以采用0均值、1方差的正态分布产生的随机数作为模型参数进行初始化。
同时,还需要对模型训练过程的学习参数进行设置,例如可以设置学习参数为特征映射网络的参数,学习率采用lr1=0.0005的学习率,学习过程中对全量数据进行epoch轮迭代,每轮迭代处理一次全量样本,每轮迭代中把全量样本每bs个样本对为一批次,分成Nb个批次,对于每个batch,进行一次模型参数的更新。当然,这里只是给出学习参数设置的一种可能性示例,在实际应用中,还可以基于实际需求进行适应性的调整。
步骤903:调用哈希值确定模型中的特征提取网络,对当前批次的多个三元组包括的样本对象进行特征提取,获得相应的样本特征向量。
其中,这里的特征提取网络是指当前训练的特征映射网络所对应的特征提取网络,由于一次迭代训练过程包括将划分的所有批次分别学习一次,而每个批次的学习过程是类似的,因而这里均以一个批次的学习过程为例进行介绍。
本申请实施例中,针对当前所学习的批次,可以调用相应的特征提取网络,对当前批次的每个三元组所包括的样本对象进行特征提取,以获得每个样本对象所对应的样本特征向量。
步骤904:针对获得的各个样本特征向量,调用特征映射网络进行特征映射,获得相应的样本哈希值。
参见上述的图6所示,训练时特征映射网络对输入的一个样本对象进行前向计算得到预测结果,输出相应的样本哈希值。
步骤905:基于获得的各个样本哈希值,获得该特征映射网络的哈希损失,哈希损失用于表征一个特征映射网络在预训练时的收敛程度。
本申请实施例中,参见图8所示,在获得各个样本对象的样本哈希值之后,则可以基于各个样本哈希值确定特征映射网络的哈希损失。
具体的,由于采用了构造的三元组进行训练,因此可以基于各个三元组来确定特征映射网络的哈希损失。
以一个三元组为例,可以基于该三元组包括的各个样本对象各自对应的样本哈希值,获得该三元组的三元组损失,同时,对本批次的各个样本对象各自对应的样本哈希值进行量化处理,分别获得相应的量化哈希值,并基于获得的各个量化哈希值,获得各个样本对象各自对应的量化损失,进而可以基于获得的各个三元组损失和各个量化损失,获得一个特征映射网络的哈希损失。
参见下面式子,为哈希损失的计算公式:
Lhash=w1Ltriple+w2Lquantization
其中,Lhash表示哈希损失,Ltriple表示三元组损失,Lquantization表示量化损失,w1和w2分别为三元组损失和量化损失的权重值,一般而言,量化损失并非出于主导的学习地位,为了有限保证度量特性,可将w1设置得大于w2,例如w1为1,w2为0.1,当然,也可以为其他值,对此并不进行限制。
本申请实施例中,在每个batch的样本中找到三元组(a,p,n)后,对这些三元组包含的样本对象的哈希值根据下述式子计算三元组损失:
Ltriple=max(||xa-xp||-||xa-xn||+α,0)
其中,||xa-xp||表示一个三元组中样本对象a与样本对象p,即正样本对之间的L2距离,||xa-xn||表示一个三元组中样本对象a与样本对象n,即负样本对之间的L2距离,α为margin,例如可以设为20,即三元组损失的目的是使得样本对象a与样本对象p的距离比样本对象a与样本对象n的距离大于20。
本申请实施例中,量化损失用于表征样本哈希值与量化哈希值之间的差异程度。针对一个样本对象而言,可以调用符号函数,分别对该样本对象的样本哈希值包括的各个指示位进行量化处理,获得该样本哈希值对应的量化哈希值,从而基于一个样本哈希值与相应的量化哈希值中相同指示位的差值,获得一个样本哈希值对应的量化损失。
具体而言,特征映射网络最终得到的哈希值为一种二值化特征,由于二值化特征的目标为输出(-1,1)的量化值,由此可对特征映射网络的输出采用符号函数进行量化,即当值<0时为0,当值≥0为1,因而量化损失的目的是使的最终输出的哈希值的每一个位上的值靠近-1或1。在进行训练时,可以采用符号函数产生量化学习任务的目标编码,进而然后采用回归损失(regression loss)使特征映射网络的输出哈希值u与目标编码b的L2距离变小。训练中特征量化的目的是使的输出结果要么非常接近1,要么非常接近-1,应用时量化分支的每一维度输出根据其符号取0或1作为二值量化向量。
例如,符号函数可以采用如下式的sign函数,对哈希值u的每一位ui分别通过符号函数计算其目标编码bi,最终哈希值u的目标编码为b:
量化损失可采用如下式子进行计算,这里是以参考维度为128维为例:
在一种可能的实施方式中,通过上述量化损失计算公式获得每个样本对象对应的量化损失后,在计算整个特征映射网络的量化损失时,可以以各个样本对象的量化损失总和作为特征映射网络的量化损失,同样的,在获得当前批次的各个三元组的三元组损失之后,也可以获得各个三元组的三元组损失总和,从而按照上述的哈希损失计算公式,计算得到特征映射网络的哈希损失。
在另一种可能的实施方式中,还可以通过上述量化损失计算公式获得每个样本对象对应的量化损失后,针对每个三元组,计算每个三元组对应的三个样本对象的量化损失总和,从而按照上述的哈希损失计算公式,计算得到每个三元组的哈希损失,进而基于各个三元组的哈希损失,获得特征映射网络的哈希损失。
步骤906:确定特征映射网络是否满足收敛条件。
本申请实施例中,收敛条件可以包括如下条件中的至少一个:
(1)上述的哈希损失小于设定的损失阈值。
(2)迭代训练次数达到设定的次数阈值。
(3)记录每个epoch下的哈西损失均值,哈西损失均值连续多次未变化,例如持续5个epoch未下降。
步骤907:若步骤906为否,则基于获得的哈希损失,对一个特征映射网络进行参数调整。
当模型训练进程不满足上述条件的任一条件时,则特征映射网络不满足收敛条件,则需要基于哈希损失,对特征映射网络进行参数调整,并基于调整后的特征映射网络继续进行下一次训练。
具体的,模型参数的调整可以采用随机梯度下降(stochastic gradientdescent,SGD)法,把上一步的哈西损失进行梯度后向计算并得到全部模型参数的更新值,并更新特征映射网络。
当模型训练进程满足上述条件的至少一个时,则特征映射网络满足收敛条件,预训练过程结束,则需要进行多分支模型的兼容训性练。此时每个batch产生的样本对象同时经过图6中的各个特征提取网络及后续特征映射网络得到各个版本对应的哈希值,然后对各个版本对应的哈希值除了计算上述的哈西损失之外,还需要计算兼容度量损失。下面将具体进行介绍。
(2)联合训练阶段
参见图10所示,为特征映射网络的联合训练过程的流程示意图。
步骤1001:基于多个样本对,构造多个三元组。
本申请实施例中,步骤1001的过程与步骤901和902的过程类似,因而这里可刹那间上述相应部分的介绍,此外,为了降低资源消耗,还可以利用步骤901和902的过程所构造的三元组来进行联合训练。
步骤1002:调用哈希值确定模型中的各个特征提取网络和特征映射网络,获得当前批次的多个三元组包括的样本对象对应的样本哈希值集合。
具体的,一个样本哈希值集合对应一个样本特征向量,且每个样本哈希值集合中的一个样本哈希值对应于一个特征映射网络。以一个样本对象为例,可通过哈希值确定模型中的各个特征提取网络进行特征提取,获得各个特征提取网络对应的样本特征向量,并针对每个特征向量,采用相应的特征映射网络,获得相应的各个样本哈希值,各个样本哈希值组成该样本对象的样本哈希值集合。
以哈希值确定模型包括32维和64维两条分支模型为例,参见图11所示,针对样本对象A,可通过32维对应的特征提取网络获得32维的样本特征向量,并通过32维对应的特征映射网络,对32维的样本特征向量进行特征映射,获得128维的样本哈希值;同理,可通过64维对应的特征提取网络获得64维的样本特征向量,并通过64维对应的特征映射网络,对64维的样本特征向量进行特征映射,获得128维的样本哈希值,即样本对象A的样本哈希值集合包含两个样本哈希值,为方便区分,这里以新哈希值(升级后的64维特征向量对应的哈希值)和旧哈希值(升级前的32维特征向量对应的哈希值)来表示。
步骤1003:基于获得的各个样本哈希值集合,获得联合训练损失。
本申请实施例中,联合训练损失同样包括两部分,即量化损失和三元组损失,量化损失的计算与上述预训练计算相同,即基于各个样本对象各自对应的样本哈希值进行量化后,比较样本哈希值和量化哈希值,即可获得各个样本对象各自对应的量化损失。而由于这里每个三元组中,每个样本对象所得到的为一个样本哈希值损失,从而三元组损失计算与预训练阶段有所不同。
具体的,以本批次参与训练的其中一个三元组为例,这里的兼容性由于需要考虑新旧哈希的相互检索效果,故对三元组样本不再从同一个特征映射网络得到的哈希值进行表征,而是遍历不同的特征映射网络抽取表征,因而,可以基于该三元组包括的各个样本对象各自对应的样本哈希值集合,获得多个哈希值组,每个哈希值组包括各个样本对象各自对应的样本哈希值,且不同哈希值组中至少一个样本哈希值不同,从而基于多个哈希值组,相应获得多个三元组损失,每个哈希值组对应一个三元组损失。
延续上述哈希值确定模型包括32维和64维两条分支模型的例子,则一个三元组包括的三个样本对象表示为(a,p,n),而每个样本对象的样本哈希值集合包含两个样本哈希值,即样本对象a的样本哈希值集合为(a32,a64),样本对象p的样本哈希值集合为(p32,n64),样本对象n的样本哈希值集合为(n32,n64),则相互组合分别可以产生6个哈希值组,即(a32,p32,n32)、(a32,p32,n64)、(a32,p64,n32)、(a32,p64,n64)、(a64,p64,n64)和(a64,p64,n32),而针对每个哈希值组,可以利用上述的三元组损失计算公式计算得到一个三元组损失。若本批次输入了bs个样本对产生10倍的三元组,每个三元组经过6种混合后,则可以得到产生60倍哈希值组,从而计算这些三元组损失,并将其加入到总损失中。
本申请实施例中,针对每个三元组,可以将其对应的各个哈希值组计算得到的三元组损失计算均值,以作为该三元组的兼容三元组损失,从而结合各个样本对象的量化损失,来得到联合训练损失。
在一种实施方式中,可以将获得每个样本对象对应的量化损失后,以各个样本对象的量化损失总和作为特征映射网络的量化损失,同样的,在获得当前批次的各个三元组的兼容三元组损失之后,也可以获得各个三元组的兼容三元组损失总和,从而将特征映射网络的量化损失总和与兼容三元组损失总和加权求和,计算得到特征映射网络的联合训练损失。
在另一种可能的实施方式中,还可以获得每个样本对象对应的量化损失后,针对每个三元组,计算每个三元组对应的三个样本对象的量化损失均值,从而将三元组对应的量化损失均值与兼容三元组损失总和加权求和,计算得到三元组的联合训练损失,进而基于各个三元组的联合训练损失,获得特征映射网络的联合训练损失。
步骤1004:确定特征映射网络是否满足收敛条件。
本申请实施例中,收敛条件可以包括如下条件中的至少一个:
(1)上述的联合训练损失失小于设定的损失阈值。
(2)迭代训练次数达到设定的次数阈值。
(3)记录每个epoch下的联合训练损失均值,联合训练损失均值连续多次未变化,例如持续3个epoch未下降。
步骤1005:若步骤1004为否,则基于获得的联合训练损失,对各个特征映射网络进行参数调整。
当模型训练进程不满足上述条件的任一条件时,则联合训练过程还不满足收敛条件,则需要基于联合训练损失,对特征映射网络进行参数调整,并基于调整后的特征映射网络继续进行下一次训练。
当模型训练进程满足上述条件的至少一个时,则特征映射网络满足收敛条件,预训练过程结束。
在实际应用中,预训练的各个特征映射网络一般训练5~10个epoch即可收敛,当两个各个特征映射网络预训练结束后,开始进行兼容性训练,采用得到的联合训练损失,进行各个特征映射网络兼容性更新,直到联合训练损失连续3个epoch不再下降则停止训练。
在一种可能的实施方式中,在联合训练阶段,可基于获得的联合训练损失,对所有特征映射网络的参数进行调整。
在一种可能的实施方式中,还可以固定多个特征映射网络中,除目标特征映射网络之外的其余特征映射网络的参数,并基于获得的联合训练损失,对目标特征映射网络进行参数调整。其中,目标特征映射网络可以为任意特征映射网络,例如可以为最新版本的特征映射网络。
具体的,仅对最新版本的特征映射网络进行调整,以通过微调新特征映射网络使新哈希值对旧哈希值兼容。即,在进行网络参数调整时,对于已经训练好的旧哈希值,如某业务已经采用了旧哈希值、旧特征向量一段时间,库存中已经有旧哈希值了,此时不能对该分支模型更新特征映射网络的参数和旧哈希值,故学习时,固定多个特征映射网络中维数版本中,除维数版本最新的特征映射网络之外的其余特征映射网络的参数,对维数版本最新的特征映射网络进行的参数调整,即旧特征映射网络的参数是固定的,兼容学习仅对后续的特征映射网络有用,例如上述包括32维和64维两条分支模型的例子,则可以仅对64维对应的特征映射网络的采纳数进行调整。
需要说明的是,在联合训练阶段,部分训练步骤是与预训练阶段是类似的,因而相应部分可参见预训练阶段的介绍,本申请实施例对此不再进行赘述。
本申请实施例中,在特征映射网络的训练结束之后,也就是获得了整个哈希值确定模型之后,则可以利用该哈希值映射模型参与后续的对象检索过程。
具体的,以从32维的旧特征向量升级到64维的新特征向量为例,则针对不同版本可进行如下的处理:
(1)旧版本的特征向量处理:
旧版本的特征向量,根据相应的旧版本特征映射网络提取哈希值,存储至哈希库中,特征向量记录在旧版本的embedding表1中,如采用对象i-embedding特征向需要说明的是量这样的对象id与embedding特征向量一对一的映射关系。
需要说明的是,若旧版本已经进行了哈希提取,那么在模型训练时刻不针对旧版本的特征映射网络进行参数更新,那么旧版本得到的哈希值仍可继续使用。
(2)新版本的特征向量处理:
新版本的特征向量,根据相应的新版本特征映射网络提取哈希值,存储至与上述统一的哈希库中,而特征向量记录在新版本的embedding表2中。
(3)新入库的对象处理:
针对新入库的对象,可以采用新版本特征提取网络提取新版本的特征向量,以及基于新版本的特征映射网络提取新版本的哈希值,哈希值送入上述统一的哈希库中,特征向量记录在embedding表2中。
(4)对象检索:
在本申请实施例中,哈希库中混合了新旧版本对象的哈希值,用于作为召回的依据,在进行对象检索时,则可以从哈希库中获取预先提取得到的各个候选对象的候选哈希值。在进行检索时,针对输入的目标对象query,可以采用新版本的特征提取网络和特征映射网络,相应提取得到特征向量和哈希值,并根据提取的哈希值从哈希库中进行对象召回,根据召回对象从新、旧版本的embedding表中找到相应的特征向量,并计算召回对象与目标对象的L2距离,根据距离从小到大排序返回对象检索结果。
示例性的,这里具体以图像检索为例,参见图12所示,为图像检索的示意图。如图12所示,当图像embedding从表征效果不佳的32维升级到64维时,针对维度升级前存入的图像,通常已经提取了32维的embedding,若这些embedding已经提取哈希值,则也可以沿用历史库存的哈希值,若为提取哈希值,则可采用相应的特征映射网络提取哈希值,并存储到哈希库中,对于维度升级后存入的图像,则利用新版本的特征提取网络提取新的64维的embedding,并采用新版本的特征映射网络提取哈希值,存储到哈希库中。
参见图12所示,在进行图像的检索时,对输入的待检索图像,利用新版本的特征提取网络提取新的64维的embedding,以及采用新版本的特征映射网络提取哈希值,利用待检索图像的哈希值在哈希库中进行匹配,召回相似度排序靠前的topk个图像,并从embedding库中查询这些召回图像的embedding(可能包含32维的embedding,也可能包含64维的embedding),并利用查询的embedding与待检索图像的64维的embedding进行相似度计算,按照相似度进行排序,输出待检索图像的图像检索结果。
其中,当召回图像embedding为32维的embedding时,则利用待检索图像的embedding的钱32位与召回图像embedding进行相似度计算,而若召回图像embedding为64维的embedding时,则直接计算相似度即可。
综上所述,本申请实施例中,在面对新旧embedding兼容的情况下,对新旧embedding学习哈希值的同时进行兼容学习,使得对新旧embedding可以采用统一的哈希库检索,即可提供兼容新哈希检索旧哈希的效果,压缩检索系统复杂度、提升检索效率,而在面对旧特征、旧哈希已经应用一段时间,新embedding上线时,可以仅学习一个新的向下兼容哈希,从而可以合并新旧哈希进行统一检索,避免新哈希、旧哈希分别检索的情况。
请参见图13,基于同一发明构思,本申请实施例还提供了一种对象检索装置130,该装置包括:
哈希值确定单元1301,用于确定待检索的目标对象对应的目标特征向量,并基于参考维度,将目标特征向量映射为相应的目标哈希值;以及,获得各个候选对象各自对应的候选哈希值;其中,每个候选哈希值,是基于参考维度,对相应的候选对象的候选特征向量进行映射得到的;
召回单元1302,用于基于各个候选哈希值各自与目标哈希值之间的哈希相似度,从各个候选对象中确定出至少一个召回对象;
检索输出单元1303,用于基于目标特征向量,与至少一个召回对象各自对应的候选特征向量之间的向量相似度,获得目标对象的对象检索结果。
可选的,哈希值确定单元1301,具体用于:
针对各个候选对象,分别获得相应的候选特征向量;
调用已训练的哈希值确定模型中,与各个候选对象各自的候选特征向量的维度对应的特征映射网络,分别对各个候选对象各自的候选特征向量进行映射,获得各个候选对象各自对应的候选哈希值;其中,哈希值确定模型包括分别进行预训练后进行了联合训练的多个特征映射网络,每个特征映射网络对应于候选特征向量的一种维度。
可选的,该装置还包括模型训练单元1304,用于:
针对一个特征映射网络,基于多个样本对,对一个特征映射网络的参数进行多次迭代训练,直至满足收敛条件;其中,每一次迭代训练过程包括如下步骤:
将多个样本对划分为至少一个批次,并基于至少一个批次中各个批次包括的至少两个样本对,构造各个批次各自对应的多个三元组;其中,每个三元组包括对象相似度大于第一相似度阈值的第一样本对象和第二样本对象,以及与第一样本对象和第二样本对象的对象相似度小于第二相似度阈值的第三样本对象;
基于各个批次各自对应的多个三元组,对一个特征映射网络进行多次参数调整。
可选的,模型训练单元1304,具体用于:
针对至少两个样本对中各个样本对,分别执行如下操作:
针对一个样本对,分别获得一个样本对与相应批次中其余样本对之间的对象相似度;
基于获得的各个对象相似度,从其余样本对中选取出至少一个样本对;
将至少一个样本对包含的样本对象作为负样本,并分别与一个样本对进行组合,获得至少一个三元组。
可选的,模型训练单元1304,具体用于:
调用哈希值确定模型中,与一个特征映射网络对应的特征提取网络,对本批次的多个三元组包括的样本对象进行特征提取,获得相应的样本特征向量;
针对获得的各个样本特征向量,调用一个特征映射网络进行特征映射,获得相应的样本哈希值;
基于获得的各个样本哈希值,获得一个特征映射网络的哈希损失,哈希损失用于表征一个特征映射网络在预训练时的收敛程度;
基于获得的哈希损失,对一个特征映射网络进行参数调整。
可选的,模型训练单元1304,具体用于:
基于各个三元组包括的各个样本对象各自对应的样本哈希值,分别获得各个三元组各自对应的三元组损失;
对各个样本对象各自对应的样本哈希值进行量化处理,分别获得相应的量化哈希值,并基于获得的各个量化哈希值,获得各个样本对象各自对应的量化损失,量化损失用于表征样本哈希值与量化哈希值之间的差异程度;
基于获得的各个三元组损失和各个量化损失,获得一个特征映射网络的哈希损失。
可选的,模型训练单元1304,具体用于:
针对每个样本哈希值,分别进行如下操作:
针对一个样本哈希值,调用符号函数,分别对一个样本哈希值包括的各个指示位进行量化处理,获得一个样本哈希值对应的量化哈希值;
基于一个样本哈希值与相应的量化哈希值中相同指示位的差值,获得一个样本哈希值对应的量化损失。
可选的,模型训练单元1304,还用于:
基于多个样本对,构造多个三元组,并基于多个三元组,对多个特征映射网络进行多次参数调整,直至满足收敛条件;其中,每一次参数调整过程包括如下步骤:
针对本次输入的各个三元组包括的样本对象,调用各个特征映射网络,分别获得各个样本对象各自对应的样本哈希值集合,每个样本哈希值集合对应一个样本特征向量,且每个样本哈希值集合中的一个样本哈希值对应于一个特征映射网络;
基于获得的各个样本哈希值集合,获得联合训练损失,并基于获得的联合训练损失,对多个特征映射网络进行参数调整。
可选的,模型训练单元1304,具体用于:
基于各个样本对象各自对应的样本哈希值,获得各个样本对象各自对应的量化损失;
针对各个三元组,分别执行如下步骤:
针对一个三元组,基于一个三元组包括的各个样本对象各自对应的样本哈希值集合,获得多个哈希值组,每个哈希值组包括各个样本对象各自对应的样本哈希值,且不同哈希值组中至少一个样本哈希值不同;
基于多个哈希值组,相应获得多个三元组损失;
基于获得的各个量化损失以及各个三元组各自对应的多个三元组损失,获得联合训练损失。
可选的,模型训练单元1304,具体用于:
固定多个特征映射网络中,除目标特征映射网络之外的其余特征映射网络的参数,目标特征映射网络为任一特征映射网络;
基于获得的联合训练损失,对目标特征映射网络进行参数调整。
可选的,检索输出单元1303,具体用于:
针对至少一个召回对象对应的候选特征向量,分别执行如下步骤:
针对一个候选特征向量,比较一个候选特征向量的第一维度与目标特征向量的第二维度;
若第一维度低于第二维度,则按照第一维度,对目标特征向量进行裁剪,并基于裁剪后的目标特征向量与一个候选特征向量,获得相应的向量相似度;
若第一维度与第二维度相同,则基于一个候选特征向量与目标特征向量,获得相应的向量相似度;
基于获得的各个向量相似度,对至少一个召回对象进行排序,获得对象检索结果。
通过上述装置,可以通过首先学习独立版本的特征映射网络,并借助混合版本的特征映射网络的学习过程微调整体模型,实现固定长度的哈希值可以对不同版本的embedding兼容二值化,即最终得到的哈希值能够在多种维度的特征向量上的兼容效果,从而在后续检索时,可采用提取的哈希值实现单一检索系统上的对象召回,检索效率更高,并且避免了建立多个检索系统,浪费资源。
该装置可以用于执行本申请各实施例中所示的方法,因此,对于该装置的各功能模块所能够实现的功能等可参考前述实施例的描述,不多赘述。
请参见图14,基于同一技术构思,本申请实施例还提供了一种计算机设备140,该计算机设备140可以为图1所示的终端设备或服务器,该计算机设备140可以包括存储器1401和处理器1402。
所述存储器1401,用于存储处理器1402执行的计算机程序。存储器1401可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序等;存储数据区可存储根据计算机设备的使用所创建的数据等。处理器1402,可以是一个中央处理单元(central processing unit,CPU),或者为数字处理单元等等。本申请实施例中不限定上述存储器1401和处理器1402之间的具体连接介质。本申请实施例在图14中以存储器1401和处理器1402之间通过总线1403连接,总线1403在图14中以粗线表示,其它部件之间的连接方式,仅是进行示意性说明,并不引以为限。所述总线1403可以分为地址总线、数据总线、控制总线等。为便于表示,图14中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
存储器1401可以是易失性存储器(volatile memory),例如随机存取存储器(random-access memory,RAM);存储器1401也可以是非易失性存储器(non-volatilememory),例如只读存储器,快闪存储器(flash memory),硬盘(hard disk drive,HDD)或固态硬盘(solid-state drive,SSD)、或者存储器1401是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器1401可以是上述存储器的组合。
处理器1402,用于调用所述存储器1401中存储的计算机程序时执行本申请各实施例中设备所执行的方法。
在一些可能的实施方式中,本申请提供的方法的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在计算机设备上运行时,所述程序代码用于使所述计算机设备执行本说明书上述描述的根据本申请各种示例性实施方式的方法中的步骤,例如,所述计算机设备可以执行本申请各实施例中设备所执行的方法。
所述程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以是但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

Claims (14)

1.一种对象检索方法,其特征在于,所述方法包括:
确定待检索的目标对象对应的目标特征向量,并基于参考维度,将所述目标特征向量映射为相应的目标哈希值;
获得各个候选对象各自对应的候选哈希值;其中,每个候选哈希值是基于所述参考维度对相应的候选对象的候选特征向量进行映射得到的,每个候选特征向量是通过多个特征提取模块中的其中一个特征提取模块提取得到的,所述多个特征提取模块中不同的特征提取模块对应的特征维度不同;
基于各个候选哈希值各自与所述目标哈希值之间的哈希相似度,从所述各个候选对象中确定出至少一个召回对象;
基于所述目标特征向量,与所述至少一个召回对象各自对应的候选特征向量之间的向量相似度,获得所述目标对象的对象检索结果。
2.如权利要求1所述的方法,其特征在于,获得各个候选对象各自对应的候选哈希值,包括:
针对所述各个候选对象,分别获得相应的候选特征向量;
调用已训练的哈希值确定模型中,与所述各个候选对象各自的候选特征向量的维度对应的特征映射网络,分别对所述各个候选对象各自的候选特征向量进行映射,获得所述各个候选对象各自对应的候选哈希值;其中,所述哈希值确定模型包括分别进行预训练后进行了联合训练的多个特征映射网络,每个特征映射网络对应于候选特征向量的一种维度。
3.如权利要求2所述的方法,其特征在于,每个特征映射网络的预训练过程包括如下步骤:
针对一个特征映射网络,基于多个样本对,对所述一个特征映射网络的参数进行多次迭代训练,直至满足收敛条件;其中,每一次迭代训练过程包括如下步骤:
将所述多个样本对划分为至少一个批次,并基于所述至少一个批次中各个批次包括的至少两个样本对,构造所述各个批次各自对应的多个三元组;其中,每个三元组包括对象相似度大于第一相似度阈值的第一样本对象和第二样本对象,以及与所述第一样本对象和所述第二样本对象的对象相似度小于第二相似度阈值的第三样本对象;
基于所述各个批次各自对应的多个三元组,对所述一个特征映射网络进行多次参数调整。
4.如权利要求3所述的方法,其特征在于,基于所述至少一个批次中各个批次包括的至少两个样本对,构造所述各个批次各自对应的多个三元组,包括:
针对所述至少两个样本对中各个样本对,分别执行如下操作:
针对一个样本对,分别获得所述一个样本对与相应批次中其余样本对之间的对象相似度;
基于获得的各个对象相似度,从所述其余样本对中选取出至少一个样本对;
将所述至少一个样本对包含的样本对象作为负样本,并分别与所述一个样本对进行组合,获得至少一个三元组。
5.如权利要求3所述的方法,其特征在于,基于每一批次对应的多个三元组,对所述一个特征映射网络进行参数调整时,包括如下步骤:
调用所述哈希值确定模型中,与所述一个特征映射网络对应的特征提取网络,对本批次的多个三元组包括的样本对象进行特征提取,获得相应的样本特征向量;
针对获得的各个样本特征向量,调用所述一个特征映射网络进行特征映射,获得相应的样本哈希值;
基于获得的各个样本哈希值,获得所述一个特征映射网络的哈希损失,所述哈希损失用于表征所述一个特征映射网络在预训练时的收敛程度;
基于获得的哈希损失,对所述一个特征映射网络进行参数调整。
6.如权利要求5所述的方法,其特征在于,所述基于获得的各个样本哈希值,获得所述一个特征映射网络的哈希损失,包括:
基于各个三元组包括的各个样本对象各自对应的样本哈希值,分别获得所述各个三元组各自对应的三元组损失;
对所述各个样本对象各自对应的样本哈希值进行量化处理,分别获得相应的量化哈希值,并基于获得的各个量化哈希值,获得所述各个样本对象各自对应的量化损失,所述量化损失用于表征样本哈希值与量化哈希值之间的差异程度;
基于获得的各个三元组损失和各个量化损失,获得所述一个特征映射网络的哈希损失。
7.如权利要求6所述的方法,其特征在于,对所述各个样本对象各自对应的样本哈希值进行量化处理,分别获得相应的量化哈希值,并基于获得的各个量化哈希值,获得所述各个样本对象各自对应的量化损失,包括:
针对每个样本哈希值,分别进行如下操作:
针对一个样本哈希值,调用符号函数,分别对所述一个样本哈希值包括的各个指示位进行量化处理,获得所述一个样本哈希值对应的量化哈希值;
基于所述一个样本哈希值与相应的量化哈希值中相同指示位的差值,获得所述一个样本哈希值对应的量化损失。
8.如权利要求2所述的方法,其特征在于,所述联合训练过程包括如下步骤:
基于多个样本对,构造多个三元组,并基于所述多个三元组,对所述多个特征映射网络进行多次参数调整,直至满足收敛条件;其中,每一次参数调整过程包括如下步骤:
针对本次输入的各个三元组包括的样本对象,调用所述各个特征映射网络,分别获得各个样本对象各自对应的样本哈希值集合,每个样本哈希值集合对应一个样本特征向量,且每个样本哈希值集合中的一个样本哈希值对应于一个特征映射网络;
基于获得的各个样本哈希值集合,获得联合训练损失,并基于获得的联合训练损失,对所述多个特征映射网络进行参数调整。
9.如权利要求8所述的方法,其特征在于,所述基于获得的各个样本哈希值集合,获得联合训练损失,包括:
基于各个样本对象各自对应的样本哈希值,获得所述各个样本对象各自对应的量化损失;
针对所述各个三元组,分别执行如下步骤:
针对一个三元组,基于所述一个三元组包括的各个样本对象各自对应的样本哈希值集合,获得多个哈希值组,每个哈希值组包括所述各个样本对象各自对应的样本哈希值,且不同哈希值组中至少一个样本哈希值不同;
基于所述多个哈希值组,相应获得多个三元组损失;
基于获得的各个量化损失以及所述各个三元组各自对应的多个三元组损失,获得所述联合训练损失。
10.如权利要求8所述的方法,其特征在于,基于获得的联合训练损失,对所述多个特征映射网络进行参数调整,包括:
固定所述多个特征映射网络中,除目标特征映射网络之外的其余特征映射网络的参数,所述目标特征映射网络为任一特征映射网络;
基于获得的联合训练损失,对所述目标特征映射网络进行参数调整。
11.如权利要求1~10任一所述的方法,其特征在于,基于所述目标特征向量,与所述至少一个召回对象各自对应的候选特征向量之间的向量相似度,获得所述目标对象的对象检索结果,包括:
针对所述至少一个召回对象对应的候选特征向量,分别执行如下步骤:
针对一个候选特征向量,比较所述一个候选特征向量的第一维度与所述目标特征向量的第二维度;
若所述第一维度低于所述第二维度,则按照所述第一维度,对所述目标特征向量进行裁剪,并基于裁剪后的目标特征向量与所述一个候选特征向量,获得相应的向量相似度;
若所述第一维度与所述第二维度相同,则基于所述一个候选特征向量与所述目标特征向量,获得相应的向量相似度;
基于获得的各个向量相似度,对所述至少一个召回对象进行排序,获得所述对象检索结果。
12.一种对象检索装置,其特征在于,所述装置包括:
哈希值确定单元,用于确定待检索的目标对象对应的目标特征向量,并基于参考维度,将所述目标特征向量映射为相应的目标哈希值;以及,获得各个候选对象各自对应的候选哈希值;其中,每个候选哈希值是基于所述参考维度对相应的候选对象的候选特征向量进行映射得到的,每个候选特征向量是通过多个特征提取模块中的其中一个特征提取模块提取得到的,所述多个特征提取模块中不同的特征提取模块对应的特征维度不同;
召回单元,用于基于各个候选哈希值各自与所述目标哈希值之间的哈希相似度,从所述各个候选对象中确定出至少一个召回对象;
检索输出单元,用于基于所述目标特征向量,与所述至少一个召回对象各自对应的候选特征向量之间的向量相似度,获得所述目标对象的对象检索结果。
13.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,
所述处理器执行所述计算机程序时实现权利要求1至11任一项所述方法的步骤。
14.一种计算机存储介质,其上存储有计算机程序指令,其特征在于,
该计算机程序指令被处理器执行时实现权利要求1至11任一项所述方法的步骤。
CN202111261599.0A 2021-10-28 2021-10-28 对象检索方法、装置、设备及计算机存储介质 Active CN114329029B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111261599.0A CN114329029B (zh) 2021-10-28 2021-10-28 对象检索方法、装置、设备及计算机存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111261599.0A CN114329029B (zh) 2021-10-28 2021-10-28 对象检索方法、装置、设备及计算机存储介质

Publications (2)

Publication Number Publication Date
CN114329029A CN114329029A (zh) 2022-04-12
CN114329029B true CN114329029B (zh) 2024-05-14

Family

ID=81045122

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111261599.0A Active CN114329029B (zh) 2021-10-28 2021-10-28 对象检索方法、装置、设备及计算机存储介质

Country Status (1)

Country Link
CN (1) CN114329029B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115062180B (zh) * 2022-08-15 2023-03-28 阿里巴巴(中国)有限公司 对象查询的方法、电子设备及存储介质
CN116010669B (zh) * 2023-01-18 2023-12-08 深存科技(无锡)有限公司 向量库重训练的触发方法、装置、检索服务器及存储介质
CN116521940A (zh) * 2023-06-20 2023-08-01 上海临滴科技有限公司 一种工业视频云存储实时监管方法及系统

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015079102A (ja) * 2013-10-16 2015-04-23 日本電信電話株式会社 ハッシュ関数生成方法、ハッシュ値生成方法、ハッシュ関数生成装置、ハッシュ値生成装置、ハッシュ関数生成プログラム及びハッシュ値生成プログラム
CN106777349A (zh) * 2017-01-16 2017-05-31 广东工业大学 基于深度学习的人脸检索系统及方法
CN107423376A (zh) * 2017-07-10 2017-12-01 上海交通大学 一种有监督深度哈希快速图片检索方法及系统
CN110543622A (zh) * 2019-08-02 2019-12-06 北京三快在线科技有限公司 文本相似度检测方法、装置、电子设备及可读存储介质
CN112818859A (zh) * 2021-02-02 2021-05-18 电子科技大学 一种基于深度哈希的多级检索行人重识别方法
CN113190699A (zh) * 2021-05-14 2021-07-30 华中科技大学 一种基于类别级语义哈希的遥感图像检索方法及装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015079102A (ja) * 2013-10-16 2015-04-23 日本電信電話株式会社 ハッシュ関数生成方法、ハッシュ値生成方法、ハッシュ関数生成装置、ハッシュ値生成装置、ハッシュ関数生成プログラム及びハッシュ値生成プログラム
CN106777349A (zh) * 2017-01-16 2017-05-31 广东工业大学 基于深度学习的人脸检索系统及方法
CN107423376A (zh) * 2017-07-10 2017-12-01 上海交通大学 一种有监督深度哈希快速图片检索方法及系统
CN110543622A (zh) * 2019-08-02 2019-12-06 北京三快在线科技有限公司 文本相似度检测方法、装置、电子设备及可读存储介质
CN112818859A (zh) * 2021-02-02 2021-05-18 电子科技大学 一种基于深度哈希的多级检索行人重识别方法
CN113190699A (zh) * 2021-05-14 2021-07-30 华中科技大学 一种基于类别级语义哈希的遥感图像检索方法及装置

Also Published As

Publication number Publication date
CN114329029A (zh) 2022-04-12

Similar Documents

Publication Publication Date Title
WO2020228376A1 (zh) 文本处理方法、模型训练方法和装置
CN114329029B (zh) 对象检索方法、装置、设备及计算机存储介质
CN110609955B (zh) 一种视频推荐的方法及相关设备
CN113392651B (zh) 训练词权重模型及提取核心词的方法、装置、设备和介质
CN110941698B (zh) 一种基于bert下卷积神经网络的服务发现方法
CN113821670B (zh) 图像检索方法、装置、设备及计算机可读存储介质
CN113298197B (zh) 数据聚类方法、装置、设备及可读存储介质
CN113806582B (zh) 图像检索方法、装置、电子设备和存储介质
CN114358188A (zh) 特征提取模型处理、样本检索方法、装置和计算机设备
CN114358109A (zh) 特征提取模型训练、样本检索方法、装置和计算机设备
CN113761220A (zh) 信息获取方法、装置、设备及存储介质
CN114298122A (zh) 数据分类方法、装置、设备、存储介质及计算机程序产品
CN113641797A (zh) 数据处理方法、装置、设备、存储介质及计算机程序产品
CN115879508A (zh) 一种数据处理方法及相关装置
CN113033507B (zh) 场景识别方法、装置、计算机设备和存储介质
CN117435685A (zh) 文档检索方法、装置、计算机设备、存储介质和产品
CN113704528A (zh) 聚类中心确定方法、装置和设备及计算机存储介质
CN115858780A (zh) 一种文本聚类方法、装置、设备及介质
CN116484067A (zh) 目标对象匹配方法、装置及计算机设备
CN116415624A (zh) 模型训练方法及装置、内容推荐方法及装置
CN114238798A (zh) 基于神经网络的搜索排序方法、系统、设备及存储介质
CN113822291A (zh) 一种图像处理方法、装置、设备及存储介质
CN113821687A (zh) 一种内容检索方法、装置和计算机可读存储介质
CN111091198A (zh) 一种数据处理方法及装置
CN112434174A (zh) 多媒体信息的发布账号的识别方法、装置、设备及介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40071036

Country of ref document: HK

GR01 Patent grant
GR01 Patent grant