本發(fā)明屬于數(shù)據(jù)檢索領(lǐng)域,更具體地,涉及一種基于卷積神經(jīng)網(wǎng)絡(luò)的app相似圖標(biāo)檢索方法和系統(tǒng)。
背景技術(shù):
隨著互聯(lián)網(wǎng)的發(fā)展以及智能手機(jī)普及率的提高,手持移動終端得到了巨大的發(fā)展,伴隨而來的是手機(jī)端應(yīng)用程序數(shù)量的增加,對于用戶以及安全性檢測人員而言通過手機(jī)應(yīng)用程序圖標(biāo)來快速的搜索出對應(yīng)的或者相似的手機(jī)應(yīng)用程序是一件非常困難的事情。對此,需要用到圖像檢索技術(shù)。
當(dāng)前的圖像檢索技術(shù)主要集中在基于文本的檢索以及基于內(nèi)容的檢索?;谖谋镜臋z索是指對圖像文件建立關(guān)鍵字或文本標(biāo)題以及一些附加信息對圖像進(jìn)行描述,然后將圖像的存儲路徑和圖像的關(guān)鍵詞建立聯(lián)系。它的缺點在于:隨著大量圖像的出現(xiàn),需要大量的勞動力去管理和注釋這些圖像:不同的人對同一幅圖像的理解不同,文本描述信息相對主觀;不同國家的人由于語言的差異會造成對同一圖像的語義理解的差異。因而僅僅基于關(guān)鍵詞的檢索已不能滿足用戶的檢索要求。不僅如此,傳統(tǒng)的數(shù)據(jù)庫檢索結(jié)果與信息的組織方式及查詢結(jié)果的顯示方式有關(guān),而無法按照查詢結(jié)果的相似程度進(jìn)行輸出。能夠?qū)Χ嗝襟w數(shù)據(jù)內(nèi)容進(jìn)行自動語義分析、表達(dá)和檢索是數(shù)據(jù)庫及其它信息系統(tǒng)的發(fā)展趨勢。
基于內(nèi)容的主要做法是提取圖像的特征,然后再根據(jù)圖像特征進(jìn)行相似度的計算,目前在大規(guī)模數(shù)據(jù)中較多的算法有d-hash、sift、lbp等算法,但是這些算法的缺點也是比較明顯,對于d-hash算法而言,檢索效率比較高,但是準(zhǔn)確率很低,而且該算法對輪廓的敏感度太高,不能用在輪廓一致的圖像中檢索;對于sifi算法,相對于d-hash算法而言,該算法具有很高的準(zhǔn)確率,但是該算法的復(fù)雜度很高,不僅在計算sift特征時,最主要的是在檢索時,sift特征由n個128維的浮點型向量組成,在兩幅圖像進(jìn)行相似度計算時計算量非常大,而且sift算法在大規(guī)模的數(shù)據(jù)中進(jìn)行檢索時,只能采用線性計算的方法,在全庫中檢索時需要與全庫中的每一張圖像進(jìn)行一次相似度的計算,這大大提高了檢索的時間。
由此可見,現(xiàn)有技術(shù)存在檢索效率低和檢索準(zhǔn)確率低的技術(shù)問題。
技術(shù)實現(xiàn)要素:
針對現(xiàn)有技術(shù)的以上缺陷或改進(jìn)需求,本發(fā)明提供了一種基于卷積神經(jīng)網(wǎng)絡(luò)的app(armorpiercingproof,計算機(jī)應(yīng)用程序)相似圖標(biāo)檢索方法和系統(tǒng),其目的在于將樣本特征向量、樣本文件標(biāo)識和索引存入檢索系統(tǒng),對組合特征向量,在檢索系統(tǒng)中進(jìn)行檢索,得到文件標(biāo)識集合,將文件標(biāo)識集合取并集,在并集中進(jìn)行線性計算,得到樣本app圖標(biāo)與目標(biāo)app圖標(biāo)的相似度,利用相似度對樣本app圖標(biāo)進(jìn)行排序。由此解決現(xiàn)有技術(shù)存在檢索效率低和檢索準(zhǔn)確率低的技術(shù)問題。
為實現(xiàn)上述目的,按照本發(fā)明的一個方面,提供了一種基于卷積神經(jīng)網(wǎng)絡(luò)的app相似圖標(biāo)檢索方法,包括:
(1)對于樣本app圖標(biāo),基于卷積神經(jīng)網(wǎng)絡(luò)提取樣本特征向量,記錄樣本特征向量的樣本文件標(biāo)識,將樣本特征向量均分成n個樣本部分,在每個樣本部分建立一個索引,得到n個索引,將樣本特征向量、樣本文件標(biāo)識和n個索引存入檢索系統(tǒng);
(2)對于目標(biāo)app圖標(biāo),基于卷積神經(jīng)網(wǎng)絡(luò)提取目標(biāo)特征向量,將目標(biāo)特征向量均分成n個目標(biāo)部分,對每個目標(biāo)部分進(jìn)行組合,得到m個目標(biāo)組合特征向量;
(3)對m個組合特征向量,在檢索系統(tǒng)中進(jìn)行m次檢索,得到m個文件標(biāo)識集合,將m個文件標(biāo)識集合取并集,在并集中進(jìn)行線性計算,得到樣本app圖標(biāo)與目標(biāo)app圖標(biāo)的相似度,利用相似度對樣本app圖標(biāo)進(jìn)行排序。
進(jìn)一步的,步驟(1)還包括對樣本app圖標(biāo)進(jìn)行預(yù)處理,步驟(2)還包括對目標(biāo)app圖標(biāo)進(jìn)行預(yù)處理。
進(jìn)一步的,預(yù)處理包括:圖像灰度化、圖像放縮和圖像歸一化。
進(jìn)一步的,步驟(1)還包括對樣本特征向量進(jìn)行哈?;幚恚襟E(2)還包括對目標(biāo)特征向量進(jìn)行哈?;幚怼?/p>
進(jìn)一步的,哈?;幚淼木唧w實現(xiàn)方式為:設(shè)定一個閾值,將特征向量x映射為二進(jìn)制向量f(x),
按照本發(fā)明的另一方面,提供了一種基于卷積神經(jīng)網(wǎng)絡(luò)的app相似圖標(biāo)檢索系統(tǒng),包括:
檢索系統(tǒng)模塊,用于對于樣本app圖標(biāo),基于卷積神經(jīng)網(wǎng)絡(luò)提取樣本特征向量,記錄樣本特征向量的樣本文件標(biāo)識,將樣本特征向量均分成n個樣本部分,在每個樣本部分建立一個索引,得到n個索引,將樣本特征向量、樣本文件標(biāo)識和n個索引存入檢索系統(tǒng);
組合特征向量模塊,用于對于目標(biāo)app圖標(biāo),基于卷積神經(jīng)網(wǎng)絡(luò)提取目標(biāo)特征向量,將目標(biāo)特征向量均分成n個目標(biāo)部分,對每個目標(biāo)部分進(jìn)行組合,得到m個目標(biāo)組合特征向量;
圖標(biāo)排序模塊,用于對m個組合特征向量,在檢索系統(tǒng)中進(jìn)行m次檢索,得到m個文件標(biāo)識集合,將m個文件標(biāo)識集合取并集,在并集中進(jìn)行線性計算,得到樣本app圖標(biāo)與目標(biāo)app圖標(biāo)的相似度,利用相似度對樣本app圖標(biāo)進(jìn)行排序。
進(jìn)一步的,檢索系統(tǒng)模塊還包括對樣本app圖標(biāo)進(jìn)行預(yù)處理,組合特征向量模塊還包括對目標(biāo)app圖標(biāo)進(jìn)行預(yù)處理。
進(jìn)一步的,預(yù)處理包括:圖像灰度化、圖像放縮和圖像歸一化。
進(jìn)一步的,檢索系統(tǒng)模塊還包括對樣本特征向量進(jìn)行哈?;幚恚M合特征向量模塊還包括對目標(biāo)特征向量進(jìn)行哈?;幚怼?/p>
進(jìn)一步的,哈?;幚淼木唧w實現(xiàn)方式為:設(shè)定一個閾值,將特征向量x映射為二進(jìn)制向量f(x),
總體而言,通過本發(fā)明所構(gòu)思的以上技術(shù)發(fā)明與現(xiàn)有技術(shù)相比,能夠取得下列有益效果:
(1)本發(fā)明將樣本特征向量、樣本文件標(biāo)識和索引存入檢索系統(tǒng),對組合特征向量,在檢索系統(tǒng)中進(jìn)行檢索,得到文件標(biāo)識集合,將文件標(biāo)識集合取并集,在并集中進(jìn)行線性計算,得到樣本app圖標(biāo)與目標(biāo)app圖標(biāo)的相似度,利用相似度對樣本app圖標(biāo)進(jìn)行排序。進(jìn)而克服了傳統(tǒng)圖像檢索中準(zhǔn)確率低,檢索效率不高的問題,同時為用戶提供很大的方便,可以根據(jù)圖標(biāo)來搜索對應(yīng)的手機(jī)應(yīng)用程序;同時也為安全檢測人員對于仿冒app的檢測提供了一個新的途徑;更為重要的是為銀行或者一些機(jī)構(gòu)打擊仿冒app或者發(fā)布安全警告等提供了技術(shù)支持。
(2)優(yōu)選的,本發(fā)明對樣本app圖標(biāo)和目標(biāo)app圖標(biāo)進(jìn)行預(yù)處理,將圖標(biāo)圖像的規(guī)格統(tǒng)一化,保證了計算的高效性。
(3)優(yōu)選的,本發(fā)明對樣本app圖標(biāo)和目標(biāo)app圖標(biāo)進(jìn)行哈?;幚?,提高了檢索效率。
(4)優(yōu)選的,本發(fā)明對樣本app圖標(biāo)和目標(biāo)app圖標(biāo)進(jìn)行哈?;幚恚O(shè)定閾值為0.5,在保證檢索效率的同時,提高了檢索準(zhǔn)確率。
附圖說明
圖1是本發(fā)明實施例提供的一種基于卷積神經(jīng)網(wǎng)絡(luò)的app相似圖標(biāo)檢索方法的流程圖;
圖2是本發(fā)明實施例提供的卷積神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)示意圖;
圖3是本發(fā)明實施例將目標(biāo)特征向量均分和轉(zhuǎn)換的示意圖。
具體實施方式
為了使本發(fā)明的目的、技術(shù)發(fā)明及優(yōu)點更加清楚明白,以下結(jié)合附圖及實施例,對本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。此外,下面所描述的本發(fā)明各個實施方式中所涉及到的技術(shù)特征只要彼此之間未構(gòu)成沖突就可以相互組合。
如圖1所示,一種基于卷積神經(jīng)網(wǎng)絡(luò)的app相似圖標(biāo)檢索方法,包括:
(1)對于樣本app圖標(biāo),基于卷積神經(jīng)網(wǎng)絡(luò)提取樣本特征向量,記錄樣本特征向量的樣本文件標(biāo)識,將樣本特征向量均分成n個樣本部分,在每個樣本部分建立一個索引,得到n個索引,將樣本特征向量、樣本文件標(biāo)識和n個索引存入檢索系統(tǒng);
(2)對于目標(biāo)app圖標(biāo),基于卷積神經(jīng)網(wǎng)絡(luò)提取目標(biāo)特征向量,將目標(biāo)特征向量均分成n個目標(biāo)部分,對每個目標(biāo)部分進(jìn)行組合,得到m個目標(biāo)組合特征向量;
(3)對m個組合特征向量,在檢索系統(tǒng)中進(jìn)行m次檢索,得到m個文件標(biāo)識集合,將m個文件標(biāo)識集合取并集,在并集中進(jìn)行線性計算,得到樣本app圖標(biāo)與目標(biāo)app圖標(biāo)的相似度,利用相似度對樣本app圖標(biāo)進(jìn)行排序。
進(jìn)一步的,對樣本app圖標(biāo)和目標(biāo)app圖標(biāo)進(jìn)行預(yù)處理。
在對圖標(biāo)進(jìn)行檢索時,為了提取圖標(biāo)的特征向量,需要將圖像的規(guī)格統(tǒng)一化,本發(fā)明中對于圖標(biāo)圖像的預(yù)處理主要有三個步驟:圖像灰度化、圖像放縮、圖像歸一化。
圖標(biāo)圖像采用的是rgb的編碼方式,一個像素點由一個三維的向量表示如(r,g,b),但是由于設(shè)計的卷積神經(jīng)網(wǎng)絡(luò)的輸入是一維的,同時為了計算的高效性,所以需要將圖標(biāo)圖像進(jìn)行灰度化的轉(zhuǎn)換,本發(fā)明中采用的灰度轉(zhuǎn)化算法如下:
gray(i,j)=0.299*r(i,j)+0.578*g(i,j)+0.114*b(i,j)
(i,j)是像素點坐標(biāo),gray(i,j)是像素點坐標(biāo)為(i,j)時的灰度值,r(i,j)是像素點坐標(biāo)為(i,j)時的r通道,g(i,j)是像素點坐標(biāo)為(i,j)時的g通道,b(i,j)是像素點坐標(biāo)為(i,j)時的b通道。
對于樣本app圖標(biāo)和目標(biāo)app圖標(biāo),圖標(biāo)圖像大小不一,同時卷積神經(jīng)網(wǎng)絡(luò)的輸入大小固定,需要對圖標(biāo)進(jìn)行縮小或者放大,本發(fā)明中采用了雙線性插值法,對于一個目標(biāo)像素點,通過反向變換得到它的浮點坐標(biāo)為(i+u,j+v),其中i、j是原始圖像中的坐標(biāo)點,u、v為區(qū)間[0,1)之間的浮點數(shù),則目標(biāo)像素點的值可以由原始圖像中最鄰近的四個點的值來確定,相應(yīng)的公式為:
其中,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)處的像素值,使用周圍的四個點計算出目標(biāo)像素(i+u,j+v)的像素值f(i+u,j+v)。
第三個要做的是對圖像進(jìn)行歸一化,本發(fā)明采用線性歸一化的算法,具體公式如下:
設(shè)定min(x)為0,max(x)為255,然后代入上面的公式,x為使用周圍的四個點計算出目標(biāo)像素(i+u,j+v)的像素值f(i+u,j+v),計算出歸一化之后的像素值x。
進(jìn)一步的,對預(yù)處理后的圖標(biāo)進(jìn)行特征向量提取,深度學(xué)習(xí)出現(xiàn)之前較為傳統(tǒng)的辦法都是人工設(shè)定的特征向量提取規(guī)則,本發(fā)明采用了最前沿的研究成果,使用深度學(xué)習(xí)技術(shù)來對圖標(biāo)圖像特征向量進(jìn)行提取,并且使提取出來的特征向量易于在大規(guī)模的數(shù)據(jù)中進(jìn)行相似度的計算。
具體的做法如下:
設(shè)計卷積神經(jīng)網(wǎng)絡(luò),參照alexnet網(wǎng)絡(luò)結(jié)構(gòu),在第七層與第八層之間添加一個全連接層,該層的維度為64,并且采用softmax函數(shù)作為激活函數(shù),具體設(shè)計如圖2所示。
訓(xùn)練上一步設(shè)計的神經(jīng)網(wǎng)絡(luò),使用caffe深度學(xué)習(xí)框架進(jìn)行訓(xùn)練調(diào)參,由于待檢索的圖像沒有標(biāo)簽,無法使用待檢索數(shù)據(jù)進(jìn)行訓(xùn)練,所以使用公開的帶標(biāo)簽的數(shù)據(jù)集對網(wǎng)絡(luò)模型進(jìn)行訓(xùn)練,本發(fā)明采用的訓(xùn)練數(shù)據(jù)集為imagenet中的數(shù)據(jù)。
使用訓(xùn)練好的卷積神經(jīng)網(wǎng)絡(luò)對全庫的圖標(biāo)進(jìn)行離線的前向計算(forword),然后記錄下第八層的值。
通過以上步驟,每張圖像可以得到一個64維的特征向量,向量中每一維的值都是0到1之間的浮點數(shù),將該特征向量保存。
進(jìn)一步的,步驟(1)還包括對樣本特征向量進(jìn)行哈希化處理,步驟(2)還包括對目標(biāo)特征向量進(jìn)行哈?;幚?。
進(jìn)一步的,哈?;幚淼木唧w實現(xiàn)方式為:設(shè)定一個閾值,將特征向量x映射為二進(jìn)制向量f(x),
具體的,對于64維的特征向量進(jìn)行相似度的檢索效率會非常低,本發(fā)明采用了對特征向量進(jìn)行哈?;姆椒ǎ唧w做法是設(shè)定一個閾值,發(fā)明中的閾值為0.5,然后將特征向量x映射為01二進(jìn)制向量,采用如下公式:
通過以上方法,64維的特征向量變成了64維的二進(jìn)制向量,該64維的二進(jìn)制向量作為最終的特征向量。
根據(jù)對前面局部敏感哈希算法的介紹,本發(fā)明中的檢索問題也轉(zhuǎn)換成為高維空間中的相似搜索問題,為了解決這個問題,本發(fā)明采用了lsh算法的核心思想,將特征根據(jù)不同的哈希函數(shù)放入不同的桶中,然后在檢索時,在相同的桶中做檢索。本發(fā)明根據(jù)lsh算法思想,將特征均勻的分為四個部分,這四個部分當(dāng)做keyl、key2、key3、key4,keyl為0101010111000101,key2為0001100110000111,key3為0010100110001101,key4為0110001100011100,每個特征都是一個16維的二進(jìn)制向量,然后將這些二進(jìn)制向量轉(zhuǎn)換為一個十六進(jìn)制數(shù),作為最后的id,這樣特征轉(zhuǎn)換成了4個id:idl、id2、id3、id4,id1為55c5,id2為1987,id3為298d,id4為631c,每個id都是一個十六進(jìn)制的數(shù),如圖3所示。
對特征進(jìn)行處理之后,將特征存放到另一個搜索系統(tǒng)中,在本發(fā)明中,采用了elasticsearch搜索系統(tǒng),在es系統(tǒng)中建立新的索引(index),然后將每個特征作為文件標(biāo)識文檔(document)存入系統(tǒng)中,文件標(biāo)識文檔中包含的特征有:id1、id2、id3、id4、特征向量哈希化處理后的值、文件md5等屬性。
隨著app的增長,對于app的檢索技術(shù)的要求越來越高,通常app商店提供的搜索欄都是通過關(guān)鍵字來查找對應(yīng)的app,輸入app的關(guān)鍵字,然后去app的描述信息中查找對應(yīng)的app,這往往需要在將app錄入時輸入大量的描述信息,當(dāng)然這些信息也可以由開發(fā)人員輸入。但是,在對于安全行業(yè)的工作者來說,僅僅根據(jù)app的描述信息來對app進(jìn)行安全分析,是一件困難的事情,尤其是對一些仿冒的app的檢測而言,仿冒的app描述信息可能與真實的app不一樣,或者完全不相關(guān),但是仿冒的app在圖標(biāo)上與真實的app很相似,從用戶的角度很難區(qū)分這兩者的區(qū)別,為了區(qū)分出這些仿冒app,一個可行的辦法是根據(jù)該app的圖標(biāo)去搜索出相似的app,然后再根據(jù)這些相似app的集合去確定該app是不是仿冒app。從另一個安全情報分析的角度上考慮,基于app圖標(biāo)的搜索也是很有必要的,比如某銀行的app應(yīng)用被惡意的仿冒假冒,銀行為了發(fā)掘出有哪些仿冒者,有多少個仿冒的app時,通過圖標(biāo)去進(jìn)行搜索,找出相似的app,然后過濾出良性的app,剩下的就可以找到被仿冒的一些app,進(jìn)一步可以查找仿冒app的開發(fā)者的信息,進(jìn)而追究法律責(zé)任。
本發(fā)明克服了傳統(tǒng)圖像檢索中準(zhǔn)確率低,檢索效率不高的問題,同時為用戶提供很大的方便,可以根據(jù)圖標(biāo)來搜索對應(yīng)的手機(jī)應(yīng)用程序;同時也為安全檢測人員對于仿冒app的檢測提供了一個新的途徑;更為重要的是為銀行或者一些機(jī)構(gòu)打擊仿冒app或者發(fā)布安全警告等提供了技術(shù)支持。
本領(lǐng)域的技術(shù)人員容易理解,以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。