晓查 发自 凹非寺 
量子位 报道 | 公众号 QbitAI

编程不是人人都会,但Excel电子表格就是当代白领的必备技能啊!如果用Excel实现图像生成,那岂不是。。。

最近还真有人发明了一种SpaceSheet工具,它就是简单的电子表格界面,即使你完全不会编写代码,也能借助它理解生成对抗网络(GAN)是如何制造图像的。

作者把它设计成了一个网页Demo,供用户直接访问:

https://vusd.github.io/spacesheet/

到底怎么玩?

SpaceSheet应用程序由两部分组成:

左侧是数据选择器,右侧是电子表格界面

以生成面部图像为例。在右侧的表格个中选中某个位置,再点击点击左侧的元素来选择人脸。

通过电子表格顶的按钮,可以对填入的人脸进行以下一系列操作。

面部特征的连续变化

通过线性插值(Linear interpolation,LERP),可以按一个值到另一个值的的“距离”,等间距地插入一些图片。

顶部操作栏中的LERP按钮使可以在电子表格中的选定单元格之间进行线性插值。

通过线性插值的方法,产生两张人脸之间的平滑过渡图像,可以帮助我们理解面部特征的连续过程:

它不仅支持一维插值,还只支持二维插值。指定四个顶点,可以形成一个插值的“矩阵”,展示4张面部图片之间的连续变化:

另外,除了在两个面部图像的“中点”插值,还能通过滑动条(SLIDER)调节偏移的量。

如果说前面的线性插值是离散的,那么滑动条就给我们提供了一种连续变化的图像。它与两张已知图像之间“差异”是人为可控的。

提取“金发”属性

这套应用程序还可以分离出人脸中的“属性向量”(Attribute Vectors),

何谓属性向量?以人的面部特征为例。

首先,选择一个黑发的人脸,再选择一个金发的人脸。对二者求差(MINUS),这个差值就是“金发”特征,于是我们获得了一个金发的属性向量

获得了这个属性向量后,我们就可以通过求和操作(SUM)给任何人加上金发了:

同样的,我们也可以给人减去(MINUS)属性向量,获得一个黑发的面部图像:

其他基本操作

除了以上几项操作外,我们还能对面部图像求“距离”、求“乘积”等。

面部图像明明是一张图片,为何能做加减法、求距离呢?

这就不得不提潜在空间,每张面部图像都是在这个空间中的一个个向量,我们当然可以对这些向量做四则运算。运算的结果是这个空间中的另一个向量,我们可以把它解码成一张图片。

用表格理解网络模型空间

潜在变量

面部图像组成的潜在空间是由生成神经网络生成的。

生成神经网络是一类机器学习算法,从一组训练数据中学习,并构建广义模型。 然后我们可以对这些模型进行采样,以生成新数据样本,其结果则是基于我们的训练数据。

这是通过在比原始数据本身参数更少的参数集上训练神经网络来实现的。 这样做,模型学习到了更紧凑的训练数据表征。这些表征被称为潜在变量。

从潜在空间采样的潜在变量可以被解码成可观察的数据样本。

举个例子,如果我们要设计一个红酒杯,由两个维度可以进行放大操作,让它变得更宽,或者更高。变大就可以理解为一个潜在变量。

我们可以在这个空间中探索,但是遇到更复杂的图像,比如人脸怎么办呢?SpaceSheet能直观地帮助我们理解变量在潜在空间中的连续变化。

属性向量

通过减法,可以从潜在变量中分离出特定属性。 通过减法求得的差被称为属性向量,并且可以应用于其他潜在变量,转移它的属性。

例如,通过计算笑脸图像的平均矢量并减去没有笑容的脸部图像的平均矢量,在脸部的潜在空间中构建“微笑矢量”。

然后可以将该向量添加到潜在变量中或从潜在变量中减去该向量以使它们或多或少地“笑脸”。

尽管提取属性向量被证明是有效的,但是它还会受到其他“相关属性”的影响,说明属性之间存在着强相关性。

例如,从上图中我们可以发现,“微笑矢量”的应用导致为人脸添加更多女性属性(女性更爱微笑?)。

SpaceSheet就是让用户在这个空间中执行计算,在电子表格里实时显示,使用户能够立即观察到操作结果并采取相应措施。

利用这套功能强大的电子表格界面,能够帮助设计者在潜在空间内进行设计实验。即使非专业人士也能简单上手。

对于面部图像这样更复杂的空间,SpaceSheet还有一些“高级玩法”更有助于我们理解生成网络的工作过程。

推理

在线性插值是在两个变量之间插入一个变量。如果在两个变量之外,按照线性的方式外推,我们就能够推理出面部图片演化的方向。

以上表格图像中,左上、右上、左下三张人脸图像都是从左侧数据库中选取,在选中它们后选择“LERP”,就可以得出右下角人脸图像。这张图是根据前3张图推理得出的。

创建可调节人脸

用户还能根据已有图像,创建一个可调节图像,它与已知图像的“差异”是认为可控的。

如上图,MOD单元格中有一个“控制杆”,使用户能够围绕给定的潜在变量进行调整,以获得类似的潜在变量。

二者的差异程度可以通过控制杆与单元格中心的角度和距离来控制,想怎么变就怎么变。

更多数据集

除了字体和人脸之外,网站上还提供颜色Word2VecMNIST手写数据集供选择。

研究生导师网络

SpaceSheet的实现离不开作者自创的“神经网络”——研究生导师网络

 作者的神经网络——“研究生导师网络”

Tom White新西兰惠灵顿大学设计学院的一名高级讲师, 他目前的研究重点是神经网络与设计师合作的创造潜力。

这套工具是由他和他的研究生Bryan Loh组成的“神经网络”共同完成的:

把随机idea输入给“生成器”研究生,然后把研究生的idea结果输入给“判别器”导师,再确定研究成果是否可以发表。

传送门

项目地址:
https://vusd.github.io/spacesheet/

GitLab地址:
https://gitlab.com/bryanlohjy/spacesheets-mdi-eval

加入社群

量子位AI社群开始招募啦,欢迎对AI感兴趣的同学,在量子位公众号(QbitAI)对话界面回复关键字“交流群”,获取入群方式;

此外,量子位专业细分群(自动驾驶、CV、NLP、机器学习等)正在招募,面向正在从事相关领域的工程师及研究人员。

进专业群请在量子位公众号(QbitAI)对话界面回复关键字“专业群”,获取入群方式。(专业群审核较严,敬请谅解)

诚挚招聘

量子位正在招募编辑/记者,工作地点在北京中关村。期待有才气、有热情的同学加入我们!相关细节,请在量子位公众号(QbitAI)对话界面,回复“招聘”两个字。

量子位 QbitAI · 头条号签约作者

վ'ᴗ' ի 追踪AI技术和产品新动态

喜欢就点「好看」吧 !

不会编程没关系,有了这个“Excel”,零基础上手生成网络相关推荐

  1. 利用Pajek软件批量处理excel数据,批量生成网络关系图

    利用Pajek软件批量处理excel数据,批量生成网络关系图 Pajek软件大家想必都不陌生,但是我很陌生,因为我用它不是进行网络分析,而是用它来画关系图(类似网络图).但是Pajek软件手工操作时一 ...

  2. bili—Excel零基础入门进阶到函数

    Excel零基础入门进阶到函数 1. excel入门 2. 表格设计&自动加总函数 3.冻结表格栏&拆分视窗 4. 资料排序 5. 数据筛选 1. excel入门 每个单元格都有自己的 ...

  3. PowerMill模具数控编程视频教程全套产品三轴零基础入门到精通

    最近有很多人在问什么是结构设计?结构要处理的东西算是比较灵活,因为一个产品有了外形设计之后,要做结构设计来处理其运动特性.这样的产品在结构上是否坚固,是否能满足产品的要求,就成了结构设计的重要内容,而 ...

  4. python编程需要安装什么软件_[零基础学pythyon]安装python编程环境

    注:推荐一种非常重要的学习方法 在我这里看文章的零基础朋友,乃至于非零基础的朋友,不要希望在这里学到很多高深的python语言技巧. "靠,那看你胡扯吗?" 非也.重要的是学会一些 ...

  5. 风变编程的python课程怎么样-风变编程的Python这么火,零基础可以自学吗?

    随着人工智能技术的高速发展,简单轻快的脚本语言Python开始受到全民热捧,成为大势所趋.而对处于数字化时代的人们而言,除了基本应用外,也要通过学习基本编程调用智能科技产品的API接口.毫无疑问,Py ...

  6. python编程可以自学么-风变编程的Python这么火,零基础可以自学吗?

    随着人工智能技术的高速发展,简单轻快的脚本语言Python开始受到全民热捧,成为大势所趋.而对处于数字化时代的人们而言,除了基本应用外,也要通过学习基本编程调用智能科技产品的API接口.毫无疑问,Py ...

  7. c++ 海战棋_编程入门须知:都说零基础不好学编程,那么什么是编程基础?

    在当今网络教学的发达时代,关于编程这一门学科,我们要理解的编程基础,也因为不同时代发生了不同变化. 编程种类所涉及范围很广,领域细分的也很多,同时编程的所用语言不同所需基础也不同;还有,不同编程方式所 ...

  8. 编程小白学python路线图_零基础Python学习路线图,让你少走弯路

    近几年Python的受欢迎程度可谓是扶摇直上,当然了学习的人也是愈来愈多.一些学习Python的小白在学习初期,总希望能够得到一份Python学习路线图,小编经过多方汇总为大家汇总了一份Python学 ...

  9. 自学app难不难 有c语言,软件编程入门自学到底难不难 零基础自学软件编程的方法...

    很多人想知道软件编程入门自学到底难不难,零基础怎么自学软件编程呢?下面小编为大家介绍一下! 软件编程入门自学到底难不难 对编程有一定了解的人一定知道--编程是简单劳动,好学与不好学在于你是否能吃得了这 ...

最新文章

  1. 报名 | 四场直播讲透AI芯片的应用与挑战、剖析技术难点,芯片的所有知识点都在这了...
  2. 【机器学习基础】支持向量机超参数的可视化解释
  3. 通俗易懂。Cocos2dx和Unity3D概念,二者区别?哪个更好一点?
  4. vert.x_选择Vert.x的3个理由
  5. mysql联合查询语句详解_实例讲解MySQL联合查询
  6. acctype mysql assoc_DedeCMS V5.3二次开发经验分享
  7. android按钮响应事件吗,Android 按钮响应事件的几种方式
  8. 2022春招马蜂窝旅游网第一轮面试 面经
  9. linux下载命令 scp,linux命令详解之scp命令
  10. java将字符串转小写转大写字母_输入一个字符串,将字符串中的所有大写字母转换为小写字母,所有小写字母转换为大写字...
  11. PyTorch中常用Module和Layer的学习笔记~
  12. RK3288_Android7.1写一个GPIO驱动控制LED灯亮灭
  13. python爬取图书信息_Python爬取当当、京东、亚马逊图书信息代码实例
  14. 开启CPU虚拟化功能
  15. 解决SVN造成的桌面图标问号
  16. 想当年我拿着两把西瓜刀……
  17. Intel微处理器Uncore架构简介
  18. 两两相望计算机音乐,两两相望 苏汐洋 两两相望歌曲,两两相望mp3在线试听 - 5nd音乐网...
  19. 监控摄像头接入GB28181平台实现监控视频直播的详细搭建流程
  20. nodejs+vue高校教室管理系统

热门文章

  1. 19岁少女辍学就业,却遭身价2.5亿创业公司解雇
  2. 三年后,人工智能将彻底改变前端开发?
  3. 自定义键盘组件_WEB组件终极开发手册:让玩家没了鼠标也能操作
  4. 字节跳动面试官:千峰java培训多少钱
  5. opencv 有无判断 模板匹配_opencv模板匹配
  6. problem making ssl connection
  7. php 点击按钮自动复制,实现点击元素自动复制内容的功能
  8. 汕尾python高手_每天两小时,下一个python 高手就是你!满满都是干货
  9. 安卓编译安装python_安卓源码编译环境搭建
  10. 苹果手机其他占内存很大去哪删除_Iphone内存总是不够用?原来这才是正确清理垃圾的方法,长见识了...