一种图像相似度检索系统及方法
文献发布时间:2023-06-29 06:30:04
技术领域
本发明涉及图像信息检索技术领域,尤其是涉及一种图像相似度检索系统及方法。
背景技术
随着计算机视觉的迅猛发展,在许多行业领域中,图片业务数量快速增长,已经形成了一定量的存储。针对图片相似问题,在不同行业的业务需求中,存在多种业务目标,比如检测是否是同一张图片,或者识别在同一个角度拍摄的图片,又或者识别内容相似的图片。
为了提高信息检索效率,面向海量图片的相似度检索方法成为基于内容图片检索中的重要研究问题。在相似检索中,包括两个关键问题,一是相似性度量,二是如何实现快速检索。
在大型图像数据库上,通常使用基于内容的图像检索技术用于检索在视觉上具相似性的图像。该方法从颜色相似、纹理相似、图像中的物体或场景相似等方面进行图片相似性对比。但对于海量的相似度查询,将查询图像与数据库中所有的图像进行完全比较往往是不可行的,即对于海量图片数据相似性查询效果欠佳。在数据库很大的情况下,这样的查询方式会耗费过多时间。
目前,基于内容的图像检索是相对成熟的技术领域,但针对海量图片数据相似度检测的实施方案在实际应用中效果欠佳,存在搜索准确率和效率都较差的问题。
发明内容
为了解决目前基于内容的图像检索是相对成熟的技术领域,但针对海量图片数据相似度检测的实施方案在实际应用中效果欠佳,存在搜索准确率和效率都较差的技术问题,本发明提供一种图像相似度检索系统及方法。采用如下的技术方案:
一种图像相似度检索方法,包括以下步骤:
步骤1,图片特征提取,将批量图片转换为目标特征向量进行内容特征提取;
步骤2,特征库构建,将生成的图片特征向量存储在特征库中,且同步加载到服务器内存中,用于构建索引工厂;
步骤3,索引工厂构建,基于特征库构建索引工厂,采用HNSW32算法进行特征图网络构建;
步骤4,返回相似度TOP_N的图片信息,计算目标图片与索引工厂的特征图网络空间距离,快速返回与目标图片相似的TOP_N的图片信息。
可选的,采用ImageNet分类网络resnet的上层网络技术获取图片特征向量,基于特征内容表现、资源配置和特征存储效率,将图片特征向量维度保存为2048。
可选的,HNSW32检索算法采用跳表操作,依据点与点之间的距离计算,在高层定位到离目标设定距离的点,缩小检索范围。
通过上述技术方案,HNSW32检索算法采用跳表操作,利用分层的特性,先从最高层的入口点开始,计算点之间的距离,在每一层寻找离目标点最近的点,作为下一层的入口,直到第0层,到达快速定位到离目标较近的点,缩小检索范围的作用。
可选的,HNSW32算法在构图时采用启发式搜索选择连接邻居节点,且在搜索过程中,实现维护动态list;
HNSW32算法结构将空间中的向量按高位形式组织,每一个节点插入时,节点id自增加1,将数据保存在第0层,然后随机一个层数,从该层开始逐层往下遍历;具体方法是:
首先,初始化节点的数据结构。
然后,若为第一个元素,将该节点作为HNSW的entrypoint,并将该元素的层数作为当前的最大层;若不为第一个元素,则从当前图的最高层逐层往下寻找直至节点的层数+1停止,寻找到离data_point最近的节点,作为下面一层寻找的起始点;
最后,从curlevel依次开始往下,每一层寻找离data_point最接近的N个节点构成候选集,再从候选集中选择M个节点与data_point相互连接。
可选的,每个节点的数据以及与第0层的邻居关系数据均存储在data_level0_memory_,每个节点的数据包括邻居的数量、flag、保留的一个字节、邻居节点的id、data数据和label。
可选的,通过获取到的索引id信息,关联到图特征向量,计算目标图片与相似度最高的N个图片信息向量的Cosine相似度,用于图片相似度识别结果返回。
可选的,空间距离越近则表示与目标图片数据相似度越高。
通过采用上述技术方案,相似图识别检索技术路线主要包含图片特征提取、特征库构建、索引工厂构建、返回相似度TOP_N的图片信息。
首先,将批量图片转换为目标特征向量进行内容特征提取,通过使用ImageNet分类网络 resnet的上层网络技术获取图片特征向量,基于特征内容表现、资源配置和特征存储效率,将特征向量维度保存为2048。
然后,将生成的图片特征向量存储在特征库中,并且,同步加载服务器内存中去,用于构建索引工厂。
接下来,利用HNSW32算法进行特征图网络构建,即构建索引工厂。 HNSW32算法采用类似跳表的思想,在高层跳过大量离目标点较远的点,从而快速定位到离目标较近的点,从而缩小搜索范围。
HNSW32算法在构图时采用启发式搜索选择连接邻居节点,从而防止出现不连通图的情况。并且,在搜索过程中,实现维护动态list。其中,HNSW算法结构将空间中的向量按高位形式组织,每一个节点插入时,首先将数据保存在第0层。然后,随机一个层数,从该层开始逐层往下遍历,每层都将该节点凭借节点内部id进行插入,并按一定规则连接M个近邻节点,直至第0层。data_level0_memory_存储节点的数据以及第0层的邻居关系,每个节点的数据主要包括邻居的数量、flag、保留的一个字节、邻居节点的id、data数据、以及label。
最后,实现相似图信息的返回查找。通过运用L2欧几里得距离计算索引工厂的图网络空间距离,快速返回与其相似的TOP_N的图片信息。通过获取到的索引id信息,关联到图特征向量,计算目标图片与相似的TOP_N的图片信息向量的Cosine相似度,用于业务返回,距离越近则表示图片数据相似度越高,该方法切实解决了海量图片检索问题,大大提高了相似度搜索的准确率、以及搜索效率。
一种图像相似度检索系统,包括前端业务服务器、网关组件、多个模型服务器,所述网关组件包括请求分发网关和响应接收网关,所述请求分发网关接收前端业务服务器的批量相似图识别请求,并分发到多个模型服务器,所述模型服务器部署有根据一种图像相似度检索方法设计的图像相似度检索模型,多个模型服务器运行图像相似度检索模型,并输出图片相似度识别结果,所述响应接收网关接收模型服务器的相似图识别结果,并返回给前端业务服务器。
通过采用上述技术方案,在前端业务服务器和模型服务器部分,都进行分布式改造,以应用于高并发、海量图片数据检索、以及实时线上查询等业务需求。
可选的,所述前端业务服务器基于小波AI平台发布相似图识别的API请求,所述API请求将批量相似图识别请求发送到请求分发网关。
通过采用上述技术方案,基于小波AI平台,在AI平台进行模型部署,发布相应的API请求,该请求可实现将相似图识别请求发送到目标网关服务。
可选的,所述模型服务器包括图像索引加载组和图像识别组,所述图像索引加载组接收批量相似图识别请求,并构建索引传输给图像识别组,所述图像识别组运行图像相似度检索模型,并通过响应接收网关输出相似图像识别结果。
通过采用上述技术方案,将模型服务器分为图像索引加载组和图像识别组两部分,图像索引加载组用于将图像加载并构建索引,图像识别组运行图像相似度检索模型并输出相似度识别结果。
可选的,所述网关组件还设置第一资源监控组件,所述第一资源监控组件监控网关组件的实时输出内存占用数据、CPU占用数据、任务队列数据和响应数据;
所述模型服务器还设置第二资源监控组件,所述第二资源监控组件监控模型服务的输出内存占用数据、CPU占用数据、任务队列数据和响应数据。
通过采用上述技术方案,网关组件和模型服务器均设置资源监控组件,来分别监控输出内存占用数据、CPU占用数据、任务队列数据和响应数据等,以便更加直观地了解设备运行状况。
综上所述,本发明包括以下至少一种有益技术效果:
本发明能提供一种图像相似度检索系统及方法,从图像检索的根本出发,结合在实际案例中相似图片、视频检索中的实践经验,构建基于内容的图像检索系统所涉及的算法技术方案。其中,包括特征提取、特征库构建、索引工厂构建、业务部署等技术方案。该方案切实解决了海量图片检索问题,大大提高了相似度搜索的准确率、以及搜索效率。
附图说明
图1是本发明一种图像相似度检索方法的流程示意图;
图2是本发明一种图像相似度检索系统的连接示意图。
图3是本发明具体实施例的流程示意图。
附图标记说明:1、前端业务服务器;2、网关组件;21、请求分发网关;22、响应接收网关;23、第一资源监控组件;3、模型服务器;31、图像索引加载组;32、图像识别组;33、第二资源监控组件。
具体实施方式
以下结合附图对本发明作进一步详细说明。
本发明实施例公开一种图像相似度检索系统及方法。
参照图1-图3,一种图像相似度检索方法,包括以下步骤:
步骤1,图片特征提取,将批量图片转换为目标特征向量进行内容特征提取;
步骤2,特征库构建,将生成的图片特征向量存储在特征库中,且同步加载到服务器内存中,用于构建索引工厂;
步骤3,索引工厂构建,基于特征库构建索引工厂,采用HNSW32算法进行特征图网络构建;
步骤4,返回相似度TOP_N的图片信息,计算目标图片与索引工厂的特征图网络空间距离,快速返回与目标图片相似的TOP_N的图片信息。
采用ImageNet分类网络resnet的上层网络技术获取图片特征向量,基于特征内容表现、资源配置和特征存储效率,将图片特征向量维度保存为2048。
HNSW32检索算法采用跳表操作,依据点与点之间的距离计算,在高层定位到离目标设定距离的点,缩小检索范围。
HNSW32检索算法采用跳表操作,利用分层的特性,先从最高层的入口点开始,计算点之间的距离,在每一层寻找离目标点最近的点,作为下一层的入口,直到第0层,到达快速定位到离目标较近的点,缩小检索范围的作用。
HNSW32算法在构图时采用启发式搜索选择连接邻居节点,且在搜索过程中,实现维护动态list;
HNSW32算法结构将空间中的向量按高位形式组织,每一个节点插入时,首先将数据保存在第0层,然后随机一个层数,从该层开始逐层往下遍历,具体方法是:
首先,初始化节点的数据结构。
然后,若为第一个元素,将该节点作为HNSW的entrypoint,并将该元素的层数作为当前的最大层;若不为第一个元素,则从当前图的最高层逐层往下寻找直至节点的层数+1停止,寻找到离data_point最近的节点,作为下面一层寻找的起始点;
最后,从curlevel依次开始往下,每一层寻找离data_point最接近的N个节点构成候选集,再从候选集中选择M个节点与data_point相互连接。
每个节点的数据以及与第0层的邻居关系数据均存储在data_level0_memory_,每个节点的数据包括邻居的数量、flag、保留的一个字节、邻居节点的id、data数据和label。
通过获取到的索引id信息,关联到图特征向量,计算目标图片与相似度最高的N个图片信息向量的Cosine相似度,用于图片相似度识别结果返回。
空间距离越近则表示与目标图片数据相似度越高。
相似图像识别检索技术路线主要包含图片特征提取、特征库构建、索引工厂构建、返回相似度TOP_N的图片信息。
首先,将批量图片转换为目标特征向量进行内容特征提取,通过使用ImageNet分类网络 resnet的上层网络技术获取图片特征向量,基于特征内容表现、资源配置和特征存储效率,将特征向量维度保存为2048。
然后,将生成的图片特征向量存储在特征库中,并且,同步加载服务器内存中去,用于构建索引工厂。
接下来,利用HNSW32算法进行特征图网络构建,即构建索引工厂。 HNSW32算法采用类似跳表的思想,在高层跳过大量离目标点较远的点,从而快速定位到离目标较近的点,从而缩小搜索范围。
HNSW32算法在构图时采用启发式搜索选择连接邻居节点,从而防止出现不连通图的情况。并且,在搜索过程中,实现维护动态list。其中,HNSW算法结构将空间中的向量按高位形式组织,每一个节点插入时,首先将数据保存在第0层。然后,随机一个层数,从该层开始逐层往下遍历,每层都将该节点凭借节点内部id进行插入,并按一定规则连接M个近邻节点,直至第0层。data_level0_memory_存储节点的数据以及第0层的邻居关系,每个节点的数据主要包括邻居的数量、flag、保留的一个字节、邻居节点的id、data数据、以及label。
最后,实现相似图信息的返回查找。通过运用L2欧几里得距离计算索引工厂的图网络空间距离,快速返回与其相似的TOP_N的图片信息。通过获取到的索引id信息,关联到图特征向量,计算目标图片与相似的TOP_N的图片信息向量的Cosine相似度,用于业务返回,距离越近则表示图片数据相似度越高,该方法切实解决了海量图片检索问题,大大提高了相似度搜索的准确率、以及搜索效率。
一种图像相似度检索系统,包括前端业务服务器1、网关组件2、多个模型服务器3,网关组件2包括请求分发网关21和响应接收网关22,请求分发网关21接收前端业务服务器1的批量相似图识别请求,并分发到多个模型服务器3,模型服务器3部署有根据一种图像相似度检索方法设计的图像相似度检索模型,多个模型服务器3运行图像相似度检索模型,并输出图片相似度识别结果,响应接收网关22接收模型服务器3的相似图识别结果,并返回给前端业务服务器1。
在前端业务服务器1和模型服务器3部分,都进行分布式改造,以应用于高并发、海量图片数据检索、以及实时线上查询等业务需求。
前端业务服务器1基于小波AI平台发布相似图识别的API请求,API请求将批量相似图识别请求发送到请求分发网关21。
基于小波AI平台,在AI平台进行模型部署,发布相应的API请求,该请求可实现将相似图识别请求发送到目标网关服务。
模型服务器3包括图像索引加载组31和图像识别组32,图像索引加载组31接收批量相似图识别请求,并构建索引传输给图像识别组32,图像识别组32运行图像相似度检索模型,并通过响应接收网关22输出相似图像识别结果。
将模型服务器3分为图像索引加载组31和图像识别组32两部分,图像索引加载组31用于将图像加载并构建索引,图像识别组32运行图像相似度检索模型并输出相似度识别结果。
网关组件2还设置第一资源监控组件23,第一资源监控组件23监控网关组件2的实时输出内存占用数据、CPU占用数据、任务队列数据和响应数据;
模型服务器3还设置第二资源监控组件33,第二资源监控组件33监控模型服务器3的输出内存占用数据、CPU占用数据、任务队列数据和响应数据。
网关组件2和模型服务器3均设置资源监控组件,来分别监控输出内存占用数据、CPU占用数据、任务队列数据和响应数据等,以便更加直观地了解设备运行状况。
本发明实施例一种图像相似度检索系统及方法的实施原理为:
1.服务部署技术路线
在业务部署部分,进行分布式改造,以应用于高并发、海量图片数据检索、以及实时线上查询等业务需求。
(1)在AI平台进行前端业务需求触发
1〉基于小波AI平台,在AI平台进行模型部署,发布相应的API请求,该请求可实现将相似图识别请求发送到目标网关服务;
(2)网关服务部署
1〉请求分发组,将具体的相似图识别请求分发到模型服务;
a.多线程、异步方式循环消费任务队列;
b.根据相似图识别请求组装成请求消息发送到请求MQ;
2〉响应接收组,接收各模型服务相似图像识别响应结果;
a.单线程,消费响应MQ;
b.解析消息数据,将识别结果根据标识符ID写入指定相似图识别请求对象响应结果;
3〉资源监控组;
实时输出内存占用、CPU占用、任务队列、响应数据等资源监控数据;
4>API服务组,接收来自AI平台模型服务的HTTP相似图识别请求并将结果返回,处理步骤:
a.解析请求参数,获取base64格式图像、单号、数量等参数;
b.封装相似图识别请求对象,绑定唯一标识符、图像等数据;
c.将相似图识别请求对象放入任务队列;
d.检测相似图识别请求对象中的响应结果;
e.整理过滤各模型服务的识别结果;
f.将新图片向量数据(ResNet模型转换)插入到数据库;
g.返回响应数据。
(3)模型服务部署
1〉图像索引加载组,将图像加载并构建索引;
a.加载指定月份,最多6个月的图像数据表;
b.针对每个月份的数据表,使用线程池模式将数据加载并创建索引到内存;
2〉图像识别组 ;
a.多线程消费任务队列;
b.根据base64图像数据,执行相似图索引查询;
a)将base64内容转换为向量数据;
b)通过向量数据索引进行相似图搜索;
c)计算相似图的相似度;
d)根据相似度排序过滤(截取指定top);
c.将结果发送到响应MQ;
3〉资源监控组;
实时输出内存占用、CPU占用、任务队列、响应数据等资源监控数据;
4〉请求MQ消费组,消费请求MQ,将消息写入任务队列。
以上均为本发明的较佳实施例,并非以此限制本发明的保护范围,故:凡依本发明的结构、形状、原理所做的等效变化,均应涵盖于本发明的保护范围之内。