[論文閱讀] 人工智能 + 軟件工程 | 告別冗余HTML與高算力消耗:EfficientUICoder如何破解UI2Code的token難題

告別冗余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…