今天跟大家推薦一個剛剛開源的使用tf.Keras深度學習技術構建影像搜尋引擎的開源專案,對於瞭解基於文字查詢和基於影像查詢的影像搜尋都很有價值。
專案地址:
https://github.com/CVxTz/image_search_engine
專案開發者為法國FORTIA Financial Solutions公司的資料科學家Youness MANSAR。
基於文字查詢和基於影像例項進行影像搜尋是影像檢索的兩種主要方式,面對僅有描述文字的弱監督資訊的海量網際網路影像,如何建立兩者之間的關係,同時實現上述兩種影像檢索方法,是很具有實用價值的技術。
作者在該專案中構建了兩種模型:
1. CV模型:ImageNet上預訓練的Resnet50 + GlobalMaxpooling2D,用於實現影像資訊編碼;
2. NLP模型:GRU+GlobalMaxpooling1D,用於實現文字資訊編碼;
作者設計了一個整體模型,將影像資訊編碼和與之對應的文字資訊編碼結合起來,使其歐式距離儘量靠近,而影像和文字資訊不對應的資料,使他們得到的編碼歐式距離儘可能遠離。這就是作者設計的Loss的核心思想。
在測試的使用:
1. 使用文字查詢時,使用NLP模型將文字對映到編碼空間,尋找與其距離接近的影像編碼,進而索引出近似影像;
2. 使用影像查詢時,使用CV模型將影像對映到影像編碼空間,直接比較影像間的編碼資訊歐式距離,進而索引出近似影像。
作者使用了50萬幅電子商務場景下的服飾影像和對應描述進行實驗。
http://jmcauley.ucsd.edu/data/amazon/
下圖展示了,作者將訓練得到的模型兩種編碼資訊降維到2維的視覺化結果(使用TSNE):
藍色代表影像編碼資訊,紅色代表文字編碼資訊,綠色連線代表他們是一對一的關係。連線方向很一致,表明作者設計的模型很好的實現了相似影像的聚攏、影像和文字關係的關聯。
下圖為使用文字查詢的結果:
返回的結果還是很明顯是強相關的。
下圖為使用影像查詢的結果:
檢索出得結果,款式和類別都是正確的,證明模型的確很有效。
這個專案還是很有意思的,將CV和NLP聯絡了起來,利用了網際網路上常見的資料資訊,屬於自監督學習的範疇,實現了還不錯的文字和影像商品檢索效果。
感謝作者開源,希望對你有幫助!
專案地址:
https://github.com/CVxTz/image_search_engine