阿里开发的智能设计系统——鲁班,一面世就让低端美工捏了把汗,高水平设计师则鄙夷有之,欣喜有之。虽然着实火了一把,但较为深入的报道并不多(我看过的比较好的是特赞和同济设计与人工智能实验室的2篇采访[1][2],推荐知乎专栏设计与人工智能),这让外界对其也有很多猜疑,甚至有外行人直接指出鲁班就是蹭热度,不过是调出来素材用模板排下版,根本不是人工智能。(不过当时鲁班负责人乐乘已经透露,鲁班采用了强化学习来做生成,可以说是正儿八经的AI了)
但鲁班的脚步并没有停下。2018年3月,阿里智能设计实验室和浙大国际设计研究院的孙凌云老师团队共同在浙大成立了IDEA LAB,专门做AI+设计相关的研究。刚刚结束的UCAN大会上,鲁班进化成了“鹿班”,正式加入阿里动物园大家庭。今天,更加深入的专访终于也出来了。本文将结合笔者相关的研究和技术积累,对其进行剖析。请先阅读机器之心的专访文章:
专访 | 阿里巴巴「鹿班」算法技术负责人星瞳:用可控视觉生成引擎完成智能设计
1 图形组成
一说到图像处理,基本上离不开像素的概念,图像被看成像素的集合。但鹿班并不是做像素级别的生成,而是元素级或超像素级的生成。
元素是像素的集合,是一个和图像其他部分有明显区分的图形单元。在鹿班中,元素的数据结构为2层的树状结构。根据星瞳的描述:
第一层把元素分成若干个大类,比如主体、文案、修饰、标识、背景等。第二层再对大类做细分,比如主体就可以分为商品、物体或者模特;文案分为主题文案、辅助文案、行动利益点等
可以看出,这个树状结构实际上是主功能-细分功能的2层多叉树,这个多叉树和本体有些像,这里暂且称之为功能树。(我有一篇论文中也提到了简单的“图元本体模型”,结构和这个类似,但应用场景不同,所以属性组成不同)。需要注意的是,功能树是一个预定义的概念框架,所有元素都用这个概念框架进行描述。如何描述,结合原文中的图片可以解析:

- 第一行(x,y,z,w,h,a)是元素的坐标(z对于二维来说就是图层)、包围矩形宽高、透明度信息,与功能树无关;
- 第二行的01编码应该就是上述功能树的编码。0表示元素具有该节点的功能,1表示不具有该节点的功能;
- 后边几行则就应该是文中提到的“语义层”的内容了,在数据结构上也和功能树无关。不过这里的“层”更多应该是概念上的层次,而非数据结构中树的层次,因为并没有使用树结构描述,可能是因为各种语义之间关系较远,扩展性强,而且有些语义的可取值太多,用树来编码会非常稀疏。
2 输入输出
2.1 输入
我在2017年初参与撰写的国家自然科学基金(51775492)中,有很大一部分的研究内容是“意象驱动产品定向演绎”,说人话就是以设计师各种形式的需求为导向,驱动产品设计结果的生成。当时对“意象”这个模糊的概念做了如下的细分描述:
- 文本
- 标签
- 自然语言
- 图像
- 草图
- 照片
- 音频
- 视频
- 三维模型
鹿班的需求输入也有很多种形式:标签、自然语言、上下文、成图、元素图和草图。可见在智能设计的用户需求上,各方看法还是比较统一的。
2.2 输入处理
上述多种模态的需求输入之后,需要进行规范化处理。这实际上是将上述输入信息中所蕴含的结构化特征等提取出来的过程。星瞳将它们分为3种类型,内容标签、视觉标签和可视元素。这步其实并不简单,它是信息理解/编码的过程——不仅要理解,而且编码的结果也得是人类可以理解的形式。在这个过程中,有有很多细节需要考虑:
- 缺失处理,这个星瞳给出了解决方案:
- 可能系统提供关联推荐
- 也可能自动补全
- 可控处理。这个星瞳也提到了,就是用户可以选择输入的详细程度
- 多模态处理:权重和优先级
- 歧义处理
- 冲突处理
- 询问修改
- 自动忽略机制
在越发强调情感化设计emotional design的今天,理解、提取和编码输入信息中的高层情感语义变得越来越重要。这一点需要NLP、感性工学等各种学科推动。
2.3 输出
鹿班的输出很有意思,具有明显的互联网产品的特色:成图和结构化信息。成图就是最终的结果图,很容易理解;结构化信息根据星瞳“用于后期渲染”的描述,应该就是所有的元素的所有信息。在数据上它们仍然是独立的元素,但可以根据信息,使用不同的平台和技术如CSS、PS等渲染成图。
3 系统架构

鹿班系统由4个模块组成:规划器、行动器、构建器、评估器,以及必要的前后处理。
3.1 规划器
规划器的机制很有意思,它是一个序列建模的过程——这一点和人设计过程很像:先干啥、后干啥,类似PS中的动作序列,可以用树结构表示。动作序列+被操作的元素,累积成最终的设计结果。不过在规划器阶段,生成的是草图,而不是最终结果
关于序列式图像生成,我在16-17年撰写的两篇论文中都遵循了这种思想,因为它是“可理解”的过程。第一篇论文提出了一个比较朴素的“层次表达模型”,用树结构将各图案元素组织起来,形成一个图案整体;第二篇论文更进一步,提出了元素之间的依存关系,使用依存树或依存森林来组织各元素,叶节点就是元素本身,非叶节点是元素之间的依存关系——这一点在鹿班中对应的就是序列中的动作。
这里的每一步蕴含的信息是非常多的,而且也有可能是多模态信息,需要使用多模态的的RNN和LSTM等框架进行学习,但这些关键词并未出现,所以不知道鹿班使用了多少。
3.2 行动器
行动器将规划器输出的草图转化为精细草图。星瞳提到,这里使用两种方法实现:强化学习和GAN。
鹿班采用的是多智能体强化学习。每个智能体在设计中个元素维度下,通过受限动作拟合已有的优质作品(优质作品来自阿里UED及合作方,以及即将开展的“驯鹿计划”)。星瞳透露模型有“数以千计”的智能体,数量并不算多。在这个方向上,鹿班团队是和UCL的汪军教授团队合作的。
根据星瞳对GAN的描述“变化因子”,可以推测他们使用的可能是CGAN。这样就可以将多模态的信息输入到网络,促成生成结果的差异化。关于CGAN,请参阅我的另一篇博文CGAN 条件生成对抗网络。在这个方向上,我所知道的信息是鹿班团队至少在和浙大的孙凌云副教授团队合作。
3.3 构建器
构建器将精细草图转化为成图。可以推测,前边规划器和行动器给出的“草图”应该不是2.1中所说的草图。2.1中的草图是线描图,本质上仍然是图片;而规划器和行动器的“草图”则应该是多模态信息组合成的设计方案。只有这样,行动器才能将初始草图细化,构建器才能将精细草图转化为成图渲染。
星瞳将构建器的任务分为2步:
- 获取元素。原文中,这一步被概括为适应不同尺寸,但关键还是元素的获取。横版、竖版、小屏、大屏,不同的需求对应了不同的成图尺寸,星瞳提到,“最重要的是找到合适的元素”,为了找到合适元素,用了“元素库检索、迁移和生成”满足不同需求。
- 可见元素的确定是这一步才进行的,进一步印证了前述使用深度学习技术生成的草图为设计方案的推测;
- 丰富的元素库仍然必不可少;
- 迁移和生成,不好推测是如何进行的。如果元素是从其他元素中将某些特征迁移过来生成,则和Neural style transfer神经风格迁移很像;如果是全新生成的,以下几种框架或技术可以实现:
- 图像到图像的生成:pix2pix
- 文字到图像的生成:DRAW、以及某些RNN
上述几种技术的分析都可以在我的博客中找到
- 渲染、组合、贴图等。行动器实际上才是设计师,构建器只是个绘图员,拿着构建器给出的方案去找素材、排素材、出图。
3.4 评估器
从视觉(如搭配、遮挡)、内容(需求匹配程度等)、美学等方面进行自动评估,优选出最高评分的成图。此外,人工评价也会介入。关于这些方面的自动评价,众多研究者给出了五花八门的评价函数,这里就无法推测他们使用了哪些了。
不过有一点我觉得很有意思。文中提到,即使一张图满足了设计上的需求,也不保证能获得好的投放效果,因此要在生成之后进行效果的预估。这方面的评估,应该是通过类似于用户点击的倾向性调查、以及真正的点击率等数据进行的。千人千面,鹿班将投放效果引入评估环节,这是传统设计师所获取不到的信息,而这些信息却是非常重要的,对改进设计有非常大的意义。这一点更加体现出了鹿班作为一个实打实的产品和实验室中的demo所不同的地方,不仅代替设计师的一些低端作业,而且通过数据为设计师赋能。
4 技术总结
结合星瞳概括的鹿班涉及到的5类关键技术,补充分析如下:
- 分类。包括成图分类、元素分类。涉及多标签分类、数据可视化、本体、知识图谱等技术;
- 检测和分割。元素的识别和分割;
- 序列模型。设计过程的序列化建模,可能会涉及到多模态序列学习;
- 强化学习。除了行动器中用到,数据增强也会用到;
- 对抗生成。果然是CGAN。
5 趋势
- 端到端
- 设计领域的知识图谱
- 2D到3D,静态到动态,图片到视频
- RL+GAN
鹿班集成了多种AI技术,面向真实应用场景、为设计师赋能,是一个非常棒的系统。在智能设计领域,鹿班是一个标杆式的产品。平面设计、艺术设计、产品设计、家装设计、机械设计……各细分方向的研究者都应该关注鹿班的技术和发展,学习其中的技术、汲取其中的理念,重视学科交叉与新兴技术,在自己的方向上做出具有创新性的工作,共同推动设计自动化、智能化向前发展。