圖像檢索(一):因緣際會與前瞻

之前因為學習Keras的緣故,看到一個圖像檢索的Demo,代碼實現了輸入一張查詢照片,檢索出最相似的n張照片的效果。

進而用t-SNE將所有照片降至2維,以便可視化並觀察相似照片是否聚集到了一起。下圖是我「復現」了Demo後,一千張圖像可視化的結果:可以看到右上角是人臉肖像簇;左邊是摩托車簇;左下角是飛機簇等等,效果還不錯。

最初看到這個demo,我非常興奮,興奮的原因大概有兩點。其一是好幾年前有這樣一篇

令我至今難忘文章——《你說你看過2000部電影,我笑笑說我也是》,文中介紹了法國博主Christophe Courtois對諸多相似風格的電影海報進行了整理。

舉幾個例子: 背靠背的兩個人

下方的海灘與上方浮現的人物:

分開的雙腿:

滲人的眼睛:

可以看出確實有很多相似的套路,如此說來設計海報也不是件多難的事嘛?!(設計師看了想打人)。不同類型的電影題材會有各自傾向的海報風格,這也並不是多眼前一亮的結論。但上述所引終歸是多年前的文章以及他人的歸納結果,對於閱片量並不大的我來說,更好奇的是,能否通過爬取電影海報(或其他主題,比如音樂專輯照片等)並結合文章開頭的技術來挖掘出類似的結論,或者找到更多不曾被人歸納的風格。

為此我專門爬取了豆瓣電影「Top250」「分類排行榜」的數據(後者通過md5值刪除重複海報後從3853張降到2281張)分別進行了研究,這部分從爬蟲代碼、爬取的數據、海報檢索以及可視化的內容均會在本系列後續文章中涉及。

其二是2017年11月公眾號上看到小火的清華美院的向帆老師在一席演講的視頻與文稿《如果把每年的春晚都像蚊香一樣捲起來的話,它就是這樣的》,各種酷炫的可視化作品令人嘆為觀止,非常推薦大家看一下此視頻。相關作品也可到此網站查看。

2001-2014年歷年春晚「蚊香圖」:

春晚時光的調色盤:

國內外大學院系組織結構可視化:

歷年全國美展獲獎作品可視化研究:

當時看完久久不能平靜,想著離2018年春晚還早,要是能了解下這些作品都是怎麼做出來的,然後趁著過年時「不鳴則已,一鳴驚人」下,也是美滋滋哈。但搜尋後卻發現可能用到的軟體等似乎蠻難上手,現今也記不得許多,唯有那會第一次知道「t-SNE」可以用來可視化高維數據這件事,覺得挺神奇的就存了些圖。

但也並不清楚背後的數學原理以及具體如何操作照片數據集。以下以動畫的方式直觀感受下使用t-SNE後MNIST手寫數字類別不斷分開的過程。

所謂:「念念不忘,必有迴響」。一切因緣際會,萬沒想到卻在學Keras時都撞上了。那麼,這Keras又是什麼東西呢?

簡單的說,Keras 就是一個深度學習的python 庫,可以以Tensorflow、Theano 以及CNTK 為後端。它簡單易用,能像搭積木一般構建神經網路,對於新手小白而言,是最易上手深度學習的庫,沒有之一。

怎麼個簡單易用,本文暫且不表,後續系列再來講解。你可能又會好奇,標題不是說好了介紹圖像檢索的嘛,怎麼又扯到深度學習上了,到底是如何實現檢索出相似圖像,如何用t-SNE對海量圖像進行可視化的呢?這其中的緣故,且聽我慢慢道來。

深度學習、卷積神經網路有多火,想必大家都是知道的。但對於不曾了解過其原理的人而言,或許會覺得是很艱深晦澀、很高大上的事。如果一上來看到下面這樣的圖,心情一定不會美妙,一臉懵逼,這tm是個啥。

本文當然不會過多涉及這部分講解,感興趣的小夥伴可以閱讀下這兩個不錯的知乎話題,看完你就比90%的人清楚CNN到底是怎麼回事了: 能否對卷積神經網路工作原理做一個直觀的解釋? 和 CNN(卷積神經網路)是什麼?有入門簡介或文章嗎?

那麼原本用於圖像識別,比如識別一張圖像到底是貓還是狗的卷積神經網路,又是怎麼結合到圖像檢索上的呢?以下圖為例,CNN可以看成是特徵提取和分類器兩部分,通過一層層的神經網路對圖像逐漸提取出抽象的特徵,有了特徵就有了可以區分和評判的指標,分類器就能識別出是貓還是狗了。

而如果把分類器去掉,用剩下的特徵提取器對海量圖像分別提取特徵,並藉助餘弦相似度等衡量指標,我們就能實現上述的圖像檢索效果了。類似流程圖大致如下,相關閱讀:《基於deep learning的快速圖像檢索系統》:

經過上述的介紹,你就對圖像檢索有了一定的了解,如果非常技癢,可以直接看Demo的代碼:Image Search。當然後續我也會基於此繼續更新本系列文章,涉及原始代碼一些小BUG的修改與復現、豆瓣電影海報的爬取與研究、以及Keras的更多介紹、基於內容的圖像檢索(CBIR)的更多細節,以及可能的改進方向等等。敬請期待。

PS:歡迎關注公眾號:牛衣古柳(ID:Deserts-X),以及歡迎加QQ群:Python交友娛樂會所(613176398)哈。娛樂會所,沒有嫩模。

推薦閱讀:

TAG:深度學習DeepLearning | 計算機視覺 | 圖像檢索 |