深度學習自動前端開發:從草圖到HTML只需5秒 - 機器之心Pro

2021-01-08 機器之心Pro

在人們的不斷探索下,「使用人工智慧自動生成網頁」的方法已經變得越來越接近實用化了。本文介紹的這種名為 SketchCode 的卷積神經網絡能夠把網站圖形用戶界面的設計草圖直接轉譯成代碼行,為前端開發者們分擔部分設計流程。目前,該模型在訓練後的 BLEU 得分已達 0.76。

你可以在 GitHub 上找到這個項目的代碼:https://github.com/ashnkumar/sketch-code

為用戶創造直觀、富有吸引力的網站是各家公司的重要目標,而且這是個快速進行原型、設計、用戶測試循環的過程。像 Facebook 這樣的大公司有著讓整個團隊專注於設計流程的人力,改動可能需要幾周的時間,並涉及到多種利益相關者;而小型企業就沒有這樣的資源,因此其用戶界面可能受到一些影響。

我在 Insight 當中的目標是使用現代深度學習算法大大簡化設計工作流程,並使得任何規模的公司都能快速地創造並測試網頁。

現有的設計工作流程

現有工作流程涉及多個利益相關者

一個典型的設計工作流程如下所示:

產品經理進行用戶研究,從而制定技術參數表設計人員將接受這些要求並嘗試創建低保真原型,最終創建高保真原型工程師將這些設計轉化為代碼並最終將產品交付給用戶

開發周期的時間長度很快就會變成瓶頸,像 Airbnb 這樣的公司已經開始使用機器學習來提高這個過程的效率了。(參見:https://airbnb.design/sketching-interfaces/)

Airbnb 內部 AI 工具演示:從草圖到代碼

雖然這種工具很有希望成為機器輔助設計的例子,但是尚不清楚這種模型在端到端的情況下能完全訓練到什麼程度,也不清楚它在多大程度上依賴於手工製作的圖像特徵。這肯定是無法知道的,因為它目前還是 Airbnb 專有的非開源方案。我想創造一個「從繪圖到代碼」技術的開源版本,可供更多開發者和設計者使用。

理想情況下,我的模型可以採用簡單的網站設計手繪原型,並立即從該圖像生成一個可用的 HTML 網站:

SketchCode 模型需要繪製好的網站線框圖並能生成 HTML 代碼

實際上,上面的例子是一個從我模型測試集圖像生成的實際網站!你可以在我的 Github 頁面中查看它:https://github.com/ashnkumar/sketch-code

從圖像標註中獲取靈感

我正在解決的問題屬於程序綜合(https://en.wikipedia.org/wiki/Program_synthesis)這個廣義任務範疇,即工作原始碼的自動生成。儘管很多程序綜合能處理從自然語言要求或執行軌跡所生成的代碼,但在我這個案例中,我可以從一個源圖像(手繪線框圖)開始,自動獲得想要的代碼。

機器學習領域中,有一個名為圖像字幕生成的領域(https://cs.stanford.edu/people/karpathy/deepimagesent/),該領域有著充分的研究,旨在學習將圖像和文本相連的模型,特別是生成關於源圖片內容的描述。

圖像標註模型生成源圖片的描述

我從最近一篇名為 pix2code 的論文和 Emil Wallner 使用該方法的一個相關項目獲得了靈感(參見:前端慌不慌?用深度學習自動生成 HTML 代碼),並決定將我的任務重構成圖像字幕生成問題的一部分,即將線框圖作為輸入圖像,將對應的 HTML 代碼作為輸出文本。

獲取正確的數據集

考慮到圖像標註的方法,我心中理想的訓練數據集是成千上萬對手繪線框圖和它們 HTML 代碼的等價物。不出所料,我無法找到這種數據集,因此我不得不為該任務創建自己的數據。

我從 pix2code 論文中提到的一個開源數據集(https://github.com/tonybeltramelli/pix2code)入手,它由 1750 張人工生成的網頁截圖和其對應原始碼構成。

pix2code 中生成的網站圖像及其原始碼數據集

這個數據集對我而言是個很好的開始,其中有一些有趣的地方:

數據集中每個生成的網站都包含幾個簡單的 Bootstrap 元素例如按鈕、文本框和 DIV。雖然這意味著我的模型將會因把這幾個元素作為「詞彙」(模型可選擇用於生成網站的元素)而受限制,這種方法應該很容易推廣到更大的元素詞彙表中。每個示例的原始碼包含領域專用語言(DSL)的標記,這些符號是由論文作者創建的。每個標記對應於 HTML 和 CSS 的片段,且有一個編譯器將 DSL 轉化為工作使用的 HTML 代碼。

讓圖片更像手繪的

將網站的多彩主題切換成手寫主題。

為了調整數據集以適應我的任務,我得把網站的圖片弄得像是手繪的。對圖片的手繪化都得益於 OpenCV 和 PIL library 的灰度轉換和輪廓檢測功能。

最終,我決定直接通過一系列操作來直接修改原網站的 CSS 樣式表:

通過改變頁面元素的邊框半徑實現按鈕和 div 的圓潤化調整邊框的粗細以模仿手繪素描,並添加陰影將字體改為類手寫字體

我的最終版本又增加了一個步驟,通過加入傾斜,偏移和旋轉來進行數據增強,以模仿實際繪製的素描的不確定性。

使用圖像標註模型架構

現在我已經準備好我的數據了,我可以把它輸入模型進行訓練了!

我用的這個用於圖像標註的模型包括三個主要部分:

一個卷積神經網路(CNN)視覺模型用於提取源圖片特徵一種由編碼原始碼標記序列的門控循環單元(GRU)組成的語言模型一個解碼器模型(也是一個 GRU),它以前兩個步的輸出作為輸入,預測序列中的下一個標記

使用標記序列作為輸入來訓練模型

為了訓練這個模型,我把原始碼分成標記序列。其中一個序列及其源圖像是模型的單個輸入,其標籤是文檔中的下一個標記。該模型使用交叉熵成本(cross-entropy cost)作為其損失函數,將模型預測的下一個標記與實際的標記進行比較。

在模型從頭開始生成代碼的推理階段,該過程稍有不同。該圖像仍然通過 CNN 網絡進行處理,但文本處理僅提供一個開始序列。在每一步中,模型對序列中下一個標記的預測將返回到當前輸入序列,同時作為新的輸入序列輸入到模型中。重複此操作直到模型預測出 <END> 標記或進程達到每個文檔的標記數的預定義上限。

一旦從模型中生成了一組預測標記,編譯器就會將 DSL 標記轉換為 HTML,這些 HTML 可以在任何瀏覽器中展示出來。

用 BLEU 得分評估模型

我決定用 BLEU 評分(https://machinelearningmastery.com/calculate-bleu-score-for-text-python/)來評估模型。這是機器翻譯任務中經常會用到的評估標準,它試圖在給定相同輸入的情況下,評估機器生成的文本與人類可能寫的文本的近似程度。

實質上,BLEU 通過比較生成文本和參考文本的 n-元 序列,生成精修改後的文本。它非常適合這個項目,因為它會影響生成的 HTML 中的實際元素,以及它們之間的相互關係。

然後這是最棒的——我完全可以通過檢查生成的網站來理解 BLEU 得分!

BLEU 得分可視化

一個完美的 1.0 的 BLEU 分數將在正確的位置生成源圖像的正確元素,而較低的得分可以預測錯誤的元素和/或將它們放在相對於彼此錯誤的位置。最終我的模型能夠在測試集上得到 0.76 的 BLEU 分數。

福利 - 定製樣式

我覺察到的一個額外福利是,由於模型只生成頁面的骨架(文檔的標記),我可以在編譯過程中添加一個自定義的 CSS 層,並且可以即時看到網站的不同風格。

一次轉換 => 同時生成多種樣式

將樣式與模型生成過程分離,給使用模型帶來了很多好處:

想要將 SketchCode 模型應用到自己公司產品中的前端工程師可以按原樣使用該模型,只需更改一個 CSS 文件以符合其公司的樣式要求可擴展性已內置 - 使用一張源圖像,模型輸出可立即編譯為 5、10 或 50 種不同的預定義樣式,因此用戶可以看到他們網站的多個版本,並在瀏覽器中瀏覽這些網站

總結與展望

通過利用圖像標註的研究成果,SketchCode 能夠在幾秒鐘內將手繪網站線框圖轉換為可用的 HTML 網站。

該模型有些局限性,大概包括以下幾點:

由於這個模型是用一個只有 16 個元素的詞彙進行訓練的,它不能預測訓練數據之外的標記。下一步可能是使用更多元素(如圖像,下拉菜單和表單)生成其他樣例網站——Bootstrap components 是個練手的好網站:https://getbootstrap.com/docs/4.0/components/buttons/實際生產環境中,網站有很多變化。創建一個更能反映這種變化的訓練數據集的好方法是去爬取實際的網站,捕獲他們的 HTML / CSS 代碼以及網站內容的截圖手繪素描也有很多變化,CSS 修改技巧沒有被模型完全學會。在手繪素描上生成更多變化的一種好方法是使用生成對抗網絡來創建逼真的繪製網站圖像

我很期待看到項目的進一步發展!

相關焦點

  • Python開發簡單爬蟲【學習資料總結】
    ,學會使用python開發環境,使用python開發一些簡單的案例) (1)Python3入門,數據類型,字符串 (2)判斷/循環語句,函數, (3)類與對象,繼承,多態 (4)tkinter界面編程 (5)文件與異常,數據處理簡介
  • 機器之心獨家對話百度 NLP:先解決語義理解,再談機器翻譯取代人類
    現在,這個團隊人員構成非常多元,有自然語言處理、機器學習、信息檢索、數據挖掘、機器翻譯等多領域的專業性人才,擅長工程實踐和擅長科學研究的人才都能夠在團隊中發揮重要作用。同時,架構開發、前端開發、客戶端等軟體開發和硬體開發工程師,產品設計及語言學專業人才也是團隊的重要組成部分。整個部門的大方向有幾個。
  • 前端開發者的福音:根據UI設計圖自動生成GUI骨架代碼
    機器之心專欄作者:Chunyang Chen、Ting Su、Guozhu Meng、Zhenchang Xing、Yang Liu做過前端開發的人常有這樣的經歷,面對一張 UI 設計圖片,要把它轉換為相應 GUI 骨架代碼。
  • 一周科技隨我探|中國將打造會學習的運載火箭;科學家意外發現人體...
    中國將打造會學習的運載火箭 這就需要火箭自己「會學習」、自己解決一些問題。作為一枚成熟的火箭,這是很有必要噠。 我國正在研製會學習的運載火箭,目前北京航天自動控制研究所團隊已開始著手對我國在役運載火箭進行改進,力爭在2025年使我國在役主要運載火箭初步具備學習能力。
  • 深度學習如何大規模產業化?百度CTO王海峰最新演講深度解讀 | CNCC...
    回顧人工智慧技術的發展,人工智慧技術的發展階段有很多分類維度,我理解大概可以歸結為:最早期更多都是在用人工的規則,我26年前進入這一行的時候,其實也是在用人工規則來開發機器翻譯系統;後來逐漸開始機器學習,尤其是統計機器學習,在很長的一段時間裡佔主流地位,也產生了很大的影響,帶來了很多應用產業的價值;深度學習是機器學習的一個子方向,現在,深度學習逐漸成為新一代人工智慧最核心的技術。
  • 現代前端開發路線圖:從零開始,一步步成為前端工程師
    比如想找份前端開發的工作,卻不知道應該先學習什麼再學習什麼,也不知道該選擇什麼樣的工具。因為經常被人問到類似的問題,全棧開發者Kamran Ahmed索性在github上制訂了一份現代前端開發的路線圖,並且用一篇文章對前端開發的整個學習過程進行了詳細解釋。感興趣的初學者不容錯過。進入正題之前先交代一下我和這張路線圖的背景。
  • 清華大學發布首個自動圖機器學習工具包,開源易用可擴展
    機器之心報導機器之心編輯部如何應用自動機器學習 (AutoML) 加速圖機器學習任務的處理?清華大學發布全球首個開源自動圖學習工具包:AutoGL (Auto Graph Learning),支持在圖數據上全自動進行機器學習。人工智慧的蓬勃發展離不開數據、算力、算法這三大要素。
  • 「前端技術」詳解|天貓搜索前端技術歷代記
    前端會編譯生成一個自身可運行的 Weex Bundle ,包含頭尾等完整信息,然後通過發布推送到搜索應用的機器上。當客戶端的搜索請求到達服務端,服務端基於業務邏輯確定需要使用哪些模塊,將模塊相關的信息告訴客戶端,這些信息包括模塊名稱、模塊位置、模塊數據。
  • ...首個自動圖機器學習工具包AutoGL,開源易用可擴展,支持自定義模型
    機器之心報導機器之心編輯部如何應用自動機器學習 (AutoML) 加速圖機器學習任務的處理?清華大學發布全球首個開源自動圖學習工具包:AutoGL (Auto Graph Learning),支持在圖數據上全自動進行機器學習。人工智慧的蓬勃發展離不開數據、算力、算法這三大要素。
  • 從語言學到深度學習NLP,一文概述自然語言處理
    第二描述的是基於深度學習的 NLP,該論文首先描述了深度學習中的詞表徵,即從 one-hot 編碼、詞袋模型到詞嵌入和 word2vec 等,我們首先需要數字表徵詞彙才能進一步做自然語言處理。 NLP 的研究任務如自動摘要、指代消解(Co-Reference Resolution)、語篇分析、機器翻譯、語素切分(Morphological Segmentation)、命名實體識別、光學字符識別和詞性標註等。自動摘要即對一組文本的詳細信息以一種特定的格式生成一個摘要。指代消解指的是用句子或更大的一組文本確定哪些詞指代的是相同對象。
  • 蘋果開發新款Mac Pro:產品線過渡到Apple Silicon晶片
    也可能配備英特爾處理器而不是Apple Silicon晶片,這可能是Mac產品線中唯一繼續依賴英特爾技術的機器。有傳言說其他大部分機器都在向Apple silicon過渡。第二種型號將使用Apple silicon晶片,其尺寸不到當前Mac Pro一半,介於現有Mac Pro和Mac mini之間。
  • 專訪大象聲科汪德亮:利用深度學習解決「雞尾酒會問題 」
    機器之心原創作者:吳攀近些年,隨著深度學習的興起,人工智慧已經學會了下圍棋、玩視頻遊戲、識別人臉、做翻譯、駕駛汽車……甚至在德州撲克這種非完美博弈中也開始嶄露頭角。但事實上,變化不止於此,在語音增強方面,深度學習技術正推動「雞尾酒會問題」的解決。
  • 揭秘線稿自動上色 喵圖科技突破GPU模型壓縮技術
    來自喵圖科技的算法研發團隊給出了深度學習在動漫領域的研究進展,開發了一套在壓縮GPU顯存的情況下,通過人工智慧給漫畫線稿優化線條、自動上色的技術。   訓練機器自動上色,生成效果「以假亂真」!   研究團隊使用生成對抗網絡(GAN)完成上色任務,達到與人工作畫相近的效果。
  • 從引擎聲音預測車輛故障,深度學習開始識別通用聲音
    近日,一家位於以色列薩瓦村(Kefar Sava, Israel)的初創公司3DSignals提出了一個新想法:利用人工智慧(AI)「傾聽」機器發出的故障預警性信號,在機器崩潰之前就能提前預警。3DSignals公司提供的服務主要基於「深度學習」(deep learning)的人工智慧技術,利用AI來分析故障機器的噪聲並進行早期預測。
  • Super PhotoCut Pro for Mac(摳圖工具)v2.8.2中文版
    此外,super photocut pro可以立即切出透明物體,如婚紗,面紗等,而不會損壞圖像質量!Super PhotoCut Pro for Mac下載 https://www.macz.com/mac/4151.html
  • 高校試用自動打飯機 30秒能打10份飯
    近日,福建師範大學食堂出現的一臺自動打飯機引起不少網友的關注。據悉,使用者只需將鐵碗放進卡槽,刷飯卡後,自動打飯機就會「吐」出一團壓成長方形的飯糰。一臺自動打飯機可以滿足1000人的需求,30秒就能打10份。
  • 專家解讀阿法狗原理:是「深度學習」
    它的致命法寶就是模仿人類的「深度學習」工作原理。機器到底是怎樣像人類一樣學習的?有一天它無所不能,人類的未來又將怎樣?北京晨報記者採訪了國內專家進行解讀。  阿法狗原理是「深度學習」  AlphaGo(阿法狗)由位於英國倫敦的谷歌旗下DeepMind公司開發。它的主要工作原理是「深度學習」。
  • 實踐入門NLP:基於深度學習的自然語言處理
    【課程亮點】三大模塊,五大應用,手把手快速入門NLP算法+實踐,搭配典型行業應用海外博士講師,豐富項目經驗專業學習社群,隨到隨學【適合人群】本次課程主要適合具備一定編程基礎的開發人員,以及對自然語言處理和深度學習有興趣的踐行者
  • 華為nova 5 Pro天貓小黑盒首發 主打AI人像夜景
    中關村在線消息:作為全球最大的新品首發主陣地,華為曾多次與天貓小黑盒展開合作,此番,華為nova5 pro/nova 5i首銷再次登陸天貓小黑盒。華為nova5 pro橙色版輕薄機身上的潮流設計華為nova 5 Pro採用創新3D精雕紋理工藝,打造幻境星芒般的光影效果,令機身色彩隨光影自由流動
  • 申城不少單位食堂升級 全程機器淘米自動設備洗碗
    據《勞動報》報導,全程機器淘米瀝水、自動設備清洗碗筷、密封包裝食材可溯源……申城不少企事業單位的職工食堂正在悄然升級。記者獲悉,不同於以往整租承包的模式,如今的食堂承包方走起了提供服務的「輕資產」模式,減輕企業負擔的同時,也能將更多的精力放到食品管控、經營管理上,真正實現了「放心職工食堂」。