0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

AI在前端領(lǐng)域的發(fā)展

WpOh_rgznai100 ? 來源:YXQ ? 2019-07-24 09:36 ? 次閱讀

相信不少人看過一篇人工智能已經(jīng)能實現(xiàn)自動編寫HTML,CSS的文章,人工智能開始取代前端的一部分工作。前端開發(fā)行業(yè)真的被人工智能取代嗎?

人工智能發(fā)展確實速度驚人,但是前端開發(fā)行業(yè)技能繁雜,要完全取代還為時過早。

然而人工智能和前端開發(fā)行業(yè)卻能達到雙贏!人工智能幫助前端工程師完成了大量枯燥和固化的工作,工程師們將有更多時間,在人工智能還不能做到的交互等領(lǐng)域鉆研,提升自己的技能。就是說,人工智能加速了前端開發(fā)的發(fā)展,將成就技術(shù)更加精湛的程序員們。

AI在前端領(lǐng)域的發(fā)展

人工智能也可以稱其為機器智能,其概念最初是在20世紀50年代中期Dartmouth學會上提出的。人工智能在近幾年的突破巨大,主要體現(xiàn)在幾個方面:

第一個是硬件的突破

第二個是算法的突破

第三個是大數(shù)據(jù)的存儲

這三件事促使了現(xiàn)在機器學習的領(lǐng)域一次又一次大的爆炸。硬件最大的變化就是對GPU的使用越來越頻繁。人工智能深度學習的函數(shù)、公式內(nèi)部涉及的是大量的浮點運算。這些函數(shù)在GPU出現(xiàn)之后,有大量的浮點運算就交給GPU。事實上,深度學習在GPU上的執(zhí)行效率可能是在CPU上的30~50倍。GPU也給機器學習帶來了巨大的促進作用。

2016年3月阿爾法狗戰(zhàn)勝李世石。

2017年10月最新版本的阿爾法圍棋名叫AlphaGo Zero,它以89:11的戰(zhàn)績打敗了AlphaGo Master;在2017年5月剛剛戰(zhàn)勝了柯潔。

AlphaGoZero用的是無監(jiān)督學習,而Master用的則是監(jiān)督學習的方法。

那么近年來同樣火熱的前端開發(fā),在人工智能時代能做些什么呢?

比如我們現(xiàn)在要純前端做人臉識別,trackingjs(前端人臉識別框架,是使用js封裝的一個框架,非機器學習);識別的好壞完全依賴庫本身的性能;最好的方案就是引入機器學習。

AI在前端領(lǐng)域的發(fā)展

在2017年,一個叫做DeepLearning.js的工程誕生了,旨在沒有API的干擾下在JavaScript中推動ML/DL的發(fā)展;但是又出現(xiàn)了速度的問題。都知道JS代碼不能運行在GPU上。為了解決這個問題,引進WebGL。

2018年3月,TensorFlow.js發(fā)布!前端也可以進行機器學習啦!Google的TensorFlow團隊發(fā)布等待多時的JavaScript框架,TensorFlow.js(之前也叫做DeepLearn.js);TensorFlow.js提供兩樣東西:CoreAPI,來處理底層代碼,在CoreAPI之上編寫的LayerAPI,通過增加層級的抽象性使coding更容易。用戶可以完全在瀏覽器定義、訓練和運行機器學習模型。

目前AI在前端領(lǐng)域的一些應用案例有:

1. 人臉識別

2. 人臉比對

3. 物體檢測

4. 手勢檢測

5. 視頻跟蹤

6. 圖像美化

7. 人工智能已經(jīng)能實現(xiàn)自動編寫 HTML 和 CSS

https://blog.csdn.net/csdnnews/article/details/79372975

……

基于 JavaScript 的機器學習實例

實例1:(利用TensorFlow.js部署簡單的AI版「你畫我猜」)

一個簡單的工具來識別手繪圖像,并且輸出當前圖像的名稱。該應用無需安裝任何額外的插件,可直接在瀏覽器上運行。作者使用谷歌 Colab 來訓練模型,并使用 TensorFlow.js 將它部署到瀏覽器上。

實例2:(瀏覽器中實時人體姿勢估計)

TensorFlow.js版本的PoseNet,這是一種機器學習模型,允許在瀏覽器中進行實時人體姿勢估計。PoseNet運行在TensorFlow.js上,任何擁有攝像頭的PC或手機的人都可以在網(wǎng)絡瀏覽器中體驗這種技術(shù)。而且由于已經(jīng)開源了這個模型,JavaScript開發(fā)人員可以用幾行代碼來使用這個技術(shù)。更重要的是,這實際上可以幫助保護用戶隱私。由于TensorFlow.js上的PoseNet在瀏覽器中運行,因此任何姿態(tài)數(shù)據(jù)都不會留在用戶的計算機上。

實例3:(Flappy-bird )

FlappyLearning 是一個僅用800 行代碼創(chuàng)建的 JavaScript 機器學習庫,它讓你可以像行家一樣玩轉(zhuǎn) Flappy Bird 游戲。在這個庫中所使用的 AI 技術(shù)被稱為“ Neuroevolution” 神經(jīng)進化,而它所應用算法的靈感則源于自然界生物神經(jīng)系統(tǒng)的進化,并且它可以從每次成功或失敗的迭代中進行動態(tài)的學習。另外,你只需要在瀏覽器中打開 index.html 就可以運行它了,非常簡單。

前端機器學習框架

使用JavaScript 可以運行在瀏覽器和服務器端、甚至是桌面程序上。目前已經(jīng)有不少簡潔的庫,可以將JavaScript、機器學習、DNN 甚至 NLP結(jié)合在一起,而且在瀏覽器端大多庫會調(diào)用 WebGL 來做機器學習的計算。

(https://baijiahao.baidu.com、https://www.colabug.com/4857625.html)

1. TensorFlow.js(https://js.tensorflow.org/)

TensorFlow.js 是一個開源的基于硬件加速的 JavaScript 的庫,支持在瀏覽器或者 NodeJs 中來運行深度學習,并且能支持現(xiàn)有的 Tensorflow 模型,由Google出品??梢哉f是前端深度學習框架 Deeplearn.js 的繼任者。它提供一系列簡潔和通俗易懂的API,用于訓練、部署模型。而且因為可以運行在瀏覽器,所以可以直接通過URL就能分享你的程序:

通過攝像頭來控制的吃豆人游戲

2. Brain.js(https://brain.js.org/)

Brain.js 是同樣可以運行在瀏覽器和 NodeJs 服務器端、能為不同的任務提供不同類型的訓練網(wǎng)絡。特點是讓定義、訓練以及執(zhí)行神經(jīng)網(wǎng)絡變得特別簡單。個人覺得這個庫比較適合入門。比如以下短短幾行代碼已涵蓋創(chuàng)建、訓練和執(zhí)行神經(jīng)網(wǎng)絡,一目了然:

Brain.js 的色彩識別器

3. Synaptic.js(http://caza.la/synaptic)

Synaptic 可以運行在瀏覽器和 NodeJs 服務器端的神經(jīng)網(wǎng)絡庫,你能夠用它訓練一層甚至是二層神經(jīng)網(wǎng)絡結(jié)構(gòu)。該庫包括一些內(nèi)置的體系結(jié)構(gòu),如多層感知機(MLP)、長短時記憶網(wǎng)絡、液體狀態(tài)機和能夠訓練真實網(wǎng)絡的訓練器。

Synaptic image-filter perceptron

4. Machine learning tools(https://github.com/mljs/ml)

Machine Learning tools 是由 mljs組織開發(fā)的一組庫,可以為 JavaScript 提供機器學習工具,包括監(jiān)督和非監(jiān)督學習、人工神經(jīng)網(wǎng)絡 (ANN)、回歸算法,用于統(tǒng)計、數(shù)學等的支持庫,類似于 Python 中的 scikit-learn。

5. compromise(http://compromise.cool/)

基本上是NLP自然語言處理庫 - 前端 JavaScript 實現(xiàn)的首選,這個庫加上自己的資料庫壓縮成min.js后文件大小可達到300k以下,這樣運行在瀏覽器和 NodeJs 服務器端都問題不大,具體可以做的東西是訓練自定義語義庫:劃分出分詞,獲取句子的各個詞性,可以把句子變積極消極、分詞等,比如以下例子:

JavaScript 雖然不是機器學習的最佳編程語言,不過隨著 Web生態(tài) 和 人工智能技術(shù)近年來的不斷發(fā)展完善,越來越多這樣的機器學習工具庫被研發(fā)和發(fā)布。對于一名Web的前端開發(fā)者而言,用 JavaScript 作為入門機器學習的橋梁是個不錯的選擇,它同樣能幫助你開啟機器學習之旅。

前端在機器學習方面的優(yōu)缺點

優(yōu)勢:

① 從用戶的角度來看,在瀏覽器中運行的ML意味著不需要安裝任何庫或驅(qū)動程序。只需打開網(wǎng)頁,你的程序就可以運行了。

② 此外,基于框架TensorFlow.js,它已準備好使用GPU加速運行。TensorFlow.js自動支持WebGL,并在GPU可用時會加速代碼。用戶也可以通過移動設(shè)備打開你的網(wǎng)頁,在這種情況下,模型可以利用傳感器數(shù)據(jù),例如陀螺儀或加速度傳感器。一般來說,深層神經(jīng)網(wǎng)絡計算在GPU上運行的速度要比CPU快一個數(shù)量級。

③ 所有數(shù)據(jù)都保留在客戶端上,可以實現(xiàn)低延遲推理以及隱私保護程序。

④ 在瀏覽器中完全由客戶端運行的機器學習程序?qū)怄i新的機會,如交互式機器學習:https://github.com/tensorflow/tfjs-examples。

⑤ 離線學習,用瀏覽器中收集的少量數(shù)據(jù)進行離線訓練。這是快速訓練精確模型的一種方法,只需使用少量數(shù)據(jù)。

障礙

① 模型學習時前端計算能力障礙

瀏覽器及移動端有限的資源計算能力:由于模型的深度學習很難直接在瀏覽器中運行,因為這些模型不是專為在瀏覽器中運行而設(shè)計的,更不用說在移動端了。以現(xiàn)有的物體探測器為例:它們通常需要大量的計算資源才能以合理的fps運行,更不用說以實時速度運行了。

② 預訓練模型加載到前端時等待時間較長障礙

在簡單的Web應用程序中將幾十兆至上百兆預訓練模型權(quán)重加載到客戶端瀏覽器是非常耗時的。這對于用戶是無法接受的。

但是,隨著JS引擎的計算能力不斷增強,人工智能領(lǐng)域的不斷發(fā)展,可以預見的是,在不久的將來,肯定能有一些簡單的算法可以被移植到用戶前端執(zhí)行,這樣既能減少請求,又能分擔后端壓力,。這一切并不是無稽之談,為什么tensorflow.js會應運而生,正是因為JS的社區(qū)在不斷壯大,JS這款便捷的語言也在得到更為普遍的使用。

這些問題正在得到解決和改善:

針對計算能力問題:

前端做算法能落實到生產(chǎn)環(huán)境嗎?能真正地給業(yè)務帶來價值嗎?答案是:可以!首先先說一下前端目前可以進行高性能計算的三種方法:

1. asm.js

2. WebAssembly

3. GPU

所以,opencv就有了asm.js和WebAssembly版本的,我們可以在前端做cv算法。什么物體跟蹤、圖像處理、特征檢測等等等,在前端做ok的,并且阿里也落地到了生產(chǎn)環(huán)境中。以及谷歌去年推出tensorflow.js支持利用gpu計算。

針對模型大小問題:

模型壓縮,以及為Web訓練高效的深度學習模型

(1)2018年09月;騰訊 AI Lab 開源世界首款自動化模型壓縮框架PocketFlow

這是一款面向移動端AI開發(fā)者的自動模型壓縮框架,集成了當前主流的模型壓縮與訓練算法,結(jié)合自研超參數(shù)優(yōu)化組件實現(xiàn)了全程自動化托管式的模型壓縮與加速。開發(fā)者無需了解具體算法細節(jié),即可快速地將AI技術(shù)部署到移動端產(chǎn)品上,實現(xiàn)用戶數(shù)據(jù)的本地高效處理。

(2)模型壓縮開源庫整理:

(3)谷歌MobileNet

一般的tensorflow模型動輒幾百兆,在前端怎么跑呢?沒關(guān)系,我們有MobileNet啊,MobileNet是針對于移動端模型提出的神經(jīng)網(wǎng)絡架構(gòu),能極大地減少模型參數(shù)量,同理也能用到瀏覽器端上。

(4)為Web訓練高效的深度學習模型(https://www.jianshu.com/p/ef7e1c3f5aea)

這些模型通過設(shè)計一些基本原則可以在Web環(huán)境中運行進行。我們可以訓練相當不錯的圖像分類-甚至物體檢測模型,最終只有幾兆字節(jié)大小甚至只有幾千字節(jié):

如通過增加每層卷積濾波器的數(shù)量或堆疊更多層簡單地使你的網(wǎng)絡更深入。

前端基于現(xiàn)有框架進行模型訓練

用TensorFlow.js我們可以做什么?

TensorFlow 是GitHub 上的第一個機器學習平臺,也是 GitHub 上的五大軟件庫之一,被許多公司和組織所使用,包括 GitHub 上與 TensorFlow 相關(guān)的超過 24,500 個不同的軟件倉庫。預編譯的 TensorFlow 二進制文件已經(jīng)在 180 多個國家被下載了超過 1000 萬次,GitHub 上的源代碼現(xiàn)在已經(jīng)有超過 1200 個貢獻者。

2018年3月31日TensorFlow 開發(fā)者峰會上,TensorFlow宣布重大更新:增加支持Java,并推出開源庫TensorFlow.js,

如果你使用TensorFlow.js進行開發(fā),可以考慮以下三種workflow:

你可以導入現(xiàn)有的預訓練的模型進行推理。如果你有一個以前脫機訓練好的現(xiàn)成的TensorFlow或Keras模型,就可以將其轉(zhuǎn)換為TensorFlow.js格式,并加載到瀏覽器中進行推理。

你可以重新訓練導入的模型。正如在上面的Pac-Man演示中,你可以使用遷移學習來增強現(xiàn)有模型,使用“ImageRetraining”技術(shù),用瀏覽器中收集的少量數(shù)據(jù)進行離線訓練。這是快速訓練精確模型的一種方法,只需使用少量數(shù)據(jù)。

直接在瀏覽器中創(chuàng)建模型。你還可以使用TensorFlow.js,完全在瀏覽器中使用Java和high-level layers API進行定義、訓練和運行模型。如果你熟悉Keras,那么應該會很熟悉high-level layers API。

1.tensorflow在發(fā)布了JS版本的工具庫后,官網(wǎng)在線測試:

2. Tensorflow.js 圖片訓練(mnist)

3. 如何利用TensorFlow.js部署簡單的AI版「你畫我猜」圖像識別應用

4. 交互式機器學習:

結(jié)合我們自身業(yè)務,對落地場景進行初探:AI美圖

通過Tensorflowjs及converter工具將Tensorflow模型或Keras模型轉(zhuǎn)換為web_model模型;可以看到生成瀏覽器可以加載并讀取的模型參數(shù)和權(quán)重文件。從用戶的角度來看,在瀏覽器中運行的ML意味著不需要安裝任何庫或驅(qū)動程序。只需打開網(wǎng)頁,程序就可以運行了。對于圖片處理來說,不需要網(wǎng)絡開銷來傳輸和接受圖片資源,實現(xiàn)了低延遲,弱網(wǎng)或斷網(wǎng)情況下的離線運行。

在實現(xiàn)過程我們也遇到了一些問題,比如由于Tensorflowjs-converter支持有限,我們訓練模型時用到encode和decode;由于不在Supported Tensorflow Ops列表,我們通過調(diào)整模型訓練Ops來兼容。同時也付出了一些代價,模型從44K增加到幾百K。

另外,將Tensorflow模型或Keras模型轉(zhuǎn)換為web_model模型之后,會生成很多小的權(quán)重文件,在實際應用時,通過懶加載和預加載策略,可以在不影響首屏加載情況下,優(yōu)化模型加載時間。

總結(jié)

本篇屬于調(diào)研實踐型文章,旨在證明AI與前端融合的可行性及優(yōu)勢;通過分析業(yè)界面臨障礙的探索及解決思路,給我們在前端具體業(yè)務場景中,如何結(jié)合AI優(yōu)勢,解決弱計算能力、模型較大等焦點難題,提供一些可行思路。也期待大家的共同參與和優(yōu)秀實踐。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 前端
    +關(guān)注

    關(guān)注

    1

    文章

    199

    瀏覽量

    17803
  • 人工智能
    +關(guān)注

    關(guān)注

    1793

    文章

    47588

    瀏覽量

    239465

原文標題:前端開發(fā)行業(yè)真的會被AI取代嗎?

文章出處:【微信號:rgznai100,微信公眾號:rgznai100】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    富士通預測2025年AI領(lǐng)域發(fā)展趨勢

    過去一年中,人工智能技術(shù)飛速發(fā)展,在各行各業(yè)都收獲了巨大進展。面對即將到來的2025年,富士通技術(shù)研發(fā)團隊的專家對AI領(lǐng)域發(fā)展趨勢進行了展望,讓我們來看看未來一年,有哪些重要趨勢值得
    的頭像 發(fā)表于 12-27 11:23 ?407次閱讀

    AIGC時代下的大前端分論壇亮點前瞻

    在人工智能和大模型技術(shù)迅猛發(fā)展的背景下,軟件行業(yè)正經(jīng)歷著深刻的變革?!叭f物皆可AI”的理念不僅重塑了后端開發(fā),同時也為前端領(lǐng)域帶來了前所未有的挑戰(zhàn)與機遇。
    的頭像 發(fā)表于 12-16 15:03 ?322次閱讀

    AI 在串口屏應用領(lǐng)域發(fā)展前景

    人工智能(AI)在串口屏應用領(lǐng)域發(fā)展前景非常廣闊,尤其是在物聯(lián)網(wǎng)(IoT)、工業(yè)自動化、智能家居和車載系統(tǒng)等領(lǐng)域。帝晶光電串口屏。以下是一些具體的
    的頭像 發(fā)表于 11-21 09:20 ?1161次閱讀

    base64在前端開發(fā)中的應用

    Base64是一種編碼方法,用于將二進制數(shù)據(jù)轉(zhuǎn)換為ASCII字符串。這種編碼方式在前端開發(fā)中有著廣泛的應用,尤其是在數(shù)據(jù)傳輸和存儲方面。 1. Base64編碼的基本概念 Base64編碼是一種
    的頭像 發(fā)表于 11-10 14:24 ?645次閱讀

    RISC-V在AI領(lǐng)域發(fā)展前景怎么樣?

    隨著人工智能的不斷發(fā)展,現(xiàn)在的視覺機器人,無人駕駛等智能產(chǎn)品的不斷更新迭代,發(fā)現(xiàn)ARM占用很大的市場份額,推出的ARM Cortex M85性能也是杠杠的,不知道RISC-V在AI領(lǐng)域有哪些參考方案?
    發(fā)表于 10-25 19:13

    AI for Science:人工智能驅(qū)動科學創(chuàng)新》第4章-AI與生命科學讀后感

    的深入發(fā)展。 3. 挑戰(zhàn)與機遇并存 盡管AI在生命科學領(lǐng)域取得了顯著的成果,但也面臨著諸多挑戰(zhàn)。例如,數(shù)據(jù)隱私、算法偏見、倫理道德等問題都需要我們認真思考和解決。同時,如何更好地將AI
    發(fā)表于 10-14 09:21

    AI for Science:人工智能驅(qū)動科學創(chuàng)新》第二章AI for Science的技術(shù)支撐學習心得

    偏見、倫理道德等問題。此外,如何更好地將AI與科學研究人員的傳統(tǒng)工作模式相融合,也是一個亟待解決的問題。未來,隨著技術(shù)的不斷進步和應用場景的拓展,AI for Science有望在更多領(lǐng)域發(fā)揮關(guān)鍵作用
    發(fā)表于 10-14 09:16

    國產(chǎn)AI出海加速,IT領(lǐng)域投資激增

    隨著AI技術(shù)的飛速發(fā)展,國產(chǎn)AI應用正加速走向世界舞臺。據(jù)統(tǒng)計,目前已有超過百款國產(chǎn)AI應用成功出海,展現(xiàn)出強大的國際競爭力。同時,AI技術(shù)
    的頭像 發(fā)表于 09-25 14:26 ?355次閱讀

    檢測輸入至dcdc電源的電流,在前端增加了一個INA193的電流檢測電路,實際增益與理論增益不一樣,為什么?

    想要檢測輸入至dcdc電源(LM5117)的電流,在前端增加了一個INA193的電流檢測電路。通過檢測改變輸入的Rsense電阻,使用萬用表檢測檢測輸出的電壓。 測試發(fā)現(xiàn)實際增益與理論增益(Ggain =20V/V)不一樣,求解。
    發(fā)表于 08-12 06:11

    RISC-V在中國的發(fā)展機遇有哪些場景?

    聯(lián)網(wǎng)市場的重要參與者,擁有龐大的用戶基數(shù)和豐富的應用場景。RISC-V在中國的發(fā)展將受益于這一市場需求的增長。 2. 人工智能(AIAI算力需求:隨著人工智能技術(shù)的廣泛應用,對算力的需求不斷增加
    發(fā)表于 07-29 17:14

    AI人工智能在新能源領(lǐng)域的創(chuàng)新應用

    AI人工智能在新能源領(lǐng)域的應用不僅推動了技術(shù)的創(chuàng)新和發(fā)展,還促進了整個汽車產(chǎn)業(yè)的綠色轉(zhuǎn)型和可持續(xù)發(fā)展。未來,隨著技術(shù)的不斷進步和應用的深化,AI
    的頭像 發(fā)表于 07-21 09:50 ?997次閱讀

    AI大模型的發(fā)展歷程和應用前景

    隨著人工智能技術(shù)的飛速發(fā)展,AI大模型逐漸成為研究與應用領(lǐng)域的熱點。AI大模型,顧名思義,是指具有巨大參數(shù)量的深度學習模型,這些模型通過學習海量的數(shù)據(jù),能夠在自然語言處理、計算機視覺、
    的頭像 發(fā)表于 07-03 18:20 ?1292次閱讀

    AI智能在Type-C領(lǐng)域的應用

    AI智能在Type-C領(lǐng)域的應用將為用戶帶來更加便捷、高效和智能的使用體驗。隨著技術(shù)的不斷進步和應用場景的不斷拓展,Type-C接口將在更多領(lǐng)域發(fā)揮重要作用,推動科技的發(fā)展和社會的進步
    的頭像 發(fā)表于 06-29 17:16 ?399次閱讀

    Imagination 引領(lǐng)邊緣計算和AI創(chuàng)新,擁抱AI未來發(fā)展

    ,致力于推動技術(shù)創(chuàng)新,擁抱人工智能的未來發(fā)展。同時他也介紹了Imagination在計算領(lǐng)域的戰(zhàn)略布局、產(chǎn)品技術(shù)以及對未來AI發(fā)展的深刻洞察。Imagination
    的頭像 發(fā)表于 06-28 08:28 ?572次閱讀
    Imagination 引領(lǐng)邊緣計算和<b class='flag-5'>AI</b>創(chuàng)新,擁抱<b class='flag-5'>AI</b>未來<b class='flag-5'>發(fā)展</b>

    什么是模擬前端芯片技術(shù) 數(shù)字前端和模擬前端的區(qū)別

    傳感器,如溫度傳感器、壓力傳感器等,或者來自其他模擬信號源。 模擬前端芯片技術(shù)是現(xiàn)代電子技術(shù)領(lǐng)域中的關(guān)鍵技術(shù)之一,廣泛應用于通信、計算機、醫(yī)療等領(lǐng)域。隨著技術(shù)的不斷發(fā)展,模擬
    的頭像 發(fā)表于 03-15 17:58 ?1847次閱讀