不管是大公司也好,小公司也罷,為用戶(hù)創(chuàng)建感性的參與體驗(yàn)都是一個(gè)重要目標(biāo),而這個(gè)過(guò)程往往通過(guò)原型設(shè)計(jì)、程序設(shè)計(jì)和用戶(hù)測(cè)試這幾個(gè)部分之間快速循環(huán)來(lái)完成。對(duì)" />

国产成人精品无码青草_亚洲国产美女精品久久久久∴_欧美人与鲁交大毛片免费_国产果冻豆传媒麻婆精东

所在位置: 首頁(yè) > 營(yíng)銷(xiāo)資訊 > 網(wǎng)站運(yùn)營(yíng) > 自動(dòng)化前端開(kāi)發(fā):用深度學(xué)習(xí)5秒鐘將網(wǎng)站草圖轉(zhuǎn)換為HTML代碼

自動(dòng)化前端開(kāi)發(fā):用深度學(xué)習(xí)5秒鐘將網(wǎng)站草圖轉(zhuǎn)換為HTML代碼

時(shí)間:2023-09-13 17:18:02 | 來(lái)源:網(wǎng)站運(yùn)營(yíng)

時(shí)間:2023-09-13 17:18:02 來(lái)源:網(wǎng)站運(yùn)營(yíng)

自動(dòng)化前端開(kāi)發(fā):用深度學(xué)習(xí)5秒鐘將網(wǎng)站草圖轉(zhuǎn)換為HTML代碼:

不管是大公司也好,小公司也罷,為用戶(hù)創(chuàng)建感性的參與體驗(yàn)都是一個(gè)重要目標(biāo),而這個(gè)過(guò)程往往通過(guò)原型設(shè)計(jì)、程序設(shè)計(jì)和用戶(hù)測(cè)試這幾個(gè)部分之間快速循環(huán)來(lái)完成。對(duì)于大型公司,比如 Facebook,它們有足夠的專(zhuān)用帶寬,可供整個(gè)團(tuán)隊(duì)設(shè)計(jì)前面所說(shuō)的流程,通常要花費(fèi)幾周的時(shí)間;而小型公司由于沒(méi)有此類(lèi)資源支持,往往得到很不理想的用戶(hù)界面。




本文我將分享如何用深度學(xué)習(xí)算法大幅簡(jiǎn)化設(shè)計(jì)工作流,從而讓任何體量的公司都能快速創(chuàng)建測(cè)試網(wǎng)頁(yè)。




(項(xiàng)目代碼地址見(jiàn)文末)




當(dāng)前的設(shè)計(jì)工作流




當(dāng)前一個(gè)典型的設(shè)計(jì)工作流可能如下所示:

設(shè)計(jì)工作流中涉及的相關(guān)各方






這種冗長(zhǎng)的開(kāi)發(fā)流程很多時(shí)候會(huì)成為制約企業(yè)的瓶頸問(wèn)題,因此一些公司比如 Airbnb,已經(jīng)開(kāi)始用機(jī)器學(xué)習(xí)讓開(kāi)發(fā)流程更加高效。




Airbnb內(nèi)部將設(shè)計(jì)草圖轉(zhuǎn)變?yōu)榇a的AI工具演示圖



但是這些公司應(yīng)用的方法到底如何,外界不得而知。因此我決定研究一種開(kāi)源版的網(wǎng)頁(yè)自動(dòng)開(kāi)發(fā)技術(shù),讓廣大開(kāi)發(fā)者和設(shè)計(jì)師都能從中受益。




理想狀況下,我的模型能夠根據(jù)網(wǎng)站設(shè)計(jì)的簡(jiǎn)單手繪圖,立刻生成可以運(yùn)行的 HTML 網(wǎng)站:




模型能將設(shè)計(jì)草圖立刻轉(zhuǎn)換為HTML代碼



實(shí)際上,上面的例子就是我的模型根據(jù)測(cè)試照片實(shí)際生成的一個(gè)網(wǎng)站??梢栽谖业?GitHub 上查看生成該網(wǎng)站的代碼:




從圖片描述中汲取靈感

我要解決的問(wèn)題,從大的方向上可以歸類(lèi)為一種叫做“程序綜合”的任務(wù),也就是自動(dòng)生成能夠運(yùn)行的源代碼。雖然大部分程序綜合處理的是自然語(yǔ)言指令或執(zhí)行追蹤中生成的代碼,但我的模型還能在開(kāi)始時(shí)利用源圖像(手繪的示意圖)。




機(jī)器學(xué)習(xí)領(lǐng)域有個(gè)充分研究的方向叫做圖像描述,這種方法會(huì)學(xué)習(xí)將圖像和文本相匹配的模型,專(zhuān)為源圖像中的內(nèi)容生成文本描述。




圖像描述模型生成源圖像的文本描述



在觀摩學(xué)習(xí)了最近發(fā)表的稱(chēng)為pix2code的論文(https://arxiv.org/abs/1705.07962)和Emil Wallner的相關(guān)項(xiàng)目(https://blog.floydhub.com/turning-design-mockups-into-code-with-deep-learning/?source=techstories.org)后,我獲得了一些啟發(fā),決定將我的任務(wù)歸類(lèi)為圖像描述,也就是將手繪的網(wǎng)站示意圖看作輸入圖像,而對(duì)應(yīng)的HTML代碼就相當(dāng)于圖像的輸出文本。




獲取正確的數(shù)據(jù)集

如果是用圖像描述這種方法,我理想中的訓(xùn)練數(shù)據(jù)集應(yīng)當(dāng)是幾千張手繪的網(wǎng)站設(shè)計(jì)圖及其對(duì)應(yīng)的 HTML 代碼。意料之中,這種正好符合要求的數(shù)據(jù)集根本找不到,因此我只能自己創(chuàng)建任務(wù)需要的數(shù)據(jù)集。




我首先使用來(lái)自pix2code論文的開(kāi)源數(shù)據(jù)集(https://github.com/tonybeltramelli/pix2code),包含了1750張綜合生成的網(wǎng)站及其相關(guān)源代碼的截圖。




pix2code數(shù)據(jù)集



就我的項(xiàng)目的開(kāi)始階段而言,這是個(gè)很好的數(shù)據(jù)集,有幾個(gè)很有趣的亮點(diǎn):




讓圖像具有設(shè)計(jì)草圖的效果




將多姿多彩的網(wǎng)站圖像變?yōu)槭掷L版設(shè)計(jì)草圖



為了修正數(shù)據(jù)集,更好的適應(yīng)我的任務(wù),我需要讓網(wǎng)站圖像看起來(lái)是用手畫(huà)出來(lái)的一樣。我用了一些工具,比如 OpenCV 和 Python 庫(kù) PIL,修改了每張圖像的信息,比如灰度轉(zhuǎn)換、輪廓檢測(cè)等。




最終,我決定直接修改初始網(wǎng)站的 CSS 樣式表,進(jìn)行了一系列的操作:




使用圖像描述模型架構(gòu)

現(xiàn)在,需要的數(shù)據(jù)已經(jīng)備好,終于可以將數(shù)據(jù)輸入到模型中了!




我采用了應(yīng)用于圖像描述部分的模型架構(gòu),主要包含 3 個(gè)主要部分:

用token序列作為輸入來(lái)訓(xùn)練模型
用token序列作為輸入來(lái)訓(xùn)練模型




為了能訓(xùn)練模型,我將源代碼拆分為 token 的序列。模型的每個(gè)輸入就是一個(gè) token 序列,并配有和序列對(duì)應(yīng)的源圖像,其標(biāo)簽為文件中的下一個(gè) token。模型使用交叉熵代價(jià)函數(shù)作為其損失函數(shù),它會(huì)將模型預(yù)測(cè)的下一個(gè) token 和實(shí)際的下一個(gè) token 進(jìn)行比較。




在推理階段,當(dāng)模型從零開(kāi)始生成代碼時(shí),過(guò)程會(huì)有所不同。圖像仍然是通過(guò) CNN 神經(jīng)網(wǎng)絡(luò)處理,但只用起始序列進(jìn)行文本處理。模型對(duì)序列中下一個(gè) token 的預(yù)測(cè),在每一步都會(huì)添加至當(dāng)前輸入序列,并作為一個(gè)新的輸入序列輸入到模型中。這個(gè)過(guò)程會(huì)反復(fù)進(jìn)行,直到模型預(yù)測(cè)出一個(gè) <End> token 或者用盡了每個(gè)文件中的 token 數(shù)量。




用 BLEU 得分評(píng)估模型

我決定用 BLEU 得分評(píng)估模型。BLEU 得分是應(yīng)用在機(jī)器翻譯任務(wù)中的常見(jiàn)指標(biāo),用來(lái)衡量輸入相同的情況下,機(jī)器生成文本和人類(lèi)生成文本的接近程度,




基本上,BLEU 會(huì)比較生成文本和引用文本這兩者的 N-Gram 序列,以改進(jìn)的形式表示模型的精確度。這對(duì)本項(xiàng)目來(lái)說(shuō)非常合適,因?yàn)樗鼤?huì)將生成的 HTML 中的實(shí)際元素以及它們之間的關(guān)系考慮進(jìn)來(lái)。




更棒的是,我能通過(guò)檢查生成的網(wǎng)站查看 BLEU 得分。




可視化BLEU得分



最高 BLEU 得分 1.0 表示模型能根據(jù)源圖像生成正確的網(wǎng)頁(yè)元素,且各元素均在正確的位置。 BLEU 得分很低則表示模型沒(méi)有正確生成元素,或?qū)⒃胤旁诹隋e(cuò)誤的位置。最終用評(píng)估數(shù)據(jù)集對(duì)模型進(jìn)行評(píng)估時(shí),顯示模型得到了 0.76 的 BLEU 得分。也就是說(shuō)我搭建的模型,能正確的將 76% 的設(shè)計(jì)草圖短短幾秒鐘內(nèi)轉(zhuǎn)換為 HTML 代碼。




額外福利——自定義網(wǎng)站風(fēng)格




我后來(lái)意識(shí)到還有一個(gè)額外的福利。由于模型只生成了網(wǎng)頁(yè)的框架(文件的 token),那么我可以在編譯過(guò)程中添加一個(gè)自定義 CSS 層,這樣模型就能即刻讓生成的網(wǎng)站擁有多種不同的風(fēng)格。




一張?jiān)O(shè)計(jì)草圖同時(shí)生成多種風(fēng)格



讓網(wǎng)站風(fēng)格和模型生成過(guò)程相分離,能讓使用模型時(shí)具備幾個(gè)很大的優(yōu)勢(shì):







結(jié)語(yǔ)及未來(lái)展望




通過(guò)使用圖像描述領(lǐng)域的研究方法,我搭建了一個(gè)深度學(xué)習(xí)模型,能夠?qū)⑹掷L的網(wǎng)站設(shè)計(jì)圖在幾秒鐘內(nèi)轉(zhuǎn)換為可以運(yùn)行的 HTML 網(wǎng)站。




當(dāng)然模型也存在一些局限,未來(lái)我可能從以下幾個(gè)方面優(yōu)化:




本項(xiàng)目全部代碼見(jiàn)我的GitHub庫(kù):


參考資料:
https://blog.insightdatascience.com/automated-front-end-development-using-deep-learning-3169dd086e82



歡迎關(guān)注我們的微博:@景略集智

限時(shí)折扣中:0806期《人工智能-從零開(kāi)始到精通》最低58折!





關(guān)鍵詞:草圖,轉(zhuǎn)換,學(xué)習(xí),深度,自動(dòng)化

74
73
25
news

版權(quán)所有? 億企邦 1997-2025 保留一切法律許可權(quán)利。

為了最佳展示效果,本站不支持IE9及以下版本的瀏覽器,建議您使用谷歌Chrome瀏覽器。 點(diǎn)擊下載Chrome瀏覽器
關(guān)閉