告别冗余HTML与高算力消耗:EfficientUICoder如何破解UI2Code的token难题

论文信息

信息类别具体内容
论文原标题EfficientUICoder: A Dual-Modal Token Compression Framework for UI-to-Code Generation with Multimodal Large Language Models
论文链接https://arxiv.org/pdf/2509.12159

一段话总结

Multimodal Large Language Models(MLLMs)虽能将UI设计图转化为HTML/CSS代码(UI2Code任务),但存在“输入图像token过多+输出代码token冗余”的双重问题,导致算力消耗大、生成无效代码;为此研究团队提出首个双模态token压缩框架EfficientUICoder,通过“元素布局感知压缩(保留关键UI元素)、区域注意力精炼(剔除低价值token)、自适应重复抑制(减少重复代码)”三大组件,在Llava-v1.6(7B/34B)模型上实现55%-60%的token压缩率,34B模型计算成本降44.9%、推理时间减48.8%,还能将冗余样本减少56.8%-61.5%,且不牺牲网页视觉与代码质量。

思维导图

在这里插入图片描述

研究背景:UI2Code的“甜蜜烦恼”

你可能不知道,全球现在有11亿个活跃网站,每天还会新增17.7万个——这些网站的核心是“UI设计→代码实现”的流程,但手动把设计师画的界面(比如按钮位置、字体颜色、布局结构)写成HTML+CSS,不仅要专业知识,还特别耗时:一个简单的登录页,熟练开发者可能要1-2小时,复杂的首页甚至要1-2天。

这时候,Multimodal Large Language Models(MLLMs,比如Llava)成了“救星”——它们能看懂UI设计图,直接输出代码,理论上能把开发时间压缩到几分钟。但实际用起来,MLLM却有个“甜蜜烦恼”:

烦恼1:输入的视觉token“太臃肿”
MLLM处理UI图时,会把图切成成千上万个“视觉token”(类似把蛋糕切成小方块),但这些token里,很多是没用的背景(比如纯色区域),反而关键的UI元素(按钮、输入框、文本)被忽略——就像你买水果时,装了一大袋泡沫(背景token),真正的苹果(关键元素)没几个,不仅占地方(耗内存),还得花时间搬(耗算力)。

烦恼2:输出的代码token“太啰嗦”
MLLM生成代码时,会反复写重复内容:比如同一个CSS样式(.btn {color: red;})写好几遍,同一个HTML标签(<div class="box">)循环生成,甚至一段文本(“联系我们”)重复出现——就像写作文时,一句话翻来覆去说,不仅浪费字数(耗token),还可能导致代码无效(比如重复的CSS会让浏览器报错)。

举个真实案例:用Llava-v1.6-7B模型处理Design2Code数据集(484个真实网页)时,竟然生成了148个“冗余样本”——要么代码重复到无法运行,要么视觉效果和设计图差太远。这就导致MLLM虽然“能干活”,但“干得慢、干得糙”,没法真正落地到网页开发场景。

创新点:EfficientUICoder的“三大杀手锏”

这篇论文的最大亮点,是提出了首个针对UI2Code的双模态token压缩框架——之前的方法要么只压缩输入的视觉token(比如VisionZip),要么只优化模型结构(比如FastV),从来没人同时解决“输入视觉冗余”和“输出代码冗余”。具体来说,有三个创新:

  1. UI任务感知的视觉压缩:不盲目丢token,而是先“识别UI元素”(比如按钮、文本框),再用“最小生成树”保留元素间的布局关系——就像整理房间时,先把家具(UI元素)标出来,再按原本的摆放位置(布局)整理,不会把床和沙发的位置搞混。

  2. 注意力驱动的区域精炼:结合CLIP模型的注意力评分,精准剔除“低价值背景token”,同时补充“高价值背景信息”(比如设计图的整体颜色)——就像编辑文章时,删掉没用的口水话(低价值token),但保留关键的背景描述(比如“在蓝色背景下”),让内容更精炼。

  3. 自适应的代码重复抑制:实时跟踪代码结构(CSS/HTML/文本)的重复频率,对重复token施加“指数惩罚”——重复次数越多,惩罚越重,让模型“不敢再啰嗦”——就像老师改作业时,对重复的错误画叉,错得越多叉越多,学生就会主动避免重复。

研究方法和思路:EfficientUICoder的“工作流程”

EfficientUICoder不是一个单一模块,而是三个组件的“组合拳”:

第一步:用ELTC处理输入视觉token(解决视觉冗余)

ELTC(Element and Layout-aware Token Compression)的目标是“压缩视觉token,但不丢关键元素和布局”,分3步:

  1. 检测并合并UI元素:用UIED算法(一种成熟的UI元素检测工具)找出设计图里的文本、按钮、图像等元素,把碎文本(比如“联系”和“我们”分开了)合并,把重叠的元素框(比如按钮和上面的文本)处理成一个——就像把散落在桌上的积木(碎元素)拼成完整的形状(合并元素)。
  2. 构建UI元素图:把每个UI元素当成“节点”,元素间的距离当成“边的权重”(距离越近,权重越小)——就像画地图时,把每个建筑(节点)标出来,用线(边)连接,线的粗细代表距离(权重)。
  3. 生成最小生成树(MST):用Kruskal算法找出“总权重最小的边集合”,保留元素间的关键连接——就像规划路线时,选最短的路连接所有建筑,既不绕远,又能覆盖所有节点,最终得到“精简且保留布局的视觉token”。

第二步:用RTR精炼视觉token(进一步优化)

RTR(Region-aware Token Refinement)的目标是“让视觉token更精准”,分2步:

  1. 计算注意力评分:用CLIP模型的CLS token(负责全局信息),给每个视觉token打分——分数高的是“关键token”(比如按钮的颜色),分数低的是“冗余token”(比如空白背景)。
  2. 筛选token:在ELTC保留的区域里,丢掉10%(可调整)的低分数token;在ELTC没保留的区域里,补充5%-10%的高分数token——就像筛选简历时,删掉80分以下的(低价值),但从“备选池”里捞几个90分以上的(高价值),保证人才质量。

第三步:用ADTS抑制输出代码冗余(解决代码冗余)

ADTS(Adaptive Duplicate Token Suppression)的目标是“让代码不啰嗦”,分2步:

  1. 跟踪重复频率:实时监测生成的代码:
    • CSS:统计<选择器-属性>的重复次数(比如.btn {color: red;}出现几次);
    • HTML:统计<标签-属性-值-内容>的重复次数(比如<div class="box">文本</div>出现几次);
    • 文本:统计重复子串的次数(比如“联系我们”出现几次)。
  2. 施加指数惩罚:对重复的token,用公式z̃_i = z_i · λ^c(λ=1/2,c是重复次数)降低其生成概率——比如一个CSS样式重复3次,惩罚后生成概率就是原来的(1/2)^3=1/8,模型几乎不会再生成它——就像给重复犯错的员工降薪,犯错越多,降薪越多,员工自然会避免重复犯错。

主要成果和贡献:EfficientUICoder到底有多厉害?

1. 核心成果

研究问题(RQ)实验内容关键结论
RQ1:性能是否达标?在Design2Code/WebCode2M数据集上,对比EfficientUICoder与Vanilla、Random、VisionZip等基线所有性能指标超基线,7B模型Design2Code冗余样本从148→64(降56.8%),CLIP视觉相似度达0.7333(Vanilla=0.7275)
RQ2:效率提升多少?用Llava-v1.6-34B模型,测FLOPs(算力)、生成token数、预填充时间、推理时间FLOPs降44.9%,生成token降41.4%,预填充时间降46.6%,推理时间降48.8%——相当于原来1小时的活,现在26分钟搞定
RQ3:组件是否必要?消融实验:测试“无组件(C0)”“缺ELTC(C1)”“缺RTR(C2)”“缺ADTS(C3)”“全组件(C4)”三组件均正向贡献,C4性能最优:WebCode2M上Block-match=0.2718(C0=0.2843),BLEU=0.1338(C0=0.1190)
RQ4:参数如何选?测试ADTS的s(惩罚步数)、λ(衰减因子),RTR的r(精炼比例)s=3、λ=1/2最优;r=5%-10%最优——过大丢关键token,过小冗余不除

2. 给领域带来的价值

  • 开发者角度:网页开发效率大幅提升——原来用MLLM生成代码要等2分钟,现在只要1分钟,且代码几乎不用修改(冗余少),相当于“半自动化开发”。
  • 企业角度:算力成本大幅降低——34B模型的算力消耗降44.9%,意味着跑一次模型的成本少近一半,对需要大规模生成网页的企业(比如建站平台)来说,每年能省几十万甚至几百万算力费。
  • 研究角度:开创了“双模态压缩”的新思路——之前没人同时处理UI2Code的输入和输出冗余,这篇论文提供了可复现的框架,后续研究可以在此基础上优化。

3. 开源信息

(注:论文目前为arXiv预印本,未提及开源代码或数据集;若后续开源,可关注论文作者的GitHub主页或arXiv更新版本,本文将第一时间补充。)

关键问题:用问答吃透核心

Q1:EfficientUICoder和之前的压缩方法(比如VisionZip)有啥区别?

A:之前的方法只“管输入”(压缩视觉token),不管“输出”(代码冗余);而EfficientUICoder是“双向管”——既压缩输入的视觉token(ELTC+RTR),又抑制输出的代码冗余(ADTS)。而且,之前的方法盲目丢token(比如Random随机丢),EfficientUICoder会先识别UI元素和布局,再结合注意力评分丢token,更贴合UI2Code的任务特性。

Q2:压缩率达55%-60%,会不会导致生成的网页和设计图不一样?

A:不会,反而质量更高。因为EfficientUICoder丢的是“冗余token”(背景、重复代码),保留的是“关键信息”(UI元素、布局、高价值背景)。实验证明,它的视觉相似度(CLIP)比原模型(Vanilla)还高(0.7333 vs 0.7275),且冗余样本减少56.8%,代码更易运行。

Q3:ADTS的“指数惩罚”会不会让模型漏写必要的代码?

A:不会。因为ADTS的惩罚是“自适应”的——只惩罚“重复的代码”,首次出现的必要代码(比如<html>标签、核心CSS样式)不会被惩罚。而且参数s=3(只惩罚后续3个token),不会过度抑制——就像老师只批评重复犯错,不批评第一次尝试的正确行为。

Q4:EfficientUICoder只能用在Llava模型上吗?

A:不是。论文用Llava-v1.6(7B/34B)做实验,但框架的核心逻辑(ELTC的UI元素处理、RTR的注意力精炼、ADTS的重复抑制)是通用的,只要是处理UI2Code任务的MLLM(比如GPT-4V、Gemini Pro),都能套用这个框架。

论文总结

这篇论文针对MLLM在UI2Code任务中“视觉token冗余、代码token冗余”的核心问题,提出了双模态token压缩框架EfficientUICoder。通过ELTC、RTR、ADTS三个组件的协同作用,在保证网页视觉质量和代码完整性的前提下,实现了55%-60%的token压缩率,大幅降低了算力消耗(FLOPs降44.9%)和推理时间(降48.8%),同时减少了56.8%-61.5%的冗余样本。

它的价值不仅在于“提升效率”,更在于“开创思路”——首次将“输入视觉压缩”和“输出代码抑制”结合,为UI2Code的落地提供了可行方案,也为其他多模态生成任务(比如图生文、文生视频)的冗余优化提供了参考。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/923626.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/923626.shtml
英文地址,请注明出处:http://en.pswp.cn/news/923626.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【STM32项目开源】STM32单片机智能语音风扇控制系统

目录 一、设计背景和意义 1.1设计背景&#xff1a; 1.2设计意义&#xff1a; 二、实物展示 三、硬件功能介绍 2.1 硬件清单&#xff1a; 2.2 功能介绍&#xff1a; 四、软件设计流程图 五、硬件PCB展示 六、软件主函序展示 七、单片机实物资料 资料获取 查看主页介…

git clone vllm

这个错误不是 vLLM 本身的问题&#xff0c;而是 pip 在 clone GitHub 仓库时失败了&#xff1a; error: RPC failed; curl 16 Error in the HTTP2 framing layer fatal: expected flush after ref listing根因通常是&#xff1a; 网络问题&#xff08;访问 GitHub 被中断 / 代理…

光谱相机的新兴领域应用

光谱相机在‌新兴领域‌的应用正快速拓展&#xff0c;结合‌AI、纳米技术、量子传感‌等前沿科技&#xff0c;突破传统检测极限。以下是六大最具潜力的新兴应用方向及技术突破点&#xff1a;‌1. 元宇宙与数字孪生‌‌应用场景‌&#xff1a;‌虚拟材质建模‌&#xff1a;通过高…

深入理解数据结构之复杂度

文章目录1.数据结构前言1.1 数据结构1.2 算法2.算法效率2.1 复杂度的概念2.2 复杂度的重要性3.1 大O的渐进表式法3.2 时间复杂度计算示例3.2.1 示例13.2.2 示例23.2.3 示例33.2.4 示例43.2.5 示例53.2.6 示例63.2.7 示例74.空间复杂度4.1 空间复杂度计算示例4.1.1 示例14.1.2 示…

【Vue3】10-编写vue项目时,ref的应用(2)

合集篇&#xff1a; 1.【Vue3】创建并运行一个简易的Vue3项目 2.【Vue3】编写vue实现一个简单效果&#xff0c;并使用setup糖简化代码 目录refref 定义对象类型的响应式数据1. 概念理解a. 概念b. 分析2. 代码实操代码场景步骤一&#xff1a;导入ref步骤二&#xff1a;修改数据形…

clickhouse 中SUM(CASE WHEN ...) 返回什么类型?

文章目录clickhouse 中SUM(CASE WHEN ...) 返回什么类型&#xff1f;CASE WHENSUM(CASE WHEN ...) 返回什么类型&#xff1f;clickhouse 中SUM(CASE WHEN …) 返回什么类型&#xff1f; CASE WHEN ClickHouse中的CASE WHEN用法与SQL标准中的用法基本相同&#xff0c;用于实现…

【算法】C语言多组输入输出模板

在 C语言 里&#xff0c;“多组输入输出”是很多在线评测系统&#xff08;OJ&#xff09;常见的模式&#xff0c;通常有两种情况&#xff1a;1. 输入到文件结束&#xff08;EOF&#xff09;比如题目没有告诉有多少组数据&#xff0c;就需要一直读直到输入结束。#include <st…

【Ubuntu】sudo apt update出现E :仓库***没有Release文件

【Ubuntu】sudo apt update出现E &#xff1a;仓库***没有Release文件 1 问题描述 在执行sudo apt update更新一下软件包时出现了如下报错 E: 仓库***没有Release 文件。 N: 无法安全地用该源进行更新&#xff0c;所以默认禁用该源。 N:参见apt-secure&#xff08;8&#xf…

全球后量子迁移进展:区域特色与产业落地差异

一、量子威胁具象化&#xff1a;从技术风险到产业冲击量子计算对传统密码体系的威胁已从理论走向现实&#xff0c;其破坏性不仅体现在算法破解效率的飞跃&#xff0c;更渗透到数据全生命周期的安全防护中。以金融领域为例&#xff0c;2024 年国际安全机构模拟实验显示&#xff…

贪心算法应用:决策树(ID3/C4.5)详解

Java中的贪心算法应用&#xff1a;决策树&#xff08;ID3/C4.5&#xff09;详解 决策树是一种常用的机器学习算法&#xff0c;它通过递归地将数据集分割成更小的子集来构建树形结构。ID3和C4.5是两种经典的决策树算法&#xff0c;它们都使用了贪心算法来选择最优的特征进行分割…

华为任旭东:开源协作,激发创新,共创智能世界 | GOSIM HANGZHOU 2025

GOSIM HANGZHOU 2025峰会盛大开幕&#xff0c;华为首席开源联络官、CNCF基金会董事任旭东以《开源协作&#xff0c;激发创新&#xff0c;共创智能世界》为题发表Keynote演讲。颠覆性技术到工业应用的转换时间越来越短&#xff0c;AI技术正在推动传统软件产业的演进&#xff0c;…

本地部署 GPS 跟踪系统 Traccar 并实现外部访问

Traccar 是一款集成了强大的 java 后端服务的 GPS 跟踪系统 。它支持在多种设备使用&#xff0c;在物流运输、资产管理和个人安全等领域应用。本文将详细的介绍如何利用 Docker 在本地部署 Traccar 并结合路由侠实现外网访问本地部署的 Traccar 。 第一步&#xff0c;本地部署…

【开题答辩全过程】以 “川趣玩”旅行团预定微信小程序为例,包含答辩的问题和答案

个人简介一名14年经验的资深毕设内行人&#xff0c;语言擅长Java、php、微信小程序、Python、Golang、安卓Android等开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。感谢大家的…

Android Doze低电耗休眠模式 与 WorkManager

1. Doze模式下&#xff0c;WorkManager setInitialDelay设置小于15分钟&#xff0c;被系统强制到15分钟执行&#xff0c;怎么办 ? Android 拥有两项省电功能&#xff0c;通过管理设备未连接电源时应用的行为来延长用户电池续航时间&#xff1a;低电耗模式 (Doze) 和应用待机模…

iOS 能耗监控与电池优化实战:如何查看App耗电量、分析CPU、GPU内存使用、(uni-app iOS开发性能调试指南)

在 iOS 应用开发中&#xff0c;能耗与电池消耗是用户最直观的体验指标。 即便功能完善&#xff0c;如果 App 存在以下问题&#xff1a; 电池掉电快、设备发热严重&#xff1b;后台任务执行过多&#xff1b;页面渲染与文件操作引发 CPU/GPU 过载&#xff1b;日志或缓存导致频繁 …

Git 本地分支推送多个远程分支

方法一&#xff1a;一次性推送命令 命令格式&#xff1a; git push <远程仓库名> <本地分支引用>:<远程分支名1> <本地分支引用>:<远程分支名2> ...具体步骤&#xff1a; 确保你的代码修改已经提交到了本地分支 git add . git commit -m "你…

抖音私信评论互动消息通知监听自动获取,通过qq机器人转发到qq来通知

抖音私信评论互动消息通知监听自动获取&#xff0c;通过qq机器人转发到qq来通知 如果不是抖音平台&#xff0c;其他平台也类似的&#xff0c;也可以实现&#xff0c;只是目前懒得写了 本期视频点赞过10个就开源代码 有需要的人可以在视频底下留言 需求反馈多的我可以实现

UVM验证工具--gvim

目录 gvim语法高亮 gvim支持git Linux环境自带gvim工具&#xff0c;我们需要做如下设置&#xff1a; 支持UVM、SystemVerilog、verilog语法高亮支持git&#xff08;实时显示对文件的修改&#xff09; gvim语法高亮 gvim支持git

MyBatis 从入门到精通(第二篇)—— 核心架构、配置解析与 Mapper 代理开发

在第一篇博客中&#xff0c;我们掌握了 MyBatis 的基础概念与环境搭建&#xff0c;成功通过简单查询实现了数据持久化。但要真正用好 MyBatis&#xff0c;还需深入理解其 “内部工作原理” 与 “企业级开发规范”。本篇将聚焦三大核心&#xff1a;MyBatis 架构与核心类、全局配…

uniapp+<script setup lang=“ts“>单个时间格式转换(format)

有问题的时间&#xff08;只示例&#xff0c;不是真实数据&#xff09;修改后的时间展示&#xff08;只示例&#xff0c;不是真实数据&#xff09;原代码<view v-else-if"item?.payTime" class"order-info-item">支付时间&#xff1a;item?.payTim…