机器之心:首先,我们非常好奇,在鹿班的眼里,设计由哪些部分组成?
星瞳:用 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 设计,从静态图扩展到动态图,从单张影像到视频等,对于设计师来说都是成本高而相对收益低的工作。因此我们希望智能设计也能完成形式更新颖的设计,并且做到高效高质、普惠低成本。
所思即所见是我们的愿景,目前我们还只是刚刚在路上,希望有更多同仁加入进来,把视觉生成这个领域做大做强。