​这是ICLR2019的论文,内容是关于机器学习在自动排版的应用。过年宅着,正好可以研究下现在AI在设计中的进展。

《LayoutGAN: Generating Graphic Layouts with Wireframe Discriminators》

https://arxiv.org/abs/1901.06767

简介

layoutGAN提出了一种是利用数据学习布局排版的新方法。

说的更通俗一些,随便输入一组参数,layoutGAN会输出一组微调后的参数以及一张线框图,然后与真实数据的参数与线框图构成GAN的对抗训练,最后经过训练,实现输出的参数与线框图接近真实数据。

先前数据驱动的布局排版学习主要由两种方式,一种使用CNN结构学习已标注的线框图,输入输出都是线框图。另一种是使用多层全连接结构,学习元素的几何参数(位置、大小),输入输出都是一组几何参数。layoutGAN将两种方式结合,通过一个可微分的几何参数到线框图的渲染公式,实现输入是一组几何参数,输出是一组新几何参数与对应的线框图,这样一来GAN的判别器可以对新几何参数与线框图都做真假识别,进一步提高布局的真实性。

效果

与DCGAN或者直接训练几何参数的relation-based方法相比,layoutGAN(图中的wireframe rendering)引入线框图做图像判断后,生成的数据更真实。如下图红框内所示,DCGAN和relation-based方法都出现了帽子戴在脸上的瑕疵,而layoutGAN则帽子稳稳的戴在头上。

在MNIST手写数字数据集上,引入线框图后,生成效果也比纯几何参数训练要好一些(但感觉不是很多)

学习手机APP布局的效果,可以看到layoutGAN在元素对齐方面仍有欠缺

步骤拆解

全文核心思想可以用下图来概括:

每一步介绍如下:

1. 输入随机元素类别+几何参数

传统GAN输入的是一段随机数组Z,而layoutGAN输入的也是一段随机数组,只不过数组的形式以(p_i, θ_i)

的形式输入。p_i表示第i个元素属于某种类别的概率,例如上图拼贴画中,第三个元素是[男孩,女孩,太阳,树,墨镜,帽子]的概率就写为p_i。θ_i表示几何参数,以最常见的线框为例,θ_i就代表线框左上角与右下角的坐标(x1,y1,x2,y2)

2. 带注意力层的多层全连接网络

这一步骤就是把上一步的随机数,输入到一个深度神经网络中,这个网络基本由全连接层构成,中间带了多个self-attention(自注意力层)层,以捕捉各元素之间的全局关系。

3+4 输出调整后的元素类别+几何参数,计算对抗损失

经过上一步的网络模型后,输入的元素类别+几何参数就发生了变化,从随机变得更真实了。指导其变化方向的就是在此处加了一个判别网络(图中未画出),计算了一个几何参数的对抗损失。

5 通过几何公式,把参数转化为线框图

此处是全文最关键的步骤,经过一个计算公式,把原本几何参数给还原成了图像。

起初我觉得这很简单,根据几何参数θ_i的实际的数值(x1,y1,x2,y2),用opencv画图函数在图上画出来不就行了,但很快意识到这样做,网络在这里就断了,后续损失计算就没法反向传播了。用更严谨点的说法,opencv画图是个不可微分的操作,无法实现梯度的传导,因此无法训练网络。

具体把几何参数转化为几何图像的公式如下图蓝色文字所示。这块基本属于高中解析几何的内容,即已知线段两端坐标,写出这条线段的解析表达式。考虑到图像像素问题,线段其实是一个有内外边界的区域,稍作修改即可得到一组不等式来表示这个区域,而这个不等式恰好可以用Relu函数来表达,Relu即max(0,x)

通过这样一个可微分公式转化,原本的几何参数就转化为了线框图,实现后续网络训练。

6 用CNN判别器判断线框图真假

这块就属于GAN的基本用法,真假线框图做对抗训练。

总结

我论文看的不多,这是第一次见到把几何参数与图像结合在一起用的方法,挺神奇的,通过解析几何的方法把几何参数转化为了图像,实现把几何参数精准性、CNN善于捕捉空间关系的特点融合在一起,提高了排版效果。

离实用还有一段距离,最基本元素对齐方面仍有欠缺。现阶段用纯机器学习的方法约束太小,还是要依靠人为规则做强约束

参考代码:https://github.com/jianh1994/layoutgan (不是我)

layoutGAN是如何实现自动排版布局的相关推荐

  1. 自动排版布局-Layout GAN

    [PDF]LayoutGAN: Generating graphic layouts with wireframe discriminatiors(2019) 文章 摘要 布局对图像设计和场景生成非常 ...

  2. cdrx4自动排版步骤_现在的大学生,都不会论文排版了

    因为排版问题而被论文导师一遍遍打回,听说广大毕业生实在是流干了眼泪.要想留住师生情,一部分排版工作是很有必要边写边做的. 今天,我将以厦门大学的本科毕业论文排版要求为例,给大家送上一份全面的毕业论文排 ...

  3. matplotlib(五)排版布局

    网格布局目录 subplots() 最常见的网格排版方式,一次性定好所有Axes GridSpec 复杂网格排列 SubplotSpec 为给定GridSpec中子图指定位置 subplot2grid ...

  4. cdrx4自动排版步骤_当代大学生难题:又又又又要排版论文了

    文/温温柔 一周进步签约作者 最近,很多同学的毕业论文已经陆陆续续完成开题,进入到了正式写作阶段.如果你想等到论文全部写完再统一排版,头顶发凉泪两行. 因为排版问题而被论文导师一遍遍打回,听说广大毕业 ...

  5. iOS SwiftUI篇-3 排版布局layout

    iOS SwiftUI篇-3 排版布局layout swiftUI提供的layout有: ZStack.GeometryReader.HStack.LazyVGrid.LazyHStack.LazyH ...

  6. dev c++自动排版_再也不头疼文字排版了

    前言 在办公时,我们经常会需要用到Word,经常需要到网上查找一些资料然后整理排版,如果想提高文字排版.整理的效率.那么小编给你推荐Gidot Typesetter 这款非常好用的排版软件. Word ...

  7. vim下自动排版命令

    Vim自动排版命令 由于在.vimrc文件中设置了 filetype plugin indent on 和 set cindent shiftwidth=4 在SecureCRT中使用鼠标复制-粘贴时 ...

  8. eclipse自动排版快捷键、自动引入包

    ctrl+shift+f快捷键,自动排版 ctrl+shift+o快捷键,自动引入包 注意,有些输入法(如搜狗和百度输入法)中的简繁体字切换功能和eclipse的自动排版功能一致,必须先关掉输入法之后 ...

  9. 排版 项目 html,实现HTML自动排版的法则2_html

    法则五:把复选框.单选按钮与它们的标签分离 将单元中的复选框.单选按钮的标签与控件分离,这能够保证当文本变长时正确换行.但仍需要设计对话框,设法使翻译后的文本有可能置于一行中. 代码样例(设计正确的复 ...

最新文章

  1. 谭浩强课后题(数组篇)
  2. Oracle备份恢复之逻辑备份
  3. BeetleX实现MessagePack和Protobuf消息控制器调用websocket服务详解
  4. android 抽屉_Android Studio之路,我们来了解一下Google官方Android开发工具
  5. asp.net 页面静态化
  6. 转:VMware安装Mac OS X Mavericks系统图文教程
  7. netbean下搭建mariadb数据库
  8. Web前端开发必备工具推荐
  9. 李彦宏 AI 布局又下一城,成立生命科学公司“百图生科”
  10. 25年前的预言(转贴一篇,事实胜于雄辩)
  11. CDOJ 1157 数列(seq) 分块+线段树
  12. 数据库事务复制(读写分离)设计的一点经验
  13. mysql高并发频繁地写_Mysql写入频繁,怎么破?
  14. 去掉softmax后Transformer会更好吗?复旦华为诺亚提出SOFT:轻松搞定线性近似
  15. 离线服务器系统补丁如何打,Win系统补丁要不要打?如何打补丁才最适合?
  16. Tensorflow2.0之FGSM
  17. FreeRTOS-时间片轮转调度
  18. iOS逆向:破解 APP防止dyld注入 的方法
  19. 华为认证数通HCIE面试之Qos完整解析
  20. Win10系统磁盘分区管理

热门文章

  1. Android版本Oppo电视,OPPO智能电视正式发布,还有多款重磅新品亮相
  2. 去除面部黑色素小妙招_怎么淡斑祛除脸部黑色素 5个小妙招有效淡斑美白
  3. Python爬虫抓取笑话
  4. 从万物互联到万物智联,一字之差,却是时代的进步!
  5. 电脑安全模式怎么进?3种方式教会你!
  6. 怪物猎人世界 服务器维护,怪物猎人世界无法联机完美解决方法_怪物猎人世界联机报错怎么办_牛游戏网...
  7. 【Linux operation 38】解决Linux 端口被占用
  8. 垂死病中惊坐起,好好锻炼来得及
  9. 存储过程篇(简单语法)
  10. C语言 红黑树插入/删除/查找/遍历