李飛飛CS231n項目:這兩位工程師想用神經網絡幫你還原買家秀

李飛飛CS231n項目:這兩位工程師想用神經網絡幫你還原買家秀

大數據文摘出品

編譯:張秋玥、胡笳、Alieen

你有沒有看過某個網紅小姐姐穿了一件特別棒的衣服,然後急切地想找到同款?

你不是一個人——全球零售商都們都想用這個策略獲利。

每當某個明星或者時尚博主在微博或者朋友圈po出一張圖,這就是一次低成本的營銷機會。隨著網購與照片分享變得越來越流行,利用用戶原創內容(UGC, User Generated Content)的市場營銷策略已成為驅動流量與零售額增長的關鍵。通俗點說,一張漂亮的“買家秀”可能抵得過一票銷售辛苦的遊說。

相比於專業內容,“買家秀”的價值在於,以圖像與視頻為例,效果更加具有真實性。

然而,這也存在一定風險,因為很難控制內容質量及其產生的效果。

比如說:

李飛飛CS231n項目:這兩位工程師想用神經網絡幫你還原買家秀

來自微軟的軟件工程師Erika Menezes與Twitter軟件工程師Chaitanya Kanitkar用AI工具建立一個深度學習模型,希望將買家衣物圖像與網店中相同或相似的物品相匹配。

本項目為斯坦福大學2018年春季 CS231n課程作業的一部分。

鏈接:

http://cs231n.stanford.edu/

感興趣的同學也可以查看大數據文摘在網易雲專欄上的漢化版課程

網址:

http://study.163.com/course/courseMain.htm?courseId=1003223001&share=2&shareId=10146755

這個“買家秀”還原問題被通稱為買家到商家(consumer-to-shop)或街道到商店(street-to-shop)衣物檢索問題。

李飛飛CS231n項目:這兩位工程師想用神經網絡幫你還原買家秀

本文將具體展示如何使用微軟的機器學習平臺Azure機器學習(AML)與Azure數據科學虛擬機(DSVM)快速推動該項目的開發。

李飛飛CS231n項目:這兩位工程師想用神經網絡幫你還原買家秀

圖1.建立,訓練與配置跨領域視覺搜索模型的微軟AI平臺架構圖

定義問題

在買家到商家衣物檢索問題中,我們試圖將用戶拍的圖片(即一種UGC)與同一件衣物但是由專業攝影師按既定要求拍攝的圖片相匹配。用戶的圖片一般都是手機拍攝,質量比店家的專業商品展列圖片差很多。

具體來說,對於每一張新輸入的UGC圖片,我們希望返回k個與該圖片最為相似的商品圖片,並從中得到一件最匹配的商品。我們將需要定義一個距離度量函數,來量化被搜索圖片與所有商品品類圖片之間的相似度,並且根據其值排序得到k個最相似圖片。

數據

本文數據採用Deep Fashion數據集的一部分。該數據集包括UGC圖片及多種衣物類別的商品品類圖片。我們使用四個最主要的衣物類別來進行實驗:連衣裙,半裙,上衣與下衣。詳見下圖。

Deep Fashion數據集:

http://mmlab.ie.cuhk.edu.hk/projects/DeepFashion.html

李飛飛CS231n項目:這兩位工程師想用神經網絡幫你還原買家秀

圖2.各類衣物圖片數據量

Deep Fashion數據集

圖3與圖4分別為買家與店家圖片示例。這些例子展示了本任務的複雜性:匹配衣物的樣式,但顏色不需要一致。

李飛飛CS231n項目:這兩位工程師想用神經網絡幫你還原買家秀

圖3.(從左至右)圖片1與2為買家衣服秀,圖片3與4為同款店家衣服秀

從圖3很容易看出,店家圖片的質量較高,整件衣物都位於圖片中央。買家數據集的挑戰在於,每張圖片都只對應唯一一個正確商品編碼,所以有的與之非常相似但並不是同一商品的衣物就會導致模型精確度降低(請看圖4)。為緩解此問題,我們使用Top-K準測來評估模型性能[QZ1](該方法也被用於衡量衣物相似度)。

圖4.左一為買家衣服圖。左二與左三為同一件商品的店家圖。左四與左五為另一件非常相似但卻是不同商品的店家圖。

t分佈隨機鄰嵌入(t-Distributed Stochastic Neighbor Embedding, or t-SNE)是一種將高維數據映射到二維空間的常用可視化方法。我們使用t-SNE將預訓練ImageNet模型從買家圖片中提取出的特徵進行可視化,結果如圖5所示。褲子的圖聚類於左下部,而半裙則聚類於右上部。左半邊的圖片多為包括腿部的買家圖片,而右半邊的則是放在平面上拍攝的衣物圖片。

李飛飛CS231n項目:這兩位工程師想用神經網絡幫你還原買家秀

圖5.t-SNE處理後的買家圖片ResNet50分類特徵結果

方法

我們嘗試了三種方法:

白盒特徵

預訓練CNN特徵

使用預訓練CNN特徵的孿生網絡

下面詳細介紹每一種方法。

1.白盒特徵(White-Box Features)

我們第一個嘗試的白盒特徵圖片提取器曾在計算機視覺上被廣泛應用。特徵先被提取,然後它們被連接起來以為每一張圖片構造一種多特徵的表述。我們在此提取了以下特徵:

方向梯度直方圖(Histogram of Oriented Gradients),計算圖像的每一細分區塊內各梯度方向的發生次數。

色彩直方圖(Color Histograms),將圖像中所有顏色劃分為25個顏色區間並製作直方圖以查看其分佈。

色彩一致性(Color Coherence),衡量每一像素的色彩與其所屬大區塊顏色的相似度。顏色是衣物非常重要的一個屬性,因此本特徵提取器是用於補充色彩直方圖信息的。

哈里斯邊角偵測(Harris Corner Detection),提取圖像中代表邊角的特徵點。

我們使用白盒特徵計算了每一張買家圖片的K近鄰,並嘗試了若干種標準距離度量函數(L1,L2,餘弦函數)。結果如下圖所示:

李飛飛CS231n項目:這兩位工程師想用神經網絡幫你還原買家秀

圖6. 各類衣物白盒特徵在不同距離函數下的表現

2.預訓練CNN特徵

在本方法中,我們使用預訓練CNN模型對ImageNet上的1000個物體類別圖像進行分類訓練。

我們使用神經網絡每層的激活函數作為特徵表示。[w2]我們在買家圖像與店家圖像上使用VGG-16,VGG-19,Inception v3和ResNet50進行訓練,並且使用了L1作為度量函數。下圖展示了上述模型的層數與參數數量。

李飛飛CS231n項目:這兩位工程師想用神經網絡幫你還原買家秀

預訓練神經網絡結構

圖7展示了模型結果。總體來說提取特徵表現有了很大的提高,ResNet50提取的特徵在所有類別上都具有最好的整體表現。半裙類別達到了最好的結果,使用Top-20準確率達到了17.75%。

李飛飛CS231n項目:這兩位工程師想用神經網絡幫你還原買家秀

圖7.各大類預訓練CNN特徵表現

在之前的方法中,我們分兩步來計算距離函數。首先,我們使用低等級圖像表徵或預訓練過的卷積神經網絡最後一層隱藏層中提取出的特徵,從圖像中提取表徵向量。然後將該向量代入標準化向量距離函數(如L1,L2與餘弦函數)進行計算。然而在本方法中,我們使用提取出的買家與店家圖像特徵對來學習得到距離函數。這裡我們使用孿生神經網絡。

3.孿生網絡

孿生網絡包含兩個或多個完全相同的子網絡。這些子網絡基本上擁有一致的結構與權重。輸入值被分別傳入這些網絡,最後輸出時再合成一個單獨的輸出值。該輸出值衡量輸入值之間的距離。該網絡使用這些輸出值進行訓練,最小化相似輸入值之間的距離,以及最大化不同輸入值的距離。詳見圖8。

李飛飛CS231n項目:這兩位工程師想用神經網絡幫你還原買家秀

圖8.模型結構

我們使用對數交叉熵損失函數,其表達式如下:

這裡的X1與X2分別為買家與店家圖像特徵,t則為目標值——相似特徵對則為1,不相似特徵對則為0。使用孿生網絡以及預訓練ResNet50提取特徵,結果在幾乎所有類別上都有總體表現上的提升(除了連衣裙大類)。最佳表現來自於半裙類別,Top-20精確度為26%。

李飛飛CS231n項目:這兩位工程師想用神經網絡幫你還原買家秀

圖9.三種方法在各類衣物圖片的表現對比 1) 白盒特徵 2) 預訓練ResNet50特徵 3) 使用孿生網絡相似度的ResNet50特徵

下圖是模型能夠正確匹配衣物的例子(見圖10),其中排名前20的另外那些返回值也都直觀上非常相似,他們基本都是同一件商品或相似商品不同顏色或不同材質。

李飛飛CS231n項目:這兩位工程師想用神經網絡幫你還原買家秀

圖10. 前20位正確與錯誤匹配圖(錯誤匹配中僅顯示兩張圖)

應用數據科學虛擬機與Visual Studio AI集成開發工具

本部分中我們將展示如何使用數據科學虛擬機以及Visual Studio AI集成開發工具來開發深度學習模型。此外,我們還將解釋如何使用Azure機器學習以通過類似API的方式操作模型。

數據科學虛擬機

數據科學虛擬機(DSVM)為Azure虛擬機鏡像。它被預先安裝、配置並測試。所用工具在數據分析、機器學習及人工智能訓練中非常流行,如GPU 驅動以及深度學習框架(比如TensorFlow)。它幫助你在配置上節約大量時間,提高工作效率。

數據科學虛擬機:

https://azure.microsoft.com/en-us/services/virtual-machines/data-science-virtual-machines/

Visual Studio AI集成開發工具

Visual Studio AI集成開發工具是一個用來建立,測試並部署深度學習/人工智能應用的拓展功能。它與Azure機器學習無縫集成,並提供強大的實驗魯棒性——包括但不限於,向不同計算目標完全透明地提交數據準備與模型訓練任務。此外,它還提供自定義衡量指標與歷史記錄追蹤;實現了數據科學的可複用能力與審查能力。

Azure機器學習

Azure機器學習服務為數據科學家與機器學習開發者們提供了處理數據、開展實驗、建立、管理並部署機器學習與人工智能模型等的一系列工具。它們允許使用任何Python工具與庫。你可以在Azure上使用各種數據與計算服務來存儲並使用數據。

訓練

我們使用Azure機器學習命令行界面(Command Line Interface,CLI)和VS Code來將我們的數據科學虛擬機建立為一個遠程計算目標,“my_dsvm”,並藉此提交訓練指令來運行實驗。

李飛飛CS231n項目:這兩位工程師想用神經網絡幫你還原買家秀

圖11.Azure機器學習CLI配置VS Code編輯器界面

部署

我們將模型與代碼部署成網頁服務的形式,從而可通過REST方式訪問。為此,我們使用AML操作模型,結合Visual Studio AI集成代碼工具以及Azure機器學習來進行部署,如下所示:

az ml service create realtime -f score.py –model-file model.pkl -s service_schema.json -n outfit_finder_api -r python –collect-model-data true -c aml_config\conda_dependencies.yml

這將使得任何使用REST API的用戶都可以使用模型。

詳細的部署指導:

https://blogs.technet.microsoft.com/machinelearning/2018/06/05/deep-learning-for-emojis-with-vs-code-tools-for-ai-part-2/

總結

本文中我們討論瞭如何建立一個深度學習模型來對買家服裝圖像與網店相同或相似商品圖像相匹配。我們展示瞭如何使用Azure的數據科學虛擬機與Visual Studio AI集成代碼工具來快速開始建立、訓練與部署模型。我們還展示瞭如何使用Azure機器學習來輕鬆操作模型。

代碼鏈接:

https://github.com/ckanitkar/CS231nFinalProject。

編者注:Top-K Accuracy即,在返回的前K個結果中,只要出現了正確的預測結果,則該數據點被記為“正確預測”。


分享到:


相關文章: