#让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之#CNN论文精选, PointNet:端到端3D图像(点集)分类与分割

计算机科学很大程度上是权衡“现实”和“理想”的方法学 — David 9

3D图像的分类与分割问题,虽然理想上可以用3D卷积构造深度网络,但事实上, 其巨大计算开销不允许我们直接使用卷积对3D云图集进行训练.  试想2D卷积(GoogleNet, ResNet, Alexnet)训练时间就已经让人捉急了, 何况样本是3D云图:

幸运的是现实再残酷, 人类总能找到暂时解决问题的方法, PointNet就是一个权宜之计:它实现端到端3D图像(点集)分类与分割:

论文不使用3D卷积, 而是用深度网络模拟通用对称函数

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

输入总共n个点的无序云图点集({x1,x2 … , xn}), 通用函数f 输出该云图分类(汽车,书桌,飞机)。 继续阅读CVPR 2017之#CNN论文精选, PointNet:端到端3D图像(点集)分类与分割

CVPR 2017论文精选#2 密集连接的卷积网络DenseNet(Best paper award 最佳论文奖)

如果大脑中的每个神经元都代表一些训练参数,那么,我们在不断的学习过程中,现有的神经元够用吗?大脑是如何优化参数效率的? — David 9

这届CVPR上的两篇最佳论文中, David 9更欣赏康奈尔大学和清华大学的密集连接卷积网络DenseNet(Densely Connected Convolutional Networks) , 内容有料,工作踏实 !我们在之前文章就提到,模型泛化能力的提高不是一些普通的Tricks决定的,更多地来源于模型本身的结构。

CNN发展至今,人们从热衷于探索隐式正则方法(Dropout, Batch normalization等等),到现在开始逐渐关注模型本身结构的创新。这是一个好现象。

密集连接卷积网络DenseNet正是试图把跳层连接做到极致的一种结构创新:

图1-密集连接模块,来自:https://arxiv.org/pdf/1608.06993.pdf

跳层连接方法是对中间层输出特征图信息的探索,之前的ResNets和Highway Networks都曾使用,把前层的输出特征图信息直接传递到后面的一些层,可以有效地提高信息传递效率和信息复用效率。 继续阅读CVPR 2017论文精选#2 密集连接的卷积网络DenseNet(Best paper award 最佳论文奖)