大數(shù)據(jù)背景下的“按圖索驥”
到底什么是大數(shù)據(jù)(Big data)呢?大數(shù)據(jù)通常是用來形容大量的非結(jié)構(gòu)化或半結(jié)構(gòu)化的數(shù)據(jù),這樣的數(shù)據(jù)要想將他們轉(zhuǎn)化為關(guān)系型數(shù)據(jù)用作日后分析使用所需的前期處理需要花費高昂的代價。而大數(shù)據(jù)技術(shù),就是從各種類型的數(shù)據(jù)中快速獲得有價值信息的技術(shù)。
一般來說大數(shù)據(jù)有這樣 4 個特點:容量(Volume)、種類(Variety)、價值(Value)和速度(Velocity)。前面我們只談到的大容量,這個是大家最好理解 的,但大數(shù)據(jù)并不只有大容量,其包含的數(shù)據(jù)類型也是多種多樣的,在大量的數(shù)據(jù)中往往有用有價值的數(shù)據(jù)很少也即價值密度很低,最后當(dāng)然要求處理速度夠快,比 如你用 Google 搜索引擎去搜索相關(guān)感興趣的內(nèi)容,其能夠很快的檢索到你需要的內(nèi)容,誰也不想為此等上數(shù)分鐘。
“按圖索驥”背后的機器學(xué)習(xí)技術(shù):主動學(xué)習(xí)和半監(jiān)督
下面的探討我們將大數(shù)據(jù)限定到圖像上。在《探尋“找圖”的最佳方式》有談到,
根據(jù)你輸入的文字,然后找到與之相關(guān)的圖片,仍然是搜索引擎尋找圖片的基本方法:基于文字詞義的理解。
對于通過文本標(biāo)簽做圖像檢索 Google 早早將該技術(shù)融入到其搜索引擎中,包括后來的 Bing 。要實現(xiàn)這樣的搜索是需要建立在數(shù)以萬計乃至數(shù)以億計的大量圖像數(shù)據(jù)基礎(chǔ)之上的,不但要首先獲得這樣的數(shù)據(jù)而且還需要對這些數(shù)據(jù)進行類別標(biāo)注,這其中就包 括添加文本標(biāo)簽。但這樣的工作顯然太費人力,成本代價極其高昂。
為了解決這樣的問題,有兩種機器學(xué)習(xí)領(lǐng)域的技術(shù)發(fā)揮重要作用:主動學(xué)習(xí)技術(shù)和半監(jiān)督學(xué)習(xí)技術(shù)。
主動學(xué)習(xí)技術(shù),以圖像分類為例,就是利用少量已標(biāo)記的圖像去學(xué)習(xí)一個分類模型,然后根據(jù)這個模型對未標(biāo)記圖像進行分析。根據(jù)各種準則,分析這些未標(biāo) 記圖像中最不能判定是哪個類別的圖像,再交由人來分類標(biāo)記。隨著這個過程不斷進行,訓(xùn)練集不斷增大,當(dāng)要求的精度滿足時停止迭代,剩余的未標(biāo)記樣本就可以 通過之前學(xué)習(xí)到的分類模型全部自動分類,通過理論和大量實驗可知這樣需要人來參與分類標(biāo)記的圖像是很少的,這也就大大降低了成本。
半監(jiān)督學(xué)習(xí)技術(shù),與主動學(xué)習(xí)相比,其又利用了未標(biāo)記圖像的結(jié)構(gòu)信息—可能是圖像的流形信息,使得最后的判斷更加可靠。但研究所使用的數(shù)據(jù)集都不大, 如果將這些算法搬到大數(shù)據(jù)上所花費的時間成本也是巨大的。如果單靠一種分類器無法滿足性能要求時,我們就需要嘗試采用集成方法將多個分類器或多種不同分類 器進行結(jié)合來處理大規(guī)模數(shù)據(jù),如果再結(jié)合并行的思想將使集成方法更如虎添翼。
基于圖片內(nèi)容搜索的技術(shù)
雖然 Google 于 2008 年提出圖片直接搜索服務(wù),但那時其技術(shù)與其他競爭對手相比可真是差強人意。圖像直接搜索的老牌服務(wù)提供者是 TinEye , 自從 2008 年出現(xiàn)就要比 Google 的算法更加精確,可以非常精確的在整個互聯(lián)網(wǎng)上匹配到你需要的目標(biāo)圖像而且搜索速度非??臁O襁@種基于內(nèi)容的圖像搜索有很多好處,比如有時你根本不知道你想要搜索的對象叫什么,當(dāng)然也就無法通過文本去搜索。
而這種基于內(nèi)容的圖像檢索一般分為三步:
·將目標(biāo)圖片進行特征提取,主要就是通過各種特征提取算法比如目前最好的就是 SIFT 描述子(Descriptor ),這樣就不必對圖片進行像素級的處理減少運算量。
·將圖像特征進行編碼,并將海量圖像編碼做成庫或表。(如果目標(biāo)圖像分辨率很高,也可以進行下采樣減少運算量后再進行特征提取和編碼)。
·相似度匹配計算,利用目標(biāo)圖像的編碼值在圖像搜索引擎中的圖像庫進行全局或局部相似度計算,相似度高的預(yù)保留下來,然后可以進行進一步的篩選。得到的這些圖像也可以作為其他機器學(xué)習(xí)方法的訓(xùn)練數(shù)據(jù)集。
隨著這幾年圖像搜索技術(shù)的日趨成熟,Google 也全面改進了圖像搜索技術(shù),現(xiàn)在也可以實現(xiàn)基于內(nèi)容的圖像搜索,同 Tineye 類似也可以將圖片直接拖進搜索框中或者把圖像的 URL 地址直接復(fù)制進搜索框中,便可以得到相關(guān)圖像。
根據(jù) Neal Krawetz 博士的解釋,Google 采用了”感知哈希算法”(Perceptual hash algorithm),給每張圖片生成“指紋”,通過比較“指紋”的近似值,以找出相似的圖片。在這一過程中,Google 所做的事情包括:
縮小圖片尺寸:將圖片的尺寸縮小到 8 x 8,去除圖片細節(jié),保留基本結(jié)構(gòu)、明暗等信息;
·轉(zhuǎn)化色彩:將色彩轉(zhuǎn)化為 64 級灰度;
·計算平均值:計算所有像素的灰度平均值;
·比較像素的灰度:比較每個像素的灰度與灰度平均值之間的差異;
·計算哈希值:將比較結(jié)果組合在一起,便得到圖片的“指紋”信息。
【補充】Google 的這種方式也不能說十全十美——如果圖片中有干擾噪聲比如添加了文字或其他遮擋物,那搜索結(jié)果將很不一樣,因為哈希值會變得非常離譜,那個方法只能用來從 低像素的圖片搜高像素的圖片(要求哈希值幾乎相同),而不能搜到相關(guān)強的圖片(可能有適度的遮擋或文字等信息,哈希值大不相同),應(yīng)用范圍較為狹窄。
實例:用 Google 來按圖索驥
這里我們做了一個嘗試,將 Anne Hathaway 的這幅圖片作為目標(biāo)圖片,將其拖到 TinEye 和 Google 圖片搜索引擎中去搜索,注意如圖 1 所示,我們故意更改了圖片名稱(文字標(biāo)注)。圖 2 和圖 3 分別為 TinEye 與 Google 圖片搜索的結(jié)果。
圖 1 我們故意將圖片的名稱取作 Google Chrome.png
TinEye 的搜索結(jié)果
搜索的結(jié)果
可以看出,檢索結(jié)果都相當(dāng)精確,包括給出了圖片出自的網(wǎng)址,Google 圖片搜索甚至給出了圖片上人物姓名的猜測,雖然不是完全正確但也是相當(dāng)了不起了。 TinEye 的數(shù)據(jù)庫與 Google 的相比相對來說小些,相信不就的將來也會得到擴充。提供具有類似功能的還有諸如 Incogna 以及 百度識圖 等。
計算機看到的圖片不僅僅是成百上千的像素,其需要從中分析顏色,亮度,從而進行圖片的特征提取,以目前最具實力的 Google 為例,Google 采用了超大規(guī)模的實時并行計算。自 2010 年以來 Google 搜索引擎發(fā)生了重大變革,將其搜索遷移到了新的軟件平臺 Caffeine 使得搜索更加高效,其可以對來自互聯(lián)網(wǎng)的幾百億張圖片進行實時的圖像特征匹配,從而更加快速的反饋用戶相關(guān)的搜索結(jié)果。這些都需要大數(shù)據(jù)背景下機器學(xué)習(xí)等 技術(shù)作為堅實的后盾。而數(shù)據(jù)挖掘技術(shù)又是大數(shù)據(jù)背景下機器學(xué)習(xí)應(yīng)用的另一個重要領(lǐng)域。誰能盡早的向數(shù)據(jù)“掘金”,誰就能在今后的激烈競爭中先拔頭籌。
評論