阿里巴巴「鹿班」算法技术负责人星瞳:用可控视觉生成引擎完成智能设计

简介: 在阿里巴巴,有一位接触设计不过两年时间,就从零开始做了 10 亿张海报,达到阿里巴巴 P5(中级) 设计师水平的传奇「人物」。它叫「鲁班」,是阿里巴巴神秘的智能设计系统。在第七届 UCAN 用户体验设计论坛上,「鲁班」正式以「鹿班」为名加入「阿里动物园」,对外开放核心能力,首批计划邀请一百名设计师。同时面向优秀设计师推出「驯鹿计划」,邀请 ta 们训练机器,完成有自己风格的设计。论坛期间,机器之心受邀访问了鹿班智能设计系统技术负责人星瞳,在首批受邀设计师之前,一窥鹿班如何看待设计,又如何进行设计的秘密。以下为采访实录。

机器之心:首先,我们非常好奇,在鹿班的眼里,设计由哪些部分组成?


星瞳:用 Photoshop 做过设计的人就会知道,一张图里有若干个图层,一个图层里有背景、另一个图层里有修饰、再一个图层里有商品等等。鹿班也是这样,认为图是由基本元素组成的。每一个元素(或者像素集合)又可以有多个维度的描述,包括空间的(位置坐标 x、y、z,其中 z 指深度空间维度)、视觉的、内容的描述等。


鹿班的「元素」体系是一个两层的树状结构,即不过分复杂,又能给元素一定的区分度。第一层把元素分成若干个大类,比如主体、文案、修饰、标识、背景等。第二层再对大类做细分,比如主体就可以分为商品、物体或者模特;文案分为主题文案、辅助文案、行动利益点等;修饰也有区域修饰、点状、线条、碎片修饰等等不一而足。除了分类外,每个元素也有「语义层」对其进行更详尽的描述,例如一个「商品主体」的色系、风格、适合场景等是什么。


如果你展示给鹿班一张成品设计图,鹿班会对图片进行「设计结构化」,用分类和分割的方法,进行一个反向设计的过程,将图像还原成结构化、带有语义的元素集合。


4f8a98d87a1219a54bc2c379b5d562b0.jpg


机器之心:为了生成一张设计图,鹿班需要用户或者说设计师提供哪些输入?


星瞳:鹿班的定义是一个可控的视觉内容生成系统,这里的「可控」就指用户通过输入需求来描述对结果的视觉预期、对生成过程进行控制。从另一个角度讲,我们希望生成过程是一个可解释的过程,而不是一个黑盒。


用户的需求可能会以多种形式出现,他可以用自然语言描述、可以给一张之前的图做示例、也可以画一个草图把想要的元素简单排列,即使用户什么都没有给出,鹿班作为一个在线系统也能捕捉到一些上下文信息,例如设计是否用于某个特定的活动、有特定的主题之类的。


得到上述四类用户输入之后,我们对这部分「数据」进行规范化与结构化,变成系统可以理解的「信息」标签,进行后续的处理。


fc355f60416e041313315fafb953fc77.jpg

当然,用户输入信息并不是一个基于规则的固定系统,一方面,我们不希望信息输入是一个不自然的过程,所以用户可以选择输入的详细程度,而系统会对用户没有指定的部分进行自我补全与自我推荐;另一方面,我们也希望系统在以用户需求进行约束后,仍然能给出有灵活度和自由度的结果。


机器之心:系统能够接受的信息都有哪些种类?


星瞳:大体上可以分为内容标签和视觉标签。


视觉标签的典型例子有构图:是采用上下结构还是左右结构;色彩:整体的色调是红蓝还是黑白。


内容标签则会描述风格:是清新、轻奢还是黑暗等;以及语义标签:例如「双十一」或者「三八妇女节」;虽然语义约束大多蕴含在图像中,但仍然可以以标签的形式提取出来。


机器之心:系统拿到标签,进行设计之后,输出给用户的是什么?


星瞳:会根据用户需求,提供像素级别的成图,或者可以嵌入到各式 App 里面的、可用于后期渲染的结构化信息。这个过程被称为「数据可视化」。你可能会在手机淘宝的首页 Banner 上或者商品详情页里看到这张图,也可能在线下看到打印成海报的版本。


机器之心:设计的过程可以分为几部分?


星瞳:智能设计是一个理解设计、抽象设计、重构设计、增强设计(而不仅仅是拟合)的过程,需要满足高质且多样的要求,所以鹿班的框架流程本身是一个非常复杂的过程。


人类设计虽然千变万化,但其中仍然有一定规律可循。比如,平面设计可以被拆分为草图、细化、视觉、评估四个步骤,三维设计可以被分解成点云、mesh、贴图、渲染等。所以,我们的主系统可以被认为由四部分组成,分别是:规划器、行动器、构建器和评估器,辅以一些预处理和后处理过程。


首先是规划器,规划器接受用户的约束后,以此为条件,序列化地生成一个粗略的草图。「序列化」是说,摆放元素是有先后顺序的。这个顺序可以是一个树状模型,也可以是一个二维或多维的有序过程,比如,可以先摆放第一个元素(图层),然后根据第一个元素优化第二个元素的摆放位置,然后根据前两个元素优化第三个元素的摆放位置,以期达到整体的协调一致。


之所以选择在「元素级」而不是「像素级」进行序列化生成,是因为像素级的可选状态数量太多,且可选范围太大。图像「生成」的本质就是重复做两件事:选择像素的颜色(视觉角度),选择往哪摆(空间角度)。以一张 256 x 256 的图片的生成为例,像素级生成的每一步都相当于有超过 6 万个状态需要选择;如果采用 RGB 色彩模式,每一个状态有超过 1600 万种颜色 (256 x 256 x 256) 可以选择……这远远超过了语言、围棋等其他序列化优化问题的规模。因此「像素级」的生成会变得不可控。所以我们选择在「元素级」或者「超像素级」(像素级和元素级的中间态)进行生成。


cf58c21f47bb2ced74d73b8e01b8c627.jpg

机器之心:规划器需要规划的序列有多长?


星瞳:视用户需求而定。在用户的输入中有一类约束叫做「复杂度」。复杂度较低的设计可能有 8-10 种元素需要摆放,复杂度较高的设计可能有超过 50 种,当然,我们也会为序列设置上限,不会让它无限地生成下去。


机器之心:行动器的职责是什么?


星瞳:行动器是把草图细化的过程。这里就和我们分层的元素体系挂钩了。例如色彩上,规划器约定了某一元素的色系是红,然而具体用到的红,是浅红、深红还是紫红,就是在行动器部分决定的。而在空间上,行动器就就好比把一个 64 x 64 规模的草图,变成 256 x 256 级别的精细构图。


我们用两个思路处理细化问题:


第一个是用多智能体强化学习(Multi-agent Reinforcement Learning)来把细化问题变成一个组合优化的过程。我们用了数以千计的智能体,每个智能体在色彩、空间等方面都有若干个受限的动作(Action,此时受限是为了保持生成的可控性)。此时,单个动作的好坏是没有意义的,只有多个智能体结合起来得到一个较好的效果,我们才认为获得了一个较优的状态。


因为强化学习和监督学习不一样,没有明确的标签可以进行分类。我们倾向于让智能体在行动中不断拟合设计师已经做好的优质作品的构图。然而构图是由复杂的元素及其性质组成的,因此我们计算每个智能体和最终的智能体之间在各个指标上的「距离」,再通过一些求和方法,得到最终指导智能体继续行动的方向。这一部分我们和 UCL 汪军教授团队进行了紧密的合作,取得了一些成果。


另一个思路是用生成对抗网络(GAN)的思路来解细化问题。我们希望理解设计,然后把优质作品中关于色系、空间布局、风格的内容抽象出来,进行重构与增强。然而生成不等于复制,我们不希望得到千篇一律的或者和样本类似的设计。因此我们在每个中间环节加入一些变化因子,使最后的结果既满足那些从原有设计中抽象出来的逻辑,还添加了一些新的变化。


9fb2588e1551acb78363d01e6258e9ff.jpg


机器之心:「优质作品」的来源有哪些?「优质作品」中蕴含的设计师的理念又如何传递给行动器?


星瞳:优质作品的来源主要有二。第一,我们有许多合作方,例如我们会和鹿班的共同发起方、阿里巴巴 UED 团队的设计师有紧密的合作关系。第二,我们也会利用阿里和淘宝的平台优势,找到效果出色的设计作品,进行抽象和理解。第三,我们也会和外部素材资源方进行合作。


优质作品的理念抽象无外乎三种,一种是人的知识的抽象,设计师把长期积累的经验以知识图谱的形式表现出来;一种是数据里隐含的理念,一幅好作品可能说明不了什么问题,但如果成千上万的好作品组成一个数据集,那么其中自然而然地蕴含了一些共性;还有一种则是在线上规模化使用过程中,有实际效果的设计。


机器之心:构建器进行了哪些工作?


星瞳:构建器负责把细化过的结构草图变成像素级别的成图。其中涉及两个部分:


第一是要把尺寸统一的结构草图按照需求做成尺寸千差万别的成图。假设草图是 256 x 256 的,但是成图需要一张 1000 x 800 的,还需要一张 200 x 400 的。实现「多尺寸」最重要的是找到合适的元素,我们用了元素库检索、迁移和生成三种方式来覆盖用户千变万化的需求。获得元素后在进行渲染、组合、贴图等。


8f755dc419ddc28e5eb48d872c8ca3fb.jpg


机器之心:最后由评估器对像素级的成图进行评估?


星瞳:是的。规划器、行动器和构建器一起生成了数十张图,其中真正会呈现给用户的可能只有「最好」的一张或两张。此时,对众多成图进行打分的就是评估器。


评估器也用了非常复杂的函数,从视觉、内容等角度衡量成图的效果。例如在视觉角度,评估器要衡量元素间颜色是否相搭、元素间空间是否存在遮挡;在内容角度,要让商品和装饰相匹配,文字和商品相匹配。除此之外,我们也和合作方一起,搭建了一些美学角度的考量。在对多个角度进行评判后,我们根据成图的综合得分进行排序,决定是否反馈给用户。


1e38fddc91c36c578f6c48563a197d7f.jpg


机器之心:评估器的衡量内容和之前三者存在一定程度的重合,原因是什么?


星瞳:有两个方面原因。第一是研究与实践之间的差距。规划器与行动器设计得再精妙,最后生成的成图彼此之间仍然会存在质量上的差距。因此我们用评估器去确保「可控生成」是真正的「可控」。第二是「满足设计感要求」和「投放效果好」之间的差距。即使一张图满足了设计上的需求,也不保证能获得好的投放效果,因此要在生成之后进行效果的预估。


机器之心:能否请您概括一下,鹿班智能设计系统能如何帮助设计师完成工作?


星瞳:设计师进行设计需要花费大量的时间,鹿班可以完成设计师较难满足的实时在线需求以及「千人千面」、「千货千面」或者「千场千面」的差异化需求。另外,设计师在进行设计时大多很难接触到真实的场景,很难获得个人设计作品的「点击、成交、转化」等历史反馈信息。因此,人类设计师更多从美学、视觉的层面上思考,而很难从产品、效果层面进行思考,这是鹿班通过评估器中的针对效果的评估而获得的优势。


器之心:在最后,能否请您从算法的角度总结一下鹿班中的不同模块中蕴含的 AI 能力,并介绍一下鹿班未来的「进化」方向?


星瞳:鹿班可以说是各种 AI 技术的集中使用者,因其理解视觉,方可生成视觉。总体来说有五个方面:


  • 首先是分类问题。系统要在「设计结构化」阶段分类成图,也要在「数据可视化」阶段分类元素。这些分类问题又包含多个层级。
  • 然后是检测和分割问题。系统要从成图中检测目标主体并进行分割。
  • 第三是序列模型。规划器的主体就是一个序列模型。
  • 第四是强化学习,强化学习除了用于上述提到的行动器之外,还用于对训练数据进行数据扩增(data augmentation)。
  • 第五是各类对抗生成网络(GAN)技术,尤其是 conditional GAN 及照片级别 GAN 技术。


当然还有一些比较基础的技术,如特征表达、多维索引搜索等。


现在的系统是一个非常复杂的系统,我们希望在未来可以引入一些「端到端」的思想,在不损失可控性和可解释性的情况下,对一些模块进行融合。我们也很关注学界里不同种类的对抗生成网络的进展,包括如何将对抗生成网络与强化学习结合起来。


此外,在设计知识图谱这一领域,我们希望与外界合作,做得更加完善和灵活。设计水平是很难衡量的,我们希望在此做出一些探索和改进,更好地量化生成效果。


从产品的角度来讲,从平面设计扩展到 3D 设计,从静态图扩展到动态图,从单张影像到视频等,对于设计师来说都是成本高而相对收益低的工作。因此我们希望智能设计也能完成形式更新颖的设计,并且做到高效高质、普惠低成本。


所思即所见是我们的愿景,目前我们还只是刚刚在路上,希望有更多同仁加入进来,把视觉生成这个领域做大做强。

相关文章
|
6月前
|
人工智能 运维 算法
基于 C# 深度优先搜索算法的局域网集中管理软件技术剖析
现代化办公环境中,局域网集中管理软件是保障企业网络高效运行、实现资源合理分配以及强化信息安全管控的核心工具。此类软件需应对复杂的网络拓扑结构、海量的设备信息及多样化的用户操作,而数据结构与算法正是支撑其强大功能的基石。本文将深入剖析深度优先搜索(Depth-First Search,DFS)算法,并结合 C# 语言特性,详细阐述其在局域网集中管理软件中的应用与实现。
127 3
|
5月前
|
监控 算法 JavaScript
基于 JavaScript 图算法的局域网网络访问控制模型构建及局域网禁止上网软件的技术实现路径研究
本文探讨局域网网络访问控制软件的技术框架,将其核心功能映射为图论模型,通过节点与边表示终端设备及访问关系。以JavaScript实现DFS算法,模拟访问权限判断,优化动态策略更新与多层级访问控制。结合流量监控数据,提升网络安全响应能力,为企业自主研发提供理论支持,推动智能化演进,助力数字化管理。
115 4
|
5月前
|
存储 监控 算法
内网监控桌面与 PHP 哈希算法:从数据追踪到行为审计的技术解析
本文探讨了内网监控桌面系统的技术需求与数据结构选型,重点分析了哈希算法在企业内网安全管理中的应用。通过PHP语言实现的SHA-256算法,可有效支持软件准入控制、数据传输审计及操作日志存证等功能。文章还介绍了性能优化策略(如分块哈希计算和并行处理)与安全增强措施(如盐值强化和动态更新),并展望了哈希算法在图像处理、网络流量分析等领域的扩展应用。最终强调了构建完整内网安全闭环的重要性,为企业数字资产保护提供技术支撑。
131 2
|
6月前
|
机器学习/深度学习 存储 算法
18个常用的强化学习算法整理:从基础方法到高级模型的理论技术与代码实现
本文系统讲解从基本强化学习方法到高级技术(如PPO、A3C、PlaNet等)的实现原理与编码过程,旨在通过理论结合代码的方式,构建对强化学习算法的全面理解。
832 10
18个常用的强化学习算法整理:从基础方法到高级模型的理论技术与代码实现
|
6月前
|
存储 监控 算法
基于 Python 哈希表算法的局域网网络监控工具:实现高效数据管理的核心技术
在当下数字化办公的环境中,局域网网络监控工具已成为保障企业网络安全、确保其高效运行的核心手段。此类工具通过对网络数据的收集、分析与管理,赋予企业实时洞察网络活动的能力。而在其运行机制背后,数据结构与算法发挥着关键作用。本文聚焦于 PHP 语言中的哈希表算法,深入探究其在局域网网络监控工具中的应用方式及所具备的优势。
152 7
|
6月前
|
运维 监控 算法
基于 Python 迪杰斯特拉算法的局域网计算机监控技术探究
信息技术高速演进的当下,局域网计算机监控对于保障企业网络安全、优化资源配置以及提升整体运行效能具有关键意义。通过实时监测网络状态、追踪计算机活动,企业得以及时察觉潜在风险并采取相应举措。在这一复杂的监控体系背后,数据结构与算法发挥着不可或缺的作用。本文将聚焦于迪杰斯特拉(Dijkstra)算法,深入探究其在局域网计算机监控中的应用,并借助 Python 代码示例予以详细阐释。
132 6
|
7月前
|
人工智能 监控 算法
Python下的毫秒级延迟RTSP|RTMP播放器技术探究和AI视觉算法对接
本文深入解析了基于Python实现的RTSP/RTMP播放器,探讨其代码结构、实现原理及优化策略。播放器通过大牛直播SDK提供的接口,支持低延迟播放,适用于实时监控、视频会议和智能分析等场景。文章详细介绍了播放控制、硬件解码、录像与截图功能,并分析了回调机制和UI设计。此外,还讨论了性能优化方法(如硬件加速、异步处理)和功能扩展(如音量调节、多格式支持)。针对AI视觉算法对接,文章提供了YUV/RGB数据处理示例,便于开发者在Python环境下进行算法集成。最终,播放器凭借低延迟、高兼容性和灵活扩展性,为实时交互场景提供了高效解决方案。
420 4
|
6月前
|
存储 算法 物联网
解析局域网内控制电脑机制:基于 Go 语言链表算法的隐秘通信技术探究
数字化办公与物联网蓬勃发展的时代背景下,局域网内计算机控制已成为提升工作效率、达成设备协同管理的重要途径。无论是企业远程办公时的设备统一调度,还是智能家居系统中多设备间的联动控制,高效的数据传输与管理机制均构成实现局域网内计算机控制功能的核心要素。本文将深入探究 Go 语言中的链表数据结构,剖析其在局域网内计算机控制过程中,如何达成数据的有序存储与高效传输,并通过完整的 Go 语言代码示例展示其应用流程。
103 0
|
7月前
|
缓存 监控 算法
基于 C# 网络套接字算法的局域网实时监控技术探究
在数字化办公与网络安全需求增长的背景下,局域网实时监控成为企业管理和安全防护的关键。本文介绍C#网络套接字算法在局域网实时监控中的应用,涵盖套接字创建、绑定监听、连接建立和数据传输等操作,并通过代码示例展示其实现方式。服务端和客户端通过套接字进行屏幕截图等数据的实时传输,保障网络稳定与信息安全。同时,文章探讨了算法的优缺点及优化方向,如异步编程、数据压缩与缓存、错误处理与重传机制,以提升系统性能。
128 2
|
8月前
|
监控 网络协议 算法
基于问题“如何监控局域网内的电脑”——Node.js 的 ARP 扫描算法实现局域网内计算机监控的技术探究
在网络管理与安全领域,监控局域网内计算机至关重要。本文探讨基于Node.js的ARP扫描算法,通过获取IP和MAC地址实现有效监控。使用`arp`库安装(`npm install arp`)并编写代码,可定期扫描并对比设备列表,判断设备上线和下线状态。此技术适用于企业网络管理和家庭网络安全防护,未来有望进一步提升效率与准确性。
240 8

热门文章

最新文章