本发明属于数据检索领域,更具体地,涉及一种基于卷积神经网络的app相似图标检索方法和系统。
背景技术:
随着互联网的发展以及智能手机普及率的提高,手持移动终端得到了巨大的发展,伴随而来的是手机端应用程序数量的增加,对于用户以及安全性检测人员而言通过手机应用程序图标来快速的搜索出对应的或者相似的手机应用程序是一件非常困难的事情。对此,需要用到图像检索技术。
当前的图像检索技术主要集中在基于文本的检索以及基于内容的检索。基于文本的检索是指对图像文件建立关键字或文本标题以及一些附加信息对图像进行描述,然后将图像的存储路径和图像的关键词建立联系。它的缺点在于:随着大量图像的出现,需要大量的劳动力去管理和注释这些图像:不同的人对同一幅图像的理解不同,文本描述信息相对主观;不同国家的人由于语言的差异会造成对同一图像的语义理解的差异。因而仅仅基于关键词的检索已不能满足用户的检索要求。不仅如此,传统的数据库检索结果与信息的组织方式及查询结果的显示方式有关,而无法按照查询结果的相似程度进行输出。能够对多媒体数据内容进行自动语义分析、表达和检索是数据库及其它信息系统的发展趋势。
基于内容的主要做法是提取图像的特征,然后再根据图像特征进行相似度的计算,目前在大规模数据中较多的算法有d-hash、sift、lbp等算法,但是这些算法的缺点也是比较明显,对于d-hash算法而言,检索效率比较高,但是准确率很低,而且该算法对轮廓的敏感度太高,不能用在轮廓一致的图像中检索;对于sifi算法,相对于d-hash算法而言,该算法具有很高的准确率,但是该算法的复杂度很高,不仅在计算sift特征时,最主要的是在检索时,sift特征由n个128维的浮点型向量组成,在两幅图像进行相似度计算时计算量非常大,而且sift算法在大规模的数据中进行检索时,只能采用线性计算的方法,在全库中检索时需要与全库中的每一张图像进行一次相似度的计算,这大大提高了检索的时间。
由此可见,现有技术存在检索效率低和检索准确率低的技术问题。
技术实现要素:
针对现有技术的以上缺陷或改进需求,本发明提供了一种基于卷积神经网络的app(armorpiercingproof,计算机应用程序)相似图标检索方法和系统,其目的在于将样本特征向量、样本文件标识和索引存入检索系统,对组合特征向量,在检索系统中进行检索,得到文件标识集合,将文件标识集合取并集,在并集中进行线性计算,得到样本app图标与目标app图标的相似度,利用相似度对样本app图标进行排序。由此解决现有技术存在检索效率低和检索准确率低的技术问题。
为实现上述目的,按照本发明的一个方面,提供了一种基于卷积神经网络的app相似图标检索方法,包括:
(1)对于样本app图标,基于卷积神经网络提取样本特征向量,记录样本特征向量的样本文件标识,将样本特征向量均分成n个样本部分,在每个样本部分建立一个索引,得到n个索引,将样本特征向量、样本文件标识和n个索引存入检索系统;
(2)对于目标app图标,基于卷积神经网络提取目标特征向量,将目标特征向量均分成n个目标部分,对每个目标部分进行组合,得到m个目标组合特征向量;
(3)对m个组合特征向量,在检索系统中进行m次检索,得到m个文件标识集合,将m个文件标识集合取并集,在并集中进行线性计算,得到样本app图标与目标app图标的相似度,利用相似度对样本app图标进行排序。
进一步的,步骤(1)还包括对样本app图标进行预处理,步骤(2)还包括对目标app图标进行预处理。
进一步的,预处理包括:图像灰度化、图像放缩和图像归一化。
进一步的,步骤(1)还包括对样本特征向量进行哈希化处理,步骤(2)还包括对目标特征向量进行哈希化处理。
进一步的,哈希化处理的具体实现方式为:设定一个阈值,将特征向量x映射为二进制向量f(x),
按照本发明的另一方面,提供了一种基于卷积神经网络的app相似图标检索系统,包括:
检索系统模块,用于对于样本app图标,基于卷积神经网络提取样本特征向量,记录样本特征向量的样本文件标识,将样本特征向量均分成n个样本部分,在每个样本部分建立一个索引,得到n个索引,将样本特征向量、样本文件标识和n个索引存入检索系统;
组合特征向量模块,用于对于目标app图标,基于卷积神经网络提取目标特征向量,将目标特征向量均分成n个目标部分,对每个目标部分进行组合,得到m个目标组合特征向量;
图标排序模块,用于对m个组合特征向量,在检索系统中进行m次检索,得到m个文件标识集合,将m个文件标识集合取并集,在并集中进行线性计算,得到样本app图标与目标app图标的相似度,利用相似度对样本app图标进行排序。
进一步的,检索系统模块还包括对样本app图标进行预处理,组合特征向量模块还包括对目标app图标进行预处理。
进一步的,预处理包括:图像灰度化、图像放缩和图像归一化。
进一步的,检索系统模块还包括对样本特征向量进行哈希化处理,组合特征向量模块还包括对目标特征向量进行哈希化处理。
进一步的,哈希化处理的具体实现方式为:设定一个阈值,将特征向量x映射为二进制向量f(x),
总体而言,通过本发明所构思的以上技术发明与现有技术相比,能够取得下列有益效果:
(1)本发明将样本特征向量、样本文件标识和索引存入检索系统,对组合特征向量,在检索系统中进行检索,得到文件标识集合,将文件标识集合取并集,在并集中进行线性计算,得到样本app图标与目标app图标的相似度,利用相似度对样本app图标进行排序。进而克服了传统图像检索中准确率低,检索效率不高的问题,同时为用户提供很大的方便,可以根据图标来搜索对应的手机应用程序;同时也为安全检测人员对于仿冒app的检测提供了一个新的途径;更为重要的是为银行或者一些机构打击仿冒app或者发布安全警告等提供了技术支持。
(2)优选的,本发明对样本app图标和目标app图标进行预处理,将图标图像的规格统一化,保证了计算的高效性。
(3)优选的,本发明对样本app图标和目标app图标进行哈希化处理,提高了检索效率。
(4)优选的,本发明对样本app图标和目标app图标进行哈希化处理,设定阈值为0.5,在保证检索效率的同时,提高了检索准确率。
附图说明
图1是本发明实施例提供的一种基于卷积神经网络的app相似图标检索方法的流程图;
图2是本发明实施例提供的卷积神经网络的结构示意图;
图3是本发明实施例将目标特征向量均分和转换的示意图。
具体实施方式
为了使本发明的目的、技术发明及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
如图1所示,一种基于卷积神经网络的app相似图标检索方法,包括:
(1)对于样本app图标,基于卷积神经网络提取样本特征向量,记录样本特征向量的样本文件标识,将样本特征向量均分成n个样本部分,在每个样本部分建立一个索引,得到n个索引,将样本特征向量、样本文件标识和n个索引存入检索系统;
(2)对于目标app图标,基于卷积神经网络提取目标特征向量,将目标特征向量均分成n个目标部分,对每个目标部分进行组合,得到m个目标组合特征向量;
(3)对m个组合特征向量,在检索系统中进行m次检索,得到m个文件标识集合,将m个文件标识集合取并集,在并集中进行线性计算,得到样本app图标与目标app图标的相似度,利用相似度对样本app图标进行排序。
进一步的,对样本app图标和目标app图标进行预处理。
在对图标进行检索时,为了提取图标的特征向量,需要将图像的规格统一化,本发明中对于图标图像的预处理主要有三个步骤:图像灰度化、图像放缩、图像归一化。
图标图像采用的是rgb的编码方式,一个像素点由一个三维的向量表示如(r,g,b),但是由于设计的卷积神经网络的输入是一维的,同时为了计算的高效性,所以需要将图标图像进行灰度化的转换,本发明中采用的灰度转化算法如下:
gray(i,j)=0.299*r(i,j)+0.578*g(i,j)+0.114*b(i,j)
(i,j)是像素点坐标,gray(i,j)是像素点坐标为(i,j)时的灰度值,r(i,j)是像素点坐标为(i,j)时的r通道,g(i,j)是像素点坐标为(i,j)时的g通道,b(i,j)是像素点坐标为(i,j)时的b通道。
对于样本app图标和目标app图标,图标图像大小不一,同时卷积神经网络的输入大小固定,需要对图标进行缩小或者放大,本发明中采用了双线性插值法,对于一个目标像素点,通过反向变换得到它的浮点坐标为(i+u,j+v),其中i、j是原始图像中的坐标点,u、v为区间[0,1)之间的浮点数,则目标像素点的值可以由原始图像中最邻近的四个点的值来确定,相应的公式为:
其中,f(i,j)是原始图像中(i,j)处的像素值,依次类推,f(i,j+1)是原始图像中(i,j+1)处的像素值,f(i+1,j)是原始图像中(i+1,j)处的像素值,f(i+1,j+1)是原始图像中(i+1,j+1)处的像素值,使用周围的四个点计算出目标像素(i+u,j+v)的像素值f(i+u,j+v)。
第三个要做的是对图像进行归一化,本发明采用线性归一化的算法,具体公式如下:
设定min(x)为0,max(x)为255,然后代入上面的公式,x为使用周围的四个点计算出目标像素(i+u,j+v)的像素值f(i+u,j+v),计算出归一化之后的像素值x。
进一步的,对预处理后的图标进行特征向量提取,深度学习出现之前较为传统的办法都是人工设定的特征向量提取规则,本发明采用了最前沿的研究成果,使用深度学习技术来对图标图像特征向量进行提取,并且使提取出来的特征向量易于在大规模的数据中进行相似度的计算。
具体的做法如下:
设计卷积神经网络,参照alexnet网络结构,在第七层与第八层之间添加一个全连接层,该层的维度为64,并且采用softmax函数作为激活函数,具体设计如图2所示。
训练上一步设计的神经网络,使用caffe深度学习框架进行训练调参,由于待检索的图像没有标签,无法使用待检索数据进行训练,所以使用公开的带标签的数据集对网络模型进行训练,本发明采用的训练数据集为imagenet中的数据。
使用训练好的卷积神经网络对全库的图标进行离线的前向计算(forword),然后记录下第八层的值。
通过以上步骤,每张图像可以得到一个64维的特征向量,向量中每一维的值都是0到1之间的浮点数,将该特征向量保存。
进一步的,步骤(1)还包括对样本特征向量进行哈希化处理,步骤(2)还包括对目标特征向量进行哈希化处理。
进一步的,哈希化处理的具体实现方式为:设定一个阈值,将特征向量x映射为二进制向量f(x),
具体的,对于64维的特征向量进行相似度的检索效率会非常低,本发明采用了对特征向量进行哈希化的方法,具体做法是设定一个阈值,发明中的阈值为0.5,然后将特征向量x映射为01二进制向量,采用如下公式:
通过以上方法,64维的特征向量变成了64维的二进制向量,该64维的二进制向量作为最终的特征向量。
根据对前面局部敏感哈希算法的介绍,本发明中的检索问题也转换成为高维空间中的相似搜索问题,为了解决这个问题,本发明采用了lsh算法的核心思想,将特征根据不同的哈希函数放入不同的桶中,然后在检索时,在相同的桶中做检索。本发明根据lsh算法思想,将特征均匀的分为四个部分,这四个部分当做keyl、key2、key3、key4,keyl为0101010111000101,key2为0001100110000111,key3为0010100110001101,key4为0110001100011100,每个特征都是一个16维的二进制向量,然后将这些二进制向量转换为一个十六进制数,作为最后的id,这样特征转换成了4个id:idl、id2、id3、id4,id1为55c5,id2为1987,id3为298d,id4为631c,每个id都是一个十六进制的数,如图3所示。
对特征进行处理之后,将特征存放到另一个搜索系统中,在本发明中,采用了elasticsearch搜索系统,在es系统中建立新的索引(index),然后将每个特征作为文件标识文档(document)存入系统中,文件标识文档中包含的特征有:id1、id2、id3、id4、特征向量哈希化处理后的值、文件md5等属性。
随着app的增长,对于app的检索技术的要求越来越高,通常app商店提供的搜索栏都是通过关键字来查找对应的app,输入app的关键字,然后去app的描述信息中查找对应的app,这往往需要在将app录入时输入大量的描述信息,当然这些信息也可以由开发人员输入。但是,在对于安全行业的工作者来说,仅仅根据app的描述信息来对app进行安全分析,是一件困难的事情,尤其是对一些仿冒的app的检测而言,仿冒的app描述信息可能与真实的app不一样,或者完全不相关,但是仿冒的app在图标上与真实的app很相似,从用户的角度很难区分这两者的区别,为了区分出这些仿冒app,一个可行的办法是根据该app的图标去搜索出相似的app,然后再根据这些相似app的集合去确定该app是不是仿冒app。从另一个安全情报分析的角度上考虑,基于app图标的搜索也是很有必要的,比如某银行的app应用被恶意的仿冒假冒,银行为了发掘出有哪些仿冒者,有多少个仿冒的app时,通过图标去进行搜索,找出相似的app,然后过滤出良性的app,剩下的就可以找到被仿冒的一些app,进一步可以查找仿冒app的开发者的信息,进而追究法律责任。
本发明克服了传统图像检索中准确率低,检索效率不高的问题,同时为用户提供很大的方便,可以根据图标来搜索对应的手机应用程序;同时也为安全检测人员对于仿冒app的检测提供了一个新的途径;更为重要的是为银行或者一些机构打击仿冒app或者发布安全警告等提供了技术支持。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。