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