编码机

前端设计图转代码,西安交大表示复杂界面也

发布时间:2024/9/23 12:40:20   
北京中科白癜风医院爱心接力不忘初心 http://www.bdfyy999.com/xinwenzhongxin/
选自arXiv作者:ZhihaoZhu等机器之心编译卷积神经网络在图像处理上无与伦比,它可以从图像抽取到非常精炼的高级语义特征,这些信息不论是做分类还是做定位都没问题。但如果我们利用这些特征生成用户界面代码呢?那么就需要同样强大的模型将这些高级特征解码为一条条代码。最近西安交通大学提出一种用户界面转代码的新算法,该算法根据代码的层级特性构建了一种基于注意力的强大解码器。使用机器学习技术自动生成图形用户界面(GUI)代码是一个相对较新的研究领域。通常,按照设计编写GUI对前端开发者来说是一项耗时又繁琐的工作,因为这使得他们无法投入更多的时间来开发软件的实用功能和逻辑。因此,构建一个将GUI原型自动转化为对应编程代码的系统是非常有前景的。近期人们使用机器学习技术自动生成人类可读格式的程序,它们使用梯度下降从输入-输出样本中导出源代码。然而,它们的性能被证明还不如基于离散搜索的传统技术,这一技术一直在编程语言社区得到广泛哦使用。另一个同类研究是DeepCoder,该系统尝试利用统计预测来增强传统搜索技术,以生成计算机程序。然而,它对复杂编程语言建模的能力受限于其对特定领域语言(DSL)的依赖。对于从视觉输入生成代码的任务,目前只有为数不多的几项研究,而其中,与本文研究最相似的是pix2code。pix2code采用反馈机制,其中解码过程可以通过两种不同级别的LSTM迭代进行:「编码」LSTM,对已经生成的代码序列进行编码以减轻「解码」LSTM学习长序列关系的负担。「解码」LSTM,用于代码序列生成,然后将解码token序列返回给「解码」LSTM以形成反馈循环。通过采用反馈机制,pix2code能够生成比其它基于单流程的方法长得多的单词/token序列。但是,它们的方法需要预先固定「编码」LSTM可以生成的最大序列长度。也就是说,代码长度范围需要预先指定,这降低了该方法的可拓展性和泛化能力。该方法的另一个明显缺陷是,它没有把GUI及其代码的层次结构纳入考虑,这限制了其生成准确图形程序的性能。为了解决这些问题,研究者们提出了一种用于自动生成图形编程的新方法。它不仅能很好地解决长期依赖性问题,同时还能通过将代码生成过程以层级的方式表示出来而捕捉到代码的层级结构。研究者们的新方法使用层级解码器来推理代码序列,并一个接一个模块地生成图形源代码。下图1展示了GUI和对应代码的示例,同时也展示了将GUI划分为不同模块的方法。DSL的详细代码生成过程如下所示:首先第一阶段的LSTM会用于解码模块级别的图像视觉信息,其中该LSTM的每一个隐藏状态都包含了这个模块的一般上下文信息。然后将第一阶段LSTM的隐藏状态和图像的卷积特征输入到注意力模型以选择最重要的局部卷积特征,这些局部卷积特征会进一步馈送到第二阶段的LSTM,并作为上下文信息以为对应的模块生成代码。图1:给定一张GUI截屏图像后,研究者新模型所生成的代码示例。其中(a)为输入GUI,它会以某些方式分割为5个模块。(b)展示了模型根据5个模块所对应生成的DSL代码,最后(c)为根据前面所生成的DSL代码而重新渲染的GUI。研究者在pix2code所提供的基准数据集进行了测试,且实验结果表明他们的方法是非常高效的:他们的模型在所有三种子数据集(IOS、安卓和网页端)都比目前最优的方法要好。此外为了进一步说明他们提出的模型在处理复杂的GUI时有更强的优势,他们构建了一个新数据集,该数据集包含具有更多图形元素的GUI截图,且图形元素的样式和空间布局更加多样化。研究者表示在新的复杂数据集上,他们的方法会以更大的优势好于其它对比的方法。论文:AutomaticGraphicsProgramGenerationusingAttention-BasedHierarchicalDecoder论文

转载请注明:http://www.aideyishus.com/lktp/6941.html
------分隔线----------------------------