本申请属于机器学习技术领域,尤其涉及一种特征检索方法、装置、设备及计算机存储介质。
背景技术:
众所周知,在机器学习技术领域中,可以对例如图像、视频等类型的多媒体数据进行特征的提取,而这些特征通常可以通过特征向量的形式体现。将提取出的特征向量在预设的特征向量库进行特征检索,可以实现对多媒体数据中的对象(例如人物、动物等对象)的预测或识别。
然而,当特征向量的维度较高时,上述特征向量的特征检索过程存在效率较低的问题。
技术实现要素:
本申请实施例提供一种特征检索方法、装置、设备及计算机存储介质,能够现有技术中特征向量的特征检索效率较低的问题。
第一方面,本申请实施例提供一种特征检索方法,包括:
获取第一特征向量,以及p个第二特征向量,第一特征向量的维度与第二特征向量的维度均为w,p与w均为大于1的整数,第一特征向量与第二特征向量均为多媒体资源的特征向量;
将第一特征向量划分为l个第一向量,将每一第二特征向量划分为l个第二向量,每一第一向量的维度与每一第二向量的维度均小于w,l个第一向量与l个第二向量一一对应,l为大于1的整数;
分别根据l个第一向量与每一第二特征向量关联的l个第二向量之间的第一相似度,确定第一特征向量与每一第二特征向量之间的第二相似度;
根据第二相似度,得到第一特征向量的特征检索结果。
第二方面,本申请实施例提供了一种特征检索装置,装置包括:
获取模块,用于获取第一特征向量,以及p个第二特征向量,第一特征向量的维度与第二特征向量的维度均为w,p与w均为大于1的整数,第一特征向量与第二特征向量均为多媒体资源的特征向量;
划分模块,用于将第一特征向量划分为l个第一向量,将每一第二特征向量划分为l个第二向量,每一第一向量的维度与每一第二向量的维度均小于w,l个第一向量与l个第二向量一一对应,l为大于1的整数;
确定模块,用于分别根据l个第一向量与每一第二特征向量关联的l个第二向量之间的第一相似度,确定第一特征向量与每一第二特征向量之间的第二相似度;
检索模块,用于根据第二相似度,得到第一特征向量的特征检索结果。
第三方面,本申请实施例提供了一种电子设备,设备包括:处理器以及存储有计算机程序指令的存储器;
处理器执行计算机程序指令时实现上述的特征检索方法。
第四方面,本申请实施例提供了一种计算机存储介质,计算机存储介质上存储有计算机程序指令,计算机程序指令被处理器执行时实现上述的特征检索方法。
本申请实施例提供的特征检索方法,获取维度为w的第一特征向量以及p个维度为w的第二特征向量,将第一特征向量划分为l个维度小于w的第一向量,将第二特征向量划分为l个维度小于w的第二向量,且l个第一向量与l个第二向量一一对应,分别根据l个第一向量与每一第二特征向量关联的l个第二向量之间的第一相似度,确定第一特征向量与每一第二特征向量之间的第二相似度,根据第二相似度,得到第一特征向量的特征检索结果。本申请实施例可以将高维的第一特征向量与第二特征向量,分别划分成多个低维的第一向量与多个低维的第二向量,基于低维的向量之间的第一相似度,确定高维的向量之间的第二相似度,进而得到第一特征向量的特征检索结果,可以避免因直接针对高维的特征向量进行检索导致的效率较低的问题,有效提高对第一特征向量的特征检索效率。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单的介绍,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的特征检索方法的流程示意图;
图2是在一个具体应用例中特征检索方法的流程示意图;
图3是行人重识别模型的框架示意图;
图4是向量在二维平面上的分布简图;
图5是采用聚类算法对向量进行分簇的效果图;
图6是对目标向量匹配对应的分簇的效果图;
图7是将高维向量划分为低维向量以确定相似度的原理图;
图8是输出特征检索结果的流程示意图;
图9是本申请实施例提供的特征检索装置的结构示意图;
图10是本申请实施例提供的电子设备的结构示意图。
具体实施方式
下面将详细描述本申请的各个方面的特征和示例性实施例,为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及具体实施例,对本申请进行进一步详细描述。应理解,此处所描述的具体实施例仅意在解释本申请,而不是限定本申请。对于本领域技术人员来说,本申请可以在不需要这些具体细节中的一些细节的情况下实施。下面对实施例的描述仅仅是为了通过示出本申请的示例来提供对本申请更好的理解。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括……”限定的要素,并不排除在包括要素的过程、方法、物品或者设备中还存在另外的相同要素。
为了解决现有技术问题,本申请实施例提供了一种特征检索方法、装置、设备及计算机存储介质。下面首先对本申请实施例所提供的特征检索方法进行介绍。
图1示出了本申请一个实施例提供的特征检索方法的流程示意图。如图1所示,该特征检索方法,包括:
步骤101,获取第一特征向量,以及p个第二特征向量,第一特征向量的维度与第二特征向量的维度均为w,p与w均为大于1的整数,第一特征向量与第二特征向量均为多媒体资源的特征向量;
步骤102,将第一特征向量划分为l个第一向量,将每一第二特征向量划分为l个第二向量,每一第一向量的维度均小于w,l个第一向量与l个第二向量一一对应,l为大于1的整数;
步骤103,分别根据l个第一向量与每一第二特征向量关联的l个第二向量之间的第一相似度,确定第一特征向量与每一第二特征向量之间的第二相似度;
步骤104,根据第二相似度,得到第一特征向量的特征检索结果。
本申请实施例中,第一特征向量可以认为是需要进行特征检索的多媒体资源的特征向量。
举例来说,多媒体资源可以是图像,第一特征向量可以是待检索的图像中的特征向量。通过特征提取模型,可以从待检索的图像中提取出相应的特征向量。
当然,实际应用中,第一特征向量也可以是从视频、文本等类型的多媒体资源中提取出的特征向量。以下可以简称第一特征向量为多媒体资源的特征向量。类似地,第二特征向量也可以是多媒体资源的特征向量。
举例来说,第一特征向量可以是从待检索的多媒体资源中提取出的特征向量,每一个第二特征向量可以对应一个候选的多媒体资源。其中,第二特征向量与候选的多媒体资源的对应关系,可以认为第二特征向量是对对应的多媒体资源进行特征提取得到的特征向量。
上述特征检索的目的,在一定程度上可以认为是从多个候选的多媒体资源中,检索出与待检索的多媒体资源相似度最高的若干候选的多媒体资源。
进一步以行人图像为例,通过对行人图像的特征提取,可以得到相应的特征,例如是否戴帽子、是否戴围巾、上衣类型、上衣颜色、是否推车等等。这些特征可以统一通过特征向量进行体现。
第二特征向量则可以是预设的特征向量,或者可以认为是样本的特征向量。换而言之,第二特征向量可以是预先针对例如图像的样本进行特征提取得到的特征向量。
一般来说,第二特征向量可以是存在于预设的特征向量库中,每一第二特征向量可以对应了一个对象,比如人物、动物或者物品等。
为了简化描述,以下主要以第二特征向量为对针对行人图像进行特征提取得到的特征向量为例进行说明。
上述的第一特征向量与第二特征向量均为多维向量,即这些特征向量存在多个维度。第一特征向量的维度与第二特征向量的维度均可以为w,换而言之,两类特征向量的维度可以是相等的。而w的具体值,则可以根据实际需要预先设置,此处不做具体限定。
一般来说,将第一特征向量与各个第二特征向量一一进行匹配,可以实现对第一特征向量的特征检索。然而,当w的值过大时,可能造成匹配效率较低。
步骤102中,可以将第一特征向量划分为l个第一向量,将每一第二特征向量也划分为l个第二向量。其中,l个第一向量与l个第二向量可以是一一对应的,各第一向量的维度与各第二向量的维度均小于w。
换而言之,可以将高维的第一特征向量与第二特征向量,分别划分成多个低维向量。第一向量与第二向量的对应关系,不仅仅可以是数量l相等,还可以是相对应的第一向量与第二向量存在维度相等的关系。
举例来说,设上述第一特征向量与第二特征向量的维度均为2048维。则可以将第一特征向量划分为4个512维的第一向量,将第二特征向量也划分为4个512维的第二向量。
在对第一特征向量与第二特征向量进行划分处理的情况下,在步骤103中,可以基于第一向量与第二向量,来确定第一特征向量与第二特征向量之间的第二相似度。
为了便于说明,以下主要以针对其中一个第二特征向量进行划分得到的l个第二向量为例,来对第一特征向量与该第二特征向量之间的第二相似度的确定过程进行说明。
如上文所示的,第一向量与第二向量存在一一对应的关系,针对每一个第一向量,均可以和与其相对于的第二向量确定相似度,即上述的第一相似度。
至于向量之间的相似度的确定方式,此处可以不作具体限定,比如,可以采用求取欧式距离的方式来确定向量之间的相似度。
第一特征向量与第二特征向量均划分了成l个低维的第二向量,相应地,一个第二特征向量可以关联l个第二向量,并且一个第二特征向量可以与第一特征向量之间存在l个第一相似度。根据这l个第一相似度,可以确定第一特征向量与第二特征向量的第二相似度。
举例来说,可以是对上述的l个第一相似度进行相加得到第二相似度;或者,也可以是通过求取平均值得到第二相似度;或者,也可以根据各第一向量的维度,确定对应的第一相似度的权重,并进行加权平均计算,得到第二相似度等等。此处可以不对根据第一相似度确定第二相似度的方式进行具体限定,根据实际需要选择即可。
值得说明的是,第二相似度可以是用于衡量实际相似程度的数值,取值范围为0~1;也可以是一种分值,该分值可以是对相似程度的一种评分,具体的取值范围可以更加灵活。
在步骤104中,根据第二相似度,可以得到第一特征向量的特征检索结果。
容易理解的是,在对第一特征向量进行特征检索时,通常是从多个预设的特征向量中检索到相似度最高的特征向量。
具体到本实施例中,p个第二特征向量可以对应这多个预设的特征向量。得到的特征检索结果,可以是与第一特征向量的第二相似度较高的第二特征向量。
比如,特征检索结果中可以包括对应的第二相似度排名在前的一个或多个第二特征向量;或者是包括对应的第二相似度高于相似度阈值的一个或多个第二特征向量。
当然,在实际应用中,每一第二特征向量往往可以对应一个预设对象比如,可以是某一行人,或者某一种物体等等。相应地,上述的特征检索结果,也可以是用于指示第一特征向量具体为哪一预设对象的特征向量。
从另一个角度来说,若第一特征向量可以是对包括目标对象的图像进行特征提取得到的,则特征检索结果可以指示该目标对象具体为哪一预设对象。
本申请实施例提供的特征检索方法,获取维度为w的第一特征向量以及p个维度为w的第二特征向量,将第一特征向量划分为l个维度小于w的第一向量,将第二特征向量划分为l个维度小于w的第二向量,且l个第一向量与l个第二向量一一对应,分别根据l个第一向量与每一第二特征向量关联的l个第二向量之间的第一相似度,确定第一特征向量与每一第二特征向量之间的第二相似度,根据第二相似度,得到第一特征向量的特征检索结果。本申请实施例可以将高维的第一特征向量与第二特征向量,分别划分成多个低维的第一向量与多个低维的第二向量,基于低维的向量之间的第一相似度,确定高维的向量之间的第二相似度,进而得到第一特征向量的特征检索结果,可以避免因直接针对高维的特征向量进行检索导致的效率较低的问题,有效提高对第一特征向量的特征检索效率。
可选地,上述获取第一特征向量,以及p个第二特征向量,包括:
获取第一特征向量以及预设特征向量库,预设特征向量库包括q个第三特征向量,q为大于或等于p的整数;
对q个第三特征向量进行聚类,得到m个特征向量簇,每一特征向量簇具有对应的第一中心向量,且每一特征向量簇包括至少一个第三特征向量;
分别确定第一特征向量的第二中心向量与每一第一中心向量之间的目标距离;
将第三中心向量对应的特征向量簇所包括的第三特征向量确定为第二特征向量,第三中心向量为对应的目标距离满足预设距离条件的第一中心向量。
如上文所示的,第二特征向量可以是存在于预设的特征向量库中的。换而言之,在针对第一特征向量进行特征检索时,可以是在预设特征向量库中检索的,该预设特征向量库可以是包括上述p个第二特征向量,也可以包括更多的预设特征向量。
为了便于描述,可以认为预设特征向量库包括q个第三特征向量,而p个第二特征向量可以是q个第三特征向量中的全部或部分第三特征向量。
当q的值过大时,若将每一第三特征向量逐一与第一特征向量进行第二相似度的确定,同样会带来特征检索效率较低的问题。
因此,本实施例中,可以先对q个第三特征向量进行聚类,得到m个特征向量簇,每一特征向量簇具有对应的第一中心向量,且每一特征向量簇关联有至少一个第三特征向量。
至于对q个第三特征向量进行聚类的过程,可以基于聚类算法来实现,例如k-means聚类算法、均值偏移聚类算法或者dbscan聚类算法等,此处不做具体限定。
对于每一个特征向量簇,可以包括至少一个第三特征向量。与此同时,每一个特征向量簇,可以具有对应的第一中心向量。
容易理解的是,在一些应用场景下,中心向量可以是预先设定的,以作为聚类中心,与该中心向量的距离满足相应的距离条件(例如小于预设距离值,或者与该中心向量距离最近等)的特征向量,可以归入到该中心向量对应的特征向量簇中。或者,在另一些应用场景下,中心向量也可以是在聚类过程中,在相关约束条件的限制下(例如特征向量簇的数量、特征向量与中心向量之间的聚类带来的损失等)自动计算得到的。
每一特征向量簇具有对应的第一中心向量,而上述的第一特征向量也可以具体对应的第二中心向量。
本实施例中,可以分别确定第二中心向量与每一第一中心向量之间的目标距离,该目标距离可以是欧式距离等等,此处可以不做具体限定。
根据上述的目标距离,可以从m个特征向量簇对应的m个第一中心向量中确定出第三中心向量,第三中心向量的数量可以是一个或者多个,且第三中心向量与第一中心向量之间的目标距离,可以满足预设距离条件。
在实际应用中,上述的预设距离条件,可以是指目标距离小于一距离阈值,或者,也可以是指将各个第一中心向量的对应的目标距离按从小到大进行排序,并取排名在前的预设数量的目标距离等等,可以根据实际需要进行设定。
本实施例中,将第三中心向量对应的特征向量簇所关联的第三特征向量,确定为第二特征向量。
也就是说,后续针对第一特征向量进行检索时,可以是从预设特征向量库中筛选出的第二特征向量中进行检索。一方面,可以基于中心向量的目标距离,可以筛选出与第一特征向量相似度较高的第二特征向量,保证特征检索的准确度,另一方面,可以减少候选检索过程中使用的预设特征向量的数量,提高特征检索效率。
结合上文实施例中,在使用预设特征向量库对第一特征向量进行检索时,可以分为聚类和检索两个主要步骤。其中,检索的步骤中可以将高维向量划分为低维向量后,先确定低维向量的相似度,再确定高维向量的相似度,在一定程度上,该检索的步骤可以认为是级联检索。
在一个实施方式中,在聚类完成后,可以将各特征向量簇中的第三特征向量进行存储,以便后续在确定第一中心向量与第二中心向量之间目标距离的过程中,省略重复的聚类过程。
而为了减少存储空间,本实施方式中,上述对q个第三特征向量进行聚类,得到m个特征向量簇之后,特征检索方法还可以包括:
分别对每一特征向量簇包括的至少一个第三特征向量进行标量量化处理;
存储经标量量化处理后的第三特征向量。
举例来说,可以对特征向量簇中的每一第三特征向量做一次标量量化(scalarquantization)。标量量化会把原始向量的每个维度从4个字节的浮点数转为1个字节的无符号整数,这样可以大大减少存储空间。
在一个实施方式中,上述步骤102,分别根据l个第一向量与每一第二特征向量关联的l个第二向量之间的第一相似度,确定第一特征向量与每一第二特征向量的第二相似度,包括:
分别确定第四特征向量关联的l个第二向量中,每一第二向量与对应的第一向量之间的第一相似度,第四特征向量为任一第二特征向量;
将l个第一相似度的和值,确定为第一特征向量与第四特征向量之间的第二相似度。
结合上文中将2048维的第一特征向量划分为4个512维的第一向量的例子,在确定第一特征向量与某一第二特征向量的第二相似度的过程中,可以分别确定各个512维的第一向量与对应的第二向量之间的第一相似度。设4个第一相似度分别为50%、40%、60%以及50%,若通过直接相加的方式,可以得到的第二相似度为200%。
也就是说,这里的第一相似度认为是用于衡量相似程度的数值,而第二相似度可以认为是一种分值。一般来说,第二相似度的值越大,可以认为第一特征向量与第二特征向量之间的相似度越高。
本实施例中,针对每一个第二特征向量,可以将其关联的l个第二向量分别与对应的l个第一向量进行相似度的确定,进而可以得到l个第一相似度。将这l个第一相似度的和值,确定为第一特征向量与该第二特征向量之间的第二相似度,计算过程相对比较简单,可以有效节省计算资源。
在一个实施方式中,上述步骤104,根据第二相似度,得到第一特征向量的特征检索结果,包括:
按从大到小的方式对p个第二相似度进行排序;
输出排序在前的k个第二相似度所对应的k个第二特征向量,特征检索结果包括k个第二特征向量,k为小于或等于p的正整数。
容易理解的是,对于每一个第二特征向量,均可以对应获得与第一特征向量之间的第二相似度。相应地,p个第二特征向量可以对应获得p个第二相似度。
本实施方式中,可以按从大到小的方式对p个第二相似度进行排序,并可以取排序在前的k个第二相似度。每一第二相似度对应有第二特征向量,因此,可以相应输出k个第二特征向量。这k个第二特征向量可以认为是p个第二特征向量中,与第一特征向量相似度最高的第二特征向量。
特征检索结果可以包括k个第二特征向量。
当然,如上文所示的,各个第二特征向量可以对应一个预设对象,特征检索结果也可以包括k个第二特征向量对应的k个预设对象。
此外,特征检索结果还可以包括上述各个k个第二特征向量(或者k个预设对象)的预测概率值,该预测概率值可以与第二相似度是对应的,可以用于反映目标对象为检索到的预设对象的概率值,而目标对象可以是与第一特征向量匹配的(例如第一特征向量可以是对包括目标对象的图像进行特征提取得到的)。
本实施方式中,根据第二相似度的排序来得到特征检索结果,可以有效保证特征检索结果的准确性。
可选地,上述获取第一特征向量,可以包括:
获取目标图像;
将目标图像输入至训练得到的目标特征提取模型,输出第一特征向量;
其中,目标特征提取模型包括目标主干网络、目标聚合网络以及目标头部网络,目标主干网络的输入端用于接收目标图像,目标聚合网络的输入端用于接收目标主干网络的输出,目标头部网络的输入端用户接收目标聚合网络的输出,目标头部网络的的输出端用于输出第一特征向量。
本实施例中,可以是针对图像进行第一特征向量的提取。目标图像可以认为是需要进行识别或预测的图像。
例如,目标图像中可以包括行人,从目标图像中提取出的第一特征向量,可以指示该行人的一些属性,例如是否戴帽子、头发长短等等。当然,这里仅仅是对第一特征向量可能对应的内容的一些举例说明。实际应用中,将目标图像输入至目标特征提取模型即可得到第一特征向量。
目标特征提取模型可以是经过训练得到的网络模型。本实施例中,目标特征提取网络可以包括目标主干网络、目标聚合网络以及目标头部网络。
其中,目标主干网络的可以接收目标图像,对目标图像进行特征提取,得到初步的特征,记为第一特征。目标聚合网络则可以对第一特征进行聚合处理,得到聚合处理后的特征,记为第二特征。目标头部网络则可以对第二特征进行预测,得到上述的第一特征向量。
换而言之,目标头部网络可以认为是一种预测网络,用于预测得到第一特征向量。当然,目标头部网络也可以是用于对目标聚合网络的输出进行归一化处理等,以得到第一特征向量。
本实施例中,基于包括目标主干网络、目标聚合网络以及目标头部网络的目标特征提取模型,从目标图像中提取第一特征向量。即在第一特征向量的提取过程中,使用了多个网络框架,可使得第一特性向量能够较好地指示目标图像的特征,保证第一特征向量的质量。
可选地,将目标图像输入至训练得到的目标特征提取模型,输出第一特征向量之前,特征检索方法还可以包括:
建立初始特征提取模型;
使用携带有标注的样本图像集对初始特征提取模型进行训练,在初始特征提取模型的损失函数的损失值小于预设损失值的情况下,获得目标特征提取模型;
其中,损失函数包括交叉熵损失函数、三元组损失函数以及圆损失函数中的至少一种,损失函数基于标注与初始特征提取模型的输出计算损失值。
本实施例中,初始特征提取模型可以是与目标特征提取模型相匹配的,两者的网络框架可以是相似的,但其中的网络参数可以存在差异。
比如,初始特征提取模型可以包括初始主干网络、初始聚合网络以及初始头部网络,通过对初始特征提取模型的训练,调整各个网络的网络参数,可以对应获得上述的目标主干网络、目标聚合网络以及目标头部网络。
一般来说,可以通过携带标注的样本图像集对初始特征提取模型进行训练。将样本图像输入到初始特征提取模型中,可以得到相应的输出。
初始特征提取模型中可以具有相应的损失函数,该损失函数可以基于标注与初始特征提取模型的输出计算损失值。
本实施例中,损失函数可以包括交叉熵损失函数、三元组损失函数以及圆损失函数中的至少一种。以下针对其中的一些损失函数计算损失值的方式进行举例说明。
上述样本图像集中,可以包括两张同一行人的样本图像,这两张样本图像携带的标注通常是一致的。将这两张样本图像输入到初始特征提取模型,可相应输出两个特征向量。由于这两个特征向量对应的是同一行人(对应同样的标注),则两个特征向量之间的距离越大(或者相似度越小),则交叉熵损失函数的损失值越大。
而样本图像集中,同样可以包括两张不同行人的样本图像,这两张样本图像携带的标注通常是不一致的。将这两张样本图像输入到初始特征提取模型,可相应输出两个特征向量。这两个特征向量对应的是不同行人(对应不同的标注),则两个特征向量之间的距离越大(或者相似度越小),则三元组损失函数的损失值越小。
一般来说,损失函数的损失值可以用于衡量初始特征提取模型是否得到充分训练。当损失函数的损失值小于预设损失值的情况下,可以认为初始特征提取模型的训练完成,从而得到上述的目标特征提取模型。
以下结合一个具体应用例,来对申请实施例提供的特征检索方法进行说明。
如图2所示,该具体应用例中,可以是针对行人图像进行特征检索,特征检索方法具体可以包括如下步骤:
步骤201,获取原始视频数据;
步骤202,对原始视频数据进行行人检测,得到原始行人图像;
步骤203,对原始行人图像进行预处理,得到训练用的样本图像;
步骤204,使用样本图像对行人重识别模型进行训练;
训练得到的行人重识别模型可以从目标图像中提取第一特征向量;
步骤205,基于聚类检索和级联检索融合进行特征检索;
步骤206,显示检索结果。
其中,上述步骤202中,可以对原始视频进行行人检索,提取行人图片质量较高的图像帧(即提取最优帧)。
由于处理后得到的原始行人图像的数据集是无序的,在输入行人重识别模型对齐训练之前,可以对这些原始行人图像进行预处理。
具体来说,原始行人图像的数据集中,可能存在一些原始行人图像中存在不同两个行人的图像,为了减少人工干预,可以加入dbscan聚类算法,对数据集进行处理,得到检测跟踪后的图像数据。在检测跟踪后的图像数据中,每一种图像中通常只存在一个行人。
对检测跟踪后的图像数据进行标注(可以是人工标注或者是自动标注),区分这些图像数据中每一图像对应的行人id与相机id。最后得到不同行人在不同相机镜头下的图像,然后对齐合并,获得不同相机镜头下的同一个人的id对(行人id与相机id)。根据该id对,可以对所有相机镜头下同一个人的图像合并至同一文件夹,并对该行人id的图像数据进行重新标号与命名,以成为可用于行人重识别模型训练的样本格式。
为了丰富行人重识别模型的训练样本,提高训练得到的行人重识别模型的鲁棒性。可以对于各行人id的图像数据进行数据增强处理,例如随机裁剪、马赛克处理、色彩调整、旋转、翻转、加入天气特效等等。在输入至行人重识别模型之前,还可以将所有的训练样本的图像尺寸统一成预设尺寸,以便对行人重识别模型进行训练。
在步骤204中,使用样本图像对行人重识别模型进行训练。如图3所示,该行人重识别模型可以选取resnet101x. ibn的组合作为主干网络进行特征的抽取,并使用gempooling的操作将特征进行聚合,然后应用bnneck得到最终的预测结果。
在模型训练的过程中,可以使用交叉熵损失(cross-entropyloss)与三元组损失(tripletloss)相结合。另外,在训练过程中,为了得到类别预测结果(在一定程度上,该类别预测结果可以认为是对行人id的分类结果),可以加入分类层,该分类层可以引入circlesoftmax。最后使用adam(adaptivemomentestimation,直译为自适应矩阵估计)优化器使得模型能够多角度地学习到数据集中的数据分布,从而进行更好的拟合,
其中,上文中,ibn可以理解为实例-批归一化(instance-batchnormalization),ibn结合了示例归一化(instancenormalization,in)与批归一化(batchnormalization,bn),通过ibn提取到的特征既可以消除外观影响又可以保留特征内容信息,有助于提高了模型精度。
gempooling为聚合网络,在一定程度上也可以认为是一种池化网络,其介于平均池化(meanpooling)与最大池化(maxpooling)。gempooling中存在调节参数p。通过调节p值,可以使得gempooling在关注不同粒度的区域。比如,当p=1时,gempooling为平均池化;当p趋于无穷大时,gempooling为最大池化。
bnneck可以作为头部网络,在一定程度上,bnneck可以认为是一种批归一化网络(batchnormalization,bn),通过引入bnneck,可以使得三元组损失更容易收敛。
对于circlesoftmax,可以认为是circle与softmax的组合。其中,softmax为一种激活函数,通常应用于分类过程中。而circle则对应了圆损失(circleloss)。换而言之,上述分类层采用激活函数softmax,并在训练过程中使用圆损失来调整网络参数。
此外,模型训练的过程中,还可以使用学习率预热(learningratewarmup)与骨架网络冻结(backbonefreeze)等策略,以提供模型训练的训练效率。
以下对聚类检索和级联检索分别进行介绍。
聚类向量检索中典型的做法就是通过某种聚类算法把大批向量分成很多簇,每个簇含有成百上千条向量,每个簇都有一个中心向量。当用户输入目标向量搜索时,聚类检索系统先把目标向量和每个簇的中心向量做距离计算,挑选出距离比较近的几个簇,然后再把目标向量和这几个簇里的每一条向量做距离运算,最后得出距离最近的k条结果向量。
如图4所示,用简图表示,假设二维平面上存在若干向量,每一个向量对应图中的一个点。
该二维平面中可以包括x轴与y轴,相应地,每一个向量对应的点在二维平面中具有相应的坐标。容易理解的是,一般来说,通过坐标能够描述不同向量在二维平面中的位置差异即可。因此,在实际应用中,x轴与y轴的刻度仅可以根据实际需要进行设置,此处不做具体限定。
如图5所示,通过聚类算法把这些向量分成若干个簇,簇的数量是可以指定的,这里分成4簇,带黑圈的向量表示簇的中心向量:
如图6所示,加入要检索的目标向量,根据对比计算,可以发现目标向量离下方簇的中心最近,那么将目标向量和下方簇里每一个向量计算距离,可以得到离目标向量最近的那个向量:
容易理解的是,目标向量可以对应了上述的第一特征向量,图4中的所有向量对应了上述的第三特征向量,图6中下方簇中的向量对应了上述了第二特征向量。
当特征向量维度非常高时,计算向量之间的相似度非常复杂且速度很慢。级联检索将高维向量划分成若干个低维向量,然后依次比较低维向量之间的相似度(similarity)。最后取逐次比较相似度之和最大的前k条向量作为输出。整体流程如图7。
以下针对基于聚类检索和级联检索融合进行特征检索的过程进行举例说明。
本举例中,面向亿级高维向量,可以采用级联检索和聚类检索结合的方法来进行亿级向量的检索。首先输入待比较的目标向量vobj(对应第一特征向量),通过聚类方法把待检索向量v划分成16384个单元u。然后把目标向量vobj与所有单元的中心c做距离比较,选出64个最近单元vcluster。
另外可以对放入单元里的每条向量做一次标量量化(scalarquantization)。标量量化会把原始向量的每个维度从4个字节的浮点数转为1个字节的无符号整数,这样可以大大减少存储空间。
聚类方法可以在海量数据中快速缩小需要检索的范围。然后在这些聚类后的向量中进行级联检索,先将m个2048维的特征向量切分为m个4×512维的特征向量,接着将目标向量vobj也同样切分成4×512维的特征向量。然后将切分后的目标向量与切分后的待检索特征向量依次计算相似度,然后将这些相似度相加得到最终的相似度。
本举例中的相似度采用欧式距离(eucildean)进行计算。最后取出4个相似度之和最大的前k个特征向量作为topk返回,整体流程如图8。这两种方法结合可以很好的解决在高维海量特征向量中进行快速准确检索的问题。
其中,vobj为待比较的目标向量,v={v1,v2,v3,…}代表向量库中的亿级向量,u={u1,u2,u3,…,u16384}代表将向量库中的亿级向量划分为16384个单元。
每个单元都包含若干个向量,每个单元都对应一个中心点c={c1,c2,c3,…,c16384}
cobj与c中的所有中心点计算距离。vcluster={vcluster1,vcluster2,vcluster3,…vclusterm},m为聚类后向量的数量。
欧式距离计算公式为:
xi和yi分别代表x和y中的第i维表示,n为向量的总维度,本举例中n为512。
距离求和为:
position表示在整个向量维度中是第几个512维度,dist代表欧式距离。其中,distfinal可以对应上述的第二相似度,distposition可以对应上述的第一相似度。
在最终相似度集合中选择k个相似度最大的对应向量作为topk返回。
如图8所示,对返回topk的整个过程可以总结为:输入目标图片—特征向量转换(对应得到第一特征向量)—聚类检索—级联检索—输出topk结果。
基于以上具体应用例可见,本申请实施例提供的特征检索方法在应用于行人重识别时,解决了海量向量数据库中的行人重识别任务检索问题,节省了检索时间,满足亿级底库下秒内的检索速度。另外,亿级向量底库下的检索精度rank1(最靠前的一张图是正确结果的概率)可达到80%,查询的平均正确率(meanaverageprecision,map)可达到70%。
如图9所示,本申请实施例还提供了一种特征检索装置,包括:
获取模块901,用于获取第一特征向量,以及p个第二特征向量,第一特征向量的维度与第二特征向量的维度均为w,p与w均为大于1的整数,第一特征向量与第二特征向量均为多媒体资源的特征向量;
划分模块902,用于将第一特征向量划分为l个第一向量,将每一第二特征向量划分为l个第二向量,每一第一向量的维度与每一第二向量的维度均小于w,l个第一向量与l个第二向量一一对应,l为大于1的整数;
确定模块903,用于分别根据l个第一向量与每一第二特征向量关联的l个第二向量之间的第一相似度,确定第一特征向量与每一第二特征向量之间的第二相似度;
检索模块904,用于根据第二相似度,得到第一特征向量的特征检索结果。
可选地,上述获取模块901,可以包括:
第一获取单元,用于获取第一特征向量以及预设特征向量库,预设特征向量库包括q个第三特征向量,q为大于或等于p的整数;
聚类单元,用于对q个第三特征向量进行聚类,得到m个特征向量簇,每一特征向量簇具有对应的第一中心向量,且每一特征向量簇关联有至少一个第三特征向量,m为大于1的整数;
第一确定单元,用于分别确定第一特征向量的第二中心向量与每一第一中心向量之间的目标距离;
第二确定单元,用于将第三中心向量对应的特征向量簇所关联的第三特征向量确定为第二特征向量,第三中心向量为对应的目标距离满足预设距离条件的第一中心向量。
可选地,特征检索装置还可以包括:
处理模块,用于分别对每一特征向量簇包括的至少一个第三特征向量进行标量量化处理;
存储模块,用于存储经标量量化处理后的第三特征向量。
可选地,确定模块903,可以包括:
第三确定单元,用于分别确定第四特征向量关联的l个第二向量中,每一第二向量与对应的第一向量之间的第一相似度,第四特征向量为任一第二特征向量;
第四确定单元,用于将l个第一相似度的和值,确定为第一特征向量与第四特征向量之间的第二相似度。
可选地,检索模块904,可以包括:
排序模块,用于按从大到小的方式对p个第二相似度进行排序;
输出模块,用于输出排序在前的k个第二相似度所对应的k个第二特征向量,特征检索结果包括k个第二特征向量,k为小于或等于p的正整数。
可选地,获取模块901,可以包括:
第二获取单元,用于获取目标图像;
输出单元,用于将目标图像输入至训练得到的目标特征提取模型,输出第一特征向量;
其中,目标特征提取模型包括目标主干网络、目标聚合网络以及目标头部网络,目标主干网络的输入端用于接收目标图像,目标聚合网络的输入端用于接收目标主干网络的输出,目标头部网络的输入端用户接收目标聚合网络的输出,目标头部网络的输出端用于输出第一特征向量。
可选地,特征检索装置还可以包括:
建立模块,用于建立初始特征提取模型;
训练模块,用于使用携带有标注的样本图像集对初始特征提取模型进行训练,在初始特征提取模型的损失函数的损失值小于预设损失值的情况下,获得目标特征提取模型;
其中,损失函数包括交叉熵损失函数、三元组损失函数以及圆损失函数中的至少一种,损失函数基于标注与初始特征提取模型的输出计算损失值。
需要说明的是,该特征检索装置是与上述特征检索方法对应的装置,上述方法实施例中所有实现方式均适用于该装置的实施例中,也能达到相同的技术效果。
图10示出了本申请实施例提供的电子设备的硬件结构示意图。
在电子设备可以包括处理器1001以及存储有计算机程序指令的存储器1002。
具体地,上述处理器1001可以包括中央处理器(cpu),或者特定集成电路(applicationspecificintegratedcircuit,asic),或者可以被配置成实施本申请实施例的一个或多个集成电路。
存储器1002可以包括用于数据或指令的大容量存储器。举例来说而非限制,存储器1002可包括硬盘驱动器(harddiskdrive,hdd)、软盘驱动器、闪存、光盘、磁光盘、磁带或通用串行总线(universalserialbus,usb)驱动器或者两个或更多个以上这些的组合。在合适的情况下,存储器1002可包括可移除或不可移除(或固定)的介质。在合适的情况下,存储器1002可在综合网关容灾设备的内部或外部。在特定实施例中,存储器1002是非易失性固态存储器。
存储器可包括只读存储器(rom),随机存取存储器(ram),磁盘存储介质设备,光存储介质设备,闪存设备,电气、光学或其他物理/有形的存储器存储设备。因此,通常,存储器包括一个或多个编码有包括计算机可执行指令的软件的有形(非暂态)计算机可读存储介质(例如,存储器设备),并且当该软件被执行(例如,由一个或多个处理器)时,其可操作来执行参考根据本公开的方法所描述的操作。
处理器1001通过读取并执行存储器1002中存储的计算机程序指令,以实现上述实施例中的任意一种特征检索方法。
在一个示例中,电子设备还可包括通信接口1003和总线1004。其中,如图10所示,处理器1001、存储器1002、通信接口1003通过总线1004连接并完成相互间的通信。
通信接口1003,主要用于实现本申请实施例中各模块、装置、单元和/或设备之间的通信。
总线1004包括硬件、软件或两者,将在线数据流量计费设备的部件彼此耦接在一起。举例来说而非限制,总线可包括加速图形端口(agp)或其他图形总线、增强工业标准架构(eisa)总线、前端总线(fsb)、超传输(ht)互连、工业标准架构(isa)总线、无限带宽互连、低引脚数(lpc)总线、存储器总线、微信道架构(mca)总线、外围组件互连(pci)总线、pci-express(pci-x)总线、串行高级技术附件(sata)总线、视频电子标准协会局部(vlb)总线或其他合适的总线或者两个或更多个以上这些的组合。在合适的情况下,总线1004可包括一个或多个总线。尽管本申请实施例描述和示出了特定的总线,但本申请考虑任何合适的总线或互连。
另外,结合上述实施例中的特征检索方法,本申请实施例可提供一种计算机存储介质来实现。该计算机存储介质上存储有计算机程序指令;该计算机程序指令被处理器执行时实现上述实施例中的任意一种特征检索方法。
需要明确的是,本申请并不局限于上文所描述并在图中示出的特定配置和处理。为了简明起见,这里省略了对已知方法的详细描述。在上述实施例中,描述和示出了若干具体的步骤作为示例。但是,本申请的方法过程并不限于所描述和示出的具体步骤,本领域的技术人员可以在领会本申请的精神后,作出各种改变、修改和添加,或者改变步骤之间的顺序。
以上的结构框图中所示的功能块可以实现为硬件、软件、固件或者它们的组合。当以硬件方式实现时,其可以例如是电子电路、专用集成电路(asic)、适当的固件、插件、功能卡等等。当以软件方式实现时,本申请的元素是被用于执行所需任务的程序或者代码段。程序或者代码段可以存储在机器可读介质中,或者通过载波中携带的数据信号在传输介质或者通信链路上传送。“机器可读介质”可以包括能够存储或传输信息的任何介质。机器可读介质的例子包括电子电路、半导体存储器设备、rom、闪存、可擦除rom(erom)、软盘、cd-rom、光盘、硬盘、光纤介质、射频(rf)链路,等等。代码段可以经由诸如因特网、内联网等的计算机网络被下载。
还需要说明的是,本申请中提及的示例性实施例,基于一系列的步骤或者装置描述一些方法或系统。但是,本申请不局限于上述步骤的顺序,也就是说,可以按照实施例中提及的顺序执行步骤,也可以不同于实施例中的顺序,或者若干步骤同时执行。
上面参考根据本公开的实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本公开的各方面。应当理解,流程图和/或框图中的每个方框以及流程图和/或框图中各方框的组合可以由计算机程序指令实现。这些计算机程序指令可被提供给通用计算机、专用计算机、或其它可编程数据处理装置的处理器,以产生一种机器,使得经由计算机或其它可编程数据处理装置的处理器执行的这些指令使能对流程图和/或框图的一个或多个方框中指定的功能/动作的实现。这种处理器可以是但不限于是通用处理器、专用处理器、特殊应用处理器或者现场可编程逻辑电路。还可理解,框图和/或流程图中的每个方框以及框图和/或流程图中的方框的组合,也可以由执行指定的功能或动作的专用硬件来实现,或可由专用硬件和计算机指令的组合来实现。
以上,仅为本申请的具体实施方式,所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、模块和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。应理解,本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本申请的保护范围之内。