首次披露!拍立淘技術框架及核心算法,日均UV超千萬
近期,穀歌工程師為何瘋狂迷上阿裏郎的鞋?一文引發關注,以“拍立淘”為代表的計算機圖像技術讓業內人士稱讚不已。以圖搜圖,是通過搜索圖像內容或者視覺特征,為用戶提供互聯網上相關圖像資料檢索服務的專業搜索引擎,是搜索引擎的一種細分。
移動端的以圖搜圖是一代又一代的圖像人,搜索人的夢想。從90年代開始,學術界,工業界做了很多的努力和嚐試。拍立淘從2014年首次上線之後,通過產品技術的不斷打磨,已經成為淘寶每天超過千萬UV的應用。在業務指標的增長的同時,沉澱下來了業界領先的圖搜算法。
我們的目標不僅僅是滿足用戶以圖搜圖的好奇心,更是要讓用戶通過拍照,搜索到淘寶同款或者相似寶貝,簡化用戶的購物流程,讓以圖搜圖發揮真正的商業價值。
拍立淘從2014年上線以來,從最初的每天幾百UV到如今的每天超過千萬UV。拍立淘的穩定增長標誌著消費者對以圖搜圖電商搜索的認可。與傳統的基於文字搜索的電商搜索相比,拍立淘隻需要用戶隨手拍一張照片,省去了繁瑣的文字描述,簡化了用戶的購物流程,大大提高了電商購物的體驗。
拍立淘目前覆蓋幾乎淘寶所有的實體類目:比如衣服,鞋,箱包,瓶飲,配飾,家具,電子,零食,美妝,水果等。
拍立淘的圖像搜索和識別技術已經走出阿裏集團,向集團外的公司輸出,比如三星旗艦手機S8在係統層麵集成了拍立淘,用於相機和相冊。
位於海外的客戶,也可以通過AliExpress中集成的拍照購物功能,來享受拍照購物的便捷。
拍立淘存在典型的技術驅動,在過去的三年多時間,我們不斷得通過技術的突破,來實驗了業務的增長。
離線流程:主要是指拍立淘每天離線構建索引庫的整個流程,涉及選品、離線摳圖、離線抽取特征、構建索引等環節。執行完畢之後,每天會在規定時間完成線上圖庫的更新。
在線流程:主要是指用戶一張query圖上傳之後,到最後返回結果的整個中間過程,包含在線類目識別,在線摳圖,在線特征提取和在線索引查詢等關鍵步驟。
阿裏集團內有海量的商品類目和圖片,包含寶貝的主圖、SKU、副圖、曬單圖和詳情圖等,涵蓋電商領域的各個方麵。如何從這些海量圖片中選出用戶最喜歡,最想買的寶貝是一件很有意思的工作。
我們首先會根據購物偏好和品質進行全淘圖片庫的過濾;由於淘寶上相同或者高度相似的寶貝太多,如果不處理的話,最後的搜索結果中就會出現大量一模一樣的寶貝,用戶體驗很差。因此在做完過濾之後,我們增加了圖片去重模塊,目的是把一模一樣或者高度相似的寶貝去重,優化最後的展示;最後,我們會結合運營需求,給最近一段時間做活動的寶貝打上運營標記。
拍立淘類目是對淘寶葉子類目的一種劃分,既需考慮一定的視覺相似性,又需考慮一定的語義相似性。類目體係不僅僅是個技術問題,也是個業務問題(有利於消費者認知)。目前拍立淘有14個大類,涵蓋全淘所有葉子類目
因為商品的背景複雜,主體常常較小,所以為了減少大量背景幹擾和多主體的影響,因此需要將搜索目標從圖像中提取出來。下麵兩幅圖反應了對於用戶的query,進行主體檢測和不進行主體檢測的搜索結果差異。
第一幅圖沒有由於進行摳圖,搜索結果中背景幹擾比較明顯,都出現了綠色的背景,而用戶真正關心的主體衣服的搜索質量則很差。第二幅圖進行摳圖之後,搜索結果有了非常顯著的提高,主體衣服的匹配程度非常高。
拍立淘的圖像特征包括深度特征和局部特征。
深度特征:基於深度學習框架學習出來的圖像表示。目前深度學習在圖像、語音等領域取得了重大突破,基於深度學習的圖像表示在很多任務上已經完勝傳統圖像特征。拍立淘從立項之初就開始研究深度特征,在這方麵積累了大量的經驗,這也使得特征成為拍立淘核心競爭力之一,具體細節詳見後續章節。
局部特征:局部特征是圖像特征的局部表達,它反應的是圖像具有的局部特殊性。拍立淘在常見的局部特征基礎上進行改進,不僅進行維度壓縮,還優化提取速度,同時保證匹配精度不下降。
索引的流程可以分成離線和在線兩部分。離線過程對商品圖像特征構建索引,在線過程對用戶query進行分布式的快速查詢。
在線查詢流程主要分為:粗召回 -> 積召回-> 歐式排序 -> 精排。
拍立淘目前的索引數據量有幾十億,如何高效的構建索引,同時保證在線查詢的精度是一個非常具有挑戰性的任務,拍立淘在這方麵做了很多工作,詳見後續章節。
深度特征從高層提取信息,關注語義鴻溝;局部特征關注圖像的局部信息。如果將兩者有效的結合起來,相輔相成,既能保證語義上的相似性,又能保證局部細節的匹配,因此我們在索引召回之後,會再進行一次排序,將深度特征和局部特征結合在一起。我們會學習一個ranking function,給深度特征和局部特征分配不同的比重,基於最後的score對索引返回結果做二次排序。
上述是拍立淘的各個模塊的介紹,下麵我們會就拍立淘的三個核心技術:實拍圖精度提升;超大規模的向量檢索索引;移動端DL進行進一步的描述。
拍立淘核心技術
非實拍圖主要是指拍攝清晰,背景簡單的圖片,其中大部分來自淘寶寶貝的原圖。對於這種圖片,拍立淘的精度已經做的很高。但是對於一個以圖搜圖商業應用,真正的挑戰來自占比用戶query大量的實拍圖,這類圖和非實拍圖差距很大,具有光照,角度,多主體等各種問題。
為了把實拍圖做好,拍立淘不斷突破,在各個類目上都有非常顯著的提升。
1.數據“掘地三尺”
數據方麵,我們利用了拍立淘log數據,曬單數據和主搜i2i數據。並構建相應的深度學習模型進行特征訓練。
在拍立淘的場景,我們發現用戶的點擊等有效行為大多是針對於同款,因此我們對PVLOG進行挖掘,噪聲過濾,形成triplet來進行特征的訓練。拍立淘每天產生海量的圖像數據,通過構建基於實拍圖的deep pairwise ranking特征學習框架,大幅度提高了實拍圖的搜索效果。
曬單圖可以作為一個用戶真實實拍圖的近似。目前淘寶上有大量用戶上傳的曬單圖,但曬單圖中含有大量的噪聲數據。我們先會通過相似度矩陣濾除那些相似度較低的噪聲數據。接著我們訓練一個同款分類的分類器,由此得到的特征能提高實拍圖的精度。
由於同一用戶在同一時間段內點擊的寶貝具有一定的相似度。通過挖掘主搜的i2i點擊數據,形成虛擬label進行深度學習得到的中間層表達也可以作為一種特征表示,用於相似度排序。
除了通過提高特征本身的效果來提高實拍圖的精度外,提高實拍圖效果的另外一個途徑是利用實拍圖片來擴充我們的data space,使得整個圖搜係統越來越智能。通過下圖所示,通過主圖+曬單圖+LOG圖擴充data space,加以distance度量,可以使得同款率提升。
2.升級深度學習
深度學習方麵,我們通過Loss函數,網絡結構和特征排序框架繼續進行創新和突破。
1. 首先我們采用了deeppairwise ranking特征學習框架來學習我們的深度特征:
其次我們采用了屬性label和虛擬label訓練框架來訓練精排的深度特征:
另外,在類目識別方麵,為了進一步提高分類精度,我們采用層次化的類目識別:
除了拍立淘的大類目之外,還多任務訓練一級類目和葉子類目。這種多任務層次化的結構可以進一步提高拍立淘類目預測的精度。
為了涵蓋更多更廣的數據源,我們要打造一個容納百億級別數據量的拍立淘,麵臨的挑戰包括:特征抽取的提速和特征降維;和離線構建索引的提速與查詢召回的保證。
- 特征抽取的提速和特征降維
當數據量達到百億級別時,如果特征抽取效率不高的話,離線抽取特征的時間就會變成非常長;其次,在線引擎中硬盤和內存的存儲也是一個問題。
為了解決這一問題,在保證特征精度的情況下,通過對深度學習網絡框架的調整,我們將拍立淘的特征的維度,壓縮到了原來的1/4,並通過卷積加速、並行計算等策略實現了一倍的提速。
- 離線構建索引的提速與查詢召回的保證
數據量爆炸式的增長,對離線構建索引也是一個挑戰。拍立淘最初對6KW數據的處理,光聚類就要超過10h以上,而且失敗率很高。另外,數據量的增長,會導致引擎召回的不斷下降。
在離線構建索引效率方麵,我們首先采用圖計算框架提速積量化和粗量化,將資源消耗降為原來的1/3;同時用Onepass K-means優化原始的K-means,在保證效果的前提下,大大壓縮了聚類的時間。離線構建索引效率整體提速超過10+倍。
對於引擎召回,我們首先將“近似粗量化”優化成真正的粗量化,同時用積中心近似表達粗中心,從而達到增加中心點而不增加召回時間的效果。在拍立淘的大部分類目中,我們的索引召回和線性召回已經基本一致。
除此以外,工程架構的優化也是非常重要的。離線係統的優化對整個拍立淘流程非常重要,包括對各個算法模塊調度機製的優化和性能的提升。最新的離線係統已經支持混布集群,最大化資源的利用。
隨著高端手機的日益普及,越來越多的任務可以直接放到移動端執行,這樣不僅可以減少圖片上傳帶來的時間延遲,同時還可以降低server端的計算成本。
目前拍立淘已經上線移動端的類目預測和物體檢測,後續會有更多的任務放到移動端。采用的核心技術包括卷積的提速,DL網絡的裁剪和模型壓縮等等。
拍立淘-以圖搜圖一路走來,得益於算法/工程/產品的充分配合,得益於算法,數據,計算三位一體和大量的用戶使用。目前部分解決了用戶的拍照搜索需求,但是距離充分滿足用戶的需求還有一定的距離。項目組正在不斷優化,從各個角度去提高。
啟磐,現任阿裏巴巴資深算法專家/技術總監。他是拍立淘以圖搜圖的算法leader和初創核心之一。他的研究領域包括:深度學習和計算機視覺等。他博士畢業於美國伊利諾伊大學芝加哥分校,加入阿裏之前,他先後在美國三菱研究院和北京富士通研發中心從事視覺的研發工作。
來源:阿裏技術
原文鏈接
最後更新:2017-08-13 22:29:46