阿里巴巴「鹿班」演算法技術負責人星瞳:用可控視覺生成引擎完成智慧設計

機器之心發表於2018-05-04

在阿里巴巴,有一位接觸設計不過兩年時間,就從零開始做了 10 億張海報,達到阿里巴巴 P5(中級) 設計師水平的傳奇「人物」。它叫「魯班」,是阿里巴巴神祕的智慧設計系統。在第七屆 UCAN 使用者體驗設計論壇上,「魯班」正式以「鹿班」為名加入「阿里動物園」,對外開放核心能力,首批計劃邀請一百名設計師。同時面向優秀設計師推出「馴鹿計劃」,邀請 ta 們訓練機器,完成有自己風格的設計。論壇期間,機器之心受邀訪問了鹿班智慧設計系統技術負責人星瞳,在首批受邀設計師之前,一窺鹿班如何看待設計,又如何進行設計的祕密。以下為採訪實錄。

機器之心:首先,我們非常好奇,在鹿班的眼裡,設計由哪些部分組成?

星瞳:用 Photoshop 做過設計的人就會知道,一張圖裡有若干個圖層,一個圖層裡有背景、另一個圖層裡有修飾、再一個圖層裡有商品等等。鹿班也是這樣,認為圖是由基本元素組成的。每一個元素(或者畫素集合)又可以有多個維度的描述,包括空間的(位置座標 x、y、z,其中 z 指深度空間維度)、視覺的、內容的描述等。

鹿班的「元素」體系是一個兩層的樹狀結構,即不過分複雜,又能給元素一定的區分度。第一層把元素分成若干個大類,比如主體、文案、修飾、標識、背景等。第二層再對大類做細分,比如主體就可以分為商品、物體或者模特;文案分為主題文案、輔助文案、行動利益點等;修飾也有區域修飾、點狀、線條、碎片修飾等等不一而足。除了分類外,每個元素也有「語義層」對其進行更詳盡的描述,例如一個「商品主體」的色系、風格、適合場景等是什麼。

如果你展示給鹿班一張成品設計圖,鹿班會對圖片進行「設計結構化」,用分類和分割的方法,進行一個反向設計的過程,將影象還原成結構化、帶有語義的元素集合。

阿里巴巴「鹿班」演算法技術負責人星瞳:用可控視覺生成引擎完成智慧設計

機器之心:為了生成一張設計圖,鹿班需要使用者或者說設計師提供哪些輸入?

星瞳:鹿班的定義是一個可控的視覺內容生成系統,這裡的「可控」就指使用者通過輸入需求來描述對結果的視覺預期、對生成過程進行控制。從另一個角度講,我們希望生成過程是一個可解釋的過程,而不是一個黑盒。

使用者的需求可能會以多種形式出現,他可以用自然語言描述、可以給一張之前的圖做示例、也可以畫一個草圖把想要的元素簡單排列,即使使用者什麼都沒有給出,鹿班作為一個線上系統也能捕捉到一些上下文資訊,例如設計是否用於某個特定的活動、有特定的主題之類的。

得到上述四類使用者輸入之後,我們對這部分「資料」進行規範化與結構化,變成系統可以理解的「資訊」標籤,進行後續的處理。

阿里巴巴「鹿班」演算法技術負責人星瞳:用可控視覺生成引擎完成智慧設計當然,使用者輸入資訊並不是一個基於規則的固定系統,一方面,我們不希望資訊輸入是一個不自然的過程,所以使用者可以選擇輸入的詳細程度,而系統會對使用者沒有指定的部分進行自我補全與自我推薦;另一方面,我們也希望系統在以使用者需求進行約束後,仍然能給出有靈活度和自由度的結果。

機器之心:系統能夠接受的資訊都有哪些種類?

星瞳:大體上可以分為內容標籤和視覺標籤。

視覺標籤的典型例子有構圖:是採用上下結構還是左右結構;色彩:整體的色調是紅藍還是黑白。

內容標籤則會描述風格:是清新、輕奢還是黑暗等;以及語義標籤:例如「雙十一」或者「三八婦女節」;雖然語義約束大多蘊含在影象中,但仍然可以以標籤的形式提取出來。

機器之心:系統拿到標籤,進行設計之後,輸出給使用者的是什麼?

星瞳:會根據使用者需求,提供畫素級別的成圖,或者可以嵌入到各式 App 裡面的、可用於後期渲染的結構化資訊。這個過程被稱為「資料視覺化」。你可能會在手機淘寶的首頁 Banner 上或者商品詳情頁裡看到這張圖,也可能線上下看到列印成海報的版本。

機器之心:設計的過程可以分為幾部分?

星瞳:智慧設計是一個理解設計、抽象設計、重構設計、增強設計(而不僅僅是擬合)的過程,需要滿足高質且多樣的要求,所以鹿班的框架流程本身是一個非常複雜的過程。

人類設計雖然千變萬化,但其中仍然有一定規律可循。比如,平面設計可以被拆分為草圖、細化、視覺、評估四個步驟,三維設計可以被分解成點雲、mesh、貼圖、渲染等。所以,我們的主系統可以被認為由四部分組成,分別是:規劃器、行動器、構建器和評估器,輔以一些預處理和後處理過程。

首先是規劃器,規劃器接受使用者的約束後,以此為條件,序列化地生成一個粗略的草圖。「序列化」是說,擺放元素是有先後順序的。這個順序可以是一個樹狀模型,也可以是一個二維或多維的有序過程,比如,可以先擺放第一個元素(圖層),然後根據第一個元素優化第二個元素的擺放位置,然後根據前兩個元素優化第三個元素的擺放位置,以期達到整體的協調一致。

之所以選擇在「元素級」而不是「畫素級」進行序列化生成,是因為畫素級的可選狀態數量太多,且可選範圍太大。影象「生成」的本質就是重複做兩件事:選擇畫素的顏色(視覺角度),選擇往哪擺(空間角度)。以一張 256 x 256 的圖片的生成為例,畫素級生成的每一步都相當於有超過 6 萬個狀態需要選擇;如果採用 RGB 色彩模式,每一個狀態有超過 1600 萬種顏色 (256 x 256 x 256) 可以選擇……這遠遠超過了語言、圍棋等其他序列化優化問題的規模。因此「畫素級」的生成會變得不可控。所以我們選擇在「元素級」或者「超畫素級」(畫素級和元素級的中間態)進行生成。

阿里巴巴「鹿班」演算法技術負責人星瞳:用可控視覺生成引擎完成智慧設計

機器之心:規劃器需要規劃的序列有多長?

星瞳:視使用者需求而定。在使用者的輸入中有一類約束叫做「複雜度」。複雜度較低的設計可能有 8-10 種元素需要擺放,複雜度較高的設計可能有超過 50 種,當然,我們也會為序列設定上限,不會讓它無限地生成下去。

機器之心:行動器的職責是什麼?

星瞳:行動器是把草圖細化的過程。這裡就和我們分層的元素體系掛鉤了。例如色彩上,規劃器約定了某一元素的色系是紅,然而具體用到的紅,是淺紅、深紅還是紫紅,就是在行動器部分決定的。而在空間上,行動器就就好比把一個 64 x 64 規模的草圖,變成 256 x 256 級別的精細構圖。

我們用兩個思路處理細化問題:

第一個是用多智慧體強化學習(Multi-agent Reinforcement Learning)來把細化問題變成一個組合優化的過程。我們用了數以千計的智慧體,每個智慧體在色彩、空間等方面都有若干個受限的動作(Action,此時受限是為了保持生成的可控性)。此時,單個動作的好壞是沒有意義的,只有多個智慧體結合起來得到一個較好的效果,我們才認為獲得了一個較優的狀態。

因為強化學習監督學習不一樣,沒有明確的標籤可以進行分類。我們傾向於讓智慧體在行動中不斷擬合設計師已經做好的優質作品的構圖。然而構圖是由複雜的元素及其性質組成的,因此我們計算每個智慧體和最終的智慧體之間在各個指標上的「距離」,再通過一些求和方法,得到最終指導智慧體繼續行動的方向。這一部分我們和 UCL 汪軍教授團隊進行了緊密的合作,取得了一些成果。

另一個思路是用生成對抗網路(GAN)的思路來解細化問題。我們希望理解設計,然後把優質作品中關於色系、空間佈局、風格的內容抽象出來,進行重構與增強。然而生成不等於複製,我們不希望得到千篇一律的或者和樣本類似的設計。因此我們在每個中間環節加入一些變化因子,使最後的結果既滿足那些從原有設計中抽象出來的邏輯,還新增了一些新的變化。

阿里巴巴「鹿班」演算法技術負責人星瞳:用可控視覺生成引擎完成智慧設計

機器之心:「優質作品」的來源有哪些?「優質作品」中蘊含的設計師的理念又如何傳遞給行動器?

星瞳:優質作品的來源主要有二。第一,我們有許多合作方,例如我們會和鹿班的共同發起方、阿里巴巴 UED 團隊的設計師有緊密的合作關係。第二,我們也會利用阿里和淘寶的平臺優勢,找到效果出色的設計作品,進行抽象和理解。第三,我們也會和外部素材資源方進行合作。

優質作品的理念抽象無外乎三種,一種是人的知識的抽象,設計師把長期積累的經驗以知識圖譜的形式表現出來;一種是資料裡隱含的理念,一幅好作品可能說明不了什麼問題,但如果成千上萬的好作品組成一個資料集,那麼其中自然而然地蘊含了一些共性;還有一種則是線上上規模化使用過程中,有實際效果的設計。

機器之心:構建器進行了哪些工作?

星瞳:構建器負責把細化過的結構草圖變成畫素級別的成圖。其中涉及兩個部分:

第一是要把尺寸統一的結構草圖按照需求做成尺寸千差萬別的成圖。假設草圖是 256 x 256 的,但是成圖需要一張 1000 x 800 的,還需要一張 200 x 400 的。實現「多尺寸」最重要的是找到合適的元素,我們用了元素庫檢索、遷移和生成三種方式來覆蓋使用者千變萬化的需求。獲得元素後在進行渲染、組合、貼圖等。

阿里巴巴「鹿班」演算法技術負責人星瞳:用可控視覺生成引擎完成智慧設計

機器之心:最後由評估器對畫素級的成圖進行評估?

星瞳:是的。規劃器、行動器和構建器一起生成了數十張圖,其中真正會呈現給使用者的可能只有「最好」的一張或兩張。此時,對眾多成圖進行打分的就是評估器。

評估器也用了非常複雜的函式,從視覺、內容等角度衡量成圖的效果。例如在視覺角度,評估器要衡量元素間顏色是否相搭、元素間空間是否存在遮擋;在內容角度,要讓商品和裝飾相匹配,文字和商品相匹配。除此之外,我們也和合作方一起,搭建了一些美學角度的考量。在對多個角度進行評判後,我們根據成圖的綜合得分進行排序,決定是否反饋給使用者。

阿里巴巴「鹿班」演算法技術負責人星瞳:用可控視覺生成引擎完成智慧設計

機器之心:評估器的衡量內容和之前三者存在一定程度的重合,原因是什麼?

星瞳:有兩個方面原因。第一是研究與實踐之間的差距。規劃器與行動器設計得再精妙,最後生成的成圖彼此之間仍然會存在質量上的差距。因此我們用評估器去確保「可控生成」是真正的「可控」。第二是「滿足設計感要求」和「投放效果好」之間的差距。即使一張圖滿足了設計上的需求,也不保證能獲得好的投放效果,因此要在生成之後進行效果的預估。

機器之心:能否請您概括一下,鹿班智慧設計系統能如何幫助設計師完成工作?

星瞳:設計師進行設計需要花費大量的時間,鹿班可以完成設計師較難滿足的實時線上需求以及「千人千面」、「千貨千面」或者「千場千面」的差異化需求。另外,設計師在進行設計時大多很難接觸到真實的場景,很難獲得個人設計作品的「點選、成交、轉化」等歷史反饋資訊。因此,人類設計師更多從美學、視覺的層面上思考,而很難從產品、效果層面進行思考,這是鹿班通過評估器中的針對效果的評估而獲得的優勢。

器之心:在最後,能否請您從演算法的角度總結一下鹿班中的不同模組中蘊含的 AI 能力,並介紹一下鹿班未來的「進化」方向?

星瞳:鹿班可以說是各種 AI 技術的集中使用者,因其理解視覺,方可生成視覺。總體來說有五個方面:

  • 首先是分類問題。系統要在「設計結構化」階段分類成圖,也要在「資料視覺化」階段分類元素。這些分類問題又包含多個層級。

  • 然後是檢測和分割問題。系統要從成圖中檢測目標主體並進行分割。

  • 第三是序列模型。規劃器的主體就是一個序列模型。

  • 第四是強化學習強化學習除了用於上述提到的行動器之外,還用於對訓練資料進行資料擴增(data augmentation)。

  • 第五是各類對抗生成網路(GAN)技術,尤其是 conditional GAN 及照片級別 GAN 技術。

當然還有一些比較基礎的技術,如特徵表達、多維索引搜尋等。

現在的系統是一個非常複雜的系統,我們希望在未來可以引入一些「端到端」的思想,在不損失可控性和可解釋性的情況下,對一些模組進行融合。我們也很關注學界裡不同種類的對抗生成網路的進展,包括如何將對抗生成網路與強化學習結合起來。

此外,在設計知識圖譜這一領域,我們希望與外界合作,做得更加完善和靈活。設計水平是很難衡量的,我們希望在此做出一些探索和改進,更好地量化生成效果。

從產品的角度來講,從平面設計擴充套件到 3D 設計,從靜態圖擴充套件到動態圖,從單張影像到視訊等,對於設計師來說都是成本高而相對收益低的工作。因此我們希望智慧設計也能完成形式更新穎的設計,並且做到高效高質、普惠低成本。

所思即所見是我們的願景,目前我們還只是剛剛在路上,希望有更多同仁加入進來,把視覺生成這個領域做大做強。

相關文章