我們很榮幸於2018年11月2日參加ODSC West 2018的視覺搜索分會討論,這篇文章是我們對發表在KDD2017上的論文“eBay視覺搜索(Visual Search at eBay)”的總結。
假設你在一個看起來像一個大倉庫的商店中,有許多用正整數標記的通道。eBay在任何特定時間都有超過1B的活躍商品列表。所以,如果eBay是這樣一家商店,它看起來就像1999年的電影《黑客帝國》中的無限儲藏室。假設你有一張打印出來的管道零件目錄,而你不知道你所尋找的零件的型號。你找到店員,指着紙上的零件圖片。店員給你說了幾個通道,比如說183, 5276, 14098號通道。如果沒有這個信息,你必須經過每個通道,然後將管道的圖片與通道上的每個項目進行比較才能找到你所要的零件。
如果這些零件看起來非常相似,這個比較任務就會變得非常複雜。在這種情況下,你需要注意每個細節,如顏色、形狀、大小、品牌、包裝等。如果通道是按商品的類型組織的,那麼你可以從每個通道中大致查看一些商品,然後在相關的通道上花更多的時間去尋找。這是一項非常複雜的任務,如果你錯過了感興趣的項目,你可能需要把所有通道查找很多遍才能找到它。對於大規模搜索情況,算法搜索從本質上簡化了這個過程。
正如我們的KDD論文中提到的,我們訓練一個神經網絡,從給定的圖像中預測葉子類別(如圖1所示)。這些葉子類別很像我們的“倉庫”中不同的通道。這個基於神經網絡的分類器就像我們的店員識別商品可能處在的通道位置。我們使用神經網絡中Softmax層預測的概率,選擇前幾個預測概率最高的葉子類別。
一旦我們找到了通道,我們需要知道如何比較兩個圖像(查詢項目和貨架上的項目)。我們用一個緊湊的簽名來表示每幅圖像,這個簽名由一組數字組成的矢量表示。這個簽名由相同的弱監督神經網絡來提取。我們通過訓練帶有Sigmoid層的網絡來預測葉子類別,提取二進制失量(由1和0組成)。我們發現最好在所有的步驟中儘可能多地使用監督信息。由於對於每一個葉子類別,我們有許多多樣的數據,所以我們訓練網絡來預測葉子類別。
你可以看下ECCV2018的“探索弱監督預訓練的極限(Exploring the Limits of Weakly Supervised Pretraining)”論文,以瞭解預訓練大型網絡並遷移到其他任務的強大能力。這種弱監督以及訓練期間的數據擴充(如裁剪、翻轉、旋轉)能夠幫助網絡忽略圖像背景,並更多地關注圖像的關鍵部分,從而產生緊湊的語義簽名。這些簽名容易進行對比。在二進制表示的情況下,例如本文的情況,我們可以基於漢明距離來計算匹配的比特位數。漢明距離相似性可以用來排序葉子類別中匹配的項目。匹配的比特位越多,匹配程度越高。
在大規模的商業視覺搜索中我們面臨的主要挑戰包括:
- 圖像質量和構成不統一
- 商品存貨清單比較大
- 商品存貨清單嚴重細粒度
- 需要簡單的架構和模型,便於維護
建立大規模視覺搜索系統的建議
下面,我們總結了一些構建大規模的視覺搜索系統的建議。這些建議也適用於非視覺或多模態系統。
1. 理解數據,並使用分層抽樣
數據是確定整個過程策略的核心。圖像質量可能會引入複雜性,需要謹慎處理。瞭解目錄中的圖像以及用戶在視覺搜索期間上傳的圖像非常重要。圖2給出了eBay手提包存貨的一個子集的可視化結果。背景的複雜性以及手提包屬性的複雜性混合在一起。圖3表明了另一種情況:當引入相機姿態時,相同的對象可以有許多不同的視角。當我們訓練神經網絡時,使用多樣性的、有代表性的圖像集是非常關鍵的,以使神經網絡能夠處理數據集中出現的各種情況。
訓練集的大小由諸如我們想要預測的標籤數量、每個標籤內數據的多樣性、訓練結構帶來的內存和計算約束,以及訓練這種系統的時間預算等因素共同決定。當我們爲神經網絡創建訓練集時,我們對葉子類別、銷售商、商品狀態、品牌等使用分層抽樣,最後去除重複樣本,以確保數據豐富的多樣性。
2. 數據增強是關鍵,特別是圖像旋轉。
當訓練數據不能包含真實場景中可能發生的所有變化時,數據擴充是訓練神經網絡的關鍵步驟。當用戶使用手機拍攝對象時,很可能圖像出現被裁剪、旋轉、變得模糊或者沒有被縮放到合適的尺寸等情況。數據增強(圖4)生成數據中的各種變化,尤其是當這些變化容易出現在真實場景中,但是往往不會出現在eBay商品列表訓練集中時。舉個例子,eBay商品列表中的圖像不太可能旋轉。然而,這種情況在用戶上傳的圖像中經常出現。因此,我們發現圖像旋轉是數據增強中的一個重要操作。圖像旋轉在數據增強中經常被忽略,但是對於視覺搜索來說是十分重要的。
3. 提取語義簽名時儘可能多地使用監督信息
正如上文中提到的,儘可能多地使用監督信息是非常重要的。這有助於訓練分類器關注信息性內容而忽略其他非信息性區域。當實際任務(測量圖像對之間的相似性)沒有可用標籤時,最好利用低採集成本、數量龐大且多樣的數據進行強監督(例如葉子類別的預測結果)。
4. 簽名的熵分析
這一步通常會被大型信息檢索系統的系統設計所忽略。評估給定的簽名容量內是否包括了足夠的有效信息是至關重要的。例如,如果我們使用8位數字來表示二進制簽名,我們可以表示多達28個獨特的概念。在最佳情況下,每個數位值爲1的頻率爲50%。我們可以通過計算系統的熵,得到系統的有效比特長度,並與實際比特長度進行比較。有些情況下允許系統鬆弛來包容系統中的冗餘不失爲一個好辦法(圖5),防止某些數位受到噪聲和擾動的影響。
ImageNet對應。84.1%的數位在45%到55%的數據上是激活的(=1)。在系統中有一些冗餘是很好的,因此對於所有比特來說頻率不完全是50%。" />
5. 當標籤爲粗粒度標籤時,類內方差是很重要的。
我們使用粗粒度葉子類別標籤代替產品ID來訓練神經網絡。部分原因是由於葉子類別雖然是粗粒度的,但是更容易獲得。並且在服裝和傢俱等類別中,有些商品沒有產品ID。典型分類系統的目標是最小化類內方差。理想情況是類內方差爲0。此時,一個類的所有樣本都會坍塌成一個點(見圖6)。
例如,運動鞋的所有樣本都會坍塌到一個點。但是,有很多獨特的產品也屬於“運動鞋”葉子類別,我們希望能夠通過簽名相似性找到它們。因此,我們認爲,當標籤爲粗粒度但是需要進行細粒度搜索時,類間方差應該很高,但是類內方差也應該很高。這可以通過計算簽名的熵來衡量,正如前面一條建議中所討論的。
6. 用排除法提高搜索速度和精度
專爲高速度和高精度而設計的排除法具有強大的能力。例如,如果輸入圖像包含運動鞋,那麼沒有必要搜索裙子、桌子、計算機的庫存清單。我們在KDD論文中提出,通過使用強分類器來預測前幾個可能的葉子類別(通道)來減少搜索空間和提高精度(裙子的簽名與鞋的簽名不會混淆)是非常有效的。
7. 絕對vs.累積top-k劃分
我們使用強分類器,一個使用強葉子類別標籤訓練的深度神經網絡,來預測首選葉子類別(通道)。當首選預測的置信度較高時,則不需要搜索其他分區。然而,當首選預測不確定時,最好包括其他競爭分區。因此,我們建議使用累計top-k類別來獲得更好的搜索精度,並且只在要求精確匹配的情況下使用絕對top-k,即使這樣做的成本較高。詳情請參閱圖7。
結論
在這篇文章中,我們介紹了七條構建大規模視覺搜索的建議。此外,我們也建議最小化人工的作用(包括用於評估),週期性地重新訓練模型以應對數據分佈的變化,並且爲了便於維護,將模型的數量保持在最小值。
想了解更多細節,請閱讀我們發表在KDD2017的論文:“eBay視覺搜索(Visual Search at eBay)”。
查看英文原文:Seven Tips for Visual Search at Scale.