鹿班|一人設計10億圖片,這個「設計師」如何演進?

本文內容提煉: 
一、如何創建圖片數據與用戶注意力之間的鏈接? 
二、如何進行結構化規模化的圖片生產?

2019 年雙十一期間,鹿班面向集團電商場景輸送了 10億 規模的圖片。從提高公域流量效率,到商傢俬域的表達賦能,隨着場景的細分,分人羣精細化運營的需求提出,對圖片結構化生產,規模化生產在量和質上的要求不斷提升。圖像生成技術也在不斷的演進,本篇將圍繞鹿班最近一年的在生成能力上演進以及實踐作展開,歡迎探討交流。前端

上圖是咱們有過採訪的在平臺上賣薑茶的店鋪的圖片運營經驗,能夠看到不一樣場景下的商品圖文,在內容和形式是極具多樣性,這種多樣性不一樣於海量商品的個性化多樣性,這種多樣性是對 C 端用戶注意力更加精細的吸引,這種多樣性是對 B 端商家運營能力的一個新命題。算法

那麼如何知足這種多樣性生產?如何創建圖片數據與用戶注意力之間的鏈接?如何對商家賦能?下面我會從圖片生產的視角切入,嘗試回答以上問題。canvas

生產標準-圖片結構化

在 C 端的商品分發鏈路上,得益於結構化的標準定義,使得商品的數據和特徵能夠被高效的傳遞收集處理,從而給予模型和算法充分的施展空間。後端

當嘗試將商品圖片的數據做爲一個總體進特徵提取計算時,不管是低層次的顯示特徵仍是高維的語義隱式特徵在基於深度神經網絡處理後都變成了一個機率問題,但實際咱們更但願把機率轉換爲肯定性輸入從而更準確的挖掘圖片特徵與用戶行爲之間的關聯關係。瀏覽器

電商的圖片生產除了最開始的拍攝外,更多的會依賴後期的圖像處理軟件,好比PS(photoshop)進行圖文的創做編輯,根據圖像處理軟件的圖層劃分標準,咱們對圖片進行結構化的分層定義。給圖片引入圖層(layer)屬性,從結構、色彩、文字(內容)三個維度對一張圖片進行結構化的描述。經過結構化使得圖片自身的屬性特徵能夠被高效準確的傳遞收集處理,進而使得後續的生成加工成爲可能。緩存

爲了標準的執行,咱們面向商家設計師開發了配套的生產工具,在保持設計師工做流程不變化的前提下,將原來非結構化的單張圖片轉換爲自描述的 DSL 結構化數據,從而在生產的源頭保證了圖片數據結構化的執行實施。性能優化

生產工序-流程編排

當圖片有告終構化的定義後,咱們將圖片的生成轉換爲成基於人機協做的數據匹配排序問題。爲何是匹配排序?網絡

咱們積累了大量的設計數據,相比以前非結構化的設計創意,經過圖片結構化咱們能夠將設計精確解構到每個圖層,每個元素,每個文字。進而沉澱了可複用的數據資產。根據用戶喜愛,商品屬性進行圖片表達的好中選優,這就轉化爲一個數據匹配問題。數據結構

數據匹配包含兩個部分:一是由設計師創做的面向特定場景或商品表達的設計數據,咱們稱之爲模板;二是由用戶屬性數據以及在瀏覽商品圖片過程當中產生的的收藏、點擊、購買等用戶行爲數據。架構

對於的匹配排序有兩層,首先是商品圖片和模板的匹配,這層經過定義設計約束進行參數化的求解實現匹配。

好比基於模板的背景色約束商品圖片主色區間,根據模板結構佈局約束商品圖片主體形狀等。經過圖像檢測/識別算法在線提取商品主體的圖片特徵,結合離線計算的模板特徵進行匹配計算。

而後是用戶特徵與圖片特徵的匹配計算,在建模時咱們把數據劃分紅三個特徵組,分別是用戶特徵組,商品特徵組合和圖片特徵組,經過 embedding 變換對獲得特徵向量進行兩兩交叉預測建模,之因此採用兩兩分別組合而不採用三組向量聯合建模的緣由是考慮到對於電商場景,商品特徵與用戶特徵之間的信號更強,若是聯合建模訓練會致使圖片的行爲的關係不能有效的被學習到,而經過兩兩交叉建模,能夠針對性的作預測結果的加權。

問題定義清楚後咱們依然要面對來自業務的複雜性和快速響應問題,爲此咱們定義了生產 pipline,將生產流程與生產能力分而治之。面對複雜業務需求提供生產流程編排能力,爲提升響應速度提供可插拔的生產算子模型。

► 生產流程-節點編排

將圖片設計生產的理念流程化,流程系統化。經過工做流引擎實現生產節點的編排管理,從而讓業務方能夠靈活的按需求進行生產線的定義組裝,知足多場景的生產需求。

► 生產能力-可插拔算子

算子定義了統一的輸入輸出以及必要的context,經過對約定輸入的計算處理完成效果實現。
圖像類算子:圖像分割,主體識別,OCR,顯著性檢測等。
文本類算子:短標題生成,文字效果加強等。
規則類算子:人工干預,流程控制等。

► 經過這套生成引擎,白盒化的對生成能力進行分制管理,面向二方能力的開放友好,同時知足業務集成的靈活性。目前線上共管理了10個核心場景,33個生產節點,47種算子能力,經過編排組合實現了10億規模圖片的分場景矩陣式生成。

生產工藝-圖文渲染

若是說生產架構解決了宏觀的生產工序問題,那麼渲染就是面向微觀的工藝問題。

渲染首先要解決的是效果統一,除了直接經過服務端渲染圖片之外,在商家側須要所見即所得的二次編輯能力,也就是對於同一套 DSL 數據協議,在先後端需保證渲染效果統一,爲此咱們構建了先後端同構的渲染方案,開發了基於 canvas 的畫布引擎,在前端經過 UI 的包裝提供圖片可視化編輯能力;在雲端經過 puppeteer 無頭瀏覽器加載 canvas 畫布引擎實現圖片生產。

其次渲染須要保證對視覺設計的還原能力,尤爲是文字渲染效果。前端渲染對豐富文字效果的支持因爲字體庫安裝問題很難完成,同時後端也缺少對文字效果的標準協議定義。而有了同構的渲染能力後,咱們能夠將前端協議的優點與後端字體庫的優點結合,靈活的完成視覺還原。

淘寶首焦 banner 場景下,單字單樣式的模板較普通模板在 AB 分桶試驗下點擊率平均提高約 13% 。

生產保障-性能優化

在 10億 量級的規模下,若是沒有高性能的工程保障,一切效果的提高都是零,雙十一期間鹿班的平均合圖 RT<5ms ,從 DSL 解析到 OSS 上行鏈路完成平均 RT<200ms ,在沒有增長機器資源的狀況下,實現了相較於去年的總體系統吞吐性能提高 50% 。整個後端引擎分爲兩部分:

渲染:將結構化的 layer 數據轉換爲獨立的圖片數據流。不一樣類型圖層轉換交由對應的 handler 處理。執行並行化渲染。

合圖:將渲染獲得的多個圖層數據進行圖像合併計算,通過編碼壓縮,圖片上傳,獲得成圖。

性能優化主要分如下幾點:

  • 圖層拉取並行化,本地採用 LRU-K 主動緩存,減小 tfs 拉圖消耗。
  • GPU 顯存主動調度管理,對顯存預先分段分片,減小頻繁顯存的申請分配與釋放消耗。
  • jpg 編碼優化,經過 SIMD 進行加速,軟編碼的平均耗時由 70ms 降低至 20ms 。

將來展望

圖片做爲商品信息展現的重要載體,不管是在公域的搜索推薦仍是私域的店鋪詳情都承擔着傳遞商家意圖與幫助消費者決策的雙重做用。

對於商家:經過技術與數據賦能商家在圖片生產上的持續優化,讓結構化的圖片可以更好的被機器理解,更高效的分發。同時增長商家的運營抓手。
對於消費者:利用更多維的圖片特徵得到對受衆更泛化更精細的刻畫能力,更好的知足甚至激發用戶興趣。

We are hiring

淘系技術部依託淘系豐富的業務形態和海量的用戶,咱們持續以技術驅動產品和商業創新,不斷探索和衍生顛覆型互聯網新技術,以更加智能、友好、普惠的科技深度重塑產業和用戶體驗,打造新商業。咱們不斷吸引用戶增加、機器學習、視覺算法、音視頻通訊、數字媒體、移動技術、端側智能等領域全球頂尖專業人才加入,讓科技引領面向將來的商業創新和進步。

請投遞簡歷至郵箱:ruoqi.zlj@taobao.com


本文做者:鮑軍(推開)

閱讀原文

本文爲阿里雲內容,未經容許不得轉載。