劉 渝 郭 嬋 馮樹耀 周 可 肖志立
1(華中科技大學(xué)武漢光電國家研究中心 武漢 430074)2(深圳市騰訊計算機系統(tǒng)有限公司技術(shù)工程事業(yè)群 廣東深圳 518054)(liu_yu@hust.edu.cn)
多媒體數(shù)據(jù)的井噴式增長使得非結(jié)構(gòu)化多模態(tài)數(shù)據(jù)在云端存儲中占據(jù)的比例劇增,進而催生了大量的分析需求,使得存儲系統(tǒng)在滿足數(shù)據(jù)存儲穩(wěn)定性的同時,對數(shù)據(jù)分析的服務(wù)與支持越來越受到關(guān)注.
然而,非結(jié)構(gòu)化多模態(tài)數(shù)據(jù)的分析需求大多建立在內(nèi)容感知與語義關(guān)聯(lián)之上,這使得傳統(tǒng)存儲系統(tǒng)在提供服務(wù)時捉襟見肘.一方面,傳統(tǒng)存儲系統(tǒng)只完成了對數(shù)據(jù)淺層內(nèi)容的感知,即對數(shù)據(jù)屬性的獲取.這些屬性不具備完整描述非結(jié)構(gòu)化數(shù)據(jù)語義的能力.另一方面,傳統(tǒng)存儲系統(tǒng)沒有為應(yīng)用分析提供最佳的數(shù)據(jù)管理與查詢結(jié)構(gòu).現(xiàn)有的樹形結(jié)構(gòu)導(dǎo)致語義上相近的數(shù)據(jù)在存儲邏輯結(jié)構(gòu)中可能相距甚遠.在這2個方面的共同制約下,現(xiàn)有存儲系統(tǒng)在面對應(yīng)用分析時只能先從存儲系統(tǒng)中讀出所有的數(shù)據(jù),從而陷入漫長的讀取等待中.以1億張圖像,每張圖像大小為1 MB的分析為例,部署在騰訊數(shù)據(jù)中心上的SATA硬盤(順序讀取帶寬為220 MBps)需要5.26天完成讀取.更為不幸的是,被讀取的數(shù)據(jù)中只有小部分真正參與了實際分析.以騰訊QQ相冊所在的數(shù)據(jù)中心為例,我們分別針對含有“動物”“人”“植物”“風(fēng)景”的數(shù)據(jù)進行收集與分析,來自6臺服務(wù)器內(nèi)的相關(guān)數(shù)據(jù)分別平均占比僅為20.11%,53.45%,17.01%,29.43%.大量的數(shù)據(jù)經(jīng)過簡單分析并被發(fā)現(xiàn)無關(guān)后即刻被棄用,但之前讀取造成的帶寬消耗已經(jīng)無法彌補.
為解決以上問題,我們設(shè)想是否可以在數(shù)據(jù)讀取前進行簡單的篩選,通過只讀取與分析相關(guān)的數(shù)據(jù)減少讀取時間.具體的,從語義層面感知數(shù)據(jù),獲取表達語義的元數(shù)據(jù),之后建立新的結(jié)構(gòu)管理這些元數(shù)據(jù).如果獲取語義元數(shù)據(jù)與篩選的時間小于不相關(guān)數(shù)據(jù)的讀取時間,那么我們的工作將是有效且有意義的.
基于此,我們以非結(jié)構(gòu)化數(shù)據(jù)中占比最多的圖像(視頻的基礎(chǔ)內(nèi)容)和文本為對象,研究改進現(xiàn)有的存儲系統(tǒng)機制,以滿足在圖像或文本為請求的分析需求下,從存儲層面篩選內(nèi)容語義相近的圖文進行讀取,從而實現(xiàn)支持分析需求的存儲系統(tǒng).本文提出了基于語義相似性的跨模態(tài)圖文數(shù)據(jù)內(nèi)容篩選存儲機制(cross-modal image and text content sifting storage, CITCSS).并從以下2方面入手:第一,針對大規(guī)模異構(gòu)多模態(tài)的圖文數(shù)據(jù),在存儲環(huán)境下以相同范疇感知其語義,以相似性Hash碼實現(xiàn)圖像和文本之間的統(tǒng)一空間表示,以元數(shù)據(jù)形式進行管理.第二,在現(xiàn)有的存儲系統(tǒng)中以語義元數(shù)據(jù)為內(nèi)容,圖譜化關(guān)聯(lián)為結(jié)構(gòu)設(shè)計內(nèi)容篩選功能,支持用戶在分析前根據(jù)文件的語義相關(guān)性縮小讀取范圍,從而節(jié)省讀取時間和帶寬.
值得一提的是,我們提出的篩選機制適用于應(yīng)用分析場景,這種場景關(guān)注相關(guān)數(shù)據(jù)的找到與相關(guān)數(shù)據(jù)表達出的共同規(guī)律.因為語義篩選機制的引入,存在部分相關(guān)數(shù)據(jù)遺漏的問題,但在較高的召回率下,并不會影響其業(yè)務(wù)需求.比如檢索業(yè)務(wù),最為關(guān)心的是前N個數(shù)據(jù)中的相關(guān)數(shù)據(jù),而不是所有數(shù)據(jù).
本文的主要貢獻有3個方面:
1) 存儲環(huán)境下的跨模態(tài)圖像文本統(tǒng)一語義表征算法的嵌入與實現(xiàn).在損失少量精度的前提下,采用二值化Hash方法,實現(xiàn)輕量級語義Hash元數(shù)據(jù)管理.同時,克服圖像和文本之間的模態(tài)差異,實現(xiàn)相似性內(nèi)容的統(tǒng)一空間融合;
2) 語義Hash圖譜構(gòu)建的設(shè)計與實現(xiàn).從元數(shù)據(jù)層面提供相似內(nèi)容篩選接口,利用語義相近Hash碼間漢明距離短的特性,在Neo4j實現(xiàn)語義關(guān)聯(lián).并在元數(shù)據(jù)圖譜中提供深度遍歷接口,支持相關(guān)節(jié)點查找;
3) 在線篩選相似內(nèi)容文件接口的設(shè)計與實現(xiàn).基于語義Hash圖譜中間件,在可接受的召回率下,篩選與需求相關(guān)的圖像和文本進行返回.在公開的跨模態(tài)數(shù)據(jù)集中,模擬按需篩選的效果.實驗表明,與傳統(tǒng)的語義存儲系統(tǒng)相比,CITCSS在召回率超過98%的性能下,讀取延遲相對降低了99.07%~99.77%.
在后續(xù)的章節(jié)中,首先介紹本研究相關(guān)的研究現(xiàn)狀、本研究用作存儲系統(tǒng)和元數(shù)據(jù)系統(tǒng)的物理組件以及本文使用的Hash算法基礎(chǔ)模型;然后提出CITCSS總體設(shè)計框架與工作流程;最后通過實驗驗證本文方法的實用性和有效性.
現(xiàn)存的大規(guī)模語義數(shù)據(jù)存儲模型主要分為2種:關(guān)系型模型與圖模型.1)關(guān)系模型直接進行關(guān)系映射[1],使用關(guān)系型數(shù)據(jù)庫將語義和數(shù)據(jù)進行關(guān)聯(lián).Wilkinson等人[2]提出了采用屬性表的方式存儲語義數(shù)據(jù).Weiss等人[3]構(gòu)建六元組索引,使得語義中的每一個數(shù)據(jù)都可以建立索引,加快索引速度.Du等人[4]構(gòu)建Hadoop集群索引,集群中的每一個節(jié)點都可以提供存儲和檢索服務(wù).2)圖模型基于圖的數(shù)據(jù)管理方式可以更好地維護語義結(jié)構(gòu),并且通過圖的匹配實現(xiàn)語義查詢.Udrea等人[5]對特定類型的語義數(shù)據(jù)構(gòu)建一種輕量型索引結(jié)構(gòu).Zou等人[6]將語義的主體或者客體對應(yīng)圖的頂點,并將語義數(shù)據(jù)的查詢語句轉(zhuǎn)換為子圖完成匹配.
這些語義存儲系統(tǒng)在取得突破的同時卻忽略了本質(zhì)的問題,即管理的內(nèi)容.以屬性進行關(guān)聯(lián)不可能真正做到對數(shù)據(jù)內(nèi)容語義的管理,尤其針對非結(jié)構(gòu)化數(shù)據(jù)標簽不完整的情形.因此,在現(xiàn)有系統(tǒng)之上,注入內(nèi)容語義的元數(shù)據(jù),既是本文的初衷,也是語義存儲系統(tǒng)需要完成的首要任務(wù).
跨模態(tài)檢索是跨越模態(tài)間差異實現(xiàn)特征相似性感知的一種多媒體檢索方式[7].二進制表示的相似性Hash碼則具備存儲上的優(yōu)勢,并且基于異或的漢明距離度量方式具有極高的運算速度.He等人[8]使用標準增強學(xué)習(xí)方法學(xué)習(xí)雙模態(tài)數(shù)據(jù)的Hash函數(shù).Zhang等人[9]提出了基于語義相關(guān)最大化的Hash跨模態(tài)模型.語義主題多模態(tài)Hash[10]對文本進行聚類,對圖像矩陣進行分解,得到語義上的主題,對原始數(shù)據(jù)向語義主題所在的公共子空間的映射進行Hash編碼.Lin等人[11]提出將訓(xùn)練數(shù)據(jù)的語義相似度作為監(jiān)督信息轉(zhuǎn)化為概率分布,通過最小化KL(Kullback-Leibler)散度,在漢明空間中使用待學(xué)習(xí)的Hash碼對其進行近似處理,然后用帶有采樣策略的核邏輯回歸學(xué)習(xí)Hash碼.Jiang等人[12]設(shè)計了一種端到端的深度神經(jīng)網(wǎng)絡(luò)跨模態(tài)Hash學(xué)習(xí)框架.它無需人工標注,并使用負對數(shù)似然損失來保證跨模態(tài)相似性.在此基礎(chǔ)上,Li等人[13]又提出了一種將自監(jiān)督的語義學(xué)習(xí)與對抗性學(xué)習(xí)相結(jié)合的深度Hash網(wǎng)絡(luò).利用2個對抗網(wǎng)絡(luò)共同對不同的模態(tài)進行建模,并在學(xué)習(xí)到的語義特征監(jiān)督下進一步捕獲它們的語義相關(guān)性和表示一致性.
基于Hash的跨模態(tài)檢索適用于存儲環(huán)境,但尚無研究表明如何在存儲系統(tǒng)下嵌入此類Hash算法,如何在不影響存儲性能及穩(wěn)定性的條件下應(yīng)用此類Hash算法.因此,本文將嘗試在存儲系統(tǒng)下嵌入跨模態(tài)Hash算法,實現(xiàn)元數(shù)據(jù)的生成.
本文采用OpenStack對象存儲組件Swift[14]搭建多模態(tài)數(shù)據(jù)混合云存儲的架構(gòu)平臺,原因在于:
1) Swift對于文件大小和數(shù)目沒有限制.本文研究對象為大規(guī)??缒B(tài)圖像文本數(shù)據(jù),其中單個文本文件相對于圖像文件所占據(jù)的存儲空間較小,適合使用Swift完成存儲.
2) Swift中的元數(shù)據(jù)以分布式進行管理.從元數(shù)據(jù)的可擴展性和安全性考慮是更優(yōu)的選擇.
3) Swift使用Python進行開發(fā),貼近本文將結(jié)合的深度學(xué)習(xí)算法工具PyTorch[15],TensorFlow[16].從系統(tǒng)的開發(fā)兼容性考慮更加合適.
Swift中的文件作為獨立的對象以其文件名稱的Hash值和最后的操作時間組成存儲路徑.原生態(tài)Swift存儲系統(tǒng)沒有跨模態(tài)文件的分析處理機制,我們在其基礎(chǔ)上以圖數(shù)據(jù)庫添加語義信息,管理元數(shù)據(jù).
圖數(shù)據(jù)庫在以關(guān)聯(lián)為需求的檢索方面具有天然優(yōu)勢.本文使用Neo4j[17]圖數(shù)據(jù)庫完成語義元數(shù)據(jù)載入與修改.數(shù)據(jù)批量導(dǎo)入包括CREATE,LOAD CSV,neo4j-import[18].CREATE適用于1萬個節(jié)點內(nèi)的插入.LOAD CSV用于加載本地或遠程CSV的實時插入,每秒約能插入5 000個節(jié)點.neo4j-import占用資源少但只能構(gòu)建新的圖譜,作為啟動時構(gòu)建元數(shù)據(jù)圖譜使用.
自監(jiān)督對抗式Hash(self-supervised adversarial hashing, SSAH)算法主要研究雙峰數(shù)據(jù)(即圖像和文本)的跨峰檢索,通過采用2個對抗網(wǎng)絡(luò)共同學(xué)習(xí)高維特征及其對應(yīng)不同模態(tài)數(shù)據(jù)的Hash碼.雙模態(tài)數(shù)據(jù)同時通過一個自監(jiān)督的語義網(wǎng)絡(luò),利用多標簽注釋修正語義信息,通過有監(jiān)督的對抗性學(xué)習(xí),最大程度地跨越模態(tài)差異提取語義相關(guān)性.
SSAH分為2個階段:在第1階段中,從各自模態(tài)中提取語義信息關(guān)聯(lián)至公共語義空間中.由于深度神經(jīng)網(wǎng)絡(luò)中的每個輸出層都包含語義信息,因此在公共語義空間中關(guān)聯(lián)特定的模態(tài)信息可以幫助提升模態(tài)之間的語義相關(guān)性.在第2階段中,語義特征和特定于模態(tài)的特征反饋給2個對抗網(wǎng)絡(luò),使得2種模態(tài)的特征分布在相同語義特征的監(jiān)督下趨于一致.
跨模態(tài)Hash的主要功能是為不同模態(tài)數(shù)據(jù)學(xué)習(xí)統(tǒng)一的映射函數(shù).假設(shè)Hash碼集合為Bv,t∈{0,1}K,其中上標v表示來自圖像數(shù)據(jù)集,上標t表示來自文本數(shù)據(jù)集,K表示Hash碼的長度.2個Hash碼bi∈Bv,t和bj∈Bv,t之間的相似性使用漢明距離disH(bi,bj)進行表達.漢明距離和Hash碼內(nèi)積bi,bj之間的關(guān)系為因此可以使用內(nèi)積來量化2個Hash碼之間的相似性.假設(shè)源數(shù)據(jù)間語義相似,則Sij=1,否則Sij=0,在集合B內(nèi)的實例相似性概率可以表示為
(1)
通過構(gòu)建2個對抗網(wǎng)絡(luò)ImgNet和TxtNet分別獨立地學(xué)習(xí)圖像模態(tài)和文本模態(tài)的Hash函數(shù)Hv,t=fv,t(v,t;θv,t).同時,還構(gòu)建一個端到端的自監(jiān)督語義網(wǎng)絡(luò)LabNet,以便在學(xué)習(xí)語義特征的Hash函數(shù)的同時,在公共語義空間中對圖像和文本模態(tài)之間的語義相關(guān)性進行建模,即Hl=fl(l;θl).其中,l表示來自標簽集,fv,t,l表示Hash函數(shù),θv,t,l表示網(wǎng)絡(luò)參數(shù),對Hv,t,l應(yīng)用符號函數(shù)生成二進制Hash碼Bv,t,l:
Bv,t,l=tanh(Hv,t,l)<0,B∈{0,1}K.
(2)
為方便理解,我們使用Fv,t,l來表示圖像、文本和標簽公共語義空間中的語義特征.Fv,t,l也對應(yīng)于深度神經(jīng)網(wǎng)絡(luò)ImgNet,TxtNet,LabNet的輸出層.
值得一提的是,傳統(tǒng)跨模態(tài)Hash模型中往往只以高維特征相似性保持為依據(jù)進行特征選擇,這種方式無法克服2種模態(tài)間對于實例表達時的語義鴻溝,使得不同批次下的數(shù)據(jù)難以在訓(xùn)練中獲得統(tǒng)一的映射機制(表現(xiàn)為損失函數(shù)難以收斂).SSAH選擇以標簽集作為中間橋梁調(diào)和圖像與文本間的語義鴻溝,不僅弱化了直接擬合2種模態(tài)特征的難度(因為文本和特征在擬合標簽上都已經(jīng)十分成熟),同時以標簽集中的多個實例作為擬合通道更是實現(xiàn)了特征細化,使得圖像或文本中的多個實例能夠被獨立的理解和捕獲.另外,使用對抗網(wǎng)絡(luò)交互提升圖像和文本對于同一標簽的擬合,能夠防止在單一模態(tài)數(shù)據(jù)上出現(xiàn)過擬合現(xiàn)象.因此,SSAH能夠針對多標簽的圖像和文本數(shù)據(jù)獲得比現(xiàn)有方法更準確的特征,從而獲得更好的Hash碼.
SSAH模型訓(xùn)練通過3個損失函數(shù)完成,即自監(jiān)督學(xué)習(xí)的目標損失函數(shù)、圖像和文本特征學(xué)習(xí)的損失函數(shù)和對抗學(xué)習(xí)的損失函數(shù).
1) 自監(jiān)督學(xué)習(xí)的目標損失函數(shù)
使用三元組(vi,ti,li)來描述相同的第i個實例,將li作為圖像數(shù)據(jù)集vi和文本數(shù)據(jù)集ti的自監(jiān)督語義信息,在LabNet中,通過非線性變換將語義特征投影到漢明空間中,從而很好地保留語義特征與其對應(yīng)的Hash碼之間的相似關(guān)系.因此,LabNet的目標損失函數(shù)表述為
(3)
2) 圖像和文本特征學(xué)習(xí)的損失函數(shù)
針對圖像和文本的不同模態(tài)的自監(jiān)督特征學(xué)習(xí)的目標損失函數(shù)可以寫為
(4)
3) 對抗學(xué)習(xí)的損失函數(shù)
(5)
本文選擇SSAH作為Hash元數(shù)據(jù)生成算法原型的主要理由如下:
1) SSAH產(chǎn)生的Hash碼具有輕量級存儲、計算速度快等優(yōu)勢,適合海量跨模態(tài)數(shù)據(jù)的內(nèi)容表示;
2) SSAH是目前為止最新且效果最好的跨模態(tài)Hash算法,能夠更準確地擬合不同模態(tài)特征中一致的分布,從而有效地捕獲語義之間的相關(guān)性.
CITCSS總體框架和數(shù)據(jù)流如圖1所示.框架由3部分組成:Hash元數(shù)據(jù)生成模型(Hash code meta-data generating model, HCMGM)、語義Hash圖譜(semantic Hash code graph, SHG)和文件存儲系統(tǒng)(file storage system, FSS).HCMGM用于獲得圖像和文本內(nèi)容的Hash元數(shù)據(jù),即相似性Hash碼.SHG以Neo4j為載體管理Hash元數(shù)據(jù).本文將語義相關(guān)的對象聚類到圖的相鄰區(qū)域,從而提供準確且快速的內(nèi)容篩選機制.SHG開辟獨立的空間進行管理,不影響原有文件系統(tǒng)的元數(shù)據(jù)組織.FSS是一個以文件為對象的存儲系統(tǒng),海量的圖像和文本文件可以批量上傳,單個新的圖像或文本文件在生成Hash碼元數(shù)據(jù)的同時,原有機制同時運行.
Fig. 1 The overall framework of CITCSS圖1 跨模態(tài)圖文數(shù)據(jù)內(nèi)容篩選存儲系統(tǒng)CITCSS整體框架
該系統(tǒng)實現(xiàn)內(nèi)容篩選機制的工作總體流程如圖2所示,分為離線處理和在線篩選2個階段.離線處理階段,首先訓(xùn)練HCMGM,然后通過模型獲得所有數(shù)據(jù)的Hash元數(shù)據(jù),最后根據(jù)漢明距離和閾值在Neo4j上構(gòu)建SHG.在線篩選階段,根據(jù)用戶的篩選條件利用Neo4j的Cypher查詢語言篩選出SHG中內(nèi)容相似的節(jié)點,進而篩選出與分析相關(guān)的文件返回給用戶.較之傳統(tǒng)存儲系統(tǒng),CITCSS不需要在分析前讀取所有的數(shù)據(jù)內(nèi)容,從而降低了數(shù)據(jù)的讀帶寬壓力.
Fig. 2 The overall workflow of CITCSS圖2 跨模態(tài)內(nèi)容篩選機制的工作總體流程
4.2.1 概況
圖3展示了HCMGM示意圖.該模型主要由3個部分組成,包括1個自監(jiān)督的語義生成網(wǎng)絡(luò)LabNet,以及2個分別針對圖像模態(tài)和文本模態(tài)的對抗網(wǎng)絡(luò)ImgNet和TxtNet,其中實線箭頭表示通過前向傳播得到結(jié)果,虛線箭頭表示在反向傳播前需要進行的計算.HCMGM包含以下3個學(xué)習(xí)階段.
Fig. 3 The framework of HCMGM圖3 Hash元數(shù)據(jù)生成模型示意圖
1) 自監(jiān)督生成語義.跨模態(tài)數(shù)據(jù)集的表現(xiàn)形式為1個實例帶有多個標簽.多標簽注釋能夠作為細粒度級別上橋接模態(tài)之間語義相關(guān)性的條件而被使用.LabNet是一個端到端的全連接深度神經(jīng)網(wǎng)絡(luò).給定一個實例的多標簽向量,LabNet會逐層提取抽象語義特征,從而監(jiān)督ImgNet和TxtNet的學(xué)習(xí)過程.
2) 特征學(xué)習(xí).為了保持跨模態(tài)實例的語義相關(guān)性,本文使用LabNet監(jiān)督從語義特征學(xué)習(xí)Hash碼的過程.ImgNet負責(zé)將圖像特征投影到Hash碼中,因為使用相同的LabNet監(jiān)督學(xué)習(xí)過程,所以本文可以保持ImgNet與語義網(wǎng)絡(luò)之間相同的語義映射.同樣的,在考慮文本形式時,本文使用語義網(wǎng)絡(luò)以相同的方式監(jiān)督TxtNet的特征學(xué)習(xí)過程.
3) 對抗學(xué)習(xí).盡管在LabNet的監(jiān)督下,跨模態(tài)語義的相關(guān)性可以得到保留.但是不同的模態(tài)會有著不一致的特征分布.為了降低這種差距,模型引入對抗性學(xué)習(xí),分別為圖像和文本模態(tài)建立2個鑒別器DrcNet,鑒別器的輸入通過LabNet生成的圖像或文本的模態(tài)特征和語義特征,輸出為單一值,即“0”或“1”,本文將給定的標簽定義為“1”,將由ImgNet(TxtNet)生成的圖像(文本)標簽定義為“0”.
4.2.2 損失函數(shù)
損失函數(shù)是模型訓(xùn)練的目標約束條件.預(yù)測值與實際結(jié)果偏離越大,損失值越偏大.一般情況下,隨著優(yōu)化器的調(diào)整和訓(xùn)練輪數(shù)的增加,損失值會逐漸趨于穩(wěn)定,表明模型訓(xùn)練完畢.本文模型中,主要應(yīng)用3個損失函數(shù):對比損失、對抗損失和分類損失.下面詳細闡述了設(shè)計過程.
1) 對比損失.這里使用均方誤差(mean squared error, MSE).對于特征比較損失的計算如下:
(6)
(7)
lossPairF=FMSE(θL1,lg(1+eθL1)),
(8)
(9)
lossPairH=FMSE(θL2,lg(1+eθL2)),
(10)
2) 對抗損失.本文將圖像模態(tài)特征和標簽反饋給圖像鑒別器,將文本模態(tài)特征和標簽反饋給文本鑒別器,通過這2個鑒別器相互對抗來訓(xùn)練模型.對抗損失的計算如下所示:
(11)
其中,xv l和xt l分別表示圖像和文本在公共空間中的語義特征,而yv l和yt l則分別是圖像和文本的模態(tài)標簽,這里通過平方損失來放大計算的數(shù)值.
3) 分類損失.通過標簽網(wǎng)絡(luò)LabNet自監(jiān)督地訓(xùn)練圖像網(wǎng)絡(luò)ImgNet和文本網(wǎng)絡(luò)TxtNet,每個網(wǎng)絡(luò)都有其對應(yīng)的分類損失,計算如下:
lossS=α×lossPF+γ×lossPH+βFMSE(B,Hl)+
ηFMSE(l,L)+δ×lossD,
(12)
其中,lossPF為圖像或文本的特征比較損失,lossPH為圖像或文本的Hash比較損失,B為圖像或文本預(yù)測的Hash碼,Hl=fl(l;θl)則為Hash模型,fl是Hash函數(shù),θl是要學(xué)習(xí)的網(wǎng)絡(luò)參數(shù),l是預(yù)測的標簽值,L是本身所屬的標簽,預(yù)測Hash碼和標簽的損失依然采用平方損失函數(shù),lossD為對抗損失,α,γ,β,η,δ均為超參數(shù).
4.2.3 優(yōu)化器
模型訓(xùn)練是一個不斷優(yōu)化最小化目標函數(shù)J(θ)的過程,實現(xiàn)該過程的算法即可稱為優(yōu)化器.優(yōu)化器的通用表達如下:
(13)
Adam算法綜合考慮了梯度的均值和未中心化的方差這2項來不斷修正迭代更新的步長,從而達到一個自適應(yīng)調(diào)整的效果.Adam算法優(yōu)化過程如下:
(14)
4.2.4 網(wǎng)絡(luò)參數(shù)配置
HCMGM中包含了4個網(wǎng)絡(luò)的設(shè)計:ImgNet,TxtNet,LabNet和對抗網(wǎng)絡(luò)DcrNet.下面我們將分別詳細描述這4個網(wǎng)絡(luò)的設(shè)計情況.
1) ImgNet
首先我們對圖像文件提取語義特征.目前針對圖像特征的提取,大多采用CNN網(wǎng)絡(luò)架構(gòu).考慮特征提取的準確性和網(wǎng)絡(luò)架構(gòu)的復(fù)雜程度,本文選擇VGG-19作為ImgNet主干.VGG-19包含19個隱藏層,包括16個卷積層和3個全連接層,每個卷積層使用3×3卷積核,步長為1,最大池化層核尺寸為2×2,步長為2.為了將VGG-19應(yīng)用到Hash模型的圖像特征提取網(wǎng)絡(luò)中,我們改進VGG-19結(jié)構(gòu),保留卷積層并將全連接層由4 096維降到512維,輸出層為N維.改進后的VGG-19的網(wǎng)絡(luò)結(jié)構(gòu)如圖4所示,conv表示卷積層,maxpool表示最大池化層,fc表示全連接層,depth表示深度.
Fig. 4 Themodified VGG-19 network structure圖4 更改后的VGG-19的網(wǎng)絡(luò)結(jié)構(gòu)圖
2) TxtNet
針對文本特征提取,我們使用了一種多尺度融合模型(MS),該模型由5個平均池化層和1個1×1的卷積層組成,首先用多個平均池化層提取文本數(shù)據(jù)的多個比例特征,然后使用1×1卷積層融合多個特征,從而捕獲不同文本之間的相關(guān)性.其中,5個平均池化層的卷積核大小分別是1×1,2×2,3×3,5×5,10×10.
本文使用3層前饋神經(jīng)網(wǎng)絡(luò)和多尺度融合模型構(gòu)建TxtNet.輸入文本經(jīng)過模型,獲得1個4 096維的向量,然后經(jīng)過2個全連接層,將特征維度降到512維,再到N維.如圖5所示:
Fig. 5 The TxtNet network structure圖5 TxtNet的網(wǎng)絡(luò)結(jié)構(gòu)圖
3) 自監(jiān)督語義標簽網(wǎng)絡(luò)
本文使用4層前饋神經(jīng)網(wǎng)絡(luò)構(gòu)建LabNet,該網(wǎng)絡(luò)以標簽為輸入使用2個全連接層進行映射,按照L→4 096維→512維→N維進行提取.
4) 對抗網(wǎng)絡(luò)
對抗網(wǎng)絡(luò)模型使用2個鑒別器分別監(jiān)督圖像和文本的特征獲得.單個鑒別器使用3層前饋神經(jīng)網(wǎng)絡(luò)構(gòu)建,經(jīng)過2次4 096維轉(zhuǎn)換,得到0或1的結(jié)果.4個網(wǎng)絡(luò)設(shè)計中,圖像特征提取網(wǎng)絡(luò)ImgNet、文本特征提取網(wǎng)絡(luò)TxtNet、自監(jiān)督語義標簽網(wǎng)絡(luò)LabNet都將輸出層的維度降到N維.N由Hash碼的長度和跨模態(tài)數(shù)據(jù)集的總類別標簽個數(shù)決定.假設(shè)Hash碼的長度選取為32 b,跨模態(tài)數(shù)據(jù)集總類別標簽個數(shù)為81,那么N=32+81=113.之后,結(jié)合損失函數(shù)和優(yōu)化器的設(shè)計,利用標簽進行自監(jiān)督訓(xùn)練,通過隨機梯度下降(stochastic gradient descent, SGD)和反向傳播(back propagation, BP)[21]算法學(xué)習(xí)模型參數(shù).
4.2.5 HCMGM訓(xùn)練流程
按照SSAH模型設(shè)計,分別構(gòu)建標簽網(wǎng)絡(luò)LNet,圖像網(wǎng)絡(luò)INet,文本網(wǎng)絡(luò)TNet和2個鑒別器網(wǎng)絡(luò)DNet.模型分別獨立地結(jié)合標簽網(wǎng)絡(luò)LNet訓(xùn)練圖像網(wǎng)絡(luò)INet和文本網(wǎng)絡(luò)TNet,在訓(xùn)練的過程中計算對抗損失、成對比較損失等,從而使標簽網(wǎng)絡(luò)、圖像網(wǎng)絡(luò)和文本網(wǎng)絡(luò)的參數(shù)逐漸收斂.流程如算法1所示.
算法1.訓(xùn)練HCMGM.
輸入:圖像文本跨模態(tài)數(shù)據(jù)的訓(xùn)練集trainSet,批處理大小BatchSize,訓(xùn)練輪數(shù)epoch;
輸出:訓(xùn)練好的HCMGM模型及參數(shù),LNet,INet,TNet,2個DNet.
① 初始化LNet,INet,TNet,DNet;
②L,I,T←splitData(trainSet,BatchSize);
③ for (i=0;i ④optimizer←tf.train.AdamOptimizer(lr); ⑤lossD←(lossAdverIL+lossAdverTL+lossAdverL1+lossAdverL2)4.0; ⑥lossPairHash←mse_loss(multiply(S,θL2),lg(1.0+eθL2)); ⑦lossL=α×lossPairFeaL+γ× lossPairHshL+β×lossQuantL+ η×lossLabelL; ⑧l(xiāng)ossI=α×lossPairFeaI+γ× lossPairHshI+β×lossQuantI+ η×lossLabelI+δ×lossDI; ⑨lossT=α×lossPairFeaT+γ× lossPairHshT+β×lossQuantT+ η×lossLabelT+δ×lossDT; ⑩ end for 其中,BatchSize=128,學(xué)習(xí)率lr=10-6,各層使用ReLU統(tǒng)一激活. 為了確定超參數(shù)α,γ,η,β,本文從語義篩選存儲系統(tǒng)已有的文件中隨機選擇了5 000個數(shù)據(jù)點作為驗證集,令α,γ,η,β從集合{0.000 1,0.001,0.01,0.1,1,2}中取值.經(jīng)過實驗,本文取α=γ=1,η=β=0.000 1時,訓(xùn)練的模型效果最好. 我們在圖6中展示了語義Hash元數(shù)據(jù)的提取過程.HCMGM在經(jīng)過多輪訓(xùn)練后,損失函數(shù)的結(jié)果趨于穩(wěn)定.在模型收斂后,將圖像和文本批量輸入ImgNet和TxtNet,獲取所有數(shù)據(jù)統(tǒng)一空間的跨模態(tài)語義Hash碼. Fig. 6 The workflow of getting Hash code metadata of image and text files圖6 圖像文本文件Hash碼獲取示意圖 Hash碼提取的執(zhí)行流程如算法2所示,首先加載跨模態(tài)圖文數(shù)據(jù)集,將其分為多個處理批次,然后加載已經(jīng)訓(xùn)練好的HCMGM及參數(shù),圖像和文本文件分別按序進入模型相對應(yīng)的特征提取網(wǎng)絡(luò)提取特征向量.二值化特征向量得到Hash碼.最后將Hash碼存入語義Hash碼文件中.這里批處理大小BatchSize可以根據(jù)跨模態(tài)圖文數(shù)據(jù)集的規(guī)模自主設(shè)定.這里生成的Hash碼便可以作為文件的語義元數(shù)據(jù),與文件占用的空間大小、文件的創(chuàng)建時間、文件的修改時間等元數(shù)據(jù)共同組成文件的元數(shù)據(jù)信息. 算法2.獲取語義Hash碼. 輸入:圖像文本跨模態(tài)數(shù)據(jù)集D,批處理大小BatchSize; 輸出:語義Hash碼文件H. ①H←hashCode.h5; ②BatchData=getData(D,BatchSize); ③model←訓(xùn)練好的HCMGM模型, hashCode←NULL; ④ fordatainBatchDatado ⑤BatchHashCode←model(BatchData). gpu(); ⑥HashCodes.append(BatchHashCode); ⑦ end for ⑧H.create_dataset(“hashcode”,data= hashCode).*將獲得的Hash碼寫入語義Hash碼文件H* SHG是用戶完成在線篩選的基礎(chǔ).在相似內(nèi)容的文件邏輯位置越近,語義查找效率越高的原則下,我們構(gòu)建具有廣泛連接的圖譜結(jié)構(gòu),并利用深度遍歷算法輕松實現(xiàn)相似數(shù)據(jù)的快速訪問.考慮2個內(nèi)容相似的圖像或文本具有相似的Hash碼,根據(jù)漢明距離組織Hash碼,再建立Hash碼與存儲路徑之間的映射,便能夠迅速地實現(xiàn)內(nèi)容篩選后的文件讀取功能. 基于此,SHG設(shè)計如圖7所示.我們計算圖像和文本對應(yīng)的語義Hash碼間的漢明距離并存入基于閾值形成關(guān)系的CSV文件.另外,由語義Hash碼和相應(yīng)的存儲路徑生成節(jié)點的CSV文件.基于這2個文件,Neo4j完成節(jié)點上Hash碼與文件信息存儲.在此過程中,我們減少圖譜中的節(jié)點連接和在線篩選的通信開銷,詳細內(nèi)容如下. Fig. 7 The workflow of the construction of SHG圖7 SHG構(gòu)建示意圖 4.4.1 構(gòu)圖閾值選擇 我們規(guī)定:SHG中節(jié)點ID為跨模態(tài)語義Hash碼;2個節(jié)點之間存在邊則表明這2個節(jié)點所對應(yīng)的Hash碼之間存在語義相關(guān)性;邊上的權(quán)值則表示2個Hash碼之間的漢明距離. 對于存儲系統(tǒng)中的N個文件(文本或圖像),考慮文本和圖像由于內(nèi)容相似可能會共享相同的Hash碼,本文將具有相同Hash碼的節(jié)點合并為1個節(jié)點,假設(shè)圖中的節(jié)點個數(shù)為M,顯然M≤N,同時M也表示了不同Hash碼的數(shù)量.這些Hash碼之間的漢明距離代表鏈接每2個節(jié)點的邊的權(quán)重,顯然,邊是無向的,因為語義相關(guān)性是相互的. 設(shè)Vx表示SHG中G的第x個節(jié)點,H(Vx)表示Vx的Hash碼,對于任意i和j(0 Distij=H(Vi)⊕H(Vj). (15) 對于包含M個節(jié)點的G,在節(jié)點全連接情況下,邊的最大數(shù)量是M×(M-1)2.在G中進行篩選時,時間復(fù)雜度是線性的,假設(shè)S是篩選出的節(jié)點數(shù),E是深度遍歷經(jīng)過的邊數(shù),那么篩選的時間復(fù)雜度可以表示為O(|S|+|E|).顯然,如果邊的條數(shù)太多,會造成在線篩選過程的巨大延遲,同時如此龐大的節(jié)點關(guān)系也會增加存儲開銷.因此,本文設(shè)置閾值T來限制邊數(shù).Ti的選擇基于2個原則:1)最小漢明距離必須保證G中沒有孤立節(jié)點從而保證篩選半徑內(nèi)的有效查詢,即存在召回結(jié)果;2)在相同精度的條件下要達到最佳性能. 在大量實驗對比下,我們發(fā)現(xiàn)HCMGM在漢明半徑小于等于2時的檢索精度最高.這意味著在以邊上權(quán)值小于等于2為原則構(gòu)建的圖上進行搜索能夠獲得最準確的結(jié)果,既保證了準確性也提高了構(gòu)圖與查詢效率.令Tx表示第x個節(jié)點的漢明距離閾值.對于?i∈(0,M],Ti可以按照如下方式選擇: (16) 對于G中的節(jié)點,只有2個節(jié)點之間的漢明距離小于閾值的時候才連接并賦予連接邊權(quán)重,從而減少圖中的邊數(shù). 圖8(a)展示了不同條件下的連邊選擇,節(jié)點A,B,C是G中已經(jīng)存在的節(jié)點,節(jié)點D表示新上傳的節(jié)點,計算節(jié)點D與節(jié)點A,B,C的漢明距離分別為3,4,4,最短的漢明距離大于2,所以本文將節(jié)點D的閾值取為3,節(jié)點D只與節(jié)點A相連,這是閾值選擇的第1種情況.如圖8(b)所示,節(jié)點A,B,C,E,F(xiàn)是SHG中已經(jīng)構(gòu)圖完成的節(jié)點,節(jié)點D表示新上傳的節(jié)點,分別計算節(jié)點D與節(jié)點A,B,C,E,F(xiàn)的漢明距離,結(jié)果是3,4,4,1,2,最短的漢明距離為1,所以本文將節(jié)點D的閾值取為2,連接權(quán)重小于等于2的節(jié)點,故節(jié)點D分別與節(jié)點E,F(xiàn)相連,這是閾值選擇的第2種情況. Fig. 8 Threshold T of graph construction圖8 構(gòu)圖閾值T選擇示意圖 4.4.2 圖譜與存儲系統(tǒng)通信優(yōu)化 SwiftGraph[22]用于實現(xiàn)兩端分離鏈接的Hash表來連接SHG和FSS,其中Hash表的鍵是文件的Hash碼值,鍵值所對應(yīng)的鏈表結(jié)構(gòu)是Hash碼作為語義元數(shù)據(jù)的文件標識,使用絕對路徑表示.在語義查詢過程中,第1步先將查詢文件的Hash碼發(fā)送到SHG中,通過深度遍歷,返回符合查詢條件的節(jié)點;第2步再將Hash碼發(fā)送給兩端分離的Hash表,得到符合查詢條件的文件絕對路徑;第3步通過存儲系統(tǒng)返回查詢結(jié)果.整個過程中,SHG、兩端分離的Hash表和FSS之間必須建立通信.為了減少開銷,本文提出將Hash表作為批量構(gòu)圖的輔助結(jié)構(gòu),利用Neo4j的屬性將文件絕對路徑直接存儲在SHG中.在在線篩選階段,SHG直接與FSS建立連接,返回相關(guān)文件,提高篩選效率.SHG與FSS之間的通信連接如圖9所示: Fig. 9 The communication between SHG and FSS圖9 SHG與FSS之間的通信連接 4.4.3 SHG構(gòu)建執(zhí)行流程 Neo4j支持批量導(dǎo)入數(shù)據(jù),這里本文選擇官方最快的neo4j-admin import,它只接受CSV文件導(dǎo)入,所以本文需要將構(gòu)圖的節(jié)點和節(jié)點關(guān)系分別存在2個CSV文件中.主要有以下4步: 1) 首先初始化節(jié)點文件N和關(guān)系文件R,然后根據(jù)Hash鏈表HL建立Hash碼H和對應(yīng)文件存儲路徑P的映射關(guān)系; 2) 將所有Hash碼依次取出,并分別和對應(yīng)的文件名建立聯(lián)系; 3) 將每個Hash碼節(jié)點依次與其他節(jié)點比較距離,根據(jù)閾值T建立節(jié)點關(guān)系,寫入關(guān)系文件R; 4) 將Hash表HL中的該節(jié)點對應(yīng)的所有存儲路徑寫入文件路徑,存入Hash碼節(jié)點文件N. 得到這2個文件后,本文就可以利用Neo4j批量導(dǎo)入節(jié)點和關(guān)系構(gòu)建Hash圖譜,因neo4j-admin import的使用有3個前提條件:1)清空圖數(shù)據(jù)庫;2)關(guān)停Neo4j服務(wù);3)節(jié)點ID唯一.構(gòu)建過程如算法3所示: 算法3.批量導(dǎo)入節(jié)點和關(guān)系構(gòu)建Hash圖譜,getHashGraph(N,R). 輸入:Hash碼節(jié)點文件N,節(jié)點關(guān)系文件R; 輸出:SHGG. ①G←停止服務(wù),申請內(nèi)存空間; ②G←輸入節(jié)點N,關(guān)系集合R; ③ 服務(wù)開啟. 為了直觀展示圖譜中的節(jié)點和關(guān)系,圖10展示了通過瀏覽器查看的Neo4j信息.本文在瀏覽器中輸入http:localhost:7474后的可視化界面.其中,每個節(jié)點有2個屬性,hashCode是節(jié)點的唯一屬性,filename則表示此Hash碼對應(yīng)的文件存儲路徑,當(dāng)有多個文件時,路徑之間用“;”間隔. Fig. 10 An example of a node property in Neo4j圖10 節(jié)點屬性示例 在線篩選時,用戶提交篩選請求(包含篩選目標文件和篩選半徑).HCMGM映射文件為相似性Hash碼,Hash碼在圖譜中依據(jù)深度優(yōu)先算法遍歷圖結(jié)構(gòu),以篩選半徑確定內(nèi)容相似的節(jié)點,并獲取節(jié)點上文件存儲的絕對路徑,從而獲取內(nèi)容相關(guān)文件返回給用戶.內(nèi)容篩選流程如圖11所示: Fig. 11 The workflow of content siftingprocess圖11 內(nèi)容篩選流程示意圖 SHG構(gòu)建流程的完成,表示離線處理結(jié)束.之后,用戶將篩選目標(圖像或文本)文件上傳至SHG中提供的篩選接口,完成篩選讀取.在此過程中,用戶需要提供篩選半徑,此參數(shù)需要預(yù)先配置,可修改. 文件上傳后首先通過訓(xùn)練好的HCMGM獲得Hash碼,然后通過Neo4j內(nèi)置的CQL檢索圖譜中邏輯相連的節(jié)點,通過深度遍歷接口,下沉搜索到有關(guān)聯(lián)關(guān)系的任意深度,進而篩選出用戶可能需要的文件返回給用戶.相似內(nèi)容篩選執(zhí)行流程如算法4所示: 算法4.內(nèi)容篩選. 輸入:SHGG,篩選所依據(jù)的圖像或文本文件Fsifting,篩選半徑R; 輸出:符合條件的文件F1,F(xiàn)2,…,F(xiàn)n. ①N←NULL,P←NULL;*列表N存儲所有符合篩選條件的Hash節(jié)點,列表P存儲所有符合篩選條件的文件路徑* ②model←HCMGM;*這里的HCMGM是離線階段訓(xùn)練好的模型* ③hashCodemodel(Fsifting).gpu();*生成篩選所依據(jù)的圖像或文本文件Fsifting的Hash碼* ④N←matchnode:hashCoder:relationships wherer.Dist ⑤P←N.filename; ⑥P1,P2,…,Pn←P.split(“;”); ⑦F1,F(xiàn)2,…,F(xiàn)n←open((P1,P2,…,Pn),‘r’). 系統(tǒng)的測試環(huán)境由2臺服務(wù)器搭載而成,Open-Stack Swift作為對象存儲系統(tǒng)部署在2臺服務(wù)器上,從而實現(xiàn)分布式地管理圖像和文本的源文件,語義元數(shù)據(jù)管理系統(tǒng)只部署在1臺服務(wù)器上,從而實現(xiàn)更迅速的語義查詢操作.2臺服務(wù)器的配置分別如表1和表2所示: Table 1 Metadata Management Server Configuration表1 元數(shù)據(jù)管理服務(wù)器配置 Table 2 Configuration for Object Storage System Deployment 系統(tǒng)基于Python開發(fā),Hash算法部分通過深度學(xué)習(xí)框架TensorFlow完成.元數(shù)據(jù)圖譜由Neo4j管理.Swift的版本2.16.1,Neo4j版本3.3.3,Python版本3.6.5,TensorFlow版本1.4.0. 圖像-文本檢索測試中使用跨模態(tài)數(shù)據(jù)集完成,包括使用MIRFlickr-25k和NUS-WIDE進行語義篩選準確率測試,使用MS-COCO進行語義篩選的性能測試和SHG的構(gòu)建測試. 1) MIRFlickr-25K數(shù)據(jù)集[23].包含從Flickr網(wǎng)站收集的25 000張圖像以及相關(guān)的文本描述.這些文字描述來自用戶上傳圖像時添加的注釋.這些圖像及其對應(yīng)的多個標簽組成多個圖像-文本對,本文實驗挑選具有至少20個文本標簽的數(shù)據(jù)對進行實驗,據(jù)此,總共選擇了20 015個數(shù)據(jù)點,并且在24個類別標簽中,每個數(shù)據(jù)點都至少使用一個手動注釋的標簽.每個數(shù)據(jù)點的文本特征用1 386維詞袋(BoW)向量表示,圖像特征由512維GIST特征向量表示.本文隨機采樣2 000個數(shù)據(jù)點作為測試集進行查詢操作,其余數(shù)據(jù)點作為檢索集存儲在Swift存儲系統(tǒng)中,此外,本文在檢索集中采樣了10 000個數(shù)據(jù)點作為訓(xùn)練集完成測試. 2) NUS-WIDE數(shù)據(jù)集[24].包含269 648個Web圖像和相關(guān)的文本標簽.總共81種類別,剔除沒有標簽信息的數(shù)據(jù)后,本文選擇了最常見的21類中的195 834個圖像-文本對作為本文的數(shù)據(jù)集.每個數(shù)據(jù)點的文本特征表示為1 000維的詞袋向量,而圖像特征則表示為500維視覺袋向量.這里,本文隨機采樣2 000個數(shù)據(jù)點作為測試集,其余數(shù)據(jù)點作為檢索集,并在檢索集中采樣了10 000個數(shù)據(jù)點作為訓(xùn)練集. 3) MS-COCO數(shù)據(jù)集[25].包含約118 287個訓(xùn)練圖像,40 504個驗證圖像和40 775個測試圖像的跨模態(tài)數(shù)據(jù)集.每個圖像有80個類別中的一些標簽信息,本文從驗證集中隨機選取了5 000張圖像與其對應(yīng)的標簽構(gòu)成了檢索集,檢索集中的每個數(shù)據(jù)項都由2種模態(tài)的圖像-文本數(shù)據(jù)對構(gòu)成,從而用于語義內(nèi)容篩選的性能測試. 5.2.1 基準方法與評價指標 1) 基準方法 為了評估本文中HCMGM的檢索效果,本文選取了目前已知的幾種跨模態(tài)Hash算法與之進行比較,主要的基準方法如表3所示.為了和其他方法有一個比較公平的比較,我們使用ImageNet數(shù)據(jù)集[26]來訓(xùn)練ImgNet網(wǎng)絡(luò)中VGG-19模型的參數(shù). 2) 評價指標 為了評價檢索結(jié)果的準確性,本文選擇檢索領(lǐng)域常用的評估標準PR(precision and recall)曲線[27].本文先引入查準率和召回率的概念.假設(shè)TP表示查詢到的結(jié)果確實是內(nèi)容相關(guān)的文件數(shù),F(xiàn)P表示查詢到的結(jié)果是內(nèi)容無關(guān)的文件數(shù),F(xiàn)N表示未檢索到內(nèi)容相關(guān)的文件數(shù),TN表示未檢索到內(nèi)容無關(guān)的文件數(shù).查準率和召回率的計算公式如下: (17) Table 3 The Main Benchmark Methods with Brief Introduction 查準率表示查詢到的內(nèi)容相關(guān)的文件數(shù)占所有查詢結(jié)果的比例,召回率表示查詢到的內(nèi)容相關(guān)的文件數(shù)占所有內(nèi)容相關(guān)文件的比例.PR曲線表示以召回率為橫軸,查準率為縱軸,綜合描述檢測結(jié)果的準確性.因為PR曲線的2個指標都聚焦于TP,所以PR曲線和2個坐標軸之間的圍成區(qū)域的面積可以綜合地反映模型效果,面積越大,表示模型越好,反之亦然. 5.2.2 實驗結(jié)果及分析 為比較跨模態(tài)檢索效果,所有跨模態(tài)數(shù)據(jù)集需要進行圖像檢索文本和由文本檢索圖像2組檢索實驗.實驗設(shè)置隨機采樣2 000個數(shù)據(jù)點作為測試集來進行查詢操作,其余數(shù)據(jù)點作為檢索集,根據(jù)返回同類圖像(文本)的比例計算該查詢的檢索精度.本文分別在MIRFlickr-25K和NUS-WIDE數(shù)據(jù)集下進行實驗,比較HCMGM與7種基準方法的PR曲線. 圖12為MIRFlickr-25K數(shù)據(jù)集上8種算法在Hash碼長度為32 b時的PR曲線.圖12(a)表示以圖像檢索文本,圖12(b)表示以文本檢索圖像.從對比結(jié)果可以看出,在相同召回率下,本文的算法比其他算法具有更高的準確率,同時在相同準確率的情況下,本文的算法能夠召回更多內(nèi)容相關(guān)的樣本.通過PR曲線與2個坐標軸之間的面積比對,說明本文算法的性能優(yōu)于其他基準方法,具備更好的內(nèi)容檢索優(yōu)勢.另外,對比圖12(a)和圖12(b)可以看出,圖像檢索文本性能略優(yōu)于文本檢索圖像性能. Fig. 12 The PR curve on MIRFlickr-25K at 32 b圖12 數(shù)據(jù)集MIRFlickr-25K上32位Hash碼下的準確率-召回率曲線 Fig. 13 The PR curve on NUS-WIDE at 32 b圖13 數(shù)據(jù)集NUS-WIDE上32位Hash碼下的準確率-召回率曲線 同理,如圖13(a)和圖13(b),NUS-WIDE數(shù)據(jù)集上32 b Hash碼PR性能所示,具有和MIRFlickr-25K上相同的結(jié)論.從PR曲線與2個坐標軸之間的面積也可以看出,NUS-WIDE數(shù)據(jù)集的面積明顯小于MIRFlickr-25K數(shù)據(jù)集,說明數(shù)據(jù)集中類別數(shù)量的增加會導(dǎo)致算法準確率的下降. 值得注意的是,本文的算法是在有監(jiān)督的條件下訓(xùn)練的,顯然相較于無監(jiān)督的算法準確率要高出很多,因為基準不同,本文沒有列出比較,但是在現(xiàn)實應(yīng)用中,標簽的得到具有較高的成本,因此后續(xù)研究應(yīng)建立在無監(jiān)督的Hash算法之上. 5.3.1 篩選半徑R的性能測試 R表示語義SHG中的篩選半徑,在CITCSS中,召回率會受到篩選半徑R的影響.篩選半徑越大,召回率越高.但是隨著R的增大,篩選時間也會增加.因此需要找到平衡點下的R,使跨模態(tài)圖文數(shù)據(jù)內(nèi)容篩選存儲系統(tǒng)在滿足一定召回率的同時,具有令用戶滿意的篩選時間,使系統(tǒng)具備較高的性能. 實驗選用公開的跨模態(tài)數(shù)據(jù)集MS-COCO,篩選半徑R從1~10逐漸增加,每次使用10個不同的圖像和10個不同的文本作為篩選條件獨立地測試不同R下的性能,以10次測試的平均值作為結(jié)果進行展示.實驗展示以篩選半徑R為橫坐標,分別以召回率和篩選時間為縱坐標,測試當(dāng)改變R時對召回率和篩選時間的影響. Fig. 14 The relationship of recall rate, sifting time and sifting radius on MS-COCO圖14 數(shù)據(jù)集MS-COCO下的召回率、篩選時間與篩選半徑R的關(guān)系 實驗結(jié)果如圖14所示,召回率和篩選時間都隨著篩選半徑R的增大而增加,由圖14(a)可以看出,在MS-COCO數(shù)據(jù)集中,篩選半徑R=6時,召回率就已經(jīng)高達98.56%,隨后隨著篩選半徑的增加,召回率的增長小于0.01個百分點,可以視為無明顯漲幅,但是在圖14(b)中,在篩選半徑R>6時,篩選時間迅速攀升,在篩選半徑R>8時,篩選時間大于10 s,實際中會給用戶造成不佳的體驗. 5.3.2 與傳統(tǒng)存儲系統(tǒng)對比測試 為了從數(shù)據(jù)層面直觀量化CITCSS的性能優(yōu)勢,實驗對比了CITCSS與傳統(tǒng)存儲系統(tǒng)在用戶提交相同文件后以內(nèi)容語義相似篩選圖文文件進行讀取所需要時間.由于篩選半徑R的限制,CITCSS可能不能篩選出所有相關(guān)的圖文文件,但可以保證召回率在98%以上.我們認為這一結(jié)果接近篩選出所有的圖像和文本文件.注意,實驗中用于實驗的跨模態(tài)數(shù)據(jù)集中的所有數(shù)據(jù)已經(jīng)提前存儲在需要對比的系統(tǒng)中,CITCSS中已經(jīng)批量構(gòu)建好所有數(shù)據(jù)的SHG. 本節(jié)實驗依然選擇MS-COCO數(shù)據(jù)集,根據(jù)5.3.1節(jié)的結(jié)論,在MS-COCO數(shù)據(jù)集上,當(dāng)篩選半徑選R=6時,CITCSS在此數(shù)據(jù)集上可以達到最好的性能,因此實驗選取篩選半徑R=6進行實驗.為了體現(xiàn)實驗的可靠性,實驗每次使用10張不同的圖像和10個不同的文本文件作為篩選條件,獲取從客戶端請求到數(shù)據(jù)下載的總讀取時間,以20次篩選的平均值作為實際結(jié)果.為了獲得可視化差距明顯的效果,我們重復(fù)執(zhí)行100 000次上述操作后,給出積累下的時間比對. 實驗結(jié)果如表4所示.我們選取MS-COCO數(shù)據(jù)集上人、車、天空3個類別作為篩選目標.從結(jié)果看,對于沒有語義元數(shù)據(jù)的存儲系統(tǒng)Spyglass和SmartStore,無論用戶篩選任何類別的數(shù)據(jù),都需要讀取所有數(shù)據(jù)再進行篩選.表4僅僅記錄了這2個存儲系統(tǒng)的讀取時間.出于公平考慮,本文假設(shè)一個正常的成年人閱讀一個文件并判斷其內(nèi)容是否滿足需要的平均時間是0.01 s,MS-COCO數(shù)據(jù)集約有100 000個數(shù)據(jù),故篩選時間約為1 000 s.與此同時,CITCSS僅需7~8 s完成篩選和讀取工作.由表4可知,當(dāng)篩選類別為人的數(shù)據(jù)時,CITCSS的篩選時間分別比Spyglass系統(tǒng)和SmartStore系統(tǒng)降低99.07%和99.74%;篩選類別為天空時,分別降低99.11%和99.75%;篩選類別為車時,分別降低99.19%和99.77%.綜上,CITCSS在召回率超過98%的前提下將讀取延遲降低99.07%~99.77%,證明CITCSS在讀操作上具有優(yōu)越性. Table 4 Comparison of Sifting Time with Different Systems on MS-COCO 以上實驗結(jié)果可表明,CITCSS在保證召回率的前提下,篩選出了和需求相關(guān)度高的數(shù)據(jù),從而保證對分析數(shù)據(jù)讀取的可靠性與準確性.同時,因為篩選機制的引入,相比傳統(tǒng)系統(tǒng)只讀出了相關(guān)數(shù)據(jù),進而減少了讀取時間. 由于相比傳統(tǒng)存儲系統(tǒng)增加了SHG,在構(gòu)圖的過程中不可避免地造成多余的時間開銷和存儲開銷,我們對這部分開銷進行了實驗驗證.時間開銷主要來自于圖像和文本文件的語義Hash碼生成、Hash碼間的漢明距離計算,以及利用Neo4j導(dǎo)入節(jié)點和關(guān)系的總時間.存儲開銷表現(xiàn)為Neo4j構(gòu)圖完成后生成的graph.db文件所占用的空間.因為構(gòu)圖過程中生成的節(jié)點文件nodes.csv和關(guān)系的文件relationships.csv作為輔助文件在構(gòu)圖完成后會即可刪除,因此本部分實驗中只統(tǒng)計最終生成的圖譜文件大小下的時間開銷和存儲開銷. 5.4.1 構(gòu)圖時間開銷 本小節(jié)在表5中展示了3個跨模態(tài)數(shù)據(jù)集MIRFlickr-25K,NUS-WIDE,MS-COCO上各自構(gòu)建SHG的時間開銷. Table 5 Time Overhead of SHG Construction表5 SHG構(gòu)建時間開銷 s 綜合3個數(shù)據(jù)集來看,每批次平均構(gòu)圖時間達到11 h 45 min 3 s,由于整個過程是離線完成的,因此不會影響用戶體驗.相較于用戶在線篩選過程中獲得的效率,我們認為離線工作耗費的時間是值得的.針對系統(tǒng)中已存儲的文件,批量構(gòu)圖的過程只發(fā)生一次,對于動態(tài)上傳的單個文件,無需重復(fù)構(gòu)圖,而采用在原有圖譜中插入節(jié)點關(guān)系的操作即可.而單個文件生成Hash碼并插入SHG所需要的平均時間僅為0.32 s,我們認為這是可以接受的. 5.4.2 構(gòu)圖存儲開銷 本節(jié)在3個跨模態(tài)數(shù)據(jù)集MIRFlickr-25K,NUS-WIDE,MS-COCO上各自構(gòu)建SHG,測試所占用的存儲空間,性能如表6所示: Table 6 The Storage Space Overhead of SHG Construction表6 SHG構(gòu)建存儲開銷 MB 從表6中可以看出,針對MIRFlickr-25K,NUS-WIDE,MS-COCO,構(gòu)建圖譜增加的存儲空間在900 KB~11 MB之間,相比包含圖像和文本的數(shù)據(jù)集本身GB甚至TB的數(shù)量級,可以忽略不計.在最高MB級的存儲空間開銷下,圖譜在語義篩選階段產(chǎn)生的效率卻能夠降低讀取帶寬百倍以上.我們認為這樣的性價比是值得推崇的. 為進一步了解引入篩選機制后系統(tǒng)面對壓力的性能,我們以騰訊QQ相冊的圖像(平均大小為65.8 KB)為輸入,測試了存入100萬張圖像后圖譜的在線查詢時間和文件系統(tǒng)的讀寫性能.數(shù)據(jù)顯示,圖譜以批量策略存入后,每條數(shù)據(jù)的平均查詢(根據(jù)Hash碼查詢節(jié)點)時間為521.337 283 ms.以Swift為基礎(chǔ)的文件系統(tǒng)讀帶寬為8.09 KBps,寫帶寬為7.58 KBps.這些性能不會對用戶的在線行為造成困擾. 基于以上實驗,我們認為CITCSS在不影響原有存儲性能的前提下,提升了傳統(tǒng)存儲系統(tǒng)對于應(yīng)用分析的支持,通過引入自監(jiān)督對抗的跨模態(tài)Hash算法,并使用圖譜結(jié)構(gòu)管理內(nèi)容語義Hash元數(shù)據(jù),使用篩選機制減輕了大規(guī)??缒B(tài)圖文數(shù)據(jù)分析時從磁盤讀取所有數(shù)據(jù)造成的延遲. 本文針對服務(wù)于分析需求的云端存儲系統(tǒng),提出了一種跨模態(tài)內(nèi)容篩選存儲的機制.包括基于Hash元數(shù)據(jù)生成算法模型獲取圖像文本統(tǒng)一語義表征的Hash碼,利用Neo4j圖結(jié)構(gòu)構(gòu)建SHG和在對象存儲系統(tǒng)Swift中在線篩選相似內(nèi)容文件. 本文優(yōu)化了SHG和FSS之間的通信開銷.通過修改Neo4j節(jié)點屬性,將Hash碼與文件存儲路徑之間的映射關(guān)系融入Neo4j的節(jié)點中,以Hash碼為鍵,屬性附帶文件存儲路徑的方式對節(jié)點進行改進,進一步減少讀取過程中的時間開銷. 在跨模態(tài)數(shù)據(jù)集測試中,我們通過圖像和文本相互檢索的準確率評估我們的算法與現(xiàn)有算法的優(yōu)勢,證明了我們嵌入存儲系統(tǒng)中的HCMGM的可靠性與穩(wěn)定性.通過模擬語義內(nèi)容篩選過程,觀察改變篩選半徑和與傳統(tǒng)存儲系統(tǒng)性能比較,證明我們設(shè)計的存儲機制在面對分析需求時不僅具備壓倒性的讀延遲優(yōu)勢,并且不會帶來嚴重的數(shù)據(jù)丟失.與此同時,我們設(shè)計的機制具有可以被接受的時間開銷和存儲開銷.實驗表明,與傳統(tǒng)的語義存儲系統(tǒng)相比,CITCSS在召回率超過98%的性能下,讀取延遲相對降低了99.07%~99.77%.4.3 語義Hash元數(shù)據(jù)提取
4.4 SHG構(gòu)建
4.5 內(nèi)容篩選流程
5 性能測試與結(jié)果分析
5.1 測試環(huán)境與數(shù)據(jù)集
5.2 語義內(nèi)容篩選的準確率測試
5.3 語義內(nèi)容篩選的性能測試
5.4 SHG構(gòu)建及壓力測試
5.5 圖數(shù)據(jù)庫及文件系統(tǒng)壓力測試
6 總 結(jié)