概述

10余年的霍城網(wǎng)站建設(shè)經(jīng)驗,針對設(shè)計、前端、開發(fā)、售后、文案、推廣等六對一服務(wù),響應(yīng)快,48小時及時工作處理。全網(wǎng)整合營銷推廣的優(yōu)勢是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動調(diào)整霍城建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計,從而大程度地提升瀏覽體驗。創(chuàng)新互聯(lián)從事“霍城網(wǎng)站設(shè)計”,“霍城網(wǎng)站推廣”以來,每個客戶項目都認(rèn)真落實執(zhí)行。
介紹
你喜歡用什么工具來編寫機(jī)器學(xué)習(xí)模型?數(shù)據(jù)科學(xué)家們對這個永恒的問題會給出各種不同的答案。一些人喜歡RStudio,另一些人更喜歡Jupyter Notebooks。我絕對屬于后者。
所以,當(dāng)我第一次遇到TensorFlow.js(以前是deeplearn.js)時,我的心都要炸開了。在瀏覽器中構(gòu)建機(jī)器學(xué)習(xí)模型?使用JavaScript?聽起來好得令人難以置信!
超過43億人使用網(wǎng)絡(luò)瀏覽器——約占世界人口的55%?!S基百科(2019年3月)
谷歌的TensorFlow.js不僅將機(jī)器學(xué)習(xí)引入瀏覽器中,使機(jī)器學(xué)習(xí)大眾化,而且對于經(jīng)常使用JavaScript的開發(fā)人員來說,它也是一個完美的機(jī)器學(xué)習(xí)門戶。
我們的網(wǎng)絡(luò)瀏覽器是最容易訪問的平臺之一。這就是為什么構(gòu)建不僅能夠訓(xùn)練機(jī)器學(xué)習(xí)模型而且能夠在瀏覽器本身中“學(xué)習(xí)”或“遷移學(xué)習(xí)”的應(yīng)用程序是有意義的。
在本文中,我們將首先了解使用TensorFlow.js的重要性及其它的不同組件。然后,我們將深入討論使用TensorFlow.js在瀏覽器中構(gòu)建我們自己的機(jī)器學(xué)習(xí)模型。然后我們將構(gòu)建一個應(yīng)用程序,來使用計算機(jī)的網(wǎng)絡(luò)攝像頭檢測你的身體姿勢!
如果你是TensorFlow的新手,你可以在下面文章中了解更多:
目錄
一、為什么你應(yīng)該使用TensorFlow.js?
1.1 使用網(wǎng)絡(luò)攝像頭在瀏覽器中進(jìn)行圖像分類
1.2 TensorFlow.js的特征
二、了解瀏覽器中的機(jī)器學(xué)習(xí)
2.1 Core API:使用Tensors工作
2.2 Layer API:像Keras一樣構(gòu)建模型
三、利用谷歌的預(yù)訓(xùn)練模型:PoseNet
一、為什么要使用TensorFlow.js?
我將用一種獨特的方法來回答這個問題。我不會深入研究TensorFlow.js的理論方面,也不會列出它為什么是一個如此不可思議的工具。
相反,我將簡單地向你展示如果不使用TensorFlow.js將會錯過什么。那么,讓我們在5分鐘內(nèi)構(gòu)建一個應(yīng)用程序,來使用你的網(wǎng)絡(luò)攝像頭對圖像進(jìn)行分類。沒錯——我們將直接進(jìn)入代碼部分!
這是最好的部分——你不需要安裝任何東西來做這個!只要一個文本編輯器和一個網(wǎng)絡(luò)瀏覽器即可。下面的動圖展示了我們將要構(gòu)建的應(yīng)用程序:
在瀏覽器中使用TensorFlow.js和Python構(gòu)建機(jī)器學(xué)習(xí)模型
這多酷啊!我在瀏覽器里幾分鐘就完成了。那么,讓我們看一下步驟和代碼,以幫助你在Web瀏覽器中構(gòu)建自己的圖像分類模型。
1.1 使用網(wǎng)絡(luò)攝像頭在瀏覽器中構(gòu)建圖像分類模型
打開你選擇的文本編輯器并創(chuàng)建一個文件index.html。將以下代碼保存于此文件內(nèi):
image_classification
接下來,創(chuàng)建另一個文件index.js并在其中編寫以下代碼:
- let mobilenet;
- let video;
- let label = '';
- // when model is ready make predictions
- function modelReady() {
- console.log('Model is ready!!!');
- mobilenet.predict(gotResults);
- }
- function gotResults(error, results) {
- if (error) {
- console.error(error);
- } else {
- label = results[0].className;
- // loop the inference by calling itself
- mobilenet.predict(gotResults);
- }
- }
- // setup function
- function setup() {
- createCanvas(640, 550);
- // ml5 to create video capture
- video = createCapture(VIDEO);
- video.hide();
- background(0);
- // load the MobileNet and apply it on video feed
- mobilenet = ml5.imageClassifier('MobileNet', video, modelReady);
- }
- function draw() {
- background(0);
- // show video
- image(video, 0, 0);
- fill(255);
- textSize(32);
- // show prediction label
- text(label, 10, height - 20);
- }
保存這兩個文件,然后在谷歌Chrome或Mozilla Firefox等瀏覽器中打開index.html文件。就是這樣!你現(xiàn)在已經(jīng)創(chuàng)建了一個可以使用你的網(wǎng)絡(luò)攝像頭在瀏覽器本身實時分類圖像的應(yīng)用程序!下面是它在我的計算機(jī)上的樣子:
視頻連接:
- https://s3-ap-south-1.amazonaws.com/av-blog-media/wp-content/uploads/2019/05/mobilenet_demo.mp4?_=1
在這個例子中需要注意的要點:
我不需要在電腦上安裝任何東西。這個例子應(yīng)該適用于任何現(xiàn)代系統(tǒng),不管它是Linux、Windows還是MacOS——這就是使用JavaScript在web上構(gòu)建模型的強(qiáng)大功能。
現(xiàn)在,讓我們看看TensorFlow.js提供的強(qiáng)大功能,以及如何利用它們在瀏覽器中部署機(jī)器學(xué)習(xí)模型。
1.2 TensorFlow.js的特征
TensorFlow.js是一個庫,用于JavaScript開發(fā)和訓(xùn)練ML模型,并在瀏覽器或Node.js上部署。
TensorFlow.js提供了許多的功能來供我們使用。
它是TensorFlow在JavaScript中的擴(kuò)展,JavaScript是我們在互聯(lián)網(wǎng)上使用的幾乎所有網(wǎng)站、瀏覽器或應(yīng)用程序邏輯背后的編程語言。JavaScript和Python一樣用途廣泛,所以使用它來開發(fā)機(jī)器學(xué)習(xí)模型給我們帶來了很多好處:
如果ML模型是用web語言編寫的,則更容易部署。
TensorFlow.js以其當(dāng)前的形式提供了以下主要功能:
在本文中,我們將關(guān)注前兩個功能。在本系列的第二部分(即將推出!)中,我們將討論如何在Python中轉(zhuǎn)移學(xué)習(xí)和部署我們的模型。
二、瀏覽器中的機(jī)器學(xué)習(xí)
TensorFlow.js提供了兩種方法來訓(xùn)練模型(非常類似于TensorFlow):
讓我們通過幾個例子來理解這兩種方法。畢竟,學(xué)習(xí)一個概念最好的方法就是把它付諸實踐!
首先,設(shè)置你的HTML文件:
在你的電腦上建立一個新的index.html文件,并在其中編寫以下代碼:
Tensorflow.js Core API
我們創(chuàng)建了一個基本的HTML頁面,并從云URL中加載了Tensorflow.js(第7行)。
關(guān)于安裝TensorFlow.js(deeplearn.js)的說明:
由于TensorFlow.js是為瀏覽器而設(shè)計的,所以安裝和使用TensorFlow.js最簡單的方法就是根本不安裝它。你可以簡單地從HTML中的URL加載它即可。
如果你想在本地工作怎么辦呢?實際上,你可以在Jupyter Notebook中使用TensorFlow.js,就像你在Python或R中通常做的那樣。這是一個適合每個人的解決方案!
這種本地方法稍微長一些,并且需要一些時間,所以本文不會使用它。如果你確實想學(xué)習(xí)如何操作,可以從為Jupyter安裝ijavascript內(nèi)核開始。下面是我的Jupyter Notebook的截圖:
現(xiàn)在,使用TensorFlow.js的推薦方法是使用庫的官方URL直接加載它。你只需將以下行添加到HTML文件中:
完成了!這真的很簡單。
2.1 Core API:使用Tensors工作
Core API與TensorFlowCore非常相似,我們可以使用低級張量運算和線性代數(shù)定義模型。
如果我們想要構(gòu)建自定義模型或想要從頭開始構(gòu)建神經(jīng)網(wǎng)絡(luò),這非常有用。讓我們舉一個在瀏覽器中使用張量的例子。
首先在index.html文件中的