熊立波
(新華通訊社技術(shù)局,北京 100083)
新興媒體時(shí)代將成為受眾與用戶“按需消費(fèi)”的時(shí)代,只要用戶提需求,媒體就應(yīng)想盡辦法回應(yīng)和滿足。[1]新華全媒新聞服務(wù)平臺(tái)作為新華社供稿平臺(tái)為全球新聞機(jī)構(gòu)提供新華社全媒體內(nèi)容供稿服務(wù)。
不少圖片用戶是在互聯(lián)網(wǎng)上看到圖片后再?gòu)男氯A全媒體平臺(tái)搜索并下載授權(quán)的高清圖片,但往往由于文字又不能準(zhǔn)確表述而無(wú)法快速搜索到所需的圖片,用戶對(duì)用圖片直接搜索圖片的需求很大。如何為用戶提供方便準(zhǔn)確的圖片搜索服務(wù)是一個(gè)需要不斷研究的課題。
“新華全媒”新聞服務(wù)平臺(tái)項(xiàng)目是新華社供稿線路優(yōu)化調(diào)整的重要工程,基于云計(jì)算、互聯(lián)網(wǎng)統(tǒng)一技術(shù)架構(gòu),重構(gòu)新華社轉(zhuǎn)型發(fā)展時(shí)期供稿技術(shù)體系,建成了包括所有新華社文字、圖片、圖表、視頻、新媒體、多媒體、歷史資料和第三方產(chǎn)品的全媒體供稿平臺(tái),著力提升新興媒體供稿能力,整合傳統(tǒng)供稿線路資源,提升用戶使用體驗(yàn),滿足用戶需求。
以圖搜圖,是通過(guò)搜索圖像文本或者視覺(jué)特征,為用戶提供相關(guān)圖形圖像資料檢索服務(wù)的專業(yè)搜索引擎系統(tǒng)[2],是搜索引擎的一種細(xì)分,目前主要有如下2種實(shí)現(xiàn)方式。
(1)通過(guò)提取的圖片描述信息。使用程序直接提取描述圖片的關(guān)鍵字,使用關(guān)鍵字來(lái)進(jìn)行檢索。
(2)通過(guò)識(shí)別輸入的圖片的特征。提取圖片的特征值,使用特征值進(jìn)行相似圖片的檢索。
提取圖片的信息主要有以下3類。
(1)圖片內(nèi)嵌描述信息。提取圖片內(nèi)嵌的EXIF[3]或IPTC[4]等信息進(jìn)行檢索,這是目前圖像搜索引擎采用最多的方法,但是搜索準(zhǔn)確性比較低。
(2)圖片內(nèi)容特征信息。人工對(duì)圖像的內(nèi)容(如物體、背景、顏色特征等)進(jìn)行描述并分類,給出描述詞。檢索時(shí),將主要在這些描述詞中搜索檢索詞。這種查詢方式一般來(lái)講可以獲得較好的查準(zhǔn)率。但需人工直接參與,勞動(dòng)強(qiáng)度比較大,限制了可處理的圖像數(shù)量,而且需要預(yù)先指定規(guī)范和標(biāo)準(zhǔn),搜索的準(zhǔn)確率很大部分取決于人工描述的精確度和一致性。
(3)圖片屬性特征信息。通過(guò)算法自動(dòng)抽取圖像的顏色、形狀、紋理等屬性特征,建立特征索引庫(kù)。優(yōu)點(diǎn)是算法簡(jiǎn)單,可以使用機(jī)器批量處理大量圖片,搜索原圖比較準(zhǔn)確,能較快地應(yīng)用到實(shí)際項(xiàng)目中,但是由于圖片屬性相似的圖片內(nèi)容不一定相似,所以對(duì)“相似”圖片的檢索結(jié)果不理想。
基于圖形內(nèi)嵌描述信息的方法從本質(zhì)還是文字搜索,如果用戶提交的圖片是截圖等經(jīng)過(guò)處理的圖片,本身就沒(méi)有內(nèi)嵌的描述信息,將無(wú)法搜索到結(jié)果。
基于圖像色度、亮度等物理屬性特征比對(duì)圖片的相似度,算法意義上的相似度很高的圖片但是在內(nèi)容上確可能沒(méi)有任何業(yè)務(wù)的“相似性”。
基于圖像內(nèi)容特征描述搜索效果雖然好但是需要依賴大量的人工預(yù)標(biāo)注。新華全媒平臺(tái)有超過(guò)千萬(wàn)張歷史圖片,并且圖片每時(shí)每刻都在新增,如果要對(duì)每張圖片都進(jìn)行人工標(biāo)注是不現(xiàn)實(shí)的。隨著人工智能技術(shù)的不斷進(jìn)步,基于深度學(xué)習(xí)算法可以從數(shù)據(jù)中自動(dòng)挖掘統(tǒng)計(jì)規(guī)律,學(xué)出計(jì)算模型。[5]可以使用人工智能算法學(xué)習(xí)出計(jì)算模型,對(duì)圖片進(jìn)行自動(dòng)分類而代替人工標(biāo)注,達(dá)到更好的圖片搜索準(zhǔn)確度。
為了對(duì)比搜索的準(zhǔn)確性,本文構(gòu)建了基于離散余弦變換(DCT,Discrete Cosine Transform)和基于深度學(xué)習(xí)算法2種搜圖方案進(jìn)行對(duì)比測(cè)試。
對(duì)比物品與物品之間的相似性所應(yīng)用的方法通常為余弦相似性等方法。[6]離散余弦變換(DCT,Discrete Cosine Transform),是一種圖像壓縮算法,使用離散余弦變換來(lái)獲取圖片中的低頻成分[7],它將圖像從像素域變換到頻率域??梢岳眠@一點(diǎn),將圖片進(jìn)行頻域化后再進(jìn)行相似性搜索,實(shí)現(xiàn)基于圖像屬性特征抽取的搜索。
圖1 VGG16學(xué)習(xí)模型[8]
VGG-16 是視覺(jué)幾何組(Visual Geometry Group)開(kāi)發(fā)的卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),該深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)贏得了ILSVR(ImageNet)2014的定位任務(wù)冠軍[9],時(shí)至今日,VGG仍是一個(gè)經(jīng)典和杰出的視覺(jué)模型。該結(jié)構(gòu)有13個(gè)卷積層,3個(gè)全鏈接層,一共有16層。
ImageNet 超過(guò)1400萬(wàn)的圖像被ImageNet手動(dòng)注釋[10],包含2萬(wàn)多個(gè)類別[11],,每個(gè)類別包含數(shù)百?gòu)垐D片。[12]本文使用ImageNet的vggVGG-信息,實(shí)現(xiàn)圖像內(nèi)容特征提取的以圖搜圖。
本文基于Keras[13]深度學(xué)習(xí)框架,使用Python,keras,TensorFlow,F(xiàn)lask構(gòu)建以圖搜圖服務(wù)。
Python中有很多應(yīng)用于科學(xué)計(jì)算、數(shù)據(jù)可視化、機(jī)器學(xué)習(xí)的擴(kuò)展庫(kù),例如NumPy,keras等,涉及的領(lǐng)域包括數(shù)值計(jì)算、符號(hào)計(jì)算、二維圖表、三維數(shù)據(jù)可視化、數(shù)據(jù)分析建模等。
Keras是用Python開(kāi)發(fā)的崇尚極簡(jiǎn)高度模塊化的神經(jīng)網(wǎng)絡(luò)庫(kù),優(yōu)點(diǎn)是可以同時(shí)運(yùn)行在TensorFlow和Theano這2個(gè)主流的深度機(jī)器學(xué)習(xí)庫(kù)上,同時(shí)可以方便的在CPU和GPU之間切換。為以圖搜圖提供調(diào)度深度學(xué)習(xí)算法。
TensorFlow是Google開(kāi)發(fā)的深度機(jī)器學(xué)習(xí)庫(kù),核心代碼是C++編輯,同時(shí)提供Python,Go,Java等接口。為以圖搜圖提供深度學(xué)習(xí)支持。
Flask是Python開(kāi)發(fā)的微服務(wù)框架,依賴Jinja2模板引擎和Werkzeug WSGI服務(wù)。為以圖搜圖提供http的查詢和檢索服務(wù)。
圖2 搜圖算法設(shè)計(jì)
圖片內(nèi)容特征預(yù)提取。圖片通過(guò)使用ImageNet的VGG16預(yù)訓(xùn)練模型,提取圖片的特征向量值并存儲(chǔ)到特征向量數(shù)組中。
用戶上傳圖片的特征提取。接收用戶上傳的圖片,圖片通過(guò)使用ImageNet的VGG16預(yù)訓(xùn)練模型,提取圖片的特征向量值。
特征向量比較搜索。將用戶上傳圖片提取的特征向量和特征數(shù)組中所有圖片的特征向量進(jìn)行逐一比較,返回距離(歐式距離,Euclidean distance[14])最小前N張圖片。
經(jīng)測(cè)試,以圖搜圖服務(wù)部署在單臺(tái)PC服務(wù)器(2c,16GB)對(duì)100萬(wàn)張圖片進(jìn)行并發(fā)搜索,可以提供可靠的以圖搜圖查詢服務(wù),支持20個(gè)并發(fā)用戶訪問(wèn)不報(bào)錯(cuò),200個(gè)并發(fā)用戶訪問(wèn)不down機(jī),并支持分布式部署和線性擴(kuò)展。
4.5.1 搜索對(duì)比測(cè)試
為了測(cè)試搜索結(jié)果的準(zhǔn)確性,本文隨機(jī)從新華全媒平臺(tái)歷史圖片庫(kù)中挑選了3萬(wàn)張歷史新聞圖片,對(duì)2種算法的實(shí)現(xiàn)進(jìn)行搜索測(cè)試。選取了“人物”,“動(dòng)物”,“植物”等不同場(chǎng)景的圖片,并對(duì)測(cè)試圖片進(jìn)行“亮度增強(qiáng)”“灰度”“添加水印”等變形操作,每次提交圖片搜索返回前30張圖片結(jié)果。
圖3 和 圖4分 別 是ImageNet VGG-16和DCT實(shí) 現(xiàn)的以圖搜圖返回的結(jié)果,從搜索結(jié)果可以看出,2個(gè)搜索結(jié)果都能搜索到原圖(左上角第一個(gè)圖片),ImageNetVGG-16方案返回的結(jié)果中,除了原圖,其他的圖片也是和油菜花或者黃色的花有關(guān)的圖片,但是DCT方案返回的其他圖片和原圖基本沒(méi)有業(yè)務(wù)相關(guān)性。
圖3 ImageNet_VGG16返回結(jié)果
圖4 DCT返回結(jié)果
4.5.2 評(píng)分設(shè)計(jì)
“原圖”:搜索到原圖打100分,未搜索到給0分;
“相關(guān)圖”:搜索到的除“原圖”圖片外的其他圖片和被搜索圖片相似度,每一張相似圖片滿分給3.3分。
圖5 兩種搜索算法搜圖原圖準(zhǔn)確性
圖6 兩種搜索算法搜圖相關(guān)圖準(zhǔn)確性
從上圖測(cè)試結(jié)果來(lái)看,基于深度學(xué)習(xí)算法的ImageNet VGG-16在原圖搜索中,除了對(duì)圖片旋轉(zhuǎn)后的由于圖片內(nèi)容識(shí)別上存在誤差,導(dǎo)致沒(méi)有搜索到原圖,其他組都拿到了100分滿分。在相關(guān)圖片推薦測(cè)試中,同樣對(duì)旋轉(zhuǎn)后的圖片識(shí)別率較低,其他組的搜索得分都比較高。
對(duì)基于DCT算法的測(cè)試結(jié)果可以看到,DCT對(duì)原圖的搜索結(jié)果還是讓人滿意的,同樣對(duì)應(yīng)旋轉(zhuǎn)后的圖片無(wú)法搜索到,但是對(duì)相關(guān)圖片搜索效果比較差,說(shuō)明搜索到的圖片除了原圖,其他搜索到的圖片都是與被搜索圖片無(wú)關(guān)的圖片。
從上面的測(cè)試可以得出:基于深度學(xué)習(xí)方案實(shí)現(xiàn)的搜圖方案準(zhǔn)確性要明顯好于基于離散余弦算法實(shí)現(xiàn)的搜圖方案。
5.1.1 用戶上傳圖片
需求點(diǎn):為用戶提供圖片上傳的功能。
設(shè)計(jì):以圖搜圖作為一個(gè)獨(dú)立功能模塊和新華全媒新聞服務(wù)平臺(tái)進(jìn)行集成,用戶在系統(tǒng)中提交需要搜索的圖片,以圖搜圖系統(tǒng)獲取圖片,對(duì)已經(jīng)索引的歷史圖片進(jìn)行搜索和比對(duì),返回搜索到圖片的結(jié)果,并將結(jié)果提交進(jìn)行展示。
5.1.2 返回搜索結(jié)果
需求點(diǎn):通過(guò)列表或網(wǎng)格的方式為用戶展現(xiàn)搜索結(jié)果。
設(shè)計(jì):由于所有稿件都有唯一稿號(hào),以圖搜圖系統(tǒng)將搜索到的稿件以稿號(hào)列表形式返回,新華全媒新聞服務(wù)平臺(tái)對(duì)所有稿件進(jìn)行列表展示。
5.1.3 數(shù)據(jù)庫(kù)及數(shù)據(jù)存儲(chǔ)需求分析和設(shè)計(jì)
需求點(diǎn):可以搜索到6個(gè)月圖片稿件的搜索功能。
設(shè)計(jì):以圖搜圖模塊只需要返回搜索到的稿號(hào),所以僅僅需要存儲(chǔ)每個(gè)圖片的索引結(jié)果,每個(gè)圖片無(wú)論大小,索引文件大小為固定為17K,半年的圖片50萬(wàn)張,額外的所需空間約為9GB。
圖7 搜圖算法設(shè)計(jì)
5.2.1 API服務(wù)層
以圖搜圖對(duì)外提供基于http協(xié)議的微服務(wù)的接口層,主要包括獲取用戶上傳的圖片和返回搜索結(jié)果。
5.2.2 應(yīng)用層
主要包括基于AI機(jī)器學(xué)習(xí)框架,生成圖片索引和進(jìn)行相似圖片搜索,存儲(chǔ)生成的圖片索引。
5.2.3 消息層
為以圖搜圖提供統(tǒng)一消息路由服務(wù)。需要將所有的圖片通過(guò)消息層推送給圖片特征提取服務(wù)。
5.2.4 AI層
為以圖搜圖提供統(tǒng)一的機(jī)器學(xué)習(xí)模型服務(wù)。
5.2.5 存儲(chǔ)層
存儲(chǔ)中間數(shù)據(jù)和索引文件。
圖8 以圖搜圖服務(wù)在新華全媒平臺(tái)上的應(yīng)用
基于深度學(xué)習(xí)模型的以圖搜圖服務(wù)在新華全媒新聞服務(wù)平臺(tái)上線后,為用戶提供了精準(zhǔn)的圖片搜索服務(wù),搜索到的其他圖片相似度也更高,是新華社供稿平臺(tái)首次為用戶提供以圖搜圖服務(wù),受到了用戶的一致好評(píng)。
通過(guò)對(duì)基于離散余弦算法DCT和基于深度學(xué)習(xí)VGG-16模型的以圖搜圖實(shí)現(xiàn)進(jìn)行對(duì)比測(cè)試,得出基于深度學(xué)習(xí)模型的算法更優(yōu)的結(jié)論。通過(guò)創(chuàng)新性應(yīng)用到新華全媒新聞服務(wù)平臺(tái)的搜圖服務(wù)中,為用戶提供了更加精準(zhǔn)的圖片搜索服務(wù),得到了用戶的一致好評(píng)。下一步將繼續(xù)探索研究使用其他深度學(xué)習(xí)模型在以圖搜圖應(yīng)用中的差異,以進(jìn)一步提高圖片搜索的準(zhǔn)確性。