使用 Azure Cosmos DB 進行零售的視覺搜尋

Azure Blob 儲存體
Azure Cosmos DB
Azure Kubernetes Service (AKS)
Azure SQL Database

人工智慧提供改變零售的潛力,因為我們今天知道。 相信零售商會開發 AI 支援的客戶體驗架構是合理的。 一些預期是使用 AI 增強的平臺將因超個人化而產生營收增加。 數位商務持續提高客戶的期望、喜好設定和行為。 實時參與、相關建議和超個人化等需求,會在按兩下按鈕時加速和便利。 我們透過自然語音、視覺等方式在應用程式中啟用智慧。 此智慧可改善零售,以增加價值,同時中斷客戶購物的方式。

本檔著重於視覺搜尋AI 概念,並提供一些關於其實作的重要考慮。 它提供工作流程範例,並將其階段對應至相關的 Azure 技術。 此概念是以客戶能夠利用其行動裝置或位於因特網上的影像為基礎。 他們將根據經驗的意圖,對相關和類似專案進行搜索。 因此,視覺搜尋可改善從文字輸入到具有多個元數據點之影像的速度,以快速呈現所有可用的適用專案。

視覺搜尋引擎

視覺搜尋引擎也會使用影像做為輸入來擷取資訊,但通常不是獨佔的輸出。

引擎在零售行業越來越常見,而且有很好的理由:

  • 根據2017年發佈的Emarketer報告,大約75%的互聯網用戶在購買前搜索產品的圖片或視頻。
  • 根據Slyce(視覺搜索公司)2015年的報告,74%的消費者也發現文字搜索效率不佳。

因此,根據市場和市場的研究,到2019年,圖像辨識市場的價值將超過250億美元。

這項技術已經與主要電子商務品牌保持了合作,這些品牌也為它的發展做出了重大貢獻。 最突出的早期採用者可能是:

  • eBay 在其應用程式中使用其影像搜尋和「在 eBay 上尋找」工具(這目前只是行動裝置體驗)。
  • 使用其 Lens 視覺探索工具進行 Pinterest。
  • Microsoft 搭配 Bing 圖像式搜尋。

採用和調整

幸運的是,您不需要大量的運算能力,即可從視覺搜尋中獲利。 任何具有映像目錄的商務都可以利用 Microsoft 在其 Azure 服務中內建的 AI 專業知識。

Bing 圖像式搜尋 API 提供從影像中擷取內容資訊的方式,例如家庭傢俱、時尚、數種產品等等。

它也會從自己的類別目錄、具有相對購物來源的產品、相關搜尋傳回視覺上類似的影像。 雖然有趣的是,如果您的公司不是其中一個來源,這會受到限制使用。

Bing 也會提供:

  • 可讓您探索影像中找到的物件或概念的標記。
  • 影像中感興趣的區域周框方塊(例如服裝或傢俱專案)。

您可以利用該資訊將搜尋空間(和時間)大幅縮減到公司的產品目錄中,將它限制在區域和感興趣的類別等物件。

實作您自己的

實作視覺搜尋時,有幾個要考慮的重要元件:

  • 擷取和篩選影像
  • 儲存體和擷取技術
  • 特徵化、編碼或「哈希」
  • 相似度量值或距離和排名

圖 1:圖像式搜尋管線範例

採購圖片

如果您沒有圖片目錄,您可能需要在公開可用的數據集上定型演算法,例如時尚 MNIST深度時尚等等。 它們包含數種產品類別,通常用來對影像分類和搜尋演算法進行基準檢驗。

圖 2:DeepFashion 數據集的範例

篩選影像

大部分的基準檢驗數據集,例如先前所述的數據集,都已經預先處理。

如果您建置自己的基準檢驗,您至少會希望影像具有相同的大小,大部分是由模型定型的輸入所決定。

在許多情況下,最好也要將影像的亮度正規化。 根據您的搜尋詳細數據層級,色彩也可能是多餘的資訊,因此減少為黑白有助於處理時間。

最後但至少應該在所代表的不同類別之間平衡影像數據集。

映射資料庫

數據層是架構特別微妙的元件。 它將會包含:

  • 影像
  • 影像的任何元資料(大小、標籤、產品 SKU、描述)
  • 機器學習模型所產生的數據(例如每個影像 4096 元素的數值向量)

當您從不同來源擷取影像,或使用數個機器學習模型來獲得最佳效能時,數據的結構將會變更。 因此,請務必選擇可以處理半結構化數據且沒有固定架構的技術或組合。

您可能也想要要求最少的實用數據點數(例如影像標識碼或密鑰、產品 SKU、描述或標記欄位)。

Azure Cosmos DB 為建置在上面的應用程式提供所需的彈性和各種存取機制(可協助您進行目錄搜尋)。 不過,必須小心推動最佳價格/效能。 Azure Cosmos DB 允許儲存檔附件,但每個帳戶都有總限制,而且可能是成本高昂的主張。 在 Blob 中儲存實際影像檔案,並在資料庫中插入連結是常見的作法。 在 Azure Cosmos DB 的情況下,這意謂著建立檔,其中包含與該映像相關聯的目錄屬性(例如 SKU、標籤等),以及包含圖像檔 URL 的附件(例如,在 Azure Blob 記憶體、OneDrive 等上)。

圖 3:Azure Cosmos DB 階層式資源模型

如果您打算利用 Azure Cosmos DB 的全域散發,請注意,它會復寫檔和附件,但不會復寫連結的檔案。 您可能想要考慮這些內容發佈網路。

其他適用的技術是 Azure SQL 資料庫(如果可接受固定架構)和 Blob 的組合,甚至是 Azure 數據表和 Blob,以便宜且快速儲存和擷取。

特徵擷取和編碼

編碼程式會從資料庫中的圖片擷取突出特徵,並將每個特徵對應至疏鬆的「特徵」向量(具有許多零的向量),這些向量可以有數千個元件。 此向量是特徵(例如邊緣和圖形)的數值表示法,可描述圖片。 這類似於程序代碼。

特徵擷取技術通常會使用 傳輸學習機制。 當您選取預先定型的神經網路、透過它執行每個影像,並將產生的特徵向量儲存在影像資料庫中時,就會發生這種情況。 如此一來,您就會從訓練網路的人「轉移」學習。 Microsoft 已開發併發佈數個預先定型的網路,這些網路已廣泛使用於影像辨識工作,例如 ResNet50

視神經網路而定,特徵向量會比較長或更少且疏鬆,因此記憶體和儲存需求會有所不同。

此外,您可能會發現不同的網路適用於不同的類別,因此視覺搜尋的實作實際上可能會產生不同大小的特徵向量。

預先定型的神經網路相對容易使用,但可能不像在影像目錄上定型的自定義模型那麼有效率。 這些預先定型的網路通常是針對基準檢驗數據集的分類所設計,而不是搜尋您特定的影像集合。

您可能想要修改並重新定型它們,使其產生類別預測和密集(亦即較小,而非疏鬆)向量,這將非常有用,以限制搜尋空間、減少記憶體和儲存需求。 二進位向量可以使用,通常稱為「 語意哈希」–衍生自文件編碼和擷取技術的詞彙。 二進位表示法可簡化進一步的計算。

圖 4:Visual Search 的 ResNet 修改 – F. Yang 等,2017

無論您選擇預先定型的模型還是自行開發,您仍然需要決定執行模型本身特徵化和/或定型的位置。

Azure 提供數個選項:VM、Azure Batch、 Batch AI、Databricks 叢集。 不過,在所有情況下,GPU 的使用會提供最佳價格/效能。

Microsoft 最近也宣佈了 FPGA 的可用性,以 GPU 成本(Project Brainwave)的一小部分快速計算。 不過,在撰寫本文時,此供應專案僅限於特定網路架構,因此您必須密切評估其效能。

相似度量值或距離

當影像在特徵向量空間中表示時,尋找相似度會成為定義這類空間中點之間的距離量值的問題。 定義距離之後,您可以計算類似影像和/或定義相似度矩陣的叢集。 視選取的距離計量而定,結果可能會有所不同。 例如,在實數向量上最常見的 Euclidean 距離量值很容易理解:它會擷取距離的大小。 不過,在計算方面相當沒有效率。

餘弦 距離通常用來擷取向量的方向,而不是其大小。

哈明距離等替代方法會以二進位表示法來交易一些效率與速度的精確度。

向量大小和距離量值的組合將決定搜尋的計算密集程度和記憶體密集程度。

搜尋和排名

定義相似性之後,我們需要設計一個有效率的方法,以擷取最接近輸入的 N 專案,然後傳回標識符清單。 這也稱為「影像排名」。 在大型數據集上,計算每個距離的時間是禁止的,因此我們使用近似的鄰近演算法。 有數個開放原始碼鏈接庫存在,因此您不需要從頭開始撰寫程序代碼。

最後,記憶體和計算需求將決定已定型模型的部署技術選擇,以及高可用性。 搜尋空間通常會分割,而排名演算法的數個實例會平行執行。 允許延展性和可用性的其中一個選項是 Azure Kubernetes 叢集。 在此情況下,建議將排名模型部署到數個容器(處理每個容器的搜尋空間分割)和數個節點(以取得高可用性)。

參與者

本文由 Microsoft 維護。 原始投稿人如下。

主要作者:

其他投稿人:

下一步

實作視覺搜尋並不複雜。 您可以使用 Bing 或透過 Azure 服務自行建置,同時受益於 Microsoft 的 AI 研究和工具。

開發

背景