胡二雷, 馮 瑞
?
基于深度學(xué)習(xí)的圖像檢索系統(tǒng)①
胡二雷1, 馮 瑞2
1(復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)技術(shù)學(xué)院, 上海 201203)2(上海市智能信息處理重點(diǎn)實(shí)驗(yàn)室上海視頻技術(shù)與系統(tǒng)工程研究中心, 上海 201203)
基于內(nèi)容的圖像檢索系統(tǒng)關(guān)鍵的技術(shù)是有效圖像特征的獲取和相似度匹配策略. 在過(guò)去, 基于內(nèi)容的圖像檢索系統(tǒng)主要使用低級(jí)的可視化特征, 無(wú)法得到滿意的檢索結(jié)果, 所以盡管在基于內(nèi)容的圖像檢索上花費(fèi)了很大的努力, 但是基于內(nèi)容的圖像檢索依舊是計(jì)算機(jī)視覺(jué)領(lǐng)域中的一個(gè)挑戰(zhàn). 在基于內(nèi)容的圖像檢索系統(tǒng)中, 存在的最大的問(wèn)題是“語(yǔ)義鴻溝”, 即機(jī)器從低級(jí)的可視化特征得到的相似性和人從高級(jí)的語(yǔ)義特征得到的相似性之間的不同. 傳統(tǒng)的基于內(nèi)容的圖像檢索系統(tǒng), 只是在低級(jí)的可視化特征上學(xué)習(xí)圖像的特征, 無(wú)法有效的解決“語(yǔ)義鴻溝”. 近些年, 深度學(xué)習(xí)技術(shù)的快速發(fā)展給我們提供了希望. 深度學(xué)習(xí)源于人工神經(jīng)網(wǎng)絡(luò)的研究, 深度學(xué)習(xí)通過(guò)組合低級(jí)的特征形成更加抽象的高層表示屬性類別或者特征, 以發(fā)現(xiàn)數(shù)據(jù)的分布規(guī)律, 這是其他算法無(wú)法實(shí)現(xiàn)的. 受深度學(xué)習(xí)在計(jì)算機(jī)視覺(jué)、語(yǔ)音識(shí)別、自然語(yǔ)言處理、圖像與視頻分析、多媒體等諸多領(lǐng)域取得巨大成功的啟發(fā), 本文將深度學(xué)習(xí)技術(shù)用于基于內(nèi)容的圖像檢索, 以解決基于內(nèi)容的圖像檢索系統(tǒng)中的“語(yǔ)義鴻溝”問(wèn)題.
基于內(nèi)容的圖像檢索; 深度學(xué)習(xí); 特征提取; 匹配
隨著計(jì)算機(jī)技術(shù)和多媒體技術(shù)的快速發(fā)展, 大量的數(shù)字圖像隨之產(chǎn)生, 在海量的圖像數(shù)據(jù)庫(kù)中如何快速找到特定的圖像就需要使用圖像檢索技術(shù).
傳統(tǒng)的基于內(nèi)容的圖像檢索系統(tǒng)主要使用低級(jí)的視覺(jué)特征, 例如顏色、形狀、紋理等, 使用的分類器大多是淺層分類器如svm, 這些系統(tǒng)存在一個(gè)最大的問(wèn)題是無(wú)法處理語(yǔ)義鴻溝[1]的問(wèn)題(即機(jī)器從低級(jí)的可視化特征得到的相似性和人從高級(jí)的語(yǔ)義特征得到的相似性之間的不同). 所以, 盡管在圖像檢索這個(gè)問(wèn)題上提出了一系列技術(shù), 且取得了一定的成果, 但是由于語(yǔ)義鴻溝[1]的存在, 圖像檢索依舊是一個(gè)具有挑戰(zhàn)性的難題, 從更高層次分析, 基于圖像內(nèi)容的檢索屬于人工智能領(lǐng)域的問(wèn)題, 即有沒(méi)有機(jī)器可以像人一樣識(shí)別圖像的內(nèi)容. 在現(xiàn)階段的所有的技術(shù)中, 機(jī)器學(xué)習(xí)技術(shù)是目前解決語(yǔ)言鴻溝這個(gè)問(wèn)題最有前景的技術(shù).
在機(jī)器學(xué)習(xí)中, 深度學(xué)習(xí)技術(shù)近些年得到了快速的發(fā)展, 是近十年來(lái)人工智能領(lǐng)域取得重要突破的技術(shù). 深度學(xué)習(xí)技術(shù)在計(jì)算機(jī)視覺(jué)、語(yǔ)音識(shí)別、自然語(yǔ)言處理、圖像與視頻分析多媒體等方面取得了巨大的成功.
本文嘗試著將深度學(xué)習(xí)用于圖像檢索, 以判斷深度學(xué)習(xí)技術(shù)能否解決語(yǔ)義鴻溝以及解決的程度. 目前, 國(guó)內(nèi)外使用深度學(xué)習(xí)技術(shù)處理基于內(nèi)容的圖像檢索才剛剛起步, 還處于快速發(fā)展階段.
在圖像檢索系統(tǒng)中, 往往匹配的時(shí)間消耗比較大. 對(duì)于這個(gè)問(wèn)題, 文中, 我們將每幅圖像對(duì)應(yīng)的(實(shí)驗(yàn)中是20維)維特征向量映射到個(gè)數(shù)據(jù)庫(kù)表, 用這種方式來(lái)建立索引, 匹配的時(shí)候根據(jù)用例圖像維中最大值的下標(biāo)index來(lái)確定圖像的類別(softmax分類器得到的維特征向量的每一維代表屬于這個(gè)類別的概率,維相加的結(jié)果為1), 之后從對(duì)應(yīng)的數(shù)據(jù)表tables_中檢索, 從實(shí)驗(yàn)結(jié)果來(lái)看, 利用這種方式可以避免掃描整個(gè)檢索庫(kù), 從而可以成倍的提高檢索的效率. 在圖像檢索系統(tǒng)中, 我們主要解決了下面3個(gè)問(wèn)題:
(1) 如何訓(xùn)練一個(gè)好的模型, 將用例圖像分類到正確的類別;
(2) 如何選擇和建立索引, 即確定每個(gè)圖像的特征向量;
(3) 如何選擇距離匹配算法, 使得相似的圖像之間的距離盡可能的小, 不同圖像之間的距離盡可能的大.
為了解決上面的問(wèn)題, 我們使用了開(kāi)源的深度學(xué)習(xí)框架Caffe[11], 實(shí)驗(yàn)中, 訓(xùn)練模型主要使用的數(shù)據(jù)集是ImageNet[5], 訓(xùn)練了20個(gè)類別, 主要是巴士、擺鐘、包菜、杯子、菠蘿、菜花、草垛、草莓、茶壺、橙子、電視、獨(dú)輪車、帆船、鋼琴、海岸、紅酒、無(wú)花果、雪山、汽車、珊瑚.
我們的工作涉及到深度學(xué)習(xí)、深度學(xué)習(xí)框架Caffe、基于內(nèi)容的圖像檢索、距離度量學(xué)習(xí), 在這一節(jié), 主要是介紹這幾個(gè)工作.
1.1 深度學(xué)習(xí)
深度學(xué)習(xí)[2]是機(jī)器學(xué)習(xí)的一個(gè)分支, 深度學(xué)習(xí)的概念源于人工神經(jīng)網(wǎng)絡(luò)的研究. 含有隱層的多層感知器就是一種深度學(xué)習(xí)結(jié)構(gòu). 深度學(xué)習(xí)通過(guò)組合低級(jí)特征形成更加抽象的高層表示屬性類別或者特征, 以發(fā)現(xiàn)數(shù)據(jù)的分布特征. 深度學(xué)習(xí)是多個(gè)研究領(lǐng)域交差的產(chǎn)物, 包括神經(jīng)網(wǎng)絡(luò)、圖形化建模、優(yōu)化、模式識(shí)別和信號(hào)處理等.
深度學(xué)習(xí)之所以能在近些年如此快速的發(fā)展起來(lái), 主要得益于下面兩個(gè)原因:
(1) 計(jì)算機(jī)硬件的迅速發(fā)展提供了強(qiáng)大的計(jì)算能力, 使得訓(xùn)練大規(guī)模的神經(jīng)網(wǎng)絡(luò)成為可能, 如高性能的gpu可以集成上千個(gè)核.
(2) 海量的被標(biāo)記的數(shù)據(jù)的應(yīng)用緩解了訓(xùn)練過(guò)擬合的問(wèn)題, 在深度學(xué)習(xí)中, 數(shù)據(jù)是“引擎”, Imagenet有上百萬(wàn)的標(biāo)注數(shù)據(jù).
實(shí)驗(yàn)中我們使用的Alexnet[4]是卷積神經(jīng)網(wǎng)絡(luò)(CNN), 它是諸多深度學(xué)習(xí)技術(shù)的一種. Alexnet神經(jīng)網(wǎng)絡(luò)有8層, 前5層為卷積層, 后3層為全連接層, 其中在第1、2、5卷積層的后面是pooling層. 卷積層通過(guò)參數(shù)共享來(lái)減少神經(jīng)網(wǎng)絡(luò)層之間的參數(shù)數(shù)量. Pooling層子采樣卷積層的輸出層, 減少下一層輸入數(shù)據(jù)的大小, 一般采用2*2的窗口來(lái)做maxpooling或者avgpooling運(yùn)算, 這樣可以減少75%的數(shù)據(jù).
1.2 深度學(xué)習(xí)框架Caffe
深度學(xué)習(xí)框架Caffe是按照Alexnet模型設(shè)計(jì)的, Alexnet在2012年ImageNet圖像分類比賽中取得了第一名, 它是一種深度卷積神經(jīng)網(wǎng)絡(luò)(CNN).
Caffe是Alexnet的具體實(shí)現(xiàn), Caffe用C++語(yǔ)言編寫, 運(yùn)算速度快, 模型化好, 有開(kāi)源社區(qū)支持, 在學(xué)術(shù)界和工業(yè)界有大量的用戶. Caffe一共有8層神經(jīng)網(wǎng)絡(luò), 前面的5層是卷積層, 后面3層是全連接層, 網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示.
圖1 Caffe網(wǎng)絡(luò)結(jié)構(gòu)
從圖1可以看出, Caffe的第1、2、5卷積層后面是pooling層, 最后一層是softmax層, 也是輸出層.
圖2到圖6分別對(duì)應(yīng)Caffe的前兩層和后三層.
圖 2 第一個(gè)卷積層網(wǎng)絡(luò)結(jié)構(gòu)
圖 3 第二個(gè)卷積層網(wǎng)絡(luò)結(jié)構(gòu)
圖 4 第六層全連接層網(wǎng)絡(luò)結(jié)構(gòu)
圖 5 第七層全連接層網(wǎng)絡(luò)結(jié)構(gòu)
由圖6可知, 經(jīng)過(guò)運(yùn)算, Caffe最后將圖像變換為有語(yǔ)義特征的維向量. 在下一章的圖像檢索模塊正是使用的該特征向量來(lái)建立索引和做匹配計(jì)算的.
深度學(xué)習(xí)的方法很容易陷入過(guò)擬合的煩惱, 為了減少過(guò)擬合, 我們采用了兩種數(shù)據(jù)擴(kuò)展的技巧.
一是將圖像做旋轉(zhuǎn)、格式轉(zhuǎn)換、剪切操作作為輸入訓(xùn)練數(shù)據(jù), 提高模型的魯棒性. 二是為了達(dá)到光照和顏色的不變形, 在數(shù)據(jù)集上隨機(jī)增加像素的主要成分. 實(shí)驗(yàn)證明, 采用這些方法可以提高模型的魯棒性, 避免過(guò)擬合.
圖 6 第8層全連接層網(wǎng)絡(luò)結(jié)構(gòu)
在Caffe數(shù)據(jù)層的后面是卷積層, 在第一層和第二層的后面是歸一化層(normalization)和max pooling層, 第三層、四層的后面則沒(méi)有歸一化層和max pooling層, 第五層的后面有max pooling 層. 在卷積層的后面是3個(gè)全連接層, 前面兩個(gè)全連接層含有4096個(gè)神經(jīng)元, 最后一個(gè)全連接層含有的神經(jīng)元的數(shù)量由訓(xùn)練模型的類別數(shù)決定, 在我們實(shí)驗(yàn)中, 最后一層是20個(gè)神經(jīng)元. 整個(gè)神經(jīng)網(wǎng)絡(luò)框架的參數(shù)數(shù)量大于6000萬(wàn)個(gè). 訓(xùn)練出的模型就是保存的神經(jīng)網(wǎng)絡(luò)各層之間的參數(shù), 模型占內(nèi)存大小為227M左右. 一幅圖像測(cè)試的過(guò)程就是用該圖像, 通過(guò)分割, 調(diào)用OpenCV轉(zhuǎn)化為矩陣后, 和各層網(wǎng)絡(luò)之間的參數(shù)做矩陣相乘運(yùn)算, 最后得到一個(gè)特征向量, 其中最大值的下標(biāo)就是該圖像對(duì)應(yīng)的類別, 通過(guò)和原圖像的label比較就可以得到分類的正確性, 進(jìn)而得到測(cè)試準(zhǔn)確率. 由于Alexnet網(wǎng)絡(luò)采用了很多不尋常的技巧, 使得Alexnet網(wǎng)絡(luò)比其他的深度卷積網(wǎng)絡(luò)效果更好.
首先, 神經(jīng)網(wǎng)絡(luò)的輸出函數(shù)是非線性的函數(shù): 糾正線性單元(Relu), 而不是傳統(tǒng)的輸出函數(shù)tanh, 在采用梯度下降法的訓(xùn)練方式下, 傳統(tǒng)的輸出函數(shù)的訓(xùn)練時(shí)間比Relu方式要長(zhǎng), 根據(jù)Hinton的文章[12], 我們稱使用這種非線性函數(shù)的神經(jīng)元為糾正線性單元(Relu), 訓(xùn)練模型用Relu作為輸出單元比傳統(tǒng)的激活函數(shù)作為輸出單元快好幾倍. 圖7是在一個(gè)四層的卷積神經(jīng)網(wǎng)絡(luò)上做的測(cè)試, 網(wǎng)絡(luò)分別使用Relu和tanh作為輸出函數(shù), 在數(shù)據(jù)集CIFAR-10上訓(xùn)練, 當(dāng)達(dá)到要求的25%的訓(xùn)練錯(cuò)誤率時(shí), Relu比tanh快6倍, 即使用Relu的神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)速度更快.
第二, 采用局部響應(yīng)歸一化, 提高模型的泛化能力. 同時(shí)局部相應(yīng)歸一化可以降低模型的識(shí)別錯(cuò)誤率, 根據(jù)Alex的實(shí)驗(yàn), 采用這種方法可以分別降低Top1和Top5的錯(cuò)誤率為1.4%和1.2%, 在CIFAR-10上也有2%的提升.
第三, 采用max pooling, max pooling可以提高特征傳輸?shù)牟蛔冃? 將不必要的特征去掉, 降低數(shù)據(jù)的維度, Caffe中使用的是2*2的核, 這樣可以減少75%的數(shù)據(jù), 同時(shí)保留最主要的特征數(shù)據(jù), 降低了過(guò)擬合的風(fēng)險(xiǎn).
第四, 采用dropout, 2012年, Hinton在文獻(xiàn)[9]里面提出, 訓(xùn)練的時(shí)候, 讓一半的特征檢測(cè)器停止工作可以提高模型的泛化能力, Hinton稱這種方法為dropout.
Hinton認(rèn)為[9], 通過(guò)阻止某些特征的協(xié)同作用能夠緩解模型的過(guò)擬合, 在每次迭代的時(shí)候, 每個(gè)神經(jīng)元有一半的概率不發(fā)揮作用, 在下次迭代的時(shí)候又可能發(fā)揮作用, 這樣可以提高模型的泛化能力, 從而降低過(guò)擬合.
圖7 Relu 和tanh訓(xùn)練迭代次數(shù)比較曲線
1.3基于內(nèi)容的圖像檢索
基于內(nèi)容的圖像檢索, 即CBIR(Content-Based Image Retrieval)是近十年計(jì)算機(jī)視覺(jué)研究最多的領(lǐng)域之一, CBIR是通過(guò)分析圖像的可視化特征, 使用近似匹配算法, 從檢索庫(kù)中檢索出一組最相似的圖像, CBIR從本質(zhì)上講是一種近似匹配技術(shù), 它融合了計(jì)算機(jī)視覺(jué)、圖像處理、圖像理解和數(shù)據(jù)庫(kù)等多個(gè)領(lǐng)域的技術(shù)成果.
在過(guò)去, CBIR系統(tǒng)主要使用的可視化特征為低級(jí)特征, 有全局的顏色特征、邊緣特征、紋理特征、GIST和CENTRIST, 和局部的特征, 如使用局部描述子的(SIFT, SURF)的詞袋模型(Bow). 傳統(tǒng)的CBIR系統(tǒng)使用的距離匹配算法是固定的, 主要是歐幾里得距離公式和相似公式.
基于深度學(xué)習(xí)的CBIR系統(tǒng), 使用深度學(xué)習(xí)提取的特征作為索引, 實(shí)驗(yàn)中, 我們使用的是Alexnet, 共有8層神經(jīng)網(wǎng)絡(luò), 5個(gè)卷積層, 3個(gè)全連接層, 最后三層提取的是圖像的高級(jí)特征, 前面5個(gè)卷積層提取的是圖像的低級(jí)可視化特征, 實(shí)驗(yàn)中, 我們使用的是最后一層作為圖像的特征表示, Ji Wan[1]等人的工作表明了倒數(shù)后兩層作為圖像的特征檢索的準(zhǔn)確率最好, 在Alexnet中, 最后一層為softmax層, softmax是logistic回歸模型在多分類問(wèn)題上的推廣, 數(shù)學(xué)表達(dá)形式如公式(1)所示, 它計(jì)算出一幅圖像屬于每個(gè)類別的概率, 實(shí)驗(yàn)中我們訓(xùn)練的模型有20個(gè)類別, 所以最后一層的維度為20維, 20維的和為1.
1.4 度量學(xué)習(xí)
在機(jī)器學(xué)習(xí)中, 很多算法都依賴于計(jì)算兩個(gè)樣本點(diǎn)之間的距離, 在圖像檢索中, 度量學(xué)習(xí)算法(Distance Metric Learning)已經(jīng)被廣泛的研究. 圖像檢索的性能不僅僅單獨(dú)依賴于所提取的圖像特征, 圖像檢索很關(guān)鍵的技術(shù)還在于所采用的相似度量函數(shù). 相似度量函數(shù)直接決定圖像檢索的結(jié)果和檢索的效率. 基于內(nèi)容的圖像檢索與基于文本的圖像檢索不同, 基于圖像內(nèi)容的圖像檢索主要通過(guò)計(jì)算查詢示例圖像和檢索庫(kù)圖像之間的視覺(jué)特征的相似度來(lái)決定檢索的結(jié)果. 基于深度學(xué)習(xí)的圖像檢索, 在提取好圖像的特征后, 形成特征向量, 之后基于特征向量來(lái)表征對(duì)應(yīng)的圖像. 在圖像檢索中, 判斷圖像之間是否相似主要是通過(guò)比較兩幅圖像的特征向量是否相似(距離最小)來(lái)進(jìn)行的, 即把圖像特征向量之間的距離比較看做圖像相似度的比較, 顯然, 一個(gè)好的特征向量和合適的距離度量學(xué)習(xí)算法是圖像檢索的關(guān)鍵.
基于深度學(xué)習(xí)的圖像檢索系統(tǒng), 主要使用的技術(shù)有Python的Web框架Django, 深度學(xué)習(xí)框架Caffe, 數(shù)據(jù)庫(kù)Mysql等技術(shù).
2.1 計(jì)算機(jī)系統(tǒng)環(huán)境
由于基于深度學(xué)習(xí)的圖像檢索系統(tǒng)使用深度學(xué)習(xí)技術(shù), 對(duì)運(yùn)算速度的要求比較高, 所以要求計(jì)算機(jī)有高性能的GPU, 一般使用的是Tesla K20 或者更高性能的K40.
其他的要求如下:
系統(tǒng): Ubuntu系統(tǒng)12.04或者14.04
CPU: Intel i3處理器
硬盤: 200G以上
2.2 軟件開(kāi)發(fā)環(huán)境
本系統(tǒng)使用Eclipse作為開(kāi)發(fā)環(huán)境, 使用的Web服務(wù)器是Python版本的Django作為快速開(kāi)發(fā)工具. Caffe使用的編程語(yǔ)言是C++(90%)和Python(10%), 提供Python和MATLAB接口, 我們使用的是Python接口, 使用的編程語(yǔ)言主要是Python, HTML, JavaScript.
系統(tǒng)需要安裝的軟件如下:
Cuda驅(qū)動(dòng)安裝
Java安裝
Caffe使用的相關(guān)軟件的安裝
Caffe安裝
Mysql安裝
Django安裝
2.3 系統(tǒng)的功能和性能指標(biāo)
2.3.1系統(tǒng)的功能要求
①準(zhǔn)確、快速的檢索;
②提供友好的訓(xùn)練模型接口(用戶只要按照網(wǎng)頁(yè)上的提示信息操作就可以訓(xùn)練出可靠的模型);
③全天24小時(shí)穩(wěn)定工作;
④該平臺(tái)基于開(kāi)放的B/S 架構(gòu), 具有良好的人機(jī)交互與信息展示功能;
⑤系統(tǒng)的基本信息維護(hù)功能, 主要是在系統(tǒng)停止工作時(shí), 恢復(fù)系統(tǒng).
2.3.2系統(tǒng)的性能要求
①系統(tǒng)可靠性: 達(dá)到24小時(shí)×7天穩(wěn)定運(yùn)行;
②檢索的準(zhǔn)確率≥80%;
③系統(tǒng)響應(yīng)時(shí)間<1s;
④每秒檢索的圖像數(shù)量>10000.
2.4 系統(tǒng)的模塊組成
本系統(tǒng)分為四個(gè)模塊: 圖像檢索模塊、圖像檢索庫(kù)建立模塊、模型訓(xùn)練模塊, 系統(tǒng)維護(hù)模塊. 系統(tǒng)總體結(jié)構(gòu)如圖8所示.
圖8 圖像檢索系統(tǒng)結(jié)構(gòu)
2.4.1圖像檢索模塊
提取樣例圖像特征, 與檢索庫(kù)中的圖像的特征向量逐一匹配, 得到檢索庫(kù)中每幅圖像與樣例圖像的距離, 然后從小到大排序, 并按照用戶的顯示要求, 顯示最靠前的結(jié)果.
圖像檢索的系統(tǒng)框圖如圖9所示.
圖9 圖像檢索模塊系統(tǒng)框圖
步驟(2)為提取樣例圖像特征, 提取的方法采用深度神經(jīng)網(wǎng)絡(luò), 經(jīng)過(guò)各層網(wǎng)絡(luò)的運(yùn)算, 最后通過(guò)輸出層得到特征向量, 在本文中得到的特征向量是20維向量. 步驟(4)為匹配算法, 本文中使用的是歐幾里得距離:
步驟(5)為逐一與檢索庫(kù)中的圖像匹配, 最后對(duì)匹配的結(jié)果(即距離)排序, 并返回一組最相似的結(jié)果.
圖像檢索的工作流程如圖10所示.
圖10 圖像檢索工作流程
用戶在系統(tǒng)界面上單擊“選擇文件”按鈕, 輸入返回結(jié)果數(shù)量(例如返回最相似的100張圖像), 之后點(diǎn)擊提交(在檢索操作之前, 用戶要建立自己的索引庫(kù), 在圖像檢索預(yù)處理界面, 提交文件夾即可構(gòu)建好索引庫(kù)), Caffe服務(wù)器經(jīng)過(guò)提取待檢測(cè)圖像的特征向量, 匹配索引庫(kù), 最后返回一組最相似的結(jié)果.
2.4.2圖像檢索庫(kù)建立模塊
檢索庫(kù)是圖像檢索系統(tǒng)中, 待檢測(cè)圖像所比較的對(duì)象, 檢索庫(kù)主要存儲(chǔ)每張圖像經(jīng)過(guò)神經(jīng)網(wǎng)絡(luò)運(yùn)算得到的特征向量.
相似度計(jì)算公式:
相似度= 1/(距離+1)
距離計(jì)算公式:
(是特征向量的維度)
這樣, 當(dāng)兩幅圖像的距離為0時(shí), 相似度為100%, 距離越大, 相似度越低.
從上面可以看出, 影響相似度計(jì)算最大的因素是圖像對(duì)應(yīng)的特征向量, 歸根結(jié)底是訓(xùn)練的模型是否準(zhǔn)確, 如果模型準(zhǔn)確, 那么相似的兩個(gè)圖像, 在同一維度的值差距(1-1)2就越小, 計(jì)算總的距離就越小, 這樣得到的結(jié)果就越準(zhǔn)確.
圖像檢索庫(kù)建立分為兩個(gè)步驟:
(1) 提取圖像特征, 如圖11所示. 神經(jīng)網(wǎng)絡(luò)框架是Caffe, 在上一節(jié)有詳細(xì)介紹.
圖11 提取圖像特征向量
(2) 存入數(shù)據(jù)庫(kù), 在這一步使用了一個(gè)技巧, 由于深度學(xué)習(xí)框架Caffe最后一層是softmax層, 得到的是屬于每一個(gè)類別的概率, 所以, 我們根據(jù)得到的特征向量的最大一維的下標(biāo)(index)建立數(shù)據(jù)表tables_i, 這樣數(shù)據(jù)庫(kù)建立了個(gè)數(shù)據(jù)表,對(duì)應(yīng)特征向量的維數(shù). 這樣, 檢索的時(shí)候, 我們根據(jù)樣例圖像的特征向量最大值對(duì)應(yīng)的下標(biāo)檢索對(duì)應(yīng)的數(shù)據(jù)表tables_i, 這樣可以避免掃描整個(gè)檢索庫(kù), 時(shí)間效率會(huì)提高約倍. 存入數(shù)據(jù)庫(kù)的架構(gòu)如圖12所示.
圖12 特征向量存入數(shù)據(jù)庫(kù)
2.4.3模型訓(xùn)練模塊
用戶輸入一組圖像(每個(gè)類別圖像的數(shù)量至少大于100張, 類別數(shù)大于1類), 訓(xùn)練出一個(gè)對(duì)應(yīng)的模型.
模型訓(xùn)練影響的因素: 模型訓(xùn)練就是訓(xùn)練出一個(gè)針對(duì)訓(xùn)練圖像的模型, 最后得到的是一個(gè)二進(jìn)制文件, 里面存儲(chǔ)的是神經(jīng)網(wǎng)絡(luò)各層間的權(quán)重參數(shù), 大小約為227M大小.
在模型訓(xùn)練中, 影響的主要因素是訓(xùn)練模型時(shí)間比較久, 這主要是因?yàn)樯窠?jīng)網(wǎng)絡(luò)的參數(shù)巨大(約有6500萬(wàn)參數(shù)), 每層之間的矩陣乘積的操作比較耗時(shí)(矩陣乘積運(yùn)算大約做了上億次的乘積運(yùn)算), forward和backward在每一層都做矩陣的乘積操作, 所以機(jī)器的性能對(duì)訓(xùn)練時(shí)間的影響比較明顯, 實(shí)驗(yàn)中, 我們使用GPU并行運(yùn)算來(lái)加速, 所以, GPU的性能是關(guān)鍵, 我們搭建的服務(wù)器使用的是Tesla K20c的GPU, Tesla K20c 速度大約是Quadro K2100m的700倍, 在性能曲線上的顯示是Tesla K20c的機(jī)器的曲線的斜率更小. 圖13是比較的Quadro K2100m 和 Tesla K20c的性能曲線.
圖13 Tesla K20c和Quadro K2100m訓(xùn)練時(shí)間對(duì)比圖
圖14 訓(xùn)練模型架構(gòu)
圖15 訓(xùn)練模型操作流程
模型訓(xùn)練的框架如圖14所示, 由四個(gè)部分組成, 瀏覽器、Web服務(wù)器、Caffe服務(wù)器、數(shù)據(jù)庫(kù)支持. Web服務(wù)器將待訓(xùn)練的圖像發(fā)送到Caffe服務(wù)器, Caffe服務(wù)器經(jīng)過(guò)圖像預(yù)處理, 調(diào)整參數(shù), 生成訓(xùn)練數(shù)據(jù)和驗(yàn)證數(shù)據(jù)等操作后, 調(diào)用Caffe訓(xùn)練模型接口開(kāi)始迭代訓(xùn)練, 最后將訓(xùn)練的模型保存到數(shù)據(jù)庫(kù), 并反饋訓(xùn)練的信息到客戶端, 告訴用戶訓(xùn)練的進(jìn)度.
模型訓(xùn)練操作步驟如圖15所示. 用戶在系統(tǒng)界面上提交待訓(xùn)練的數(shù)據(jù), 點(diǎn)擊提交, Web服務(wù)器將待訓(xùn)練數(shù)據(jù)發(fā)送到Caffe服務(wù)器開(kāi)始訓(xùn)練, Caffe服務(wù)器實(shí)時(shí)反饋訓(xùn)練的進(jìn)度到客戶機(jī), 告訴用戶訓(xùn)練的進(jìn)度, 最后訓(xùn)練結(jié)束后, Caffe服務(wù)器返回訓(xùn)練好的模型的基本信息(訓(xùn)練人、訓(xùn)練時(shí)間、迭代次數(shù)、集內(nèi)正確率等信息)到客戶端頁(yè)面.
2.4.4系統(tǒng)維護(hù)模塊
系統(tǒng)里面重要的數(shù)據(jù)庫(kù), 如模型庫(kù)、檢索庫(kù)等, 還有服務(wù)器訓(xùn)練的性能(即訓(xùn)練的迭代次數(shù)和時(shí)間的關(guān)系)等信息, 需要提供接口供用戶使用.
系統(tǒng)維護(hù)模塊的結(jié)構(gòu)如圖16所示, 主要有三個(gè)部分, 一是索引庫(kù)的清空和重建, 二是模型的刪除, 三是得到系統(tǒng)服務(wù)器的訓(xùn)練性能曲線.
圖16 系統(tǒng)信息維護(hù)結(jié)構(gòu)
對(duì)于圖像檢索系統(tǒng), 需要建立一個(gè)龐大的圖像數(shù)據(jù)庫(kù), 建立索引庫(kù)主要有兩種方式, 在線方式和離線方式, 一般的圖像檢索系統(tǒng)在索引庫(kù)的建立上使用的是離線的方式, 因?yàn)檫@一部分對(duì)時(shí)間的要求不高, 在特征匹配上使用的是在線計(jì)算方式, 由于這一部分和用戶的交互密切相關(guān), 所以對(duì)時(shí)間的要求和用戶體驗(yàn)的要求都很高. 而我們整個(gè)系統(tǒng)使用的都是在線的方式, 這也是我們系統(tǒng)的一大亮點(diǎn). 我們使用Python的Django Web框架技術(shù)和Caffe的Python接口, 搭建了一個(gè)圖像檢索系統(tǒng), 可以在線實(shí)時(shí)檢索用戶輸入的用例圖像, 同時(shí)隨時(shí)可以根據(jù)用戶的輸入擴(kuò)大索引庫(kù), 而且在用戶體驗(yàn)和實(shí)時(shí)性上, 我們都進(jìn)行了優(yōu)化, 使得系統(tǒng)運(yùn)行非常流暢.
3.1 實(shí)驗(yàn)平臺(tái)的搭建
我們使用的服務(wù)器是有GPU Tesla K20c的Dell工作站, 服務(wù)器訓(xùn)練一個(gè)有20000張訓(xùn)練素材的模型(fine-tune的方式)大概需要3.5小時(shí)的時(shí)間. 系統(tǒng)搭建的步驟如下:
①安裝部署Caffe, 并簡(jiǎn)單測(cè)試;
②安裝部署Djando和數(shù)據(jù)庫(kù);
③基于前臺(tái)和后臺(tái)開(kāi)發(fā)程序.
3.2 結(jié)果
在模型訓(xùn)練上, 我們使用的訓(xùn)練集大小為20000張圖像, 驗(yàn)證集大小為6000張圖像, 得到的模型信息如表1.
為了評(píng)估訓(xùn)練模型是否可以用于圖像檢索, 我們使用在圖像檢索中廣泛使用的特定范圍的準(zhǔn)確率(P@K)來(lái)測(cè)試, 實(shí)驗(yàn)中, 我們的檢索庫(kù)大小為20萬(wàn)張圖像. 測(cè)試結(jié)果如表2.
表1 模型信息
表2 測(cè)試結(jié)果
在時(shí)間性能上, 由于我們將檢索庫(kù)按照每幅圖像的特征向量最大值的下標(biāo)映射到了K個(gè)表中, 所以, 與其他實(shí)驗(yàn)相比, 我們的檢索效率提高了接近K倍的速度.
下面是圖像檢索排在最靠前的結(jié)果: 檢索前十張的平均相似度為80%以上.
由表2可以看出來(lái), 檢索一張的準(zhǔn)確率和模型分類的準(zhǔn)確率數(shù)值相近, 因?yàn)? 檢索依據(jù)的距離(歐幾里得距離)主要由樣例圖像特征向量的最大值決定, 該最大值即為該圖像分類到該維代表類別的概率, 所以, 檢索一張的準(zhǔn)確率和模型的分類準(zhǔn)確率相近.
圖17 實(shí)驗(yàn)結(jié)果對(duì)比圖
在本文中, 我們只使用了8層神經(jīng)網(wǎng)絡(luò), 訓(xùn)練的樣本數(shù)是每個(gè)類別1000張, 從測(cè)試的結(jié)果可以看出: (1)深度學(xué)習(xí)可以從原始的圖像中學(xué)習(xí)到高層的語(yǔ)義特征; (2)訓(xùn)練的模型具有很好的魯棒性, 對(duì)于網(wǎng)上下載的圖像, 檢索的結(jié)果準(zhǔn)確率都很高(大于80%); (3)深度學(xué)習(xí)是唯一的端到端的系統(tǒng), 中間不需要人為的參與, 不需要先驗(yàn)知識(shí), 特別適合處理海量數(shù)據(jù). 從現(xiàn)階段看, 深度學(xué)習(xí)技術(shù)是處理語(yǔ)義鴻溝最有前途的技術(shù), 同時(shí), 我們也發(fā)現(xiàn), 深度學(xué)習(xí)在圖像檢索中的發(fā)展方興未艾, 未來(lái)有著巨大的空間, 在圖像檢索中正趨向使用更大更深的網(wǎng)絡(luò)結(jié)構(gòu), Alexnet只包含了5個(gè)卷積層和3個(gè)全連接層, 而GoogleNet[10]的網(wǎng)絡(luò)結(jié)構(gòu)超過(guò)了20層, 更深的網(wǎng)絡(luò)結(jié)構(gòu)使得反向傳播更加困難. 與此同時(shí)訓(xùn)練數(shù)據(jù)的規(guī)模也在迅速增加. 這些都迫切需要研究新的算法和開(kāi)發(fā)新的并行計(jì)算系統(tǒng)以更加有效的利用大數(shù)據(jù)訓(xùn)練更深的模型.
1 Wan J, Wang DY, Hoi SCH, Wu PC, Zhu JK, Zhang YD, Li JT. Deep learning for content-based image retrieval: A comprehensive study. Proc. of the 22nd ACM International Conference on Multimedia. ACM. 2014. 157–166.
2 Hinton GE, Osindero S, Teh YW. A fast learning algorithm for deep belief nets. Neural Computation, 2006, 18(7): 1527–1554.
3 Rumelhart DE, Hinton GE, Williams RJ. Learning internal representations by error propagation. Nature, 1986.
4 Krizhevsky A, Sutskever I, Hinton GE. ImageNet classification with deep convolutional neural networks.Advances in Neural Information Processing Systems. 2012. 1097–1105.
5 Deng J, Dong W, Socher R, Li LJ, Li K, Li FF. ImageNet: A large-scale hierarchical image database. IEEE Conference on Computer Vision and Pattern Recognition (CVPR 2009). IEEE. 2009. 248–255.
6 Nair V, Hinton GE. Rectified linear units improve restricted biltzmann machines. Proc. 27th International Conference on Machine Learning (ICML-10). 2010. 807–814.
7 Donahue J, Jia YQ, Vinyals O, Hoffman J, ZhangN, Darrell ET. DeCAF: A deep convolutional activation feature for generic visual recognition. ICML. 2014. 647–655.
8 Breiman L. Random forests. Machine Learning, 2001, 45(1): 5–32.
9 Hinton GE, Srivastava N, Krizhevsky A, Sutskever I, Salakhutdinov RR. Improving neural networks by preventing co-adaptation of feature detectors. arXiv preprint arXiv: 1207.0580. 2012.
10 Szegedy C, Liu W, Jia YQ, Sermanet P, Reed S, Anguelov D, Erhan D, Vanhoucke V, Rabinovich A. Going deeper with convolutions.Proc. of the IEEE Conference on Computer Vision and Pattern Recognition. 2015. 1–9.
11 Donahue J, Jia Y, Vinyals O, et al. DeCAF: A deep convolutional activation feature for generic visual recognition. Computer Science, 2013, 50(1): 815–830.
12 NairV, Hinton GE. Rectified linear units improve restricted boltzmann machines. Proc. 27th International Conference on Machine Learning (ICML-10). 2010. 807–814.
Image Retrieval System Based on Deep Learning
HU Er-Lei1, FENG Rui2
1(School of Computer Science, Fudan University, Shanghai 201203, China)2(Shanghai Key Laboratory of Intelligent Information Processing, Shanghai Engineering Research Center for Video Technology and System, Shanghai 201203, China)
Learning effective feature representations and similarity measures are crucial to the retrieval performance of a content-based image retrieval system. In the past, the system works on the low-level visual features of input query image, which does not give satisfactory retrieval results, so, despite extensive research efforts for decades, it remains one of the most challenging problem in computer vision field. The main problem is the well-known “semantic gap”, which exists between low-level image pixels captured by machines and high-level semantic concepts perceived by human. In the past, the content-based image retrieval system only works on the low-level visual features, which cannot solve “semantic gap” issue. Recently, the fast development of deep learning brings hope for the issue. Deep learning roots from the research of artificial neural network. In order to form more abstract high-level, deep learning combines low-level features, finds the regularities of distribution, which is different from other algorithm. Inspired by recent successes of deep learning techniques for computer vision, speech recognition, natural language process, image and video analysis, multimedia, in this paper, we apply deep learning to solve the “semantic gap” issue in content-based image retrieval.
content-based image retrieval; deep learning; feature extracting; match
國(guó)家科技支撐計(jì)劃(2013BAH09F01);上海市科委科技創(chuàng)新行動(dòng)計(jì)劃(14511106900)
2016-07-10;
2016-09-20
[10.15888/j.cnki.csa.005692]