金城教授:基于手绘草图的图像检索技术研究
5 月 26 日下午,在第二十八期七牛云架構(gòu)師實踐日,金城教授進行了《基于手繪草圖的圖像檢索技術(shù)研究》為題的演講。本文是對演講內(nèi)容的整理。
作者介紹:
金城,復(fù)旦大學(xué)計算機科學(xué)技術(shù)學(xué)院教授、博士生導(dǎo)師金城。上海視頻技術(shù)與系統(tǒng)工程研究中心執(zhí)行副主任,上海市優(yōu)秀技術(shù)帶頭人,主要研究方向為圖像視頻信息處理、分析與檢索,圍繞視頻監(jiān)控、多媒體內(nèi)容挖掘與檢索,互動辨識等開展相關(guān)研究。
相信各位一直以來都用過非常多的圖像檢索方法,比如我們在百度里輸入一個關(guān)鍵詞或一張照片就可以找到一張圖。在這樣的使用過程中,大家都會面臨一個問題,那就是得到的結(jié)果可能亂七八糟,不一定是你想要的圖片。
而我們的圖像檢索和這樣的方式稍有區(qū)別,舉個例子,現(xiàn)在我想找張素材圖,這邊是座山,那邊是太陽,只能輸入太陽、山,不能輸入左邊是山、右邊是太陽,而且內(nèi)容可能比較亂。另一種情況就是用照片搜圖,通常是為了找到完全一樣的或更高精度的圖片時使用的,但要找到一張比較類似的就比較難,例如上傳小貓的圖片,出來的結(jié)果基本都是不同尺寸的圖片。或者是我家女兒畫畫,比如畫一只鞋子,然后就可以找到跟鞋子長得像的圖片,從而在淘寶上找到相應(yīng)的商品。也就是說,根據(jù)我女兒畫的草圖,可以在一個非常大的圖像庫里找到相應(yīng)的圖。
其實草圖很早以來就有非常多應(yīng)用了。比如上圖豐子愷大師的畫,很簡單的幾筆就能描述一個場景或一個故事。但我拿這個圖去百度圖像檢索,搜出來的肯定不會有月亮和茶壺、一個人坐在那里。于是我們就考慮,怎么解決這個問題。
上圖是最古老的古埃及象形文字,跟我們古代的經(jīng)文、甲骨文非常相似,同屬象形文字。這是我們做這個事情的一個有趣出發(fā)點。
上圖是在印度尼西亞某個山洞里拍攝的,是一副我們先人在巖洞里畫的畫。左邊是 3.5 萬多年前的一只豬,右上角是一個人把自己的手放上去畫了一張圖片。這兩張圖雖然出現(xiàn)在一起,但隔了大概 4 千年。這個豬現(xiàn)在還能找到。
由照片可見他們寫實水平還是可以的,畫的樣子非常像豬。那么我們不禁暢想:有沒有可能找到巖畫的考古現(xiàn)場,就能直接通過圖形找到網(wǎng)上的照片?這是很有趣的事情。
如果說剛才的圖畫得還不夠好,那么上圖就已經(jīng)很清楚了,這個動物有角,身上有很多毛,感覺繪畫水平有提升。但其實這張圖更早,大概距今 4 萬年前,和上圖一樣的是,這張圖現(xiàn)實里也有相應(yīng)的動物。
而在繪畫水平不夠好的情況下,我們掏出手機畫個畫,能不能找到跟這個畫相似的東西?比如小朋友到博物館,一定非常無聊。所以我們想,有沒有可能搞一個大屏幕,讓孩子可以畫畫,畫出來一個碗,然后告訴他,這個博物館有這樣的碗,這就是一個比較好玩比較酷的事情。
以上這些想法,就是我們當(dāng)時做這件事情的動機。
我們看這個問題具體是什么樣的?
我們自己手畫的圖,一看就知道,第一個是埃菲爾鐵塔,中間是金字塔,最右邊是有很多柱子的古羅馬建筑。那能不能從庫里把類似的圖片找到?我們跟以前的檢索有著不一樣的輸入方式,從而是可以找到的。在網(wǎng)上抓圖的時候,有很多圖像標簽文字,而事實上百度、Google,任何搜索引擎的大部分方式,就有這張圖以及文字、標簽。以前在百度里做圖像檢索,輸入標簽,事實上是這張圖里出現(xiàn)過的或者語義上相似的。通過這些文字才可以找到,但它并不知道這是一個金字塔還是什么。
我們要做的事情,就是輸入圖以后,找到一系列的圖,里面有些是 Relevance 相關(guān)性的。然后下面打個分,1 表示是相關(guān)的,0.8 可能不是那么相關(guān)。輸入這個圖,正確的 Relevance 應(yīng)該是 0.96 是最像的。后面的金字塔可能因為只是兩邊的樣子比較像,所以是 0.82。我們希望輸入一個草圖,從一個庫里找到一系列這樣的圖,然后按相關(guān)性排序,這是我們的任務(wù)。
我們做了一個方法,如下圖所示:
它分成線上線下兩個部分。離線部分有數(shù)量龐大的圖像庫,我們首先把其中的圖片轉(zhuǎn)化為類似草圖一樣的圖,這樣的圖才能做有效的對比。然后我們對它提取特征,畫出來的圖也會在同樣的網(wǎng)絡(luò)里提取特征,兩相比較就能得到一個排序。但有的時候我們覺得,這個排序不一定完全靠譜,所以我們會重新做一次排序,把真正相關(guān)的排在前面。
這里面有三個核心問題:
第一,怎么把彩圖變成草圖?
第二,特征怎么提取?
第三,怎么做重新排序?
我們用搜索引擎會發(fā)現(xiàn),很多圖像檢索的結(jié)果很差。我們希望輸入這個“埃菲爾鐵塔”,別出來奇怪的結(jié)果,或者至少奇怪的結(jié)果排在后面。為了達到這樣的目的我們是這么做的:
首先就是做到類似草圖的樣子,比較簡單的思路就是邊緣特征。目標是從照片變成像手繪一樣的圖。當(dāng)然邊緣有很多不同的方法,這是一種提取的方法,但里面還是有很多的雜質(zhì)以及噪聲。我們用這個方法,加強了外輪廓的概念,把相應(yīng)的背景噪聲和細節(jié)噪聲去掉。類似于草圖的生成,這是我們的第一步工作。
有了剛才的圖,然后開始對它提一些特征。我們可以這么理解特征:有兩張圖片看上去差異非常大,但我們?nèi)绻M@兩張圖片是某一張圖片,它一定在某個特征上是一樣的,或者說把它們從一個很高維度的空間轉(zhuǎn)化到一個維度空間的時候,是一個點。比如二十個幼兒園小朋友,可以分成男生、女生,雖然男生之間長得不一樣,但他們的共同特征是男性。這樣就從人的高位空間,直接映射到了一個一維空間。所以我們要找到一個有效特征來證明這兩個東西是一樣的。同時另外重要的是,如果是不一樣的,在新的空間里應(yīng)該盡可能遠離。
接下來我們提取草圖圖像里的很多局部的小塊,輸入網(wǎng)絡(luò)。這是里面的細節(jié),同時整張圖也很重要,我們用了一個專門的網(wǎng)絡(luò),把兩部分得到的相應(yīng)的小特征再進行整合。這個網(wǎng)絡(luò)的特點,就是希望所有的輸入經(jīng)過某個網(wǎng)絡(luò)變換以后,能得到被壓縮或提取過的新特征,這個特征值通過完全相同的逆向操作能還原回來。好比一個加密和解密的過程。這樣如果能做到加密以及解密,我們就認為這個特征很好地保留了原來的信息,同時又能做到一定程度的壓縮。這就是一個比較好的特征。
然后我們需要做 Re-ranking optimization 重排序的優(yōu)化。
傳統(tǒng)的工作,我們可能得到這樣的排序結(jié)果,有什么辦法把排序做得更好?一個比較簡單的方法,這幾張圖本身長得就很相似,可以把所有的圖根據(jù)表面相似性進行聚類。這個方法如果靠譜,排在前面的圖中,大部分應(yīng)該確實是這個圖的內(nèi)容,這是我們一個假設(shè)。如果這樣,就可以進行聚類。聚類以后數(shù)個數(shù)或是計算某個值,就可以判定某類比較相似,這樣就可以把這類的圖片權(quán)重進行調(diào)整,然后得到最終結(jié)果,有的排在前面,有的被排在后面。
比如說搜“埃菲爾鐵塔”,旁邊可能站著某個美女,你進行聚類,就會知道長得像埃菲爾鐵塔的圖會往前排,而有美女的應(yīng)該會往后排,這是一個 Re-ranking 的方式。
這是青花瓷的圖,我們抓了一張博物館的圖,有 9 百張照片以及 10 萬張其他的照片,大概 30 個不同的樣子。我們的結(jié)果,左邊顯示的是輸入這個圖以后前 8 個沒有做 Re-ranking 的結(jié)果,右邊的是做了 Re-ranking 以后的結(jié)果。基本效果就是輸入這個圖,蝴蝶就會排到很后面,碗可能也排在后面。
這個工作需要量化分析,所以我們定了一個怎么量化看效果的工作。比較簡單的方式,前 8 個里有 6 個是的。我們跟其他的方法做比較,總的來說效果還是排在前面的。
做完這個事情我的研究生問我,接下來需要做什么?我說再想想這個事情還有什么可以再挖一下的。我們想了很久,發(fā)現(xiàn)圖片或素材本身,不光有圖像本身,有時候還帶有標簽信息、文字信息。為了把圖像本身和文字信息、甚至草圖本身用起來,我們又做了一個事情。
跟前面不一樣,除了原圖,我們還把它的草圖也放進來,然后把標簽也放進去。這個時候出現(xiàn)了不同的特征,有的是視覺上的特征,有的是跟文本相關(guān)的特征,我們需要把它融合到某個區(qū)域里。三個不同的特征,你要一起用的時候,就必須考慮怎么把它有效融合,因為它們可能是完全不一樣的語義內(nèi)容。
融合的思路很簡單,就是怎么映射到新的空間,使得相關(guān)的內(nèi)容盡可能接近。
第一就是怎么做到多模態(tài)特征的生成;
第二是怎么做到合在一起,映射到一個有效的空間里;
第三就是怎么做搜索優(yōu)化。
搜索的時候我們可能只有草圖的輸入,它的特征提出來,跟某一個可能比較類似,也會被映射到空間里,我們就找這個空間里跟它最接近的幾個。
怎么做這個特征?第一是圖特征,草圖也可以用剛才的方法做,第三個是文本。所以我們借鑒了自然語言理解的進展做這個事情,比如扇子,有中國的扇子,還有書法標簽,每個圖都可能有幾個標簽。這個時候,我們就做向量,把所有的標簽放在這邊,然后數(shù)。
拿最后的圖作為一個例子,以 Chinese 這個標簽做例子,我們可以生成一個向量,針對 Chinese 的第一張圖有,第二張圖就沒有。現(xiàn)在要做的事情,就是把它有效融合起來,2/3 個圖里有這個標簽,所以我們做了特殊的權(quán)重設(shè)計,使得它能對不同的標簽做加權(quán)和。這樣就能對詞的文本特征提取出一個相應(yīng)的特征值出來。這是我們在文本方面做的工作。
現(xiàn)在有三個不同的特征了,然后就要找到一個合適的方法。用 MDCCA 的方法,映射到同樣的一個維度空間里,使得同一個物品的三個特征在新空間里盡可能接近,而跟其他不一樣物品的特征盡可能遠離。
然后就是做比對。
最簡單的,就是每個特征跟輸入值的特征一一比較,這些特征都是在映射到新空間里的比較,然后比較完,每個特征的相似度就要乘以權(quán)重,然后加權(quán)得到最后的相似度。我們用了一個比較復(fù)雜的方法,數(shù)據(jù)庫里每張圖都做輸入,對庫里每個結(jié)果算出一個值,把這個值復(fù)制一下,然后做對比。這樣不管用什么方法,都能得到一個排好序的結(jié)果。最前面的是比較靠譜的,就當(dāng)作是正向值,后面幾個最不像的就當(dāng)負向值,然后訓(xùn)練比較這三個新的值,得到相似度的重新排序。然后就是做效果,我們改變了一下算分的模式,前面很簡單,就是每個都求一個百分比,這次我們把錯的那張圖,或者不相關(guān)的圖出現(xiàn)的位置也考慮進去了。比如我輸入一張圖,得到結(jié)果以后,會計算一個不一樣的 Precision。相關(guān)的就是 1,不相關(guān)的就是 0。乘起來,最后得到一個 85% 左右的 AP 值。我們希望錯誤的圖出現(xiàn)在越早的地方,懲罰度就越高,按這樣的思路去設(shè)計。
這是我們實驗輸入不同的草圖得到的結(jié)果。基本還是比較靠譜。有些是錯的,比如多了一個腳;比如東方明珠,有個別是埃菲爾鐵塔的圖片;比如悉尼歌劇院,出現(xiàn)了向日葵。還是有很多錯的地方,但是做圖像檢索,前面幾幅圖確實跟原圖非常相似。后面我們也加入了跟位置相關(guān)的分析。
這是博物館數(shù)據(jù)的結(jié)果,也有一些亂入的情況。我覺得它的本意應(yīng)該是書一樣的東西,但這個結(jié)果,你說它錯也不能完全這樣說,因為體現(xiàn)的是不同的特征。這是草圖的,還有文本的,還有 image 本身的,特征越多,效果就越好。
活干完以后,學(xué)生又問我,這個事做完了,下面該怎么做?我們就想,圖的信息用了,文字信息也用了,效果不好,那是什么原因?然后我們發(fā)現(xiàn)還是有 bug 的。
比如這張照片,是一只小貓?zhí)稍谀抢铩G懊娴氖且粋€個不相關(guān)的詞,現(xiàn)在是句子,可能更接近于我們現(xiàn)實生活中的圖像數(shù)據(jù)。比如我們發(fā)圖到朋友圈,都是在為各大運營廠商提供大量的數(shù)據(jù)標簽,比如你發(fā)圖說陸家嘴風(fēng)景好,它就會記下來。這是一個小貓,還有一個羊站在草坪上。然后有個人畫了一張圖,你說是貓也沒有錯,說是羊也沒有錯,但看上去,更像一只貓,有兩個尖耳朵,還有胡子。這個時候就有語義的問題了,不光是簡單的標簽,可能是一個句子怎么做理解的問題。
我們這次就不再分復(fù)雜的文本特征或是圖像本身特征或草圖特征了。所以我們在文本上針對文本句子內(nèi)容,提取出一系列相應(yīng)的特征。然后草圖進來,就只有 CNN 的特征了。然后再進行約束,一方面希望盡可能分類準確,另外希望盡可能在視覺相關(guān)性上是相關(guān)的,盡可能長得像,分得對,要達到一個平衡。也要有一個參數(shù)來平衡 loss 的內(nèi)容。
我們做了加權(quán),用了 Skip-thought Model,給定一個句子,經(jīng)過某個特征提取出來以后,能生成它前面和后面的句子。這聽上去好像很 bug,但各位如果對文本領(lǐng)域的新進展比較了解,就再也不要相信某些點評網(wǎng)站上的評論了。因為現(xiàn)在的評論都可以生成,海量的評論可以生成出來。給我一個句子、主題,就能生成一段話,告訴你這家餐廳的菜特別好吃,服務(wù)員也熱情,或者說牛排好吃。現(xiàn)在文本領(lǐng)域的進展非常驚人,我們希望能用相應(yīng)的文字,生成上一句、下一句,并回到原來的文字,這樣提取一個比較好的語義。其他的東西,幾乎沒有什么變化,這里面最大的變化,就是對整句語句、文字內(nèi)容進行分析。這次我們換了一個數(shù)據(jù)集,每個圖片都有一個草圖,同時有一句話來描述它的內(nèi)容。
這是 Sketch,有 125 個不同的 object,每個有 100 張照片,請不同的人來畫草圖,每個飛機會找 5 個人左右來畫,一共 7 萬多個不同的 sketch。我們希望能輸入這樣的圖,找到相應(yīng)的結(jié)果。
這次跟前面不一樣,因為這次有強的語句描述,所以我們希望盡可能 Top1 就是結(jié)果。我們得到的情況,有些圖太 bug 了,什么腦洞才能畫出來?這里面所有的圖都是當(dāng)年照著圖畫的,我只是抽了里面的某個 sketch,希望找到原圖。事實上確實是當(dāng)年畫出來的,但這個結(jié)果太不一樣了。還有一些不太對的結(jié)果,比如一把傘,還有海龜,我們找到的跟它也是比較類似的。總的來說效果還挺好。
我們進行比較。最上面的是 human,就是找?guī)讉€學(xué)生過來,拿草圖去找到底是哪張圖,在 Top1 的人大概 54%。
做完以后我們又在想,是否可能把位置信息融進去。所有的檢索結(jié)果,都是同一物體,現(xiàn)在我們希望再把不同的物體結(jié)合起來做一個內(nèi)容。另外我們在做很多相關(guān)的研究,比如人臉識別和其他的一些應(yīng)用。如果大家感興趣,可以隨時跟我們來交流。
from:?http://dy.163.com/v2/article/detail/DK72U6KG0518CKJC.html
《新程序員》:云原生和全面數(shù)字化實踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的金城教授:基于手绘草图的图像检索技术研究的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 机器视觉:makefile编译调用Caf
- 下一篇: 重磅开源人工智能大型场景草图数据集图像检