#让AI替你写代码, pix2code: 从图片生成前端代码, 用CNN+LSTM构建端到端网络

将来, AI会替你完成一部分项目代码, 也许就从简单的前端代码开始 — David 9

不久前Uizard 放出一篇有意思的论文(详见youtube上demo), 目标很简单: 试图从设计原型图直接生成源代码, 为了证实可行性, 文章的做法是, 首先从原型图生成DSL(领域专用语言):

来自: https://arxiv.org/pdf/1705.07962.pdf

左边是设计原型图, 右边是对应的DSL, 是描述了GUI的格式化语言. 如: 第一行有一个label和一个switch按钮.

剩下的只要把DSL语言编程成源代码即可 .

cd compiler

# compile .gui file to Android XML UI
./android-compiler.py <input file path>.gui

# compile .gui file to iOS Storyboard
./ios-compiler.py <input file path>.gui

# compile .gui file to HTML/CSS (Bootstrap style)
./web-compiler.py <input file path>.gui

最吸引David 9的, 其实是作者结合CNN与LSTM的方法. 我们知道, CNN擅长抽取图片特征, 而RNN擅长学习文本和序列规律, 只要把这两组”上下文”集成起来, 我们就有信心知道一张设计原型图的”语义”, 每个语义对应一个DSL, 最后根据DSL生成源代码即可.

来看看文章中的做法: 继续阅读#让AI替你写代码, pix2code: 从图片生成前端代码, 用CNN+LSTM构建端到端网络

CVPR 2017之#RNN论文精选, 小数据学习: 基于关注点的循环比较器(Attentive Recurrent Comparators)

“小数据”激发我们从人类学习本质的角度思考问题. — David 9

如果要得到生成模型分类模型, 我们可以用GAN或CNN等深度网络. 而对于”小数据“我们往往要换一种思路, 利用RNN的”记忆”能力在图片中反复”琢磨”图像的线条等特征:

来自: https://github.com/sanyam5/arc-pytorch

通过反复寻求好的”关注点”, 我们用一张样本图片, 就能比较新图片与之差异, 以及和原图片是同一个文字的可能性. 这正是所谓的one shot learning, 即, 从一个样本学习到该样本的整个类. 没错 , “小数据”的泛化能力真是惊人 ! 甚至击败了KNNSIAMESE NETWORK等传统相似度比较方式。 继续阅读CVPR 2017之#RNN论文精选, 小数据学习: 基于关注点的循环比较器(Attentive Recurrent Comparators)

KDD 2017精选#1 用”模仿和类比”挖掘加速创新 , GRU循环神经网络新用法(Best paper award 最佳论文奖)

An essential [of an inventor] is a logical mind that sees analogies. — Thomas Edison

很难想象如果所有创新工作交给AI去做, 人类存在的意义是什么?

今年KDD2017最佳论文(Accelerating Innovation Through Analogy Mining) 向这个方向迈进了一步. 作者试图从庞大的专利和文献库中, 挑选出可以激发发明者灵感的想法, 呈现给发明者(USPTO上就有900万多的专利)

如对于一个带电池的手机壳的初始idea:

来自: https://arxiv.org/pdf/1706.05585.pdf

通过”模仿和类别“挖掘, 模型可以搜索并提供下面idea的提示, 呈现给发明者:

上图是一个Flash充电时的卡扣装置, 和一个自带电源的USB插座, 都是对比模仿初始idea从庞大文献中找出的两个类似idea.

最后, 一个发明人看到以上这些启发和提示, 发明出了以下产品:

来自: https://arxiv.org/pdf/1706.05585.pdf

一个履带式的发电器, 戴在身上, 人体移动时, 就可以发电蓄电. 可见, 模型做出的前两个发明提示对发明者有一定的帮助. (模型给出了不完全相似但是很相关的启发) 继续阅读KDD 2017精选#1 用”模仿和类比”挖掘加速创新 , GRU循环神经网络新用法(Best paper award 最佳论文奖)