王柏翔+姜佳鵬
摘 要: 處理海量圖像數(shù)據(jù)問(wèn)題時(shí),針對(duì)傳統(tǒng)的圖像檢索方法計(jì)算速度慢、檢索效率低的問(wèn)題,借助HBase和Hadoop分布式技術(shù)對(duì)海量數(shù)據(jù)超強(qiáng)的讀寫(xiě)能力,提出一種適用于大數(shù)據(jù)背景下的基于Hadoop平臺(tái)的圖像檢索模型。該圖像檢索模型提供了圖像數(shù)據(jù)處理的可序列化數(shù)據(jù)類型,并通過(guò)輸入模塊實(shí)現(xiàn)大數(shù)據(jù)背景下數(shù)據(jù)類型的轉(zhuǎn)換及海量圖像的輸入。理論驗(yàn)證了該模型為特征提取、圖像處理等并行處理算法提供了可行的方案。
關(guān)鍵詞: 圖像檢索; HBase; Hadoop; 并行處理
中圖分類號(hào):TP391 文獻(xiàn)標(biāo)志碼:A 文章編號(hào):1006-8228(2016)12-35-04
hods have the problems of lower computation speed and lower retrieval efficiency for processing massive image data. To solve these problems, this paper proposes a retrieval model applied to storage and process massive image data, which with the help of read and write property of Hadoop distributed technology and HBase. This model provides serializable data types for processing image data, and through the input module realizes the data type conversion and massive image input in big data background. The theory proves that the proposed model can provide a feasible solution for parallel processing algorithms of feature extraction, image processing and so on.
Key works: image retrieval; HBase; Hadoop; parallel processing
0 引言
從圖像檢索技術(shù)的發(fā)展看,基于文本標(biāo)注的圖像檢索和基于圖像內(nèi)容的檢索方法提高了圖像特征提取、相似度對(duì)比[1],但是大數(shù)據(jù)時(shí)代,對(duì)現(xiàn)有的圖像處理、表達(dá)與度量等方面增加了存儲(chǔ)圖像數(shù)據(jù)及高效處理海量數(shù)據(jù)集的要求。
傳統(tǒng)的基于內(nèi)容的圖像檢索方法,是對(duì)圖像采用單機(jī)單線程進(jìn)行特征提取及圖像處理,然后將經(jīng)過(guò)處理后的圖像特征存入關(guān)系型數(shù)據(jù)庫(kù)中。發(fā)起檢索請(qǐng)求時(shí),遍歷關(guān)系型數(shù)據(jù)庫(kù)對(duì)比查詢到的圖像特征和全庫(kù)特征,對(duì)其結(jié)果進(jìn)行排序即為檢索的結(jié)果?,F(xiàn)今圖像數(shù)據(jù)快速增長(zhǎng),即使采用多線程技術(shù)處理圖像也不能完全解決存儲(chǔ)海量圖像數(shù)據(jù)及其處理效率的問(wèn)題,更不用說(shuō)簡(jiǎn)單依賴單計(jì)算機(jī)的處理能力的傳統(tǒng)圖像處理技術(shù)。
采用HBase和Hadoop分布式技術(shù)[2-3]對(duì)海量數(shù)據(jù)進(jìn)行基于內(nèi)容的數(shù)據(jù)圖像模型,解決了海量圖像數(shù)據(jù)的存儲(chǔ)與傳輸問(wèn)題,并且原設(shè)計(jì)的圖像檢索算法可直接移植至分布式環(huán)境并行處理。該思想依賴基于Map-Reduce的并行模型并行檢索大數(shù)據(jù)圖像。
大數(shù)據(jù)背景下的圖像數(shù)據(jù),80%以上是以MB為單位的小文件,針對(duì)大文件的基于HDFS的分布式存儲(chǔ)技術(shù)不適用?;贖Base和Hadoop分布式技術(shù)可實(shí)現(xiàn)系統(tǒng)層的小文件合并,實(shí)現(xiàn)全局命名,有良好的通用性[4]。
1 技術(shù)背景
1.1 基于內(nèi)容的圖像檢索技術(shù)
基于內(nèi)容的圖像檢索的特點(diǎn)是對(duì)圖像數(shù)據(jù)內(nèi)容本身的操作處理。具體處理流程如圖1所示。
圖像特征的提取,雖然實(shí)現(xiàn)的算法各不相同,但提取的結(jié)果一般為文本表示的矩陣或數(shù)字。如今的計(jì)算機(jī)圖像處理接口對(duì)數(shù)字圖像的存取簡(jiǎn)化為對(duì)字節(jié)流的獲取與輸出?;趦?nèi)容的圖像檢索技術(shù)之所以快速發(fā)展,一個(gè)重要原因就是只專注于研究圖像處理算法,而忽略存取圖像耗費(fèi)的資源。
1.2 基于Hadoop的分布式技術(shù)
MapReduce分布式計(jì)算模型和Hadoop分布式文件系統(tǒng)HDFS(Hadoop Distributed File System)是Hadoop的核心。Hadoop提供分布式文件系統(tǒng)、通用I/O組件和接口以及分布式數(shù)據(jù)處理模式和執(zhí)行環(huán)境。
MapReduce是一種簡(jiǎn)單的用于數(shù)據(jù)處理的編程模型,支持C++、Python和Java等多種編程語(yǔ)言。MapReduce的并行性使大規(guī)模數(shù)據(jù)的分析能在多個(gè)計(jì)算機(jī)上并行執(zhí)行,提高效率的同時(shí)降低了消耗。
1.3 HBase數(shù)據(jù)庫(kù)
HBase數(shù)據(jù)庫(kù)是分布式列存儲(chǔ)數(shù)據(jù)庫(kù),有超強(qiáng)的讀寫(xiě)性能,底層通過(guò)HDFS存儲(chǔ)數(shù)據(jù),支持隨機(jī)查詢和Map Reduce的批量式計(jì)算。
用Java編寫(xiě)的HBase支持其他編程語(yǔ)言,提供原生的操作API。HBase的數(shù)據(jù)和坐標(biāo)以字節(jié)數(shù)組形式存儲(chǔ),即支持任意類型的數(shù)據(jù)存儲(chǔ)。HBase不存放空表格,只存放有內(nèi)容的表格單元,其稀疏性適用于存儲(chǔ)文件數(shù)據(jù)[5]。
2 模型設(shè)計(jì)與實(shí)現(xiàn)
2.1 模型整體架構(gòu)
Hadoop集群的一系列優(yōu)勢(shì)如集群規(guī)模靈活、成本低廉、其承載的MapReduce模型有高效的并行計(jì)算能力。高效并行處理圖像特征數(shù)據(jù)需要借助MapReduce模型,既能移植到現(xiàn)有的特征提取算法中,也能以圖像的可序列化數(shù)據(jù)類型在分布式環(huán)境中存儲(chǔ)、傳輸和操作。使用HBase面向列擴(kuò)展的分布式數(shù)據(jù)庫(kù)對(duì)圖像數(shù)據(jù)以字節(jié)數(shù)組的形式進(jìn)行壓縮式存儲(chǔ)和快速查詢。因此,本文選擇HBase為數(shù)據(jù)存儲(chǔ)庫(kù),MapReduce模型實(shí)現(xiàn)并行處理,建立海量圖像分布式檢索模型。
檢索模型的整體架構(gòu)如圖2所示,主要分為圖像輸入模塊、分布式集群模塊和檢索結(jié)果顯示模塊。圖像輸入模塊對(duì)圖像數(shù)據(jù)進(jìn)行預(yù)處理,將獲取到的網(wǎng)絡(luò)圖像轉(zhuǎn)換成可序列化圖像數(shù)據(jù)類型[6-8],并轉(zhuǎn)換成字節(jié)數(shù)組存儲(chǔ)在HBase中;分布式集群模塊以可序列化的圖像數(shù)據(jù)類型為接口實(shí)現(xiàn)并行圖像檢索;檢索結(jié)果顯示模塊主要還原相似度較高的圖像文件,并將其顯示或保存到指定的計(jì)算機(jī)硬盤。
2.2 可序列化的圖像數(shù)據(jù)類型
可序列化的數(shù)據(jù)類型要適用于分布式存儲(chǔ)和傳輸,便于處理數(shù)據(jù),因此系統(tǒng)設(shè)計(jì)的Hadoop API中基本的可序列化類型都有其對(duì)應(yīng)的Java API基本數(shù)據(jù)類型。Java API中的BufferedImage是常用的處理圖像的類,將對(duì)象本身轉(zhuǎn)換成字節(jié)數(shù)組,進(jìn)而轉(zhuǎn)換成Text類型。Text類型最大值是2GB,通過(guò)可變長(zhǎng)的int型以字符串編碼形式存儲(chǔ)海量圖像數(shù)據(jù)。此外,BufferedImage類帶有圖像常用的數(shù)據(jù)信息。
ImageWritable類的具體實(shí)現(xiàn),如圖3所示。其中ImageWritable的構(gòu)造方法需由BufferedImage對(duì)象作參數(shù);私有函數(shù)parse Bytes實(shí)現(xiàn)將BufferedImage轉(zhuǎn)換為字節(jié)數(shù)組,進(jìn)而轉(zhuǎn)換成Text類型。第二個(gè)Text類型和第三個(gè)Text類型分別保存的是圖像文件的后綴名及獲取圖像的網(wǎng)址。
2.3 HBase的數(shù)據(jù)庫(kù)設(shè)計(jì)
本文設(shè)計(jì)的圖像檢索模型針對(duì)海量圖像,因此,采用HBase數(shù)據(jù)庫(kù)存儲(chǔ)圖像內(nèi)容的數(shù)據(jù)及預(yù)處理后的數(shù)據(jù)。因?yàn)樾墟I要求定長(zhǎng)且惟一,所以本文采用MD5摘要處理圖像獲取的路徑或網(wǎng)址。HBase中單元格的默認(rèn)塊大小是64KB,對(duì)列值沒(méi)有長(zhǎng)度限制,此外行鍵長(zhǎng)默認(rèn)小于65536。為了不影響圖片的存取效率,對(duì)于小圖像文件則不對(duì)圖像字節(jié)數(shù)組分段。對(duì)HBase的數(shù)據(jù)表設(shè)計(jì)見(jiàn)表1。
2.4 圖像輸入模塊
ImageWritable類只是一種MapReduce模型中鍵/值對(duì)值的數(shù)據(jù)類型,將將圖像文件輸入HBase數(shù)據(jù)庫(kù)或分布式文件系統(tǒng)的常規(guī)的做法是繼承Hadoop API的文件輸入格式類(FileInputFormat)。FileInputFormat認(rèn)為一個(gè)計(jì)算機(jī)本地圖像文件是一個(gè)文件分片,將其轉(zhuǎn)換成自定義的可序列化類。該圖像檢索模型主要由MapReduce并行模型和一個(gè)Web服務(wù)器組成,其中Web服務(wù)器具有文件上傳和瀏覽的功能。MapReduce模型是實(shí)現(xiàn)獲取圖像數(shù)據(jù)和格式轉(zhuǎn)換的程序。本地圖像通過(guò)Web服務(wù)器轉(zhuǎn)換成網(wǎng)絡(luò)圖像,并將記錄網(wǎng)絡(luò)圖像地址的文本文件作為輸入。Map過(guò)程獲取文件流,生成BufferedImage對(duì)象,并轉(zhuǎn)換成ImageWritable對(duì)象,然后通過(guò)SequenceFile文件保存到HDFS中。此外,也可以通過(guò)ImageWritable類將響應(yīng)的圖像字節(jié)數(shù)組保存在HBase中。將圖像數(shù)據(jù)存儲(chǔ)在HDFS的MapReduce流程圖如圖4所示。
2.5 分布式集群模塊
分布式集群模塊主要包括圖像預(yù)處理、特征提取及相似度計(jì)算。通過(guò)ImageWritable,可以從HBase或HDFS獲取所需圖像數(shù)據(jù),然后將現(xiàn)有選用的預(yù)處理生成的BufferedImage對(duì)象構(gòu)建ImageWritable對(duì)象,通過(guò)Reduce寫(xiě)入HBase或HDFS的SequenceFile中。MapReduce過(guò)程中,特征提取與預(yù)處理不同之處是輸出數(shù)據(jù)的類型是數(shù)字類型還是文本類型。相似度計(jì)算及其排序的輸入輸出的數(shù)據(jù)類型都是數(shù)字類型或者文本類型。分布式集群模塊的實(shí)現(xiàn)如表2所示。
2.6 檢索結(jié)果的顯示模塊
檢索結(jié)果的顯示模塊中,將輸入模塊作為待檢模塊,相似度計(jì)算并排序后,讀取相似度高的圖像集合對(duì)應(yīng)的圖像數(shù)據(jù)并轉(zhuǎn)換成BufferedImage對(duì)象,通過(guò)UI界面顯示,將檢索結(jié)果保存到本地計(jì)算機(jī)硬盤中。
3 Image Writable類的封裝與實(shí)現(xiàn)
本文圖像檢索模型的核心類是Image Writable類。圖像檢索首先要實(shí)現(xiàn)對(duì)象轉(zhuǎn)換,即BufferedImage和byte[],圖像文件后綴名從網(wǎng)址中抓取?;贘ava編程實(shí)現(xiàn)對(duì)ImageWritable類的封裝與實(shí)現(xiàn)。具體代碼如下:
其中ImageIO類用于讀取和生成圖像,是Java API的常用圖像工具類。getBytes()將BufferedImage轉(zhuǎn)換成byte[]對(duì)象,byte[]對(duì)象用于建立Text對(duì)象。Text類保證數(shù)據(jù)存儲(chǔ)和傳輸?shù)恼_性、可靠性。ImageWritable類實(shí)現(xiàn)的Writable接口二進(jìn)制讀寫(xiě)流算法如下:
4 結(jié)束語(yǔ)
本文提出的基于Hadoop平臺(tái)的圖像檢索模型實(shí)現(xiàn)了存取和檢索圖像數(shù)據(jù)的功能。該圖像檢索技術(shù)采用HBase的分布式列存儲(chǔ)數(shù)據(jù)庫(kù),通過(guò)Map-Reduce實(shí)現(xiàn)并行檢索圖像,提高了檢索速度,數(shù)據(jù)輸入靈活,可并行處理大數(shù)據(jù)圖像,適用于重構(gòu)現(xiàn)有的圖像檢索系統(tǒng)。但該模型是假設(shè)在不受噪音影響的條件下檢索,這也是下一步需要研究和改進(jìn)的地方。
參考文獻(xiàn)(References):
[1] 李向陽(yáng),莊越挺,潘云鶴.基于內(nèi)容的圖像檢索技術(shù)與系統(tǒng)[J].
計(jì)算機(jī)研究與發(fā)展,2001.38(3):344-354
[2] Borthakur D. The hadoop distributed file system:
Architecture and design[J]. Hadoop Project Website,2007.11(11):1-10
[3] White T. Hadoop:the definitive guide[J]. O'reilly Media Inc
Gravenstein Highway North,2010.215(11):1-4
[4] 朱曉麗,趙志剛.一種基于HBase的海量圖片存儲(chǔ)技術(shù)[J].信
息系統(tǒng)工程,2013.8:22-24
[5] 朱敏,程佳,柏文陽(yáng).一種基于HBase的RDF數(shù)據(jù)存儲(chǔ)模型[J].
計(jì)算機(jī)研究與發(fā)展,2013.50(s1):23-31
[6] 鄭欣杰,朱程榮,熊齊邦.基于Map Reduce的分布式光線跟
蹤的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)工程,2007.33(22):83-85
[7] 李倩,施霞萍.基于Hadoop Map Reduce圖像處理的數(shù)據(jù)類
型設(shè)計(jì)[J].軟件導(dǎo)刊,2012.11(4):182-183
[8] 張良將,宦飛,王楊德.Hadoop云平臺(tái)下的并行化圖像處理
實(shí)現(xiàn)[J].信息安全與通信保密,2012.10:59-62