基於 Milvus 的 VOVA 拍照購實踐


✏️ 作者介紹:
Jessie Ji,VOVA 算法部 Java 開發工程師


  項目背景


VOVA 是一個面向全球市場的新興跨境電商平臺,專注於外貿出口,客戶遍佈六大洲一百多個國家和地區。VOVA 支持 20 種主流語言和 35 種主流貨幣,擁有數百萬件高品質、高性價比的產品,爲用戶提供最新的全球平價商品和輕鬆有趣的購物體驗。

近幾年,網絡購物平臺日益流行,大衆對網購的熱情也日益高漲。但是大部分傳統購物網站只支持關鍵詞搜索,當用戶無法用詞彙準確描述商品時,就很難搜索到心儀的商品。因此,通過圖片搜索相似產品,能夠幫助用戶更準確地找到想要的商品。爲方便用戶體驗快捷的一站式購物,VOVA 全新推出拍照購功能。如果消費者在影視屏幕、廣告牌、報刊雜誌、行人身上等任何地方看到自己喜歡的商品,他們只需拍照並上傳至 VOVA 平臺,便可找到相似商品。


  系統流程


拍照購系統會根據用戶上傳的商品圖片,對商品庫中商品照片進行檢索並返回給用戶最相似的商品圖片。如下圖所示,系統流程分爲數據導入(藍線)和查詢(橙線)兩個階段,涉及三個關鍵步驟:
  1. 使用 YOLO 模型進行端側目標檢測

  2. 使用 ResNet 網絡提取圖片特徵向量

  3. 使用 Milvus 進行向量相似度檢索




  目標檢測端


目前,僅 VOVA App 端支持拍照購功能。我們首先在端側部署 YOLO 算法模型對用戶拍攝的圖片進行目標檢測。YOLO 算法全稱是 You Only Look Once: Unified, Real-Time Object Detection。作爲一個 one-stage 檢測算法,YOLO 僅使用一個 CNN 網絡來直接預測不同目標的類別與位置。YOLO 系列算法已經迭代至第五代,且模型較小,適合移動端部署。YOLO 採用卷積網絡來提取特徵,然後使用全連接層獲取預測值。YOLO 的卷積網絡結構參考 GooLeNet 模型,包含 24 個卷積層和 2 個全連接層,如下圖所示。輸入圖像大小爲 448 * 448,經過若干個卷積層與池化層,變爲 7 * 7 * 1024 維張量(圖中倒數第三個立方體),最後經過兩層全連接層,輸出張量維度爲 7 * 7 * 30。網絡的預測值 P 是一個二維張量,其 shape 爲 [batch,7*7*30] 。採用切片,那麼 P[:,0:7*7*20] 就是類別概率部分,而 P[:,7*7*20:7*7*(20+2)] 是置信度部分,最後剩餘部分 P[:,7*7*(20+2):] 是邊界框的預測結果。



  圖片特徵向量提取


本項目採用深度殘差網絡(Deep residual network, ResNet)模型對庫內現有的圖片以及經過端側檢測的新上傳圖片進行特徵提取,並轉化爲特徵向量。ResNet 模型針對深度網絡的退化問題而提出。隨着學習網絡的深度增加,網絡準確度會出現下降的現象。如下圖所示,ResNet 網絡參考了 VGG19 網絡,在其基礎上進行了修改,通過短路機制加入了殘差單元。2014 年提出的 VGG 網絡只有 19 層,而 2015 年推出的 ResNet 網絡則多達 152 層。ResNet 結構易於修改和擴展。改變 block 內的 channel 數量以及堆疊的 block 數量,即可輕鬆調整網絡的寬度和深度,得到不同表達能力的網絡,有效地解決網絡的“退化”問題。只要訓練數據足夠,可以通過逐步加深網絡獲得表達性能更佳的模型。通過模型訓練,我們提取每張圖片的特徵,並轉化爲 256 維的浮點向量。



  相似向量檢索


目前 VOVA 擁有超過 3 千萬張商品圖片,且實際的數據量還在成倍增長。爲了從如此龐大的圖片庫中快速地檢索出最相似的商品圖片,我們採用 Milvus 作爲特徵向量相似度計算引擎。相比於Faiss、Annoy 等向量開發庫,Milvus 是一個可以開箱即用的工具。Milvus 不僅集成了不同的索引庫,還支持不同的索引類型和相似度計算方式。此外,Milvus 官方還提供多種語言的 SDK 和插入、查詢等豐富的 API 可供調用,方便項目組直接入手,降低學習成本。在檢索速度上,十億向量查詢時單條向量查詢時間不高於 1.5 秒,批量查詢的平均時間不高於 0.08 秒。因此 Milvus 能夠實現十億級別向量的毫秒級檢索。實際實踐過程中,我們參照了Milvus 的分片中間件解決方案 Mishards 組件搭建高可用的服務集羣,其大致結構如下圖所示。使用具有水平擴展能力的 Milvus 集羣,能夠較好地滿足該項目對海量向量數據的高性能檢索需求。



  系統界面展示


如下圖所示,用戶上傳商品圖片後即可查詢外觀相似的商品,找到心儀的產品。



  結語


目前,拍照購功能已上線,且運行穩定。越來越多用戶通過拍照購購買商品。VOVA 將持續優化本項目中運用的模型,並關注後續的 Milvus 版本更新,從而爲用戶提供更好的購物體驗。


  參考資料

YOLO
https://arxiv.org/pdf/1506.02640.pdf
https://arxiv.org/pdf/1612.08242.pdf
https://zhuanlan.zhihu.com/p/35325884

ResNet
https://arxiv.org/abs/1512.03385
https://www.cnblogs.com/shine-lee/p/12363488.html

Milvus
https://milvus.io/cn/docs/overview.md



  About Zilliz


Zilliz 以重新定義數據科學爲願景,致力於打造一家全球領先的開源技術創新公司,並通過開源和雲原生解決方案爲企業解鎖非結構化數據的隱藏價值。 


Zilliz 構建了 Milvus 向量相似度搜索引擎,以加快下一代數據平臺的發展。Milvus 目前是 LF AI & Data 基金會的孵化階段項目,能夠管理大量非結構化數據集。我們的技術在新藥發現、計算機視覺、推薦引擎、聊天機器人等方面具有廣泛的應用。 




   歡迎加入 Milvus 社區


github.com/milvus-io/milvus | 源碼
milvus.io | 官網
zhihu.com/org/zilliz-11| 知乎
zilliz.blog.csdn.net | CSDN 博客
space.bilibili.com/478166626 | Bilibili

本文分享自微信公衆號 - ZILLIZ(Zilliztech)。
如有侵權,請聯繫 [email protected] 刪除。
本文參與“OSC源創計劃”,歡迎正在閱讀的你也加入,一起分享。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章