機器之心:首先,我們非常好奇,在鹿班的眼裡,設計由哪些部分組成?
星瞳:用 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 設計,從靜态圖擴充到動态圖,從單張影像到視訊等,對于設計師來說都是成本高而相對收益低的工作。是以我們希望智能設計也能完成形式更新穎的設計,并且做到高效高質、普惠低成本。
所思即所見是我們的願景,目前我們還隻是剛剛在路上,希望有更多同仁加入進來,把視覺生成這個領域做大做強。