自 2013 年轉型以來,蘑菇街電商平臺歷經了多次雙 11 大促的洗禮。通常而言,大量的商家與商品參與雙 11,用戶規模相比平時也會劇增。今年雙 11,蘑菇街還開辟了微信小程序作為新的支點,希望以此撬動新社交電商戰略。平臺為用戶帶來價值的關鍵是保障商品豐富、價格合理、服務可靠。在此背景下,有很多挑戰需要在復雜的業務場景中去應對,其中包括:如何提高商品管理的效率,以及如何改善用戶體驗。在眾多的技術和產品方案中,圖像算法作為一項重要能力,運用于電商場景中,支持上述業務問題的改善。
圖 1. 電商中的圖像數據
如同 1 所示,在電商平臺中可以按照業務流向簡單地描述圖像數據。電商平臺從商家或者用戶處,獲取到不同來源的圖像數據,并且存放于后臺圖像數據庫;前臺 APP 產品作為面向用戶的界面,基于圖像數據和業務算法,把商品呈現在用戶眼前,主要包括商品展示圖墻頁面和用戶瀏覽頁面。
蘑菇街在實踐中,采用了兩種類型的圖像算法技術支持業務發展。第一個是圖像搜索技術,用于后臺商品管理和前臺搜相似商品;第二個是圖像標簽技術,應用在商品屬性管理的場景中。
2. 圖像搜索技術的應用2.1 技術原理簡介
給定一個圖像作為 query 輸入,基于內容的圖像搜索過程是在指定的圖像數據庫中檢索,找到和 query 相同或者內容相似的圖像。蘑菇街的圖像搜索應用場景主要集中在商品搜索上,既有移動端的搜相似購物,也有后臺運營選品的需求等。
大規模商品圖像檢索所面臨的主要挑戰包括幾個方面:
(1) 圖像數據量大,一般電商平臺的商品圖像包含了主圖、SKU 圖、商品詳情圖和用戶評論圖等,規模達到千萬至億級別。
(2) 特征維度高,圖像特征是描述圖像視覺信息的基礎,特征表達能力直接決定了圖像檢索的檢索精度。
(3) 響應速度要快,檢索系統需要具備可以快速響應用戶查詢的能力,一般要求檢索系統能夠滿足實時或者準實時的要求。
針對這些挑戰,蘑菇街圖像搜索技術的工作主要集中在兩個方面。
圖像特征的表達能力
隨著深度學習的興起,利用 CNN 提取圖像特征,已成為圖像檢索領域的共識。商品圖片類別眾多、背景復雜,如何從豐富的圖像信息中提取關鍵特征依然是很有挑戰的問題。圖像特征模塊主要包含三個重要部分:數據清洗、特征模型設計、模型壓縮。
利用 CNN 提取圖像特征,關鍵在分類標簽的定義。有文章(ICLR 2017: On the of with Label-based )指出:模型提取特征能力的上限,不在數據集的大小,而在標簽質量。因此,設計監督更強、質量高的標簽,更有利于特征的表示。我們的商品標簽有兩個來源,一個是商品在類目體系中從屬的類別,另一個是商家對商品的描述。數據清洗過程主要解決商家打標的標簽和圖像實際內容不符合的問題。利用自動化圖像標簽模塊,可對商品圖片自動打標,輔之以人工矯正。通過這種方式我們累積了數以千萬計的樣本圖像數據,所涉及的標簽 label 數目有幾千種,從而構建了高質量的訓練樣本。
特征模型的設計以 (殘差網絡) 為基礎,根據 是淺層網絡集成學習的思想(NIPS 2016: Like of ),我們通過設計不同尺度卷積核并拼接()在一起,提高了淺層網絡的表達能力;同時適當控制深度,并改進 中影響優化的 結構。試驗證明網絡的改進是有效的,改進后的網絡在實際數據集合上的 top1 是 61.8%,而傳統的 -50 是 56.6%。
特征模型部署在 GPU 服務器上,為控制系統的整體響應時間,需要縮短特征提取的時間,因此要對深度學習網絡模型進行壓縮。壓縮算法采用的是(ICLR 2017: for )所提到的剪枝策略。具體的做法是:針對每個卷積核計算其絕對值和,然后排序圖的應用算法有哪些,針對絕對值小的權值和通道進行剪枝。流程中包括兩個主要步驟:首先按照一定比例 (比如 10%) 進行壓縮,然后進行模型的 fine- 訓練;兩者交替迭代進行,直至模型精度的下降超過預設的目標,流程結束。最終我們所獲得的特征模型在 GPU 卡 K40 上,單次特征抽取的時間在 40ms 內。
近似最近鄰查找
鑒于搜索數據庫數據量級很大,對每個查詢都要計算所有的距離是非常困難的,同時存儲數千萬圖片的高維殘差網絡特征向量需要耗費巨大的存儲空間。為了解決這些問題,采用了近似最近鄰算法中的局部優化的乘積量化算法( ,PQ),訓練得到粗量化質心和細量化質心,粗量化的結果用來建立倒排索引,細量化的結果用來計算近似距離。通過這種方法,既能保證圖像索引結果的存儲需求合理,也能使檢索質量和速度達到更好的水平。
圖 2. 圖像檢索的系統架構
圖像檢索系統的整體架構如圖 2 所示。基于底層的圖像搜索算法,通過中間接口層提供給具體的業務使用,提升了相似圖像搜索的擴展性,能夠快速地響應實際的需求和應用。
2.2 應用 1:同款商品識別
電商基礎業務中,需要審核商家上傳的商品圖片。我們在實踐中基于相似圖像搜索技術,構建了同圖識別系統。系統產出了全量圖像數據的索引庫,基于相似搜索引擎來查詢商家圖片是否為商品庫中的相同圖像。根據查詢結果,結合業務規則,判斷商品是否為同款。圖 3 給出了同款商品識別的系統概要圖。
圖 3. 結合圖像信息的同款商品識別
目前該系統部署在蘑菇街電商平臺中,提升了商品管理的效率。在億級圖像索引規模下,系統識別準確率為 99.06%,單張圖像查詢的整體響應時間為 20ms。
2.3 應用 2: 移動端搜相似商品
蘑菇街 APP 上提供了搜相似商品的功能。如圖 4 所示,其過程是點擊單個商品圖像右下角的搜索圖標,將與該圖像相似的同類商品展現給用戶。
圖 4. 搜相似的用戶界面,左 (a) 商品展示原圖,右 (b) 相似商品列表頁面
圖 5. 搜相似商品的系統概要圖
圖 5 展示了系統概要圖。在實現過程中,采用了圖像搜索技術來承擔相似圖像查詢,從而召回相似商品列表,然后結合業務因素和圖像相似性,進行商品排序。通過該功能,能夠提升用戶在蘑菇街 APP 上的瀏覽體驗,有利于發現更多相似商品;同時,用戶的停留時長也有所增加。
3. 圖像標簽技術應用3.1 技術原理介紹
圖像標簽技術的任務是通過圖像算法,自動識別圖片內容,如場景、風格、主體名稱、顏色、圖案等。通常來講,在電商中對商品圖片做圖像標簽的處理流程如圖 6 所示,其中所涉及到的技術模塊簡述如下。
圖 6. 圖像標簽處理流程
區域提取
這個階段利用圖像分割技術,將商品主體從背景中分離出來。以服裝圖像為例,區域提取的目標是對圖片進行精細化語義分割,排除背景與服裝、服裝與服裝之間的相互干擾。針對服裝模特圖片,我們通過 Human 算法,把主要區域提取出來,例如:頭肩、上衣、褲子、鞋、包包等。
圖像語義分割是圖像理解的基礎技術,在服飾信息分析、自動駕駛系統(具體為街景識別與理解)、無人機應用(著陸點判斷)以及穿戴式設備應用中舉足輕重。眾所周知,圖像是由像素組成,語義分割就是將像素按照圖像中表達語義含義的不同進行分組和分割。如圖 6 所示,紫色區域表示語義為“上衣”的圖像像素區域,熒光藍代表“下裝”的語義區域,軍綠色表示“包包”,橙色則表示“鞋子”區域。在圖像語義分割任務中,輸入為一張 H×W×3 的三通道彩色圖像,輸出則是對應的一個 H×W 矩陣,矩陣的每一個元素表明了原圖中對應位置像素所表示的語義類別( label)。因此,圖像語義分割也稱為“圖像語義標注”。
在語義分割領域,全卷積網絡 (Fully ,FCN) 推廣了原有的 CNN 結構,在不帶有全連接層的情況下能進行密集預測。FCN 使得分割圖譜可以生成任意大小的圖像,且與圖像塊分類方法相比提高了處理速度。實際上幾乎所有關于語義分割的最新研究都采用了 FCN 結構;不過該框架中的池化層在增大上層卷積核的感受野、聚合背景的同時,卻丟棄了部分位置結構信息。
在服裝語義分割中,人體結構和服裝位置之間的相對關系,對提高分割效果來說至關重要。我們在實際工作中,借鑒了 論文(: Image with Deep Nets, , and Fully CRFs. arXiv:1606.00915, 2016) 的空洞卷積( )思想,保留了池化層中所舍棄的位置結構信息。
丟失的位置結構信息主要由于重復池化和下采樣造成,因此我們的網絡中移除了最后的若干個最大池化層下采樣操作,并對濾波器進行上采樣,在非零的濾波器值之間加入空洞,進行空洞卷積。如圖 7 所示,(a) 中的常規卷積只能獲取到較小感受野上的稀疏特征;(b) 中方法采用空洞卷積后可以得到較大感受野對應的更豐富特征,對應到服裝語義分割也就保留了人體和服裝之間的位置結構信息,有助于服裝分割效果的提升。
圖 7. 圖像語義分割中的卷積操作
屬性分類
根據電商業務特點,主要從三個不同的維度來定義標簽體系,包括類目、元素、顏色。類目主要描述商品是什么,元素和顏色體現商品有什么樣的性質。
我們定義的類目包括服裝類、生活類、化妝品,元素范圍包括風格、紋理、版型等。以服裝為例,標簽信息比較復雜,覆蓋到服裝的多級類目、顏色、領型、衣長等,這導致同一張圖存在多個標簽。在實際工作中我們聚焦于以下兩個方面的屬性分類解決方案。
標簽的層級關系建模。
電商商品的層級類目結構導致一件商品具有層級化的標簽,例如 T 恤:它的一級類目是服裝,二級類目是上衣,三級類目是 T 恤,因此一件 T 恤的商品圖單類目標簽就有 3 個。根據不同標簽和相應的數據訓練單獨獲得 3 個模型是一個可行方法,但是系統復雜度過高。
我們采用多級 word tree 結構來實現一個整合多套標簽的模型,同時用標簽間的關系來約束輸出,概率表示為:P(T 恤)=P(T 恤|上衣)*P(上衣)。根據這個思路設計,用一個模型就能表示出層級關系的多套標簽,不僅充分利用了同一批數據,而且通過條件約束之后輸出的標簽更精準。
標簽的多維度特性。
對于同一件商品會有不同維度的信息描述,以 T 恤為例,它有衣長、領型、袖型等維度的信息。因此對于多維度的標簽模型,我們采用多任務(multi-task)的方法,用一個網絡同時提取不同維度的圖像特征,能夠統一描述圖片內容。
在實際系統中,我們利用了百萬級別的樣本進行模型訓練,基礎模型的網絡結構是殘差 18 層網絡(-18)。業務測試中類目的準確率是 92.46%,元素分類的準確率是 91.10%。
顏色量化分析
用色彩來裝飾自身是人類的原始本能,色彩在服飾審美中有著舉足輕重的地位,自古至今都是服裝三大要素之一,因此服裝顏色標簽識別是重要部分。通過區域提取過程獲得上衣、褲子等服裝單品的區域后,對單品圖像采用改進的 Mean-Shift 算法進行顏色聚類,得到服裝單品的主要顏色占比。
實際應用中,蘑菇街商品圖片的顏色會受到拍攝光線和濾鏡處理的影響,這給我們的顏色識別帶來了挑戰,主要表現為兩個方面:
顏色空間的選擇:不同的顏色空間有不同的特點,Lab 色彩空間具有單獨的亮度通道,因此為了減小光照對聚類算法的影響、提升顏色聚類的準確度,我們會在 Lab 色彩空間對圖片色彩進行一定的矯正,再進行顏色聚類,以盡可能減少光照和濾鏡對顏色識別的影響。
服裝色卡定義:根據蘑菇街服飾顏色分布及商品標簽需要,定義了蘑菇街標準的 72 色服裝色卡。基于顏色聚類的結果,獲取到主體顏色的聚類中心信息,所占比例最大的聚類中心所對應的色卡,被定義為最終輸出顏色名稱。
3.2 應用:商品屬性的自動填寫
商家在發布新品時,需要填寫商品的標題、上傳圖片,填寫商品的屬性值,以及詳情頁信息。當上新量很多的時候,特別是籌備雙 11 期間,填寫商品信息比較費時,加大了商家的工作量。而圖像算法能夠在商家上新的環節,通過分析上傳的圖片,得到圖中的關鍵信息,為商家提供便利。
以服裝類目舉例,商家上傳了商品圖片后,我們通過圖像標簽技術模塊,計算得到圖中商品的一系列屬性信息。例如圖 8 所示,這些信息包括:類目(毛呢外套)、袖長(長袖)、版型(收腰)、領型(西裝領)、衣長(長款)、風格(韓系)、顏色(藕粉色)等。利用這些信息,自動幫商家填寫好對應的屬性,節省了商家選擇屬性值的時間。當商家發現圖像算法識別錯誤時,可以在自動填寫的基礎上,對已填寫內容進行手動修改。整個流程能夠大幅度減少商家上新填寫信息所需時間,提升商家的業務效率。
圖 8. 商品屬性自動填寫
4. 結語
在實際的業務場景中,圖像算法開發是基于應用來驅動的,為保障平臺運營和用戶體驗提供價值。我們的工作,通過圖像搜索技術可以自動識別平臺上的同款商品,提升后臺商品管理的效率;也能夠幫助用戶發現更多相似商品,改善用戶體驗。同時,運用圖像標簽技術,為商家發布新品節省信息填寫時間,提升了商家效率。
我們在日常的開發過程中積累圖像算法的基礎模塊,并在雙 11 的業務開發中拓展其運用場景;未來將根據業務中的數據變化、場景變化圖的應用算法有哪些,進行技術迭代開發,從而為不斷升級的業務需求提供保障。
致謝:本文工作是蘑菇街圖像算法組同學的共同貢獻,特此致謝!
今日薦文
點擊下方圖片即可閱讀
如何基于AWS的基礎設施構建高可用,高可拓展的系統