CV+NLP,使用tf.Keras構建影像搜尋引擎

我爱计算机视觉發表於2019-11-20

今天跟大家推薦一個剛剛開源的使用tf.Keras深度學習技術構建影像搜尋引擎的開源專案,對於瞭解基於文字查詢和基於影像查詢影像搜尋都很有價值。

專案地址:

https://github.com/CVxTz/image_search_engine

專案開發者為法國FORTIA Financial Solutions公司的資料科學家Youness MANSAR。

基於文字查詢和基於影像例項進行影像搜尋影像檢索的兩種主要方式,面對僅有描述文字的弱監督資訊的海量網際網路影像,如何建立兩者之間的關係,同時實現上述兩種影像檢索方法,是很具有實用價值的技術。

作者在該專案中構建了兩種模型:

1. CV模型:ImageNet上預訓練的Resnet50 + GlobalMaxpooling2D,用於實現影像資訊編碼;

2. NLP模型:GRU+GlobalMaxpooling1D,用於實現文字資訊編碼;


CV+NLP,使用tf.Keras構建影像搜尋引擎


作者設計了一個整體模型,將影像資訊編碼和與之對應的文字資訊編碼結合起來,使其歐式距離儘量靠近,而影像和文字資訊不對應的資料,使他們得到的編碼歐式距離儘可能遠離。這就是作者設計的Loss的核心思想。


CV+NLP,使用tf.Keras構建影像搜尋引擎

在測試的使用:

1. 使用文字查詢時,使用NLP模型將文字對映到編碼空間,尋找與其距離接近的影像編碼,進而索引出近似影像;

2. 使用影像查詢時,使用CV模型將影像對映到影像編碼空間,直接比較影像間的編碼資訊歐式距離,進而索引出近似影像。

作者使用了50萬幅電子商務場景下的服飾影像和對應描述進行實驗。

http://jmcauley.ucsd.edu/data/amazon/

下圖展示了,作者將訓練得到的模型兩種編碼資訊降維到2維的視覺化結果(使用TSNE):

CV+NLP,使用tf.Keras構建影像搜尋引擎藍色代表影像編碼資訊,紅色代表文字編碼資訊,綠色連線代表他們是一對一的關係。連線方向很一致,表明作者設計的模型很好的實現了相似影像的聚攏、影像和文字關係的關聯。

下圖為使用文字查詢的結果:

CV+NLP,使用tf.Keras構建影像搜尋引擎


CV+NLP,使用tf.Keras構建影像搜尋引擎

返回的結果還是很明顯是強相關的。

下圖為使用影像查詢的結果:

CV+NLP,使用tf.Keras構建影像搜尋引擎

CV+NLP,使用tf.Keras構建影像搜尋引擎


檢索出得結果,款式和類別都是正確的,證明模型的確很有效。

這個專案還是很有意思的,將CV和NLP聯絡了起來,利用了網際網路上常見的資料資訊,屬於自監督學習的範疇,實現了還不錯的文字和影像商品檢索效果。

感謝作者開源,希望對你有幫助!

專案地址:

https://github.com/CVxTz/image_search_engine

我愛計算機視覺
我愛計算機視覺

關注計算機視覺與機器學習技術的最前沿,“有價值有深度”,分享開源技術與最新論文解讀,傳播計算機視覺與機器學習技術的業內最佳實踐。

相關文章