本發(fā)明屬于信息檢索技術(shù)領(lǐng)域,具體涉及一種基于手繪草圖的圖像檢索的方法。
背景技術(shù):
隨著計(jì)算機(jī)技術(shù)和多媒體技術(shù)的快速發(fā)展,大量的數(shù)字圖像隨之產(chǎn)生。有效的圖像檢索技術(shù)在各個(gè)領(lǐng)域比如遙感、時(shí)尚、出版、農(nóng)業(yè)等都有廣泛需求。在海量的圖像數(shù)據(jù)集中如何快速找到特定的圖像就需要使用圖像檢索技術(shù)。圖像檢索是一項(xiàng)通過(guò)給定的查詢(xún)方式在海量圖像數(shù)據(jù)集中快速查找相似圖像的技術(shù)。近年來(lái)基于樣例的查詢(xún)隨著基于手繪草圖的信息檢索技術(shù)快速發(fā)展而受到廣泛關(guān)注。
基于手繪草圖的信息檢索最關(guān)鍵的挑戰(zhàn)在于處理草圖本身固有的模糊性,其模糊性主要表現(xiàn)在以下三個(gè)方面:(1)手繪草圖相對(duì)于其所描繪的自然物體來(lái)說(shuō)風(fēng)格抽象,線(xiàn)條不規(guī)則,描繪的物體比例也往往與真實(shí)物體不同。(2)用戶(hù)繪制草圖時(shí)往往是根據(jù)意識(shí)中經(jīng)過(guò)抽象處理的概念來(lái)繪制的,沒(méi)有參照真實(shí)圖像,這就導(dǎo)致有外觀(guān)和結(jié)構(gòu)千變?nèi)f化的草圖,即手繪草圖與真實(shí)圖像處在不同的視覺(jué)領(lǐng)域內(nèi)。(3)由于用戶(hù)的領(lǐng)域知識(shí)和繪制技巧參差不齊,繪制的草圖具有較大的類(lèi)內(nèi)變化,即對(duì)同一物體不同用戶(hù)會(huì)繪制出大相徑庭的草圖,這對(duì)檢索的精確度造成很大的影響。
大多數(shù)現(xiàn)有的基于手繪草圖的圖像檢索工作采用了傳統(tǒng)的圖像檢索流程:首先將真實(shí)圖像用邊緣檢測(cè)算法轉(zhuǎn)換為邊緣線(xiàn)條圖像以填補(bǔ)草圖與真實(shí)圖像之間的風(fēng)格差異。然后使用手工設(shè)計(jì)的特征描述算子(比如sift、hog、形狀上下文等)同時(shí)作用于手繪草圖與真實(shí)圖像的邊緣圖上,提取出他們的特征表達(dá)。最終使用視覺(jué)詞袋框架來(lái)將圖像的特征表達(dá)量化為特征向量,從而用特征向量來(lái)計(jì)算查詢(xún)草圖與候選真實(shí)圖像之間的相似度。
然而傳統(tǒng)的基于低級(jí)特征描述算子的檢索方法的主要問(wèn)題是它們都基于一個(gè)假設(shè),即手繪草圖與真實(shí)圖像之間的視覺(jué)領(lǐng)域鴻溝可以通過(guò)手工設(shè)計(jì)的特征來(lái)輕松的填補(bǔ)。但是事實(shí)往往是該假設(shè)成立的條件十分苛刻,需要大量的人工干預(yù)來(lái)對(duì)手繪草圖與真實(shí)圖像進(jìn)行對(duì)齊、裁剪等操作,還要將真實(shí)圖像進(jìn)行邊緣提取等預(yù)處理操作,并且手工設(shè)計(jì)的特征需要根據(jù)訓(xùn)練數(shù)據(jù)集圖像的特點(diǎn)人工設(shè)定大量的參數(shù),在未知圖像上的表現(xiàn)差。由于手繪草圖固有的模糊性,即便進(jìn)行了上述的各種預(yù)處理操作之后,真實(shí)圖像的邊緣圖依然難以和主要以線(xiàn)條組成的手繪草圖進(jìn)行匹配。
技術(shù)實(shí)現(xiàn)要素:
針對(duì)上述現(xiàn)有技術(shù)中存在的問(wèn)題,本發(fā)明的目的在于,提供一種基于手繪草圖的圖像檢索算法,以提升在大規(guī)模手繪草圖檢索數(shù)據(jù)集上的檢索性能。
為了實(shí)現(xiàn)上述任務(wù),本發(fā)明采用以下技術(shù)方案:
一種基于手繪草圖的圖像檢索算法,包括以下步驟:
步驟一,通過(guò)邊緣檢測(cè)算法將真實(shí)圖像數(shù)據(jù)集p渲染成邊緣圖數(shù)據(jù)集e;
步驟二,將手繪草圖數(shù)據(jù)集s和邊緣圖數(shù)據(jù)集e的并集作為alexnet網(wǎng)絡(luò)的輸入進(jìn)行迭代訓(xùn)練得到分類(lèi)器,然后以分類(lèi)器作為特征提取器,以分類(lèi)器網(wǎng)絡(luò)中的最大池化層為輸出特征,將邊緣圖數(shù)據(jù)集中所有的邊緣圖輸入分類(lèi)器得到所有邊緣圖的索引;
步驟三,利用分類(lèi)器對(duì)手繪草圖數(shù)據(jù)集進(jìn)行處理,得到訓(xùn)練數(shù)據(jù)集;
步驟四,構(gòu)建用于度量學(xué)習(xí)的孿生卷積神經(jīng)網(wǎng)絡(luò),然后使用訓(xùn)練數(shù)據(jù)訓(xùn)練該網(wǎng)絡(luò),訓(xùn)練結(jié)束后得到嵌入函數(shù);
步驟五,用嵌入函數(shù)計(jì)算邊緣圖在度量空間中的特征點(diǎn)的集合,并建立索引結(jié)構(gòu)以提高檢索效率;
步驟六,輸入查詢(xún)草圖,根據(jù)所述的索引結(jié)構(gòu),返回檢索結(jié)果。
進(jìn)一步地,所述的步驟二的具體過(guò)程包括:
步驟2.1,將s∪e作為alexnet網(wǎng)絡(luò)的輸入,將alexnet網(wǎng)絡(luò)中全連接層節(jié)點(diǎn)的個(gè)數(shù)設(shè)置為真實(shí)圖像數(shù)據(jù)集的圖像類(lèi)別數(shù),以在imagenet數(shù)據(jù)集上預(yù)訓(xùn)練的alexnet網(wǎng)絡(luò)的參數(shù)初始化權(quán)重,將學(xué)習(xí)率設(shè)置為0.01,權(quán)重衰減設(shè)置為0.0001,動(dòng)量設(shè)置為0.9,以隨機(jī)梯度下降法作為優(yōu)化算法,迭代訓(xùn)練alexnet網(wǎng)絡(luò)得到分類(lèi)器c(x);
步驟2.2,將邊緣圖數(shù)據(jù)集e={e1,e2,...,en}中的每一個(gè)邊緣圖依次輸入分類(lèi)器c(x)中進(jìn)行計(jì)算,得到邊緣圖數(shù)據(jù)集e中的所有圖像的索引:
其中:cj為類(lèi)別編號(hào),j=1,2,...,k;k為真實(shí)圖像數(shù)據(jù)集中的圖像類(lèi)別數(shù),
進(jìn)一步地,步驟三的具體過(guò)程包括:
步驟3.1,取手繪草圖數(shù)據(jù)集s中的任一手繪草圖作為當(dāng)前手繪草圖sa,將sa輸入分類(lèi)器c(x)得到分類(lèi)預(yù)測(cè)分?jǐn)?shù)向量:
其中,當(dāng)前手繪草圖sa的預(yù)測(cè)類(lèi)別向量為
步驟3.2,設(shè)當(dāng)前手繪草圖sa的類(lèi)別標(biāo)簽為la,將類(lèi)別標(biāo)簽la作為正類(lèi)標(biāo)簽pa,從當(dāng)前手繪草圖sa的預(yù)測(cè)類(lèi)別向量ca中隨機(jī)選5個(gè)不同于pa的標(biāo)簽作為負(fù)類(lèi)標(biāo)簽集合
步驟3.3,從索引i中得到標(biāo)記為正類(lèi)標(biāo)簽pa的所有邊緣圖的特征向量集合記為
步驟3.4,選擇負(fù)類(lèi)標(biāo)簽集合na中的任一負(fù)類(lèi)標(biāo)簽作為當(dāng)前負(fù)類(lèi)標(biāo)簽
步驟3.5,重復(fù)步驟3.4,直至負(fù)類(lèi)標(biāo)簽集合中所有負(fù)類(lèi)標(biāo)簽都被作為當(dāng)前負(fù)類(lèi)標(biāo)簽,共得到250個(gè)負(fù)樣本
步驟3.6,將250個(gè)正樣本與當(dāng)前草圖sa組成正樣本對(duì)集合:
將250個(gè)負(fù)樣本與當(dāng)前草圖sa組成負(fù)樣本對(duì)集合:
步驟3.7,重復(fù)步驟3.1至3.6,直至手繪草圖數(shù)據(jù)集s中所有的手繪草圖都被作為當(dāng)前手繪草圖,得到每張手繪草圖對(duì)應(yīng)的正樣本對(duì)集合和負(fù)樣本對(duì)集合,最終將所有正樣本對(duì)集合與負(fù)樣本對(duì)集合做并集操作,得到最終的訓(xùn)練數(shù)據(jù)集t。
進(jìn)一步地,步驟四的具體過(guò)程包括:
步驟4.1,設(shè)訓(xùn)練集t中的任意元素為元組(s,e,y),元組中s為手繪草圖,e為邊緣圖,y為二值相似性標(biāo)記,若y=1代表s與e不相似,若y=0代表s與e相似;
步驟4.2,構(gòu)建用于組成孿生結(jié)構(gòu)的卷積神經(jīng)網(wǎng)絡(luò)net;
步驟4.3,用2個(gè)步驟4.2中構(gòu)建的net以共享參數(shù)的方式構(gòu)建用于度量學(xué)習(xí)的孿生卷積神經(jīng)網(wǎng)絡(luò)g;g中包含2個(gè)子卷積神經(jīng)網(wǎng)絡(luò)nets,nete,其中nets以手繪草圖作為輸入,nete以邊緣圖作為輸入,2個(gè)子網(wǎng)絡(luò)共享同一組參數(shù),兩個(gè)子網(wǎng)絡(luò)的輸出都記為fw(·);
步驟4.4,將訓(xùn)練集t中的任意n個(gè)元組{(s,e,y)1,(s,e,y)2,...,(s,e,y)n}作為當(dāng)前批訓(xùn)練元組,將當(dāng)前批訓(xùn)練元組中的手繪草圖sa輸入nets得到fw(sa),將元組中的邊緣圖ea輸入netn得到fw(ea);
步驟4.5,通過(guò)式(1)得到孿生卷積神經(jīng)網(wǎng)絡(luò)g的損失函數(shù)值l:
式(1)中,(s,e,y)i當(dāng)前批訓(xùn)練元組中第i個(gè)訓(xùn)練樣本,n為當(dāng)前批訓(xùn)練元組的個(gè)數(shù),w為nets,nete共享的網(wǎng)絡(luò)參數(shù),即g要訓(xùn)練的對(duì)象;式(1)中單個(gè)訓(xùn)練元組的損失l定義如式(2):
l(w,(s,e,y)i)=(1-y)lp(mw(s,e)i)+yln(mw(s,e)i)(2)
式(2)中,距離度量mw(s,e)=‖fw(s)-fw(e)‖,lp(·)為正樣本對(duì)的損失函數(shù),
步驟4.6,采用隨機(jī)梯度下降法作為最優(yōu)化算法,以最小化損失函數(shù)值l為目標(biāo)修正卷積神經(jīng)網(wǎng)絡(luò)g的參數(shù)w;
步驟4.7,重復(fù)步驟4.4至步驟4.6,直至t中所有訓(xùn)練元組被當(dāng)作當(dāng)前批訓(xùn)練元組參與過(guò)訓(xùn)練,此時(shí)完成了一個(gè)紀(jì)元的訓(xùn)練;
步驟4.8,重復(fù)執(zhí)行20次步驟4.7后結(jié)束網(wǎng)絡(luò)訓(xùn)練,此時(shí)卷積神經(jīng)網(wǎng)絡(luò)g輸出嵌入函數(shù)g(x)。
進(jìn)一步地,步驟五的具體過(guò)程包括:
步驟5.1,將邊緣圖數(shù)據(jù)庫(kù)e={e1,e2,...,en}中的任一張邊緣圖作為當(dāng)前邊緣圖ec,采用嵌入函數(shù)g(x)將當(dāng)前邊緣圖ec嵌入到度量空間中,得到度量空間中的特征點(diǎn)g(ec);
步驟5.2,重復(fù)步驟5.1,將邊緣圖數(shù)據(jù)庫(kù)e={e1,e2,...,en}中所有邊緣圖嵌入度量空間得到特征點(diǎn)集合f={g(e1),g(e2),...,g(en)};
步驟5.3,將步驟5.2中特征點(diǎn)集合f={g(e1),g(e2),...,g(en)}按照類(lèi)別存儲(chǔ),得到邊緣圖數(shù)據(jù)集e中的所有圖像的索引:
其中:cj為類(lèi)別編號(hào),j=1,2,...,k;k為當(dāng)前要檢索的數(shù)據(jù)集中的圖像類(lèi)別數(shù),
進(jìn)一步地,步驟六的具體過(guò)程包括:
步驟6.1,記待查詢(xún)手繪草圖為sx,采用嵌入函數(shù)e(x)將sx嵌入到度量空間中,得到sx在度量空間中的特征點(diǎn)e(sx);
步驟6.2,在索引ig中檢索與待查詢(xún)手繪草圖sx類(lèi)別標(biāo)簽相同的真實(shí)圖像邊緣圖特征點(diǎn)集合f,計(jì)算f中每個(gè)特征點(diǎn)和特征點(diǎn)e(sx)之間的歐氏距離;
步驟6.3,選取歐氏距離最小的前k個(gè)邊緣圖特征點(diǎn)所對(duì)應(yīng)的真實(shí)圖像作為與待查詢(xún)手繪草圖sx最相近的k個(gè)真實(shí)圖像,返回給用戶(hù)作為檢索結(jié)果。
本發(fā)明與現(xiàn)有技術(shù)相比具有以下技術(shù)特點(diǎn):
1.本發(fā)明方法采用度量學(xué)習(xí)算法得到一個(gè)映射函數(shù),將手繪草圖與真實(shí)圖像映射到同一度量空間,在該度量空間中的l1范式可以直接代表原空間中草圖和真實(shí)圖像之間的“語(yǔ)義”相似度,很好的解決了草圖與真實(shí)圖像之間的跨域匹配問(wèn)題。具體的講,本發(fā)明使用正負(fù)樣本對(duì)來(lái)訓(xùn)練卷積神經(jīng)網(wǎng)絡(luò),從而將輸入空間中標(biāo)記為相似的草圖與照片的特征向量“拉近”,而把標(biāo)記為不相似的圖像的特征向量“推遠(yuǎn)”。最終設(shè)計(jì)出一個(gè)集成化的檢索方法。
2.本發(fā)明通過(guò)針對(duì)手繪草圖的特點(diǎn)設(shè)計(jì)一種全新的卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),采用該卷積神經(jīng)網(wǎng)絡(luò)來(lái)自動(dòng)學(xué)習(xí)超完備的特征過(guò)濾器組組成特征提取器,提取出高級(jí)抽象特征,該特征除了能夠處理草圖的幾何形變之外,在未知數(shù)據(jù)集上也有很強(qiáng)的泛化能力,有效的解決了手工設(shè)計(jì)的低級(jí)幾何特征描述子的算法泛化能力弱,難以擴(kuò)展到未知數(shù)據(jù)集的問(wèn)題。
3.本發(fā)明以度量學(xué)習(xí)方法對(duì)草圖與真實(shí)圖像學(xué)習(xí)一種相似度度量,有效的解決了傳統(tǒng)的基于手繪草圖的圖像檢索算法中存在的難以進(jìn)行跨域匹配、難以對(duì)草圖的大量類(lèi)內(nèi)變體保持不變性的問(wèn)題,極大的提高了基于手繪草圖的圖像檢索的精確度和魯棒性,達(dá)到了目前本領(lǐng)域先進(jìn)水平。
附圖說(shuō)明
圖1是本方法的整體流程圖;
圖2是alexnet結(jié)構(gòu)圖;
圖3是孿生卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)圖;
圖4是本發(fā)明檢索結(jié)果示意圖;
具體實(shí)施方式
以下結(jié)合附圖對(duì)本發(fā)明方案進(jìn)行詳細(xì)說(shuō)明。
一種基于手繪草圖的圖像檢索算法,如圖1所示,包括以下步驟:
步驟一,通過(guò)邊緣檢測(cè)算法將真實(shí)圖像數(shù)據(jù)集渲染成邊緣圖數(shù)據(jù)集;其具體過(guò)程為:
記真實(shí)圖像數(shù)據(jù)集為p={p1,p2,...,pn},n為數(shù)據(jù)集中真實(shí)圖像的個(gè)數(shù);采用邊緣檢測(cè)算法依次將真實(shí)圖像數(shù)據(jù)集中的照片pi(i=1,2,...n)渲染成邊緣圖ei,構(gòu)成邊緣圖數(shù)據(jù)集e={e1,e2,...,en},e中的邊緣圖和p中的圖片一一對(duì)應(yīng);
本實(shí)施例中,真實(shí)圖像數(shù)據(jù)集p選用flickr15k數(shù)據(jù)集,邊緣檢測(cè)算法采用canny算法。
步驟二,將手繪草圖數(shù)據(jù)集和邊緣圖數(shù)據(jù)集的并集作為alexnet網(wǎng)絡(luò)的輸入進(jìn)行迭代訓(xùn)練得到分類(lèi)器,然后以分類(lèi)器作為特征提取器,以分類(lèi)器網(wǎng)絡(luò)中的最大池化層(maxpool3層)為輸出特征,將邊緣圖數(shù)據(jù)集中所有邊緣圖輸入分類(lèi)器得到所有邊緣圖的索引,其具體過(guò)程為:
步驟2.1,記手繪草圖數(shù)據(jù)集為s={s1,s2,...,sa,...,sk},a=1,2,…,k;k為數(shù)據(jù)集中手繪草圖個(gè)數(shù);將s∪e作為alexnet網(wǎng)絡(luò)的輸入,將alexnet網(wǎng)絡(luò)中全連接層節(jié)點(diǎn)的個(gè)數(shù)設(shè)置為真實(shí)圖像數(shù)據(jù)集的圖像類(lèi)別數(shù),本實(shí)施例使用的數(shù)據(jù)集步驟一所述的flickr15k數(shù)據(jù)集中的類(lèi)別數(shù)33;以在imagenet數(shù)據(jù)集上預(yù)訓(xùn)練的alexnet網(wǎng)絡(luò)的參數(shù)初始化權(quán)重,將學(xué)習(xí)率設(shè)置為0.01,權(quán)重衰減設(shè)置為0.0001,動(dòng)量設(shè)置為0.9,以隨機(jī)梯度下降法作為優(yōu)化算法,迭代訓(xùn)練alexnet網(wǎng)絡(luò)得到分類(lèi)器c(x);其中x為一張圖像(邊緣圖或手繪草圖)數(shù)據(jù),分類(lèi)器的輸出為一個(gè)c維的向量,c為邊緣圖數(shù)據(jù)集或手繪草圖數(shù)據(jù)集中圖像類(lèi)別的數(shù)量,向量的第b個(gè)元素為分類(lèi)器判斷輸入的圖像x屬于第b類(lèi)的概率值;構(gòu)建出的alexnet網(wǎng)絡(luò)如圖3所示。
本實(shí)施例中,所述的alexnet卷積神經(jīng)網(wǎng)絡(luò)來(lái)自:krizhevskya,sutskeveri,hintonge.imagenetclassificationwithdeepconvolutionalneuralnetworks[c]//advancesinneuralinformationprocessingsystems.2012:1097-1105。
步驟2.2,將邊緣圖數(shù)據(jù)集e={e1,e2,...,en}中的每一個(gè)邊緣圖依次輸入分類(lèi)器c(x)中進(jìn)行計(jì)算,得到邊緣圖數(shù)據(jù)集e中的所有圖像的索引
cj為類(lèi)別編號(hào),j=1,2,...,k;k為真實(shí)圖像數(shù)據(jù)集p中的圖像類(lèi)別數(shù),
步驟三,利用分類(lèi)器對(duì)手繪草圖數(shù)據(jù)集進(jìn)行處理,得到訓(xùn)練數(shù)據(jù)集,其具體步驟如下:
步驟3.1,取手繪草圖數(shù)據(jù)集s中的任一手繪草圖作為當(dāng)前手繪草圖sa,將sa輸入分類(lèi)器c(x)得到分類(lèi)預(yù)測(cè)分?jǐn)?shù)向量:
其中,當(dāng)前手繪草圖sa的預(yù)測(cè)類(lèi)別向量為
步驟3.2,設(shè)當(dāng)前手繪草圖sa的類(lèi)別標(biāo)簽為la,將類(lèi)別標(biāo)簽la作為正類(lèi)標(biāo)簽pa,從當(dāng)前手繪草圖sa的預(yù)測(cè)類(lèi)別向量
步驟3.3,從索引i中得到標(biāo)記為正類(lèi)標(biāo)簽pa的所有邊緣圖(即正類(lèi)邊緣圖)的特征向量集合記為
clayer-name(·)表示分類(lèi)器某一層(未明確標(biāo)識(shí)layer-name則特指最后一層)的輸出,cmp3(·)是分類(lèi)器的最大池化層(maxpool3,簡(jiǎn)寫(xiě)為mp3)的輸出向量;sa,pa中的上標(biāo)a用于標(biāo)識(shí)當(dāng)前選中的草圖,
步驟3.4,選擇負(fù)類(lèi)標(biāo)簽集合na中的任一負(fù)類(lèi)標(biāo)簽作為當(dāng)前負(fù)類(lèi)標(biāo)簽
步驟3.5,重復(fù)步驟3.4,直至負(fù)類(lèi)標(biāo)簽集合中所有負(fù)類(lèi)標(biāo)簽都被作為當(dāng)前負(fù)類(lèi)標(biāo)簽,共得到250個(gè)負(fù)樣本
步驟3.6,將250個(gè)正樣本與當(dāng)前草圖sa組成正樣本對(duì)集合
步驟3.7,重復(fù)步驟3.1至3.6,直至手繪草圖數(shù)據(jù)集s中所有的手繪草圖都被作為當(dāng)前手繪草圖,得到每張手繪草圖對(duì)應(yīng)的正樣本對(duì)集合和負(fù)樣本對(duì)集合,最終將所有正樣本對(duì)集合與負(fù)樣本對(duì)集合做并集操作,得到最終的訓(xùn)練數(shù)據(jù)集t;
步驟四,構(gòu)建用于度量學(xué)習(xí)的孿生卷積神經(jīng)網(wǎng)絡(luò),然后使用步驟三生成的訓(xùn)練數(shù)據(jù)訓(xùn)練該網(wǎng)絡(luò),訓(xùn)練結(jié)束后得到能夠?qū)D像嵌入學(xué)習(xí)的度量空間中的函數(shù)。其具體步驟如下:
步驟4.1,設(shè)訓(xùn)練集t中的任意元素為元組(s,e,y),元組中s為手繪草圖,e為邊緣圖,y為二值相似性標(biāo)記,若y=1代表s與e不相似,若y=0代表s與e相似;
步驟4.2,構(gòu)建用于組成孿生結(jié)構(gòu)的卷積神經(jīng)網(wǎng)絡(luò)net,本實(shí)施例中,該神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)如表1:
表1本發(fā)明卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)表
步驟4.3,用2個(gè)步驟4.2中構(gòu)建的net以共享參數(shù)的方式構(gòu)建用于度量學(xué)習(xí)的孿生(siamese)卷積神經(jīng)網(wǎng)絡(luò)g;本步驟構(gòu)建出的網(wǎng)絡(luò)g如圖3所示,由2個(gè)相同的子網(wǎng)絡(luò)構(gòu)成,兩個(gè)子網(wǎng)絡(luò)結(jié)構(gòu)相同,共享參數(shù),均為步驟4.2中所述的網(wǎng)絡(luò)net;
本實(shí)施例中,所構(gòu)建的孿生卷積神經(jīng)網(wǎng)絡(luò)g的結(jié)構(gòu)如圖3所示,其中包含2個(gè)子卷積神經(jīng)網(wǎng)絡(luò)nets,nete,其中nets以手繪草圖作為輸入,nete以邊緣圖作為輸入,每個(gè)子卷積神經(jīng)網(wǎng)絡(luò)的基礎(chǔ)模型都為表1所示;2個(gè)子網(wǎng)絡(luò)共享同一組參數(shù),兩個(gè)子網(wǎng)絡(luò)的輸出都記為fw(·),最終同時(shí)使用nets,nete的輸出計(jì)算損失函數(shù)值;
步驟4.4,將訓(xùn)練集t中的任意n個(gè)元組{(s,e,y)1,(s,e,y)2,...,(s,e,y)n}作為當(dāng)前批訓(xùn)練元組,將當(dāng)前批訓(xùn)練元組中的手繪草圖sa輸入nets得到fw(sa),將元組中的邊緣圖ea輸入netn得到fw(ea);
步驟4.5,通過(guò)式(1)得到孿生卷積神經(jīng)網(wǎng)絡(luò)g的損失函數(shù)值l:
式(1)中,(s,e,y)i當(dāng)當(dāng)前批訓(xùn)練元組中第i個(gè)訓(xùn)練樣本,n為當(dāng)前批訓(xùn)練元組的個(gè)數(shù),w為nets,nete共享的網(wǎng)絡(luò)參數(shù),即g要訓(xùn)練的對(duì)象;式(1)中單個(gè)訓(xùn)練元組的損失l定義如式(2):
l(w,(s,e,y)i)=(1-y)lp(mw(s,e)i)+yln(mw(s,e)i)(2)
式(2)中,距離度量mw(s,e)=‖fw(s)-fw(e)‖,lp(·)為正樣本對(duì)的損失函數(shù),
步驟4.6,采用隨機(jī)梯度下降法作為最優(yōu)化算法,以最小化損失函數(shù)值l為目標(biāo)修正卷積神經(jīng)網(wǎng)絡(luò)g的參數(shù)w;
本實(shí)施例所采用的隨機(jī)梯度下降法的參考文獻(xiàn)為:bottoul.large-scalemachinelearningwithstochasticgradientdescent[m]//proceedingsofcompstat'2010.physica-verlaghd,2010:177-186.
訓(xùn)練過(guò)程包含2個(gè)階段:
第一階段是前向傳播階段,將訓(xùn)練樣本輸入網(wǎng)絡(luò)的數(shù)據(jù)層,經(jīng)過(guò)網(wǎng)絡(luò)中各種隱含層進(jìn)行逐層變換,逐層映射,直到輸出層按照損失函數(shù)l計(jì)算損失值。
第二階段是反向傳播階段,用損失值計(jì)算各個(gè)參數(shù)的梯度值,將參數(shù)向負(fù)梯度方向更新,進(jìn)一步對(duì)整個(gè)卷積神經(jīng)網(wǎng)絡(luò)的參數(shù)進(jìn)行監(jiān)督優(yōu)化。
步驟4.7,重復(fù)步驟4.6至步驟4.6,直至t中所有訓(xùn)練元組被當(dāng)作當(dāng)前批訓(xùn)練元組參與過(guò)訓(xùn)練,此時(shí)完成了一個(gè)紀(jì)元的訓(xùn)練;
步驟4.8,重復(fù)執(zhí)行20次步驟4.7后結(jié)束網(wǎng)絡(luò)訓(xùn)練,此時(shí)卷積神經(jīng)網(wǎng)絡(luò)g輸出嵌入函數(shù)g(x)。
步驟五,用嵌入函數(shù)g(x)計(jì)算邊緣圖在度量空間中的特征點(diǎn)的集合,并建立索引結(jié)構(gòu)以減少檢索時(shí)需要和手繪草圖特征進(jìn)行相似度計(jì)算的候選邊緣圖特征數(shù)量,提高檢索效率。其具體步驟如下:
步驟5.1,將邊緣圖數(shù)據(jù)庫(kù)e={e1,e2,...,en}中的任一張邊緣圖作為當(dāng)前邊緣圖ec,采用嵌入函數(shù)g(x)將當(dāng)前邊緣圖ec嵌入到度量空間中,得到度量空間中的特征點(diǎn)g(ec);
步驟5.2,重復(fù)步驟5.1,將邊緣圖數(shù)據(jù)庫(kù)e={e1,e2,...,en}中所有邊緣圖嵌入度量空間得到特征點(diǎn)集合f={g(e1),g(e2),...,g(en)};
步驟5.3,將步驟5.2中特征點(diǎn)集合f={g(e1),g(e2),...,g(en)}按照類(lèi)別存儲(chǔ),得到邊緣圖數(shù)據(jù)集e中的所有圖像的索引:
其中:cj為類(lèi)別編號(hào),j=1,2,...,k;k為當(dāng)前要檢索的數(shù)據(jù)集中的圖像類(lèi)別數(shù),
步驟六,輸入查詢(xún)草圖,根據(jù)所述的索引結(jié)構(gòu),返回檢索結(jié)果,具體步驟如下:
步驟6.1,記待查詢(xún)手繪草圖為sx,采用嵌入函數(shù)e(x)將sx嵌入到度量空間中,得到sx在度量空間中的特征點(diǎn)e(sx);
步驟6.2,在索引ig中檢索與待查詢(xún)手繪草圖sx類(lèi)別標(biāo)簽相同的真實(shí)圖像邊緣圖特征點(diǎn)集合f,計(jì)算f中每個(gè)特征點(diǎn)和特征點(diǎn)e(sx)之間的歐氏距離;此處使用該測(cè)試手繪草圖sx的類(lèi)別標(biāo)簽從索引ig中得到與查詢(xún)手繪草圖sx類(lèi)別標(biāo)簽相同的真實(shí)圖像邊緣圖特征點(diǎn)集合;
步驟6.3,選取歐氏距離最小的前k個(gè)邊緣圖特征點(diǎn)所對(duì)應(yīng)的真實(shí)圖像作為與待查詢(xún)手繪草圖sx最相近的k個(gè)真實(shí)圖像,返回給用戶(hù)作為檢索結(jié)果。
仿真實(shí)驗(yàn):
本發(fā)明采用flickr15k數(shù)據(jù)集進(jìn)行實(shí)驗(yàn),flickr15k中包含了大約15000幅真實(shí)圖像,以及330張手繪草圖;共分類(lèi)為33類(lèi);本次實(shí)驗(yàn)選用caffe深度學(xué)習(xí)庫(kù)實(shí)現(xiàn)所有卷積神經(jīng)網(wǎng)絡(luò)的訓(xùn)練過(guò)程。訓(xùn)練時(shí)間與訓(xùn)練數(shù)據(jù)集的大小以及訓(xùn)練紀(jì)元數(shù)有關(guān)。本發(fā)明實(shí)驗(yàn)的機(jī)器配置為intelcore-i5-6600k3.2hzcpu、16gb內(nèi)存、nvidiagtx10606gbgpu×2、cudav8.0、cudnnv5.1、mxnetv0.9.3、ubuntu16.04操作系統(tǒng)。在預(yù)先計(jì)算所有真實(shí)圖像的特征后,每張草圖的查詢(xún)處理時(shí)間平均大約為0.002秒,說(shuō)明本發(fā)明設(shè)計(jì)的算法有較高的可用性。
表2:基于手繪草圖的圖像檢索結(jié)果比較
表2展示了本發(fā)明算法與其他基準(zhǔn)算法的平均均值準(zhǔn)確率(meanaverageprecision,map)對(duì)比結(jié)果。從表2中可見(jiàn),本發(fā)明算法達(dá)到了0.1954的map,超過(guò)了其他所有基準(zhǔn)方法。特別的,本發(fā)明算法相比于其他所有非線(xiàn)性方法而言魯棒性更強(qiáng)。從表2中還可以看出,本發(fā)明算法比同樣采用卷積神經(jīng)網(wǎng)絡(luò)的3dshape有更好的性能,說(shuō)明本算法設(shè)計(jì)的較大的卷積核尺寸更適合于提取手繪草圖的特征。
圖4展示了部分手繪草圖的查詢(xún)結(jié)果。從圖4中可以看出本發(fā)明檢索出的圖像與手繪草圖的相關(guān)性十分強(qiáng),說(shuō)明本算法的有效性。
總之,本算法通過(guò)設(shè)計(jì)一種新的卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)得到一種嵌入函數(shù),將所有手繪草圖與真實(shí)圖像映射到學(xué)習(xí)到的度量函數(shù)所定義的度量空間中進(jìn)行相似度度量,有效的提升了檢索算法的精確度和魯棒性,達(dá)到了目前的先進(jìn)水平。