近期,央视《机智过人》的舞台上来了位“三超设计师”——设计能力超强;出图能力超快;抗压能力超强,成功迷惑嘉宾和现场观众,更让撒贝宁出错三连。

节目一开场,这位“设计师”就为现场嘉宾:主持人撒贝宁、演员韩雪、神经科学家鲁白生成了三张独具特色的海报。几乎是说话的瞬间,海报立即生成,出图速度之快让撒贝宁惊呼“秒完”。

鹿班为现场嘉宾设计的海报

这位设计师正是阿里巴巴研制的AI设计师——鹿班。鹿班是为解放人类平面设计师而生,它学习了五百万张人类设计作品,现在它每秒能做八千次设计。自从2016年上线至今,鹿班已经完成了十亿次海报制作,是全球首位大规模投入使用的人工智能平面设计师。

节目中,鹿班将接受设计领域的两轮检验,如果鹿班的作品被现场观众成功找出,则认为鹿班通过检验。究竟AI能否在设计领域达到人类水平?接下来,我们一起走进检验场。

第一轮挑战中,鹿班与一次成稿率在80%以上的设计师、从业十二年的资深设计师等三位同台竞技,各自设计一张以“汽车卓越加速性能”为主题的商业海报。下图即四位设计师的设计成图,大家不妨来猜一猜哪幅是鹿班的作品。

根据现场观众投票,多数观众认为4号作品出自鹿班之手。让观众出乎意料的是2号才是鹿班的创作,这个结果让神经学家鲁白大呼“不服气”。

不信?眼见为实!

接下来,战况升级。中央美术学院院长范迪安教授带来画家与服装设计师来和鹿班同台创作,为《孙子兵法》这本书设计封面。

面对设计难度升级,鹿班能否成功应对?我们马上揭晓鹿班和两位人类设计师为《孙子兵法》设计的封面的作品:

以上图片中有三幅作品,其中哪一张是鹿班的设计?到底观众们有没有猜对?不急,我们先请阿里巴巴资深技术专家星瞳为我们揭秘鹿班背后的技术。

使用场景

视觉生成引擎的使用场景大致可抽象成下图。以显式输入而言,用户可以输入标签需要的风格、色彩、构图等,或者输入一个例子,或者进行一些交互的输入。除显式输入之外还可以有隐式输入,比如人群信息、场景信息、上下文信息等。总的来说,输入可以是千变万化的,但通过规范化之后就会减少变化,使得生成过程可控,输出质量可控。

对视觉生成引擎来说,它要求输入是规范化的。但在输入前,可以加入各种交互方式,如自然语言处理,语音识别等,将其转化成规范化输入。最后输出结构化信息或可视成图。

技术框架和生产流程

其技术框架如下图左侧。首先对视觉内容进行结构化理解,如分类、量化、特征化。其次通过一系列学习、决策变成满足用户需求的结构化信息即数据,最后将数据转化成可视的图像或视频。这一框架依赖于大量的现有数据。其核心是一个设计内核。同时,引入效用循环,利用使用后的反馈来不断迭代和改进系统。

其生产流程分成六个步骤,如下图右侧所示。首先用户提出需求,将需求特征化转变成系统可以理解的结构化信息。其次将信息进行规划得到草图。有了粗略的草图后再将其转变成相对更精确的图,然后调整细节,最后通过数据可视化形成最终的图。当然其中还有很多的trick,以及各部分的优化。

关键算法

下面介绍一些关键算法。我们希望基于下图最左的耐克鞋生成最右的图。先通过规划器得到草图,再通过强化学习获得相对细致的结果,再通过对抗学习及渲染算法得到图片,再通过评估器进行评估,最后形成业务闭环,其中还会有一些基础的能力,包含更强的联合特征(非普通 CNN特征)及多维度检索算法等。

基本上,处理的第一步是将图片中的信息结构化,这也是与现有的识别理解技术结合最紧密的地方。其中的难点和重点包括,对图像中多目标的识别、遮挡和互包含情况如何得到分割的信息等,下图只是个简单的示例。

有了结构化信息之后,需要对信息进行量化。可以量化成特征或量化图。量化过程中会包含很多信息,比如主题风格、布局配色、元素种类、量化空间等。有了这些信息后可以在主题、种类、风格、视觉特征大小位置上,量化成各种码,用相对有限的特征来表达无限的图。

下一步是通过用户的输入,得到一个相对粗略的结果即草图。目前主要使用的是深度序列学习。从图像角度,首先选定一个点的像素颜色再选择位置,再迭代进行操作,最后形成一张图。规划器模拟的就是这个过程。本质上预测过程是一棵树,当然也可以拆成一条条路径。为了简化,可以分成几步进行,比如空间序列,视觉序列。最后形成量化特征模型,主要应用的是LSTM模型。它把设计的过程转化成基于递归、循环的过程。

得到草图后,利用行动器将草图细化。如果将图中的每个元素看作一个Agent,那么它将有若干个可选的行动空间。

假设一张图中有20个元素,每个元素在视觉上有多种可选的行动空间,由其组合成的可选行动空间非常庞大。我们有很多trick可以解决这一问题,比如在空间上,只允许在有限范围内进行变动,且行动方向有序,即状态有序,行动有限。

下一步是如何衡量结果的好坏。图像的评估相对比较主观,主要可以从美学和效果两方面来评估。美学角度可以包括是否对齐、色系搭配是否合理、有无遮挡这些较低级别的判断标准,以及较高级的,比如风格是否一致,是否切合主题。从效果上,产品投放后是否会在点击率等方面实现提升。最后将多个指标形成对应权重并形成多个DeepLR联合模型。

但在衡量结果之前,需要形成像素级别可见的图。这里有以下几种构造器分类,包括临摹、迁移、创造、搭配与生成。

前面介绍了,如何通过用户的需求形成可见的图。后续还需要进行投放和反馈并进行优化,形成效用外循环。这样才能使得系统效用不断得到提升,形成一个在线闭环,这也是智能设计相对设计师的一大优势。

从技术角度来说,鹿班可以满足海量无选择客户的需求。相信在未来,可以做到“所想,即所见”。节目的最后,撒贝宁、韩雪、鲁白纷纷为鹿班站台,鹿班也因此成功入选 “2018智能先锋”。

原文链接
本文为云栖社区原创内容,未经允许不得转载。

阿里AI设计师一秒出图,小撒连连惊呼,真相是...的更多相关文章

  1. 如何规范移动应用交互设计?UI/UX设计师须知的11个小技巧

    以下内容由Mockplus团队翻译整理,仅供学习交流,Mockplus是更快更简单的原型设计工具. 十年前,手机的使用只是为了沟通. 而近几年,情况发生了很大变化,我们很难找到不使用手机的人.手机在极 ...

  2. 基于.Net core3.0 开发的斗图小程序后端+斗图小程序

    为啥要写这么一个小程序? 作为互联网的原住民. 90后程序员的我,从高中开始发QQ小表情. 到之后的熊猫头,蘑菇头. 可以说表情包陪伴我从学校到社会,从青少年到中年.. 而且因为斗图厉害,还找到一个女 ...

  3. android 屏幕适配,hdpi,xhdpi,xxhdpi理解,常见出图

    屏幕适配 首先理解下各个尺寸单位代表的意思 尺寸含义 px: 像素 dip: Density-independent pixel 独立像素密度 dpi: dot per inch 分辨率 ppi: p ...

  4. ArcGIS出图调整

    上周为了出一张高分辨率的结合表,大致学了一下出图的过程. (1)打开基础数据的图层属性栏,将某一项属性值显示出来,如下图设置: 注意,字体尽量设置得小一点,否则出图的时候,字太大,会很乱. (2)打开 ...

  5. GIS案例学习笔记-ArcGIS整图大图出图实例教程

    GIS案例学习笔记-ArcGIS整图大图出图实例教程 联系方式:谢老师,135-4855-4328,xiexiaokui#qq.com 1. 通过出图比例尺(1:2000),地图范围测算图纸大小. 图 ...

  6. 基础篇:4.1)规范化:3d工程图纸出图步骤详解

    本章目的:按照工程图出图步骤,更方便出具规范的工程图. 1.工程出图步骤 这是作者个人归纳的步骤,供同行业工程师参考完善. 以solidworks为例,工程出图步骤如下:1.1)打开绘制的3d零件图, ...

  7. 100款机械CAD图纸,想要出图快,勤练是最有效的方式之一!

    提升CAD出图效率最有效的方式就是勤加练习,所以跟着小匠每天练习3个,30天把这100个常用的CAD机械图纸练完,再看你的出图效率!贵在坚持! 100个机械CAD图纸,请收好

  8. 聚焦设计交易与商业落地 DANG·DHUB设计师平台上线【图】_品牌资讯_服饰_太平洋时尚网

    聚焦设计交易与商业落地 DANG·DHUB设计师平台上线[图]_品牌资讯_服饰_太平洋时尚网 聚焦设计交易与商业落地 DANG·DHUB设计师平台上线

  9. 如何增强ArcGIS插值图出图效果

    如何增强ArcGIS插值图出图效果 by 李远祥 在一些科研领域,经常会遇到使用插值的方式进行处理,并生成最终的插值图.插值图在ArcGIS里面非常容易生成,只要具备了采用点数据,通过ArcToolB ...

随机推荐

  1. python操作Redis安装、支持存储类型、普通连接、连接池

    一.python操作redis安装和支持存储类型 安装redis模块 pip3 install redis 二.Python操作Redis之普通连接 redis-py提供两个类Redis和Strict ...

  2. python 递归实现汉诺塔算法

    def move(n,a,b,c): if (n == 1): print ( "第 ", n ," 步: 将盘子由 " ,a ," 移动到 &quo ...

  3. Java时间日期格式转换 转自:http://www.cnblogs.com/edwardlauxh/archive/2010/03/21/1918615.html

    Java时间格式转换大全 import java.text.*; import java.util.Calendar; public class VeDate { /** * 获取现在时间 * * @ ...

  4. fiddler中断request,修改参数问题

    fiddler正在学习阶段,遇到了一个问题,就是bpu url后,不会修改参数,今天实验了几次,总算成功了 下面写一下步骤: 1.先打开fiddler 2.打开网站,如百度,在文本框输入1,记住!不要 ...

  5. rails应用的部署

    简单部署 RAILS_ENV=production rake secret /etc/profile export SECRET_KEY_BASE=刚才生成的密钥 source /etc/profil ...

  6. Python的基本数据类型

    数据类型常用函数 type(a)-得到变量a的数据类型 isinstance(a,str)-判断a是否是字符串类型 Python中有五个标准数据类型 数字Number 字符串String 数组List ...

  7. python图形界面编程

    EasyGui(easygui-docs-0.96\tutorial\index.html) import easygui as g import sys while 1: g.msgbox('mes ...

  8. mysql--user表

    mysql数据库 用例:mysql  mysql> show tables; +---------------------------+ | Tables_in_mysql | +------- ...

  9. Vue笔记整理——第一天

    1.为什么学习Vue? 提高开发效率. 提高效率历程:原生js——>jq(解决兼容性)——>前端模板引擎——>Vue.js(减少DOM操作,注重数据业务逻辑). 2.框架与库的区别? ...

  10. LeetCode刷题:第四题 寻找两个有序数组的中位数

    题目描述: 给定两个大小为 m 和 n 的有序数组 nums1 和 nums2. 请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n)). 你可以假设 nums1 和  ...