本發(fā)明涉及在語義分割場景下,基于語義一致性對示例進(jìn)行近似搜索,以及利用哈希技術(shù)對示例進(jìn)行編碼,屬于機(jī)器學(xué)習(xí)領(lǐng)域。
背景技術(shù):
語義分割是機(jī)器學(xué)習(xí)領(lǐng)域中的一個(gè)重要分支,是人工智能對周圍環(huán)境感知的有效手段。所謂語義分割就是將數(shù)據(jù)分割成不同層次的具有標(biāo)記信息的對象,獲得每個(gè)區(qū)域乃至于像素的語義類別為目標(biāo),使人工智能能夠準(zhǔn)確識別目標(biāo)的屬性及特征。語義分割是機(jī)器識別的一項(xiàng)關(guān)鍵技術(shù),也是一經(jīng)典難題,發(fā)展至今仍沒有通用的方法,但對近幾年出現(xiàn)的分割方法、圖像分割技術(shù)的發(fā)展方向,具有一定的啟發(fā)作用。隨著計(jì)算機(jī)科學(xué)技術(shù)的不斷發(fā)展,圖像處理和分析逐漸形成了自己的科學(xué)體系,新的處理方法層出不窮,盡管其發(fā)展歷史不長,但卻引起各方面人士的廣泛關(guān)注。
圖像分割是語義分割的第一步,圖像分割的任務(wù),如特征提取、目標(biāo)識別、區(qū)塊語義識別的好壞都取決于圖像分割的質(zhì)量如何。沒有正確的分割就不可能有正確的識別。但是,進(jìn)行分割僅有的依據(jù)是圖像中像素的亮度及顏色,由計(jì)算機(jī)自動處理分割時(shí),將會遇到各種困難。例如,光照不均勻、噪聲的影響、圖像中存在不清晰的部分,以及陰影等,常常發(fā)生分割錯(cuò)誤。因此圖像分割是需要進(jìn)一步研究的技術(shù)。人們希望引入一些人為的知識導(dǎo)向和人工智能的方法,用于糾正某些分割中的錯(cuò)誤,是很有前途的方法,但是這又增加了解決問題的復(fù)雜性。
傳統(tǒng)的近似搜索算法沒有利用標(biāo)記信息。比如兩張圖片,在特征空間距離雖然較遠(yuǎn),但是都有相同的標(biāo)記“人”,那么在距離度量的時(shí)候,就應(yīng)該認(rèn)為兩個(gè)樣本比較接近,利用標(biāo)記信息進(jìn)行相似性度量往往能夠獲得較好的性能。但同時(shí)存在搜索精確度的問題,比如現(xiàn)在要追蹤嫌疑人,傳統(tǒng)近似搜索用圖片來搜索近鄰,結(jié)果可能找到圖片中其他標(biāo)記的近鄰,該圖片包含嫌疑人和飛機(jī)的標(biāo)記,傳統(tǒng)近鄰搜索不僅搜索嫌疑人的近鄰,還搜索飛機(jī)的近鄰,這樣搜到很多干擾信息,不能夠準(zhǔn)確定位嫌疑人。在語義分割的場景下,就可以搜索嫌疑人的近鄰示例,然后返回近鄰示例所在的圖片,這樣就能大大提高搜索的性能。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的在于提供一種應(yīng)用于語義分割場景中的基于語義一致性的示例搜索方法,以主要解決對圖片區(qū)域的近似搜索問題并將相似的區(qū)域通過哈希技術(shù)映射成相同或相似的二進(jìn)制編碼。
為實(shí)現(xiàn)上述目的,本發(fā)明采用技術(shù)方案為基于語義分割場景的示例搜索方法,具體包含以下步驟:
步驟1:輸入數(shù)據(jù)集樣本矩陣x,x是n*d維的矩陣,n是示例的個(gè)數(shù),d是圖片特征的維度,并輸入圖片集對應(yīng)的語義類標(biāo)記矩陣y,y是n*c維的矩陣,n是示例個(gè)數(shù),c是類標(biāo)記的數(shù)量;
步驟2:從數(shù)據(jù)集中隨機(jī)抽取一部分示例作為抽樣示例集,通過計(jì)算示例和抽樣示例之間的相似度,減少計(jì)算時(shí)間開銷,提高算法的效率;
步驟3:對于數(shù)據(jù)集中的每一個(gè)示例,引入語義一致性構(gòu)建目標(biāo)函數(shù)表達(dá)式o(a),其中a是d*d維的矩陣,d是圖片特征的維度,是在編碼階段需要的馬氏距離度量矩陣,通過特征值求解方式求最優(yōu)解,即得到最優(yōu)化的距離度量矩陣a;
步驟4:對于每一個(gè)示例樣本x,用距離度量矩陣a乘以示例樣本x和抽樣示例之間的距離,得到距離度量學(xué)習(xí)后的優(yōu)化距離,然后再利用哈希技術(shù)進(jìn)行編碼,將示例由原始的d維特征壓縮映射成k維的二進(jìn)制編碼;
步驟5:對于一個(gè)新的查詢圖片q,具有標(biāo)記c1和c2,要定位標(biāo)記c1,首先用步驟3中訓(xùn)練得到的距離度量矩陣a乘以圖片q中標(biāo)記c1對應(yīng)的示例和抽樣示例之間的相似度,得到引入語義一致性之后的優(yōu)化距離,再通過編碼函數(shù)計(jì)算出查詢示例的二進(jìn)制編碼,與圖片數(shù)據(jù)集中各示例的二進(jìn)制編碼比較漢明距離,如果漢明距離小于設(shè)定的門限閾值r,即認(rèn)為兩示例是近似示例,返回示例所在的圖片包,就可以追蹤標(biāo)記c1的近鄰圖片。
進(jìn)一步,上述步驟3具體包含以下步驟:
步驟1:在計(jì)算優(yōu)化距離時(shí),若圖片數(shù)據(jù)集中包含n張示例,定義示例間的馬氏距離d是一個(gè)n*m維的矩陣,關(guān)系矩陣中的每一個(gè)元素定義為:
d(xi,uj)=(xi-uj)ta(xi-uj)(1)
上式中a表示需要學(xué)習(xí)的馬氏距離度量矩陣,xi表示數(shù)據(jù)集中的第i個(gè)示例,uj表示抽樣示例集中的中的第j個(gè)示例;
步驟2:定義目標(biāo)函數(shù)式o(a)為:
其中yij表示第i個(gè)示例樣本的類標(biāo)記向量,類標(biāo)記向量是c維的列向量,c是類的數(shù)目,向量中元素的值為1或0,分別表示示例屬于這個(gè)類和不屬于這個(gè)類,和第j個(gè)抽樣示例樣本的類標(biāo)記向量是否一致,一致為1,不一致為0,xi代表第i個(gè)示例,uj代表第j個(gè)抽樣示例;
步驟3:采用求解特征值的方法求最優(yōu)解,馬氏距離度量矩陣a的初始值為單位陣,a的可行域?yàn)棣藃={a=wwt|wtw=ir,w∈rd×r}
那么對于任意半正定矩陣m,xi,xj(列向量)之間的馬氏距離為:
即有:
目標(biāo)優(yōu)化函數(shù)可轉(zhuǎn)化為:
其中:
求解最優(yōu)化問題:
拉格朗日乘子法將限制條件引入目標(biāo)函數(shù),得到拉格朗日函數(shù):
令導(dǎo)數(shù)為0:
w的最優(yōu)解即為矩陣(e+et)/2的前r個(gè)特征值對應(yīng)的特征向量,a=wwt。
進(jìn)一步,上述步驟4具體包含以下步驟:
步驟1:得到距離馬氏距離度量矩陣a后,再通過式1計(jì)算出每張示例和抽樣示例之間的距離,即得到了關(guān)系矩陣z的各個(gè)元素的值;
步驟2:設(shè)抽樣圖片集合中示例的數(shù)量為m,構(gòu)造一個(gè)m*m維的m矩陣,m矩陣定義如下:
m=λ-1/2ztzλ-1/2(12)
其中λ=diag(zt1),是一個(gè)對角矩陣,計(jì)算得到m矩陣前k個(gè)最大的特征值組成的k*k維的對角矩陣:σ=diag(δ1,...,δk)∈rk×k和前k個(gè)最大的特征值對應(yīng)的特征向量組成的m*k維的矩陣:v=[v1,...,vk]∈rm×k;
步驟3:
由上式得到的各矩陣,構(gòu)造出最終的編碼矩陣y,y矩陣定義如下:
y是一個(gè)n*k維的矩陣,n代表圖片集中示例的個(gè)數(shù),k代表映射到二進(jìn)制編碼時(shí)編碼的位數(shù),編碼矩陣y的每行就是一個(gè)編碼函數(shù),各示例通過編碼函數(shù)計(jì)算得到一個(gè)k維的向量,再對此向量進(jìn)行二值化分割:sgn(y),就得到了圖片數(shù)據(jù)集中各示例的二進(jìn)制編碼。
上述步驟4具體包含以下過程:如果有新的查詢圖片要進(jìn)行近似示例的搜索,同樣使用編碼函數(shù)計(jì)算出查詢示例的二進(jìn)制編碼,然后比較查詢示例的編碼和示例數(shù)據(jù)集中所有示例編碼的漢明距離,定義漢明距離門限閾值r,如果查詢示例和某示例的漢明距離小于閾值r,即認(rèn)為此示例是查詢示例的近似圖片,遍歷示例數(shù)據(jù)集,即可找到查詢示例的所有近似示例,再返回示例所在的圖片。
作為優(yōu)選,上述閾值r的取值可分別選取1,2,3,4。
與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果:
1.搜索近鄰示例代替搜索近鄰圖片,大大提高搜索的精確度,解決傳統(tǒng)近似搜索方法不能夠定位標(biāo)記的缺點(diǎn)。
2.使用距離度量矩陣計(jì)算示例之間的距離,解決了用傳統(tǒng)的近似搜索算法搜索冗余的問題。
3.使用哈希技術(shù)把d維的原始圖片壓縮映射成k比特的二進(jìn)制編碼,極大地提高了算法的效率并且極大的縮減了對內(nèi)存空間的占用。
附圖說明
圖1為本發(fā)明的系統(tǒng)框架圖。
圖2為本發(fā)明的方法流程圖。
具體實(shí)施方式
以下結(jié)合說明書附圖對發(fā)明做進(jìn)一步的分析。本發(fā)明主要包括:訓(xùn)練過程中利用語義一致性進(jìn)行距離度量學(xué)習(xí),對相似的示例進(jìn)行編碼、搜索近鄰示例。
利用語義一致性進(jìn)行度量學(xué)習(xí)是指在訓(xùn)練過程中進(jìn)行示例和抽樣示例的舉例度量時(shí)考慮標(biāo)記是否相同,如果示例和抽樣示例的標(biāo)記相同,對他們距離度量時(shí)應(yīng)該盡可能減小距離。對相似區(qū)域進(jìn)行編碼主要是在語義分割場景下能夠得到圖片的標(biāo)記和圖片的示例之間的對應(yīng)關(guān)系,搜索特定標(biāo)記的近鄰就可以通過搜索該標(biāo)記對應(yīng)的示例的近鄰提高搜索的精確度。然后根據(jù)訓(xùn)練得到的馬氏距離度量矩陣計(jì)算出示例和抽樣示例之間的經(jīng)過距離度量過后的相似度,進(jìn)而利用哈希編碼技術(shù)對各示例進(jìn)行二進(jìn)制編碼。然后比較新的查詢示例和各示例的二進(jìn)制編碼的漢明距離,從而找到查詢示例的近鄰,再返回該示例所在的圖片包,從而找到查詢近鄰。
本發(fā)明在語義分割背景下通過計(jì)算示例之間的相似性來度量圖片的相似性,語義分割可以更為準(zhǔn)確的確定標(biāo)記和圖片區(qū)域(即示例)之間的對應(yīng)關(guān)系。這樣搜索示例的近鄰,同時(shí)利用語義一致性進(jìn)行訓(xùn)練,使算法能夠更加精確的度量圖片之間的相似度。進(jìn)而使用哈希編碼技術(shù)生成高效的二進(jìn)制編碼,在近似圖片搜索中可以獲得更好的性能。
如圖1所示,本發(fā)明提供了一種在語義分割背景下,基于語義一致性對示例進(jìn)行距離度量學(xué)習(xí),并利用哈希編碼技術(shù)把示例進(jìn)行二進(jìn)制編碼進(jìn)而通過比較示例編碼間的漢明距離來找到近似示例,最后返回示例所在的圖片包的方法。本發(fā)明主要分成兩個(gè)部分:
一、利用語義一致性進(jìn)行距離度量學(xué)習(xí)
距離度量學(xué)習(xí)的過程主要利用語義一致性建立模型并獲得編碼階段需要的距離馬氏距離度量矩陣,馬氏距離度量矩陣反映了示例之間內(nèi)在的標(biāo)記相關(guān)特性。在求解最優(yōu)馬氏距離度量矩陣的過程中本發(fā)明采用轉(zhuǎn)化成求解特征值方法。如果示例的特征維度為d維,則經(jīng)過訓(xùn)練的馬氏距離度量矩陣是d行d列的方陣。
距離度量學(xué)習(xí)中基于語義一致性的近似搜索方法的基本思想是通過引入語義一致性,將示例由初始的d維壓縮映射成k維的二進(jìn)制編碼。并使相似的輸入示例映射成漢明距離相近的二進(jìn)制編碼。
步驟1:
在計(jì)算優(yōu)化距離時(shí),若圖片數(shù)據(jù)集中包含n張示例,定義示例間的馬氏距離d是一個(gè)n*m維的矩陣,關(guān)系矩陣中的每一個(gè)元素定義為:
d(xi,uj)=(xi-uj)ta(xi-uj)(1)
上式中a表示需要學(xué)習(xí)的馬氏距離度量矩陣,xi表示數(shù)據(jù)集中的第i個(gè)示例,uj表示抽樣示例集中的中的第j個(gè)示例。
步驟2:
訓(xùn)練馬氏距離度量矩陣a的過程中主要引入了語義一致性建立目標(biāo)函數(shù),并通過求特征值方法求解,獲得編碼階段所需要的轉(zhuǎn)換矩陣。定義目標(biāo)函數(shù)式為:
上述目標(biāo)函數(shù)中意義對示例和抽樣示例進(jìn)行距離度量學(xué)習(xí),獲得最佳距離度量矩陣a。其中yij表示第i個(gè)示例樣本的類標(biāo)記向量(類標(biāo)記向量是c維的列向量,c是類的數(shù)目,向量中元素的值為1或0,分別表示示例屬于這個(gè)類和不屬于這個(gè)類)和第j個(gè)抽樣示例樣本的類標(biāo)記向量是否一致,一致為1,不一致為0。xi代表第i個(gè)示例,uj代表第j個(gè)抽樣示例。本目標(biāo)函數(shù)引入語義一致性,結(jié)合圖片間的特征相似性可以生成更為準(zhǔn)確的二進(jìn)制編碼。
步驟3:
在優(yōu)化過程中本發(fā)明采用求解特征值的方法求最優(yōu)解。馬氏距離度量矩陣a的初始值為單位陣。
a的可行域?yàn)棣藃={a=wwt|wtw=ir,w∈rd×r}
那么對于任意半正定矩陣m,xi,xj(列向量)之間的馬氏距離為
即有:
目標(biāo)優(yōu)化函數(shù)可轉(zhuǎn)化為:
其中:
求解最優(yōu)化問題:
拉格朗日乘子法將限制條件引入目標(biāo)函數(shù),得到拉格朗日函數(shù):
令導(dǎo)數(shù)為0:
w的最優(yōu)解即為矩陣(e+et)/2的前r個(gè)特征值對應(yīng)的特征向量。a=wwt。
二、哈希編碼過程
如圖2所示,哈希編碼的過程主要由上一步得到的馬氏距離度量矩陣構(gòu)建出反映示例和抽樣示例集之間優(yōu)化后的距離的相似矩陣z。然后利用哈希技術(shù)對個(gè)示例進(jìn)行哈希編碼。想要搜索查詢示例在數(shù)據(jù)集中的近似示例,比較示例間二進(jìn)制編碼的漢明距離,若漢明距離小于設(shè)定的門限閾值r,即認(rèn)為兩示例是近似。
步驟1:
得到距離馬氏距離度量矩陣a后,再通過式(1)計(jì)算出每張示例和抽樣示例之間的距離。即得到了關(guān)系矩陣z的各個(gè)元素的值。
步驟2:
設(shè)抽樣圖片集合中示例的數(shù)量為m,構(gòu)造一個(gè)m*m維的m矩陣。m矩陣定義如下:
m=λ-1/2ztzλ-1/2(12)
其中λ=diag(zt1),是一個(gè)對角矩陣。計(jì)算得到m矩陣前k個(gè)最大的特征值組成的k*k維的對角矩陣:σ=diag(δ1,...,δk)∈rk×k和前k個(gè)最大的特征值對應(yīng)的特征向量組成的m*k維的矩陣:v=[v1,...,vk]∈rm×k。
步驟3:
由上式得到的各矩陣,構(gòu)造出最終的編碼矩陣y,y矩陣定義如下:
y是一個(gè)n*k維的矩陣,n代表圖片集中示例的個(gè)數(shù),k代表映射到二進(jìn)制編碼時(shí)編碼的位數(shù)。編碼矩陣y的每行就是一個(gè)編碼函數(shù),各示例通過編碼函數(shù)計(jì)算得到一個(gè)k維的向量,再對此向量進(jìn)行二值化分割:sgn(y)。就得到了圖片數(shù)據(jù)集中各示例的二進(jìn)制編碼。
步驟4:如果有新的查詢圖片要進(jìn)行近似示例的搜索,同樣使用編碼函數(shù)計(jì)算出查詢示例的二進(jìn)制編碼。然后比較查詢示例的編碼和示例數(shù)據(jù)集中所有示例編碼的漢明距離。定義漢明距離門限閾值r(r可選取以下值:1,2,3,4),如果查詢示例和某示例的漢明距離小于閾值r,即認(rèn)為此示例是查詢示例的近似圖片。遍歷示例數(shù)據(jù)集,即可找到查詢示例的所有近似示例,再返回示例所在的圖片。
綜上所述,本發(fā)明解決的問題歸納如下:
(1)傳統(tǒng)近似搜索算法搜索不精確的問題。
傳統(tǒng)近似搜索,只能根據(jù)圖片搜索近鄰,比如尋找查詢圖片某個(gè)標(biāo)記的近鄰,只能用搜索整張圖片的近鄰,本發(fā)明可以在語義分割的背景下,找到關(guān)注標(biāo)記對應(yīng)的示例,搜索該示例的近鄰示例,通過返回近鄰示例所在的包,能夠精確定位關(guān)注標(biāo)記出現(xiàn)在哪些圖片中,實(shí)現(xiàn)追蹤目標(biāo),找到更多和關(guān)注標(biāo)記相關(guān)的近鄰。
(2)傳統(tǒng)近似搜索算法訓(xùn)練過程中沒有引入語義一致性導(dǎo)致性能不佳的問題。
很多傳統(tǒng)的用于圖片近鄰搜索的算法在尋找查詢圖片近鄰的時(shí)候過于片面,在尋找查詢圖片的近鄰時(shí)沒有考慮圖片可能具有的語義信息,使得這些算法在圖片近似搜索的實(shí)際應(yīng)用中性能不佳。本發(fā)明在對圖片進(jìn)行相似性度量時(shí)引入語義信息,可以更為準(zhǔn)確的度量圖片之間的相似性。使算法能夠有效地應(yīng)用在現(xiàn)實(shí)的圖片近似搜索中。
(3)使用抽象圖片集計(jì)算優(yōu)化相似度。解決了大規(guī)模圖片數(shù)據(jù)集中計(jì)算相似度過慢的問題。
在大規(guī)模圖片數(shù)據(jù)集中,如果使用傳統(tǒng)的計(jì)算圖片和圖片兩兩之間相似度的這種度量方法,會使時(shí)間開銷非常大,現(xiàn)實(shí)應(yīng)用中不可行。本發(fā)明從樣本集中隨機(jī)抽取很少的一部分示例作為抽樣示例集,只計(jì)算示例和抽樣示例集之間的距離。大大減少了算法的時(shí)間開銷,提高了算法效率。