HarmonyOS开发者限时福利来啦!最高10w+现金激励等你拿~ 了解详情
写点什么

面向未来的黑科技——UI2CODE 闲鱼基于图片生成跨端代码

  • 2019-07-08
  • 本文字数:1936 字

    阅读完需:约 6 分钟

面向未来的黑科技——UI2CODE闲鱼基于图片生成跨端代码

DEMO 演示

一直以来,如何从‘视觉稿’精确的还原出对应的 UI 侧代码一直是端侧开发同学工作里消耗比较大的部分,一方面这部分的工作比较确定缺少技术深度,另一方面视觉设计师也需要投入大量的走查时间,有大量无谓的沟通和消耗。


闲鱼团队在去年做了一个很特别的黑科技基于图片直接翻译成对应的 UI 侧代码,具体完成的部分,我们有一个演示的视频。


00:00 / 00:00
    1.0x
    • 3.0x
    • 2.5x
    • 2.0x
    • 1.5x
    • 1.25x
    • 1.0x
    • 0.75x
    • 0.5x
    网页全屏
    全屏
    00:00

    选型背景

    很多人会比较好奇,为什么我会坚持使用图片做为输入源,一方面基于 sketch 或者 photoshop 等插件相对容易拿到确定性的信息,图片在某些方面容易丢失一些特征;另外基于图片的分析其实挑战更大。我们做这个选择有以下原因,首先图片作为最终的产出物,更直观和确定性,另外这个链路里对上游不会有约束性。最后也是最重要的一点基于图片的应用场景会更普适,类似场景例如自动化测试能力的支持,基于竟品直接截图来套用我们自己的数据源找体感,等场景是其他的方案做不到的。


    上面我们在讲项目本身的意义和选型上的一些判断,后面我们会简单介绍下项目的基本流程。

    流程介绍

    首先我们会使用深度学习的方式,来找到对应的 UI 单元,包括基础的 UI 组件,例如 imgview \ textview 等,接下来是自定义的 BI 组件例如 price 等,最后我们会寻找已经被实现过的业务组件。下面是一个常见的业务场景,我们框选了每个对应的部分,演示上面的业务逻辑。



    接下来我们会基于已经检测出的元素,来做对应的元素提取,这个部分我们会去分析系统渲染的原理并使用 opencv 的方法来做对应的功能。


    项目整体的流程,我们用下面的这个图来表示。



    在整个项目落地的过程中,我们遇到很多的技术困难的点,下面我会讲 2 个有意思的点。

    架构演进

    第一个我们会发现 autoui 的整个流程结构是一个非常典型的上下游的流形式,每个关键的单元都会依赖上游的输出,并且为下游提供标准的输入,我们在项目的开始时候,因为没有特别好的去定义切分的关系,经常会出现当一个同学调整和 PUSH 代码后,会对整个链路造成很大的影响,所以我们对架构设计做了一个关键的升级我们定义叫流式的架构,我们用一个图让大家更好的来理解这一块。



    在这个单元里我们定义了 unti,tasks,server 三个单元,unit 本身是最小粒度的功能切分,tasks 是 unit 的组合,server 会提供具体的服务,每个部分都会为上下游提供输入和输出,架构切分的好处是,所有的模块都有标准的输入和输出的部分,我们可以通过对模块的 MOCK 来解决标准化调试的问题,另外当一些基础的功能完成后,我们可以通过搭积木的方式来组合自己想要的 tasks 和 server,在我们做了架构调整后,因为整体的切分更合理,也减少了上下游的依赖,对项目的快速迭代产生了很大的帮助。


    后续在架构侧我们还做了一个有意思的点,因为我们的服务有些是需要跑在服务端,有些是需要跑在客户端上,所以我们设计了一个可以在客户端和服务端同构的场景,目的是希望开发的人员只需要关系界面和服务的通信,但并不需要关注具体服务的部署关系。


    布局问题分析

    上面我们讲了一个架构的设计,后面我们希望讲一个具体的布局问题具体解法,把静态的 DSL 转成一个合适的布局属性的 TREE,在这个部分我们还是分析了能产生布局的因素,如下图所示。



    这样一个非常常见的布局,我们拆分出了影响布局的部分,通过元素位置、间距、容器位置分析,我们参考了 flex 布局的标准,也参考了新的 grid 的布局标准,通过枚举元素在位置中站位的比例,来得出对应的关系。


    但是我们最后还是遇到一些 Bad Case,如何写出更贴近人写出的 UI 侧代码,我们还是需要去参考类似语意的部分,相似度的部分我们才能得到真正合理的布局,例如上面的这个例子,如果按照枚举的布局去推断的话,我们很容易得到一个四个横列的布局关系,但是通过语意和相似度的部分,我们会很容易的推断出一个 gridview 的布局关系。

    现状和未来

    去年整体我们已经比较好的让整个工程在业务侧开始跑起来开始让大家能解放出来做一些更需要思考的事情,并把我们的项目展示给了 Google 团队,也得到了很多的关注。


    未来,我们还是希望通过更好的分析能力(包括容器识别、复杂的背景识别、精确的语意理解能力),产生出更接近开发人员手写的代码,从而完全取代‘切图’这个工作,另外我们也在看在这个阶段我们已经能够让机器来解放开发链路的最前面一段,后面在一些弱交互、强展示的部分,例如导购或者营销这样的场景,我们其实通过数据模型的抽象和识别、甚至固定的 PRD 的识别有可能我们是能真正的解放整段的人力投入,让大家从偏确定性的需求实现中解放出来。另外我们也开始和 D2C 这样的项目一起共建,希望在闲鱼里已经实现的部分,能够解决更多人的问题,解放更多的生产力。


    本文转载自公众号闲鱼技术(ID:XYtech_Alibaba)


    原文链接


    https://mp.weixin.qq.com/s/hajHNqsy708vfHk1wYUN_w


    2019-07-08 08:005092

    评论

    发布
    暂无评论
    发现更多内容

    【Spring Cloud实战】分布式系统控制与组件应用

    快乐非自愿限量之名

    分布式 服务器 组件 spring-cloud

    罗拉Rola知道IP地址如何变更的吗?

    Geek_bf375d

    爬虫 跨境电子商务 代理IP 代理IP设置 免费代理ip

    现在的我们需要怎么去布局一级

    币离海

    从低代码的骂声说起

    小粽

    低代码

    为什么Facebook运营需使用IP代理?罗拉ROLA详解有哪些美国IP代理好用?

    Geek_bf375d

    爬虫 代理IP 代理IP设置 免费代理ip 跨境电商

    BNB Chain 成就衍生品 DEX,APX Finance 趁势脱颖而出

    股市老人

    罗拉ROLA告诉你选择海外住宅代理IP服务供应商要注意哪些问题?

    Geek_bf375d

    爬虫 跨境电子商务 代理IP 代理IP设置 免费代理ip

    罗拉ROLA分析亚马逊频繁扫号下的跨境电商,跨境电商卖家应该何去何从?

    Geek_bf375d

    爬虫 代理IP 代理IP设置 免费代理ip 跨境电商

    深度解读:Raft是Paxos的一个变种么?

    小猿姐

    数据库 raft PAXOS

    机智的告警策略,完善监控系统的重要一环

    观测云

    监控告警 告警策略

    文心一言 VS 讯飞星火 VS chatgpt (141)-- 算法导论12.1 1题

    福大大架构师每日一题

    福大大架构师每日一题

    罗拉ROLA告诉你美国IP代理如何获取?适用于哪些场景?

    Geek_bf375d

    爬虫 代理IP 代理IP设置 免费代理ip 跨境电商

    c语言基础回顾-指针 | AI工程化部署

    AIWeker

    c AI工程化部署

    国内首批!华为云云原生中间件DCS&DMS获软件可信“卓越级”认证

    平平无奇爱好科技

    华为云CodeArts 11.11活动倒计时,新用户福利重磅来袭

    平平无奇爱好科技

    WorkPlus即时通讯,打通上下游产业链,构建企业生态圈

    WorkPlus

    意图交易:为用户思考,而不是让用户思考

    股市老人

    LeetCode题解:13. 罗马数字转整数,哈希表,JavaScript,详细注释

    Lee Chen

    JavaScript LeetCode

    华为云11.11 PaaS产品|精密云工程:智能激活业务速率限时优惠倒计时

    平平无奇爱好科技

    SQL LIKE 运算符:用法、示例和通配符解释

    小万哥

    程序员 软件 sql 后端开发 MySQL、

    SWOT是什么?10个好用的SWOT分析工具盘点,战略分析必备!

    彭宏豪95

    可视化 画图软件 在线白板 绘图工具 SWOT

    飞书智能伙伴之 AI 数智参谋:先进团队,北极星指标也要遥遥领先

    Kyligence

    指标平台 智能决策

    主流的低代码平台有哪些?程序员应该如何与低代码相处?

    高端章鱼哥

    软件开发 低代码 JNPF

    HashML——让更多企业读懂数据,用好AI

    酷克数据HashData

    跨境电商有没好的代理ip系统推荐?罗拉ROLA告诉你

    Geek_bf375d

    代理IP 代理IP设置 免费代理ip 跨境电商 爬虫分享

    NEO: A Learned Query Optimizer 论文

    Downal

    StarRocks 算子落盘:让大查询又快又稳

    StarRocks

    数据库 OLAP StarRocks

    WorkPlus解放企业应用开发,实现跨平台无缝切换

    WorkPlus

    一款专为POS机设计的芯片解决方案

    梦笔生花

    国家超级计算济南中心低代码平台应用实践

    明道云

    面向未来的黑科技——UI2CODE闲鱼基于图片生成跨端代码_AI&大模型_青页_InfoQ精选文章