一种基于GPU并行运算的以图搜图系统及方法与流程

文档序号:19571328发布日期:2019-12-31 18:58阅读:853来源:国知局
一种基于GPU并行运算的以图搜图系统及方法与流程

本发明涉及大数据检索领域,具体来说,涉及一种基于gpu并行运算的以图搜图系统及方法。



背景技术:

用户在日常工作中经常需要对图片、照片等线索进行排查,但要在海量的数据库中进行图片搜索是一个技术挑战,而且现有搜索技术的时间效率也比较差,单次搜索的时间往往需要十秒以上甚至数十秒。用户在进行图像视频检索时通常需要多次检索,而搜索的响应速度就成了影响效率的重要因素。在这一背景下,需要搭载一个集成目标检测、特征提取等人工智能算法和基于图形计算单元(以下简称gpu)并行运算的高速检索技术的以图搜图系统,为用户提供多种基于不同条件的搜索功能,进而大大提升海量图片数据库的检索效率和用户的日常工作效率。

针对相关技术中的问题,目前尚未提出有效的解决方案。



技术实现要素:

针对相关技术中的上述技术问题,本发明提出一种基于gpu并行运算的以图搜图系统及方法,可基于海量图片数据,使用特征提取算法和聚类算法对数据进行聚类梳理建立索引,并通过基于并行运算的高速检索算法为用户提供高速搜图功能,实现对上百亿图片数据的秒内搜索。

为实现上述技术目的,本发明的技术方案是这样实现的:

一种基于gpu并行运算的以图搜图系统,包括:

图片上传模块,用于将待搜索图片上传到系统中;

目标检测模块,用于对上传的图片进行检测和分割;

特征提取模块,用于对待搜索图片进行特征提取,并将图片抽象化成高维向量;

聚类索引模块,用于对图片库中未整理过的图片向量按照不同聚类类别分别进行聚类并建立一级索引,然后对结果再次进行聚类并建立二级索引;

三级缓存模块,用于将所述的一级索引和二级索引分别预加载在内存和显存中,并将向量放在ssd固态硬盘上等待读取;

并行检索模块,用于依照所述的二级索引、一级索引、向量的顺序进行搜索,得到与待搜索图片最相似的搜索结果。

优选的,根据权利要求1所述的一种基于gpu并行运算的以图搜图系统,其特征在于,用户上传图片格式为jpg、png。

优选的,所述目标检测模块将图片中人、车、物分割作为候选搜索目标,另外,图片整体同样也作为候选搜索目标。

优选的,特征提取时将图片送入预训练好的模型来获取向量结果。

优选的,所述聚类类别包括图片时间、拍摄地点以及图片类别。

一种基于gpu并行运算的以图搜图方法,包括以下步骤:

s1、将待搜索图片上传到系统中;

s2、对上传的图片进行检测和分割;

s3、对待搜索图片进行特征提取,并将图片抽象化成高维向量;

s4、对图片库中未整理过的图片向量按照不同聚类类别分别进行聚类并建立一级索引,然后对结果再次进行聚类并建立二级索引;

s5、将一级索引和二级索引分别预加载在内存和显存中,并将向量放在ssd固态硬盘上等待读取;

s6、依照二级索引、一级索引、向量的顺序进行搜索,得到与待搜索图片最相似的搜索结果。

优选的,用户上传图片格式为jpg、png。

优选的,s4步骤将图片中人、车、物分割作为候选搜索目标,另外,图片整体同样也作为候选搜索目标。

优选的,特征提取时将图片送入预训练好的模型来获取向量结果。

优选的,所述聚类类别包括图片时间、拍摄地点以及图片类别。

本发明的有益效果:

1.提升了海量图片数据库的利用率,梳理图片数据并提供高速检索功能;

2.提升了搜图等操作的效率,大量减少用户在检索图片时需要耗费的时间;

3.设计独特并行检索算法充分使用机器性能,进行同样数据量的搜索时,比传统搜索快数十甚至上百倍,这个搜索算法除了在本系统中使用,也可以用于其他有搜索需求的场景。相比旧有技术,在搜索效率上的提升是突破性的。

4.对海量图片数据构建多级索引,优化数据存储结构,能够充分发挥了并行检索算法的优势,实现了高效的数据整理和搜索。

5.设计三级缓存的存储方式,配合gpu并行检索技术,最大化利用了机器有限的硬件性能,最小化搜索时的数据传输时间和响应时间,极大增强用户体验。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是根据本发明实施例所述的一种基于gpu并行运算的以图搜图系统模块运行流程框图。

图2是根据本发明实施例所述的一种基于gpu并行运算的以图搜图系统在线服务流程图。

图3是根据本发明实施例所述的一种基于gpu并行运算的以图搜图系统基于三级缓存的搜索流程图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员所获得的所有其他实施例,都属于本发明保护的范围。

如图1所示,根据本发明实施例所述的一种基于gpu并行运算的以图搜图系统,一种基于gpu并行运算的以图搜图系统,包括:图片上传模块,用于将待搜索图片上传到系统中;目标检测模块,用于对上传的图片进行检测和分割;特征提取模块,用于对待搜索图片进行特征提取,并将图片抽象化成高维向量;聚类索引模块,用于对图片库中未整理过的图片向量按照不同聚类类别分别进行聚类并建立一级索引,然后对结果再次进行聚类并建立二级索引;三级缓存模块,用于将所述的一级索引和二级索引分别预加载在内存和显存中,并将向量放在ssd固态硬盘上等待读取;并行检索模块,用于依照所述的二级索引、一级索引、向量的顺序进行搜索,得到与待搜索图片最相似的搜索结果。

根据本发明实施例所述的一种基于gpu并行运算的以图搜图方法,包括以下步骤:图片上传、目标检测、特征提取、分类多级聚类索引、三级缓存、gpu并行检索。上述步骤具体如下:

图片上传/以图搜图

用户将标准格式(如jpg、png等)的待搜索图片上传到系统中,以对图片进行整图搜索或选择人、车、物等类型搜索目标。同时对于数据库中有文本/标签信息的数据,用户还可以进行文本或标签的搜索,也可以在搜图的同时附加其他条件,包括时间地点属性等。单机服务器对于可接入的最大数据量,搜索都可以做到秒级返回结果。

提供的在线搜索服务流程图见附图2。

目标检测

主要是对用户上传的大图进行检测和分割,获得图片中的人、车、物等目标及相关信息。目标检测模块接收到图片后,送入预训练好的目标检测模型,获得每张图片中的人、车、物等目标列表和在图片中对应的位置,然后给前端返回图片中的目标和位置,然后对原图片进行切割,切出来的人、车、物等目标作为候选搜索目标由用户选择。用户也可以不选择人、车、物等搜索,而是整图搜索。用户选择的搜索类别不同,决定了系统将在不同的图片库中进行检索。

特征提取/图片向量化

主要是对待搜索的图片进行特征提取,将每张图片抽象化成一个高维向量(不同类型图片对应维度不同),用于在图片库中进行对比检索(在对未整理的图片库建立索引时同样需要进行向量化)。特征提取的时候需要将图片送入预训练好的模型来获取向量结果。

这样做就将图片对比的问题转化成了向量相似度对比,是一个数学运算问题,也可以通过各种加速算法进行提速。

分类多级聚类索引

主要是对未整理过的图片向量按照时间、拍摄地点以及所属类别,各自进行聚类并建立索引,然后对结果再次进行聚类,缩小搜索时的数据量,以实现高效准确的搜索。

1、按时间、地点划分数据并各自使用聚类算法进行聚类,保证了不同条件的数据各自具有独立性,使用户可以在搜索时附加时间地点等条件,并且对于限定范围的线索查找可以具有更高的效率和准确率。

2、对于系统支持的上亿甚至十亿级别的数据量,进行初次聚类后得到的索引数目仍然是千万级别的。在此基础上,对千万索引再进行一次聚类,得到二级索引,此时的二级索引数量就被压缩到了十万级。而对于基于gpu的高速检索算法,百万级以及以下的数据量运算时间都是毫秒级的。

3、对于这种方法得到的多级索引,搜索时使用独创的三级缓存技术来存储,详见后述“三级缓存技术”部分。

三级缓存技术

主要是针对多级索引,将向量、一级索引和二级索引分别存储在ssd固态硬盘、内存和显存中,结合gpu并行检索技术,最小化搜索时的数据传输时间,大幅提升了搜索效率。对于建立好的索引库,底层数据(即所有图片向量)按索引存在ssd固态硬盘上,搜索时视需求加载到内存然后到显存;一级索引提前加载放到内存中,搜索时视需求加载到显存;二级索引提前加载放到显存中,是所有搜索的起始比对对象。

这样做是由显存、内存和硬盘存储的大小决定的:通常显存大小在10g以下,多的可以超过10g,而对于显存中加载的内容,搜索对比操作可以直接进行,是最省时间的,但这个大小最多存放百万级的高维向量,考虑到一块显卡对于多种类搜索的支持,每个种类的二级索引数量期望是在十万级;而合理的内存空间占用通常是几十g左右,同理一级索引的数量期望是百万级;而搜索时速度相对最慢的ssd硬盘的大小就是拓展性比较强的了,完全可以由数据库的规模决定。

综上,三级缓存技术的核心是在有限的空间约束下尽可能压缩运算和数据传输的时间,并不是一个死板的技术。如果我们只有百万级的数据库,那么完全可以全部预加载到显存进行运算。

基于三级缓存的搜索流程见附图3。

gpu并行检索技术

主要是将待搜索图片转化的向量在数据库中进行并行检索,使用gpu的超强并发能力最小化搜索时间,达到秒内返回结果。所有搜索比对过程都在显存空间中使用gpu运算完成,图片对比运算转化成向量内积运算。进行搜索时,先在二级索引(预加载在显存)中搜索得到数个相似度最高的索引;然后将对应的一级索引(预加载在内存)从内存拷贝到显存中进行精确搜索;最后将得到的最相似向量(按目录存放在ssd)区域从硬盘读取到内存后拷贝到显存,全部对比一遍就可以得到最相似的一批向量,即与输入图片最相似的搜索结果。

综上所述,本发明通过目标检测技术,对图片中的人、车、物等目标进行提取,为用户提供上传图片中的搜索候选目标。通过特征提取技术,将图片一一对应成包含其所有特征的高维索引,实现了图片向量化,把向量看作高维空间中的点,便于建立索引和搜索。通过分类多级聚类索引算法,对未整理的数据分类别进行多次聚类建立多级索引,增强了数据的条理性并提高了搜索时的准确率和效率。通过三级缓存技术,预先加载不同级别的索引到缓存中,最小化搜索的数据传输时间,大幅提升了搜索效率。通过基于gpu并行运算的高速检索技术,大大提高搜索时的数据并发量,实现了亿级数据秒内返回搜索结果,而过去的技术在应对大数据量单次搜索往往需要十秒甚至数十秒。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1