🚀 免費嘗試 Zilliz Cloud,完全托管的 Milvus,體驗速度提升 10 倍!立即嘗試

milvus-logo
LFAI

系統概述

  • Scenarios
July 09, 2021
Yu Fang

stylepedia-1.png stylepedia-1.png

Mozat成立於 2003 年,是一家新創公司,總部設在新加坡,並在中國和沙烏地阿拉伯設有辦事處。該公司專精於建立社交媒體、通訊和生活方式應用程式。Stylepedia是 Mozat 打造的衣櫃應用程式,可協助使用者發現新風格,並與其他熱愛時尚的人聯繫。它的主要功能包括整理數位衣櫥、個人化風格推薦、社群媒體功能,以及用於尋找與線上或現實生活中所見相似物品的圖片搜尋工具。

Milvus用於支援 Stylepedia 內的圖片搜尋系統。該應用程式處理三種圖片類型:使用者圖片、產品圖片和時尚照片。每張圖片都可以包含一個或多個項目,使每個查詢更加複雜。為了實用,圖片搜尋系統必須精確、快速且穩定,這些特性為應用程式新增功能 (例如服裝建議和時尚內容推薦) 奠定了堅實的技術基礎。

系統概述

stylepedia-system-process.png stylepedia-system-process.png

圖片搜尋系統分為離線與線上兩部分。

離線時,圖片會被向量化並插入向量資料庫(Milvus)。在資料工作流程中,相關的產品影像和時尚照片會使用物件偵測和特徵抽取模型轉換成 512 維特徵向量。然後將向量資料編入索引並加入向量資料庫。

在線上,影像資料庫會被查詢,並將相似的影像傳回給使用者。與離線元件類似,查詢的影像會經由物件偵測和特徵抽取模型處理,以取得特徵向量。使用特徵向量,Milvus 會搜尋 TopK 類似向量,並取得其相對應的影像 ID。最後,經過後處理 (過濾、排序等),就會傳回與查詢影像相似的影像集合。

執行

實作分成四個模組:

  1. 成衣偵測
  2. 特徵萃取
  3. 向量相似性搜尋
  4. 後處理

成衣偵測

在成衣偵測模組中,使用YOLOv5 作為物件偵測模型,YOLOv5 是一個單階段、基於錨點的目標偵測架構,因其體積小且可即時推論。它提供四種模型尺寸 (YOLOv5s/m/l/x),每種特定尺寸都有其優缺點。較大的模型會有較好的表現(精確度較高),但需要較多的運算能力,且執行速度較慢。由於本案例中的物件都是相對較大的項目,而且容易偵測,因此使用最小的模型 YOLOv5s 就足夠了。

每張影像中的服裝物品都會被辨識出來,並剪下來作為後續處理中使用的特徵萃取模型輸入。同時,物件偵測模型也會根據預先定義的類別 (上衣、外衣、褲子、裙子、連衣裙和連身褲) 來預測服裝分類。

特徵萃取

相似性搜尋的關鍵在於特徵萃取模型。裁剪後的衣服影像被嵌入 512 維浮點向量,以機器可讀的數值資料格式來表示其屬性。採用深度公因子學習 (DML)方法,並以EfficientNet作為骨幹模型。

度量學習的目的是訓練一個基於 CNN 的非線性特徵萃取模組(或稱編碼器),以減少相同類別樣本對應的特徵向量之間的距離,並增加不同類別樣本對應的特徵向量之間的距離。在這種情況下,同類樣本指的是同一件衣服。

EfficientNet 在均匀扩展网络宽度、深度和分辨率时,同时考虑了速度和精度。EfficientNet-B4 用作特徵抽取網路,最終全連結層的輸出是進行向量相似性搜尋所需的影像特徵。

Milvus 是一個開放原始碼的向量資料庫,支援建立、讀取、更新和刪除 (CRUD) 等作業,以及在萬億位元組的資料集上進行近乎即時的搜尋。在 Stylepedia 中,它被用於大規模向量相似性搜尋,因為它具有高彈性、穩定性、可靠性和快速性。Milvus 擴充了廣泛使用的向量索引函式庫 (Faiss、NMSLIB、Annoy 等) 的功能,並提供一套簡單直覺的 API,讓使用者可以針對特定的情境選擇理想的索引類型。

考量到情境需求和資料規模,Stylepedia 的開發人員使用 Milvus 的 CPU 專用發行版搭配 HNSW 索引。建立了兩個索引集合,一個用於產品,另一個用於時尚照片,以支援不同的應用程式功能。每個集合會根據檢測與分類結果進一步分為六個區塊,以縮窄搜尋範圍。Milvus 能在幾毫秒內對數千萬向量執行搜尋,提供最佳效能,同時保持低開發成本,並將資源消耗降至最低。

後處理

為了提高圖像檢索結果與查詢圖像的相似度,我們使用顏色過濾和關鍵標籤(袖子長度、衣服長度、領子款式等)過濾來過濾掉不合格的圖像。此外,我們也使用影像品質評估演算法,以確保優質的影像會先呈現給使用者。

應用程式

使用者可以拍攝自己的衣服並上傳到 Stylepedia 數位衣櫥,然後擷取與上傳內容最相似的商品圖片。

stylepedia-search-results.png stylepedia-search-results.png

服裝建議

透過在 Stylepedia 資料庫中進行相似度搜尋,使用者可以找到包含特定時尚項目的時尚照片。這些可能是某人正在考慮購買的新款服裝,也可能是他們自己收藏中可以穿著或搭配不同的服裝。然後,透過對其經常搭配的單品進行聚類,便可產生穿著建議。舉例來說,一件黑色機車夾克可以搭配多種單品,例如一條黑色緊身牛仔褲。使用者就可以瀏覽在選定公式中出現此搭配的相關時尚照片。

stylepedia-jacket-outfit.png stylepedia-jacket-outfit.png

stylepedia-jacket-snapshot.png stylepedia-jacket-snapshot.png

時尚照片推薦

根據使用者的瀏覽記錄、喜好以及數位衣櫥的內容,系統會計算相似度,並提供使用者可能感興趣的客製化時尚照片推薦。

stylepedia-user-wardrobe.png stylepedia-user-wardrobe.png

stylepedia-streetsnap-rec.png stylepedia-streetsnap-rec.png

透過結合深度學習與電腦視覺方法,Mozat 得以利用 Milvus 建立快速、穩定且精準的圖像相似度搜尋系統,為 Stylepedia 應用程式中的各種功能提供動力。

別做陌生人

  • GitHub 上尋找或貢獻 Milvus。
  • 透過Slack 與社群互動。
  • Twitter 上與我們連線。

Try Managed Milvus for Free

Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.

Get Started

Like the article? Spread the word

繼續閱讀