袁 源
(山西職業(yè)技術(shù)學(xué)院,山西 太原 030006)
信息檢索,尤其是文本檢索,已經(jīng)成為最有影響力的檢索工具之一。在互聯(lián)網(wǎng)上,它幫助世界各地的人們輕松地獲取各種信息,幾乎沒有任何費用。這種信息化檢索已經(jīng)為人類的經(jīng)濟、文化和技術(shù)發(fā)展提供強有力的燃料。當(dāng)今互聯(lián)網(wǎng)、數(shù)碼相機、多媒體的飛速發(fā)展,加上網(wǎng)絡(luò)得以普及,現(xiàn)在人們越來越沉浸于網(wǎng)上檢索信息了,而圖像的查詢更是變得不可缺少。基于圖像的社交網(wǎng)絡(luò)應(yīng)用,一些世界領(lǐng)先的技術(shù)巨頭,如谷歌和百度都投入了他們的精力,使得文本檢索和圖像搜索取得了巨大的成功。幾十年來,我們利用信息構(gòu)建了一個基于內(nèi)容的圖像搜索引擎,它可以完成計算機視覺的各種任務(wù),如圖像分類、圖像處理,檢測、圖像分割等。
例如圖像檢索,我們使用某些特征表示圖像,這樣就可以使用預(yù)處理得到它的特性,并將其與所有圖像的相似度進行比較,經(jīng)過檢索許多圖像,得到結(jié)果并顯示它們在網(wǎng)頁上。在此將討論數(shù)據(jù)集的細(xì)節(jié),深層學(xué)習(xí)模型,框架和下面的搜索引擎體系結(jié)構(gòu)。
Imagenet是一個圖像數(shù)據(jù)庫,它包含超過1000萬類圖像。ImageNet的大規(guī)模視覺識別通常被稱為ILSVRC,已成為一個世界各地的計算機視覺研究者的競爭目標(biāo),檢測與分類彼此的任務(wù)。我們選擇它作為圖像數(shù)據(jù)庫,是因為:
1) 可以在項目里做大型和多樣化足夠的圖像檢索任務(wù)。
2) 另一方面,由于計算資源的限制,它不太適合安裝在桌面上的磁盤空間中。
3) 最后,有許多預(yù)先訓(xùn)練模型的訓(xùn)練在ImageNet中,這樣我們就可以挑選一個,使用它無需從頭開始訓(xùn)練模型或調(diào)整模型[1]。
在我們的項目中,我們只使用了ImageNet的訓(xùn)練數(shù)據(jù)。
殘留網(wǎng)絡(luò)是目前最先進的深度學(xué)習(xí)模型ilsvr的分類任務(wù)。一般來說,它的設(shè)計,使它可以更容易地優(yōu)化,并可以添加更多的層,以獲得更好的性能。這是一個革命性的創(chuàng)新,許多研究者提出了其他類似的架構(gòu),在基礎(chǔ)上實現(xiàn)更好的性能,從那時起,一個典型的基本構(gòu)建塊殘留網(wǎng)絡(luò)就如圖1所示誕生。一個殘余網(wǎng)絡(luò)包含多個這樣的構(gòu)建塊,它們通過多種方式組合在一起。該模型的作者聲稱他們?nèi)〉昧嗽贗mageNet測試誤差率為3.57%。
我們選擇了ResNet-50作為我們的模型是基于以下原因:
1) 模型的性能是許多其他模型中最好的之一。
2) 該模型不太大,在實時應(yīng)用中不需要計算查詢圖像的特征提取。
3) Keras在預(yù)訓(xùn)練的模型中ImageNet是可用的,同時tensofiow是一個方便的包裝。
圖1 殘留網(wǎng)絡(luò)基本構(gòu)建塊
雖然模型是設(shè)計用于圖像分類、圖像的內(nèi)部表示,但是它已經(jīng)可以應(yīng)用到其他的任務(wù)中,因此,在圖像搜索圖像內(nèi)容中得以廣泛使用。
在檢索任務(wù)中,當(dāng)使用模型中的原始特征時,它對檢索與查詢圖像屬于同一類別的,圖像會表現(xiàn)出較小的偏差。當(dāng)我們通過PCA減少特征的維數(shù)時,這種偏差可以得到緩解。
我們使用Python作為我們的主要語言來構(gòu)建整個框架。我們使用Tornado作為一個Web框架來構(gòu)建搜索引擎。它支持異步網(wǎng)絡(luò),可以擴展到成千上萬的開放連接。我們使用HTML,CSS,JavaScript來為用戶建立前端Web接口。我們的包裝上使用的是tensofiow keras,后端為keras,訓(xùn)練圖像的特征和提取從上傳的imagenet上查詢圖像。我們把NumPy和scikit-learn用作矢量計算和矩陣計算的工具,并執(zhí)行降維[2]。
3.2.1 前端服務(wù)器
1) 前端服務(wù)器接收到一個查詢圖像(Base64編碼)來自用戶,提取特征,將特征傳遞給服務(wù)器。
2) 前端服務(wù)器接收來自特征服務(wù)器的結(jié)果(圖像名稱和相似性分?jǐn)?shù)),根據(jù)分?jǐn)?shù)對結(jié)果進行排序,并將頂部k個圖像名稱(批處理請求)發(fā)送到相應(yīng)的圖像服務(wù)器(圖像名稱)。
3) 前端服務(wù)器從圖像服務(wù)器接收結(jié)果(圖像),將它們發(fā)送給頁面并將它們顯示給用戶。
3.2.2 特征服務(wù)器
1) 每個特征服務(wù)器存儲部分圖像的特征。
2) 每個特征服務(wù)器從前端服務(wù)器接收查詢圖像特征,將其與它存儲的圖像的特征進行比較,并將頂部k圖像名稱和相似度分?jǐn)?shù)返回到前端服務(wù)器。
3.2.3 圖像服務(wù)器
1) 每個圖像服務(wù)器存儲圖像的一部分。
2) 每個圖像服務(wù)器與前端服務(wù)器接收圖像的名稱,返回相應(yīng)的圖像編碼為base64格式
3.2.4 索引器
1) 索引器是一種離線組件索引圖像。
2) 索引器是通過特征從Keras和tensofiow提取圖像,然后將它們存儲在一個名為鍵的圖像特征值的字典里。
3.2.5 維減速機
1) 它是一個離線組件,將原始特征空間嵌入到一個低得多的特征空間中。
2) 對于我們的項目,我們使用PCA作為我們的尺寸減速器[3]。
我們對圖像檢索系統(tǒng)的評價是主觀的,因為檢索到的圖像是否與查詢圖像相關(guān),完全取決于用戶的意圖和目標(biāo)。在我們的評估里,給出的“相關(guān)的信息”作為“主要的圖像中的對象是相同的或圖像的顏色和款式都是高度相關(guān)的”,我們使用精確評分作為評價。我們很難計算我們的數(shù)據(jù)庫中100萬個圖像中有多少圖像與查詢圖像相關(guān)。因此,我們不能用F-score或其他依賴回憶。我們將評價分為兩類:數(shù)據(jù)庫評價,即查詢圖像在數(shù)據(jù)庫中,并進行數(shù)據(jù)庫評價,這意味著查詢圖像不在數(shù)據(jù)庫中。有10名學(xué)生幫助我們評估我們的系統(tǒng),每個人都需要使用25個圖像進行數(shù)據(jù)庫評估和25個圖像進行外部數(shù)據(jù)庫評估,然后我們計算了每個分?jǐn)?shù)的精確得分,并將分?jǐn)?shù)平均化。以下是我們的結(jié)果:
在數(shù)據(jù)庫評估中有2048個維度的原始特征:0.98
基于2048維原始特征的數(shù)據(jù)庫評估精度:0.85
在數(shù)據(jù)庫評價中,減少了200個維度的特征:0.93
用200個維度減少特征的數(shù)據(jù)庫評估精度:0.75
從結(jié)果中,我們看到,從數(shù)據(jù)庫的查詢圖像,我們的系統(tǒng)可以準(zhǔn)確地檢索相關(guān)的圖像。我們認(rèn)為部分原因是因為我們使用的模型是直接對訓(xùn)練數(shù)據(jù)庫中的圖像分類。查詢圖像的圖像數(shù)據(jù)庫,精確的得分相對較低。我們將討論在section5.3這方面的改進。另一方面,當(dāng)我們使用PCA減少特征的維數(shù)時,兩種情況下的精確度都會降低。
圖2 狗的圖像搜索結(jié)果示例
由于我們的項目都是關(guān)于圖像的,需要在網(wǎng)頁和前端服務(wù)器之間或圖像服務(wù)器到前端服務(wù)器之間傳輸圖像的形式上,認(rèn)真考慮和認(rèn)真處理。
用戶上傳的圖像需要保存在磁盤中以供下一步操作,從首頁到前臺服務(wù)器,我們使用javascript POST方法。映像不能簡單地作為參數(shù)傳遞,而JSON不支持包含二進制類型?;谶@些事實,我們嘗試了幾種方法,包括將圖像轉(zhuǎn)換為格式數(shù)據(jù)類型,以及用于編碼和解碼的圖像類型(如PNG、jpeg)。最后,我們通過提取圖像的Base64格式和張貼圖像的Base64字符串表示形式直接提供給前端服務(wù)器。對于前端服務(wù)器,圖像的這些表示必須首先轉(zhuǎn)換為PNG格式(否則為失敗),然后保存我們想要的任何格式[4]。
一旦得到原始圖像,我們就可以將表示代碼提取出來并解析為其他服務(wù)器的URL參數(shù)。顯示圖像變得簡單,因為我們已經(jīng)克服了保存圖像部分。
圖3 特征向量大小為2 048時的搜索結(jié)果
在評價部分,特征尺寸對我們的圖片搜索結(jié)果有很大的影響。我們的圖像特征是一個帶有浮點值的向量。
從最后的匯集層resnet50模型提取原料特征2028個維度,將更致力于圖像中的對象,因為resnet50是對象分類和語義特點的最后一層訓(xùn)練。換句話說,搜索結(jié)果會更可能包括原始圖像中的對象的圖像。
與此相反,當(dāng)我們使用PCA來減少特征維數(shù),如果向量的大小不是那么大,但仍然相當(dāng)(如200),PCA效果會給更多的“一般感覺和風(fēng)格”的結(jié)果。它不把物體聚焦在圖像中,而是給出相似環(huán)境、背景或顏色的圖像。
圖4 特征向量大小為200時的搜索結(jié)果
1) 在這個項目中我們從最后匯集層resnet50模型使用了表示代碼。在未來,我們想嘗試從中間層如何表示代碼,來影響我們的搜索引擎的性能。
2) 由于不同的特征對檢索結(jié)果有不同的影響,我們可以同時為用戶提供多種選擇,如基于對象的檢索、基于樣式的檢索、基于顏色的檢索。在這種情況下,我們會增加更多類型的特點[4]。
3) 在我們的項目中,我們只使用歐幾里德距離來度量兩個圖像特征之間的相似性,并沒有100%保證更小的歐氏距離。在未來,我們可以考慮添加相似性模塊,在模型訓(xùn)練中學(xué)習(xí)圖像之間的相似性。
4) 這次我們只用大約100萬張圖片作為我們的圖像數(shù)據(jù)庫,將來我們可以提供更強大的和多樣的檢索。
5) 我們的項目是以文本檢索為動機的,還可以進一步擴展我們的框架,不僅僅局限于圖像,在這種情況下,數(shù)據(jù)存儲、視頻表示模型和搜索引擎體系結(jié)構(gòu)方面還有許多挑戰(zhàn)。
在該項目中,我們利用深度學(xué)習(xí)模型開發(fā)了一個基于圖像內(nèi)容的圖像檢索系統(tǒng)。結(jié)果表明,檢索到的圖像與查詢圖像高度相關(guān)。在未來,我們打算做更多的改進,使其規(guī)模更加形象,可擴展到多媒體檢索系統(tǒng)支持視頻,音樂,音響等等。