閒魚億級商品結構化背後的思考和演進

1. 緣起

閒魚是一個典型的C2C場景的閒置交易平臺。每一個在閒魚的用戶都能享受到自由交易的樂趣。在這裏,可能你只要簡單的輸入商品名,商品價格,庫存等信息就能完成一個商品的發佈。即使是發佈之後,你也能夠隨時修改價格,內容等信息。充分的自由是閒魚活力的來源,可是這對於一個電商品臺來講卻有着難言的痛苦。本文要說的商品結構化就是痛點之一。java

商品結構化爲何重要?結構化信息是平臺認識商品的一個基礎。只有平臺瞭解商品的各個屬性,才能準確地將適合的商品推薦給適合的用戶。這樣才能更加高效地爲買賣家用戶創造價值。android

而因此C2C平臺的商品結構化之因此難,是由於C商家完成結構化的負擔重而動力不足。怎樣讓用戶以最小的成本,來完成結構化就是一個很是大的挑戰。咱們不能寄但願於商家後臺這樣很重的解決方案,咱們須要的是一個簡單高效靈活的解法。算法

2. 技術破題

怎麼解決?首先咱們從整個C2C商品發佈的全週期作一個方案的對比分析。網絡

  1. 方案一 離線式方案

改方案包括算法關聯&社會化方案。算法關聯方案是經過技術手段對用戶發佈的商品進行分析,從而進行同款的關聯或是屬性打標。社會化方案核心是將商品結構化包裝成一個活動。這樣能經過用戶參與答題的方式,進行商品結構化的關聯。離線方案核心的缺點是關聯鏈路太長,數據迴流慢。更爲重要的問題是分析出的數據沒有用戶確認,沒法在顯示域中使用。架構

  1. 方案二 手動關聯方案

這個是發佈中的處理方案。這個方案多是最爲直觀的方案。發佈過程當中,引導用戶作屬性打標或者同款商品的關聯。這個方案的優勢是簡單直觀。缺點一樣明顯:徹底將成本轉嫁給用戶。對C賣家來講,每增長一個發佈選擇項,均可能致使用戶流失。這個方案能夠作爲結構化的補充,卻不是咱們尋找的最優解。框架

咱們的思考:咱們可否在保障實時性的前提下,實現一個高效低成本的方案呢?答案就是本文給出的方案:智能發佈方案。若是閒魚用戶在發佈階段就能將準備發佈的商品自動關聯上手淘的商品庫中的某個商品。該商品就能使用同款商品的若干結構化信息,商品結構的化的問題不就迎刃而解了麼?工具

方案對比性能

  智能發佈 手動關聯 離線方案
用戶成本
實時性 極高
準確性 較高

可見智能發佈方案是一個成本和效果最爲均衡的方案。測試

3. 產品邏輯

先從經過下圖,瞭解一下產品核心邏輯:(以視頻發佈爲例)優化

簡單拆解:

  1. 主體對焦

做爲智能識別的開始。咱們須要經過AI算法識別出端側的拍攝的主體對象。同時還經過tracking 算法對物體作短暫的跟蹤對焦。這樣作的目的是跟用戶對識別物體目標保持一致。

  1. 智能識別&引導

咱們會在用戶拍攝過程當中對被拍攝物體進行實時識別。而且咱們很是創新地經過算法,引導用戶拍攝目標對象的核心信息。這裏引導的做用是爲了放大算法的效果。俗話說巧婦難爲無米之炊。若是用戶拍攝的內容沒有目標的核心信息,算法也很難作出精準的預測。

  1. 結果反饋&用戶確認

當用戶拍攝完成,咱們會以同款的方式,讓用戶進行一個簡單的選擇。一旦用戶選中某個商品(能夠不選)就能完成結構化關聯。至此咱們將複雜的商品結構化問題,轉變成用戶手指簡單的一點。用戶的結構化成本已經微乎其微。

4. 架構設計

4.1 技術挑戰

綜上智能發佈的核心解法是將商品結構化的產品問題,轉變成同款商品匹配這樣的技術問題。

因此咱們的核心技術挑戰:

1. 在發佈階段進行商品識別的實時性保障

2.怎樣經過壓榨AI的能力從而最大化同款商品的匹配成功率

那技術上可行麼?從閒魚角度解這個問題,咱們有三大技術優點:

  1. 以AliNN爲表明的移動AI解決方案使得端側AI計算成爲可能
  2. 咱們有這個星球上可能最大的商品信息庫(淘寶&天貓)
  3. 阿里達摩院雄厚的AI能力

咱們能夠經過前置部分AI能力到端側,大幅度提高鏈路的實時性。同時咱們將AI識別能力和淘系商品庫作結合,完成同款商品匹配的功能。

爲了作到上面的能力,咱們構建了完整的智能發佈技術架構

4.2 邏輯架構

首先介紹咱們的邏輯架構

總體設計上面分爲三層:

  1. UI 展現和交互層。核心是處理用戶輸入和結果反饋。
  2. 邏輯處理層。主要是控制智能識別管線的運做邏輯和子模塊處理結果的分發
  3. 框架層主要是各個核心處理子模塊

4.3 架構細節

細節來講,咱們經過協同flutter,java/Oc和C++三層邏輯來構建高效的識別能力。以下圖所示:

主要設計考量:

  1. 充分利用不一樣的技術,最大化研發效能。

    咱們充分利Flutter多端一致性的優點在UI層使用Flutter進行開發。同時咱們將部分共同的算法下沉到C++層。這樣能大幅提高兩端邏輯的複用率和一致性。

  2. 充分利用端側的計算能力

    1. 模糊檢測,類似度檢測,主體識別,tracking這些算法都是在端側實現的。除了充分利用端側的計算能力外,更重要的是提高拍攝過程當中的處理效率。最大化下降對網絡請求的依賴。
    2. 經過極致的壓縮算法,將最終上傳的圖片大小控制在10K左右。即使是4次請求也不過40K。能夠說對用戶流量不會構成壓力。
  3. 管線編排系統

考慮到後期系統的持續優化,對子模塊的處理邏輯的調整不可避免。所以咱們設計了一個靈活的管線來管理全部的處理邏輯。該管線能靈活組合java/Oc和C++的能力。而且能夠方便作到子功能的順序調整和功能增減。架構設計以下所示(以android爲例):

  1. 用戶隱私的保護

用做識別的圖片會作加密處理,將用戶隱私泄露的風險下降到最小。出如今公域中的圖片地址都是沒法直接訪問的。即使泄漏用戶的隱私也能夠保全。

4.4 算法架構

算法側的咱們也作了大量的優化。

智能發佈的最核心算法是同款商品的匹配算法。咱們將單幀的預測算法改進爲多幀預測。而且咱們創新性地將算法和交互作深度融合,極限壓榨算法的極限能力。過程以下所示:

若是算法發現當前幀若不足以做出較爲準確的算法預測,則將圖像信息向後傳遞。在傳遞過程當中,及時經過文案引導用戶拍攝算法所須要的信息。依次迭代直到完整預測出商品信息。算法處理邏輯以下圖所示。

5.效果

實時性處理性能:通過咱們的測試,識別過程除主動提示外對用戶無明顯感知。用戶的正常拍攝過程無掉幀等性能問題。

同款商品識別效果方面:

整體上基於多幀識別準確度相比單幀提高約20%

受限數據披露限制,不方便貼出分類目具體測試數據。給出幾個相對明確的結論:

通過咱們的試驗,咱們發如今彩妝/香水/美妝工具、美容儀、玩具等標品類目中識別率比較高。這些商品的核心信息每每容易在物品表面找到,容易識別。

而在非標品或者半標部分,例如童裝,運動鞋等識別率相對較低。這些商品的信息每每在外形中透出不足。這時候算法就須要用戶配合拍攝例如品牌這樣的核心信息。整體來講識別難度更大。

6. 將來

智能發佈將在9月份的版本中跟你們見面,歡迎你們試用&反饋。首先上線的是視頻發佈的部分,後續還會增長圖片,活動等場景。經過智能識別的項目,咱們相信必定能夠不斷提高閒魚商品結構化率。

經過該項目咱們不只構建了閒魚完整的對商品的實時識別能力。同時也沉澱了圖片預處理,tracking等一批端計算核心算法。基於此,咱們徹底能夠將更加實時的AI的能力賦能給更多場景(例如掃指定商品或者logo參加特定活動等)。

咱們暢想的將來發布是一個高度智能化的發佈。基於攝像頭對商品作深層次理解,系統直接給出商品信息,結構化標籤,推薦價格,甚至新舊程度等發佈要素。用戶所要作的僅僅就是一個確認。今天的智能發佈只是咱們偉大征程的第一步,咱們會向着目標不斷努力!


原文連接 本文爲雲棲社區原創內容,未經容許不得轉載。

相關文章
相關標籤/搜索