本書采用基于配方的方法完成從數(shù)據(jù)收集、分析、建模、統(tǒng)計和監(jiān)視以及部署的基本過程。本書提供來自智能家居,工業(yè)物聯(lián)網(wǎng)和智能設(shè)備的真實數(shù)據(jù)集來訓(xùn)練和評估簡單到復(fù)雜的模型,并使用經(jīng)過訓(xùn)練的模型進(jìn)行預(yù)測。本書還介紹了在實施機(jī)器學(xué)習(xí)和深度學(xué)習(xí)以及其他AI技術(shù)(例如自然語言處理、計算機(jī)視覺和用于構(gòu)建智能IoT系統(tǒng)的強(qiáng)化學(xué)習(xí))時面臨的主要挑戰(zhàn)。通過本書讀者可以學(xué)習(xí)如何打包和部署端到端AI應(yīng)用程序,以及如何將實踐解決方案應(yīng)用于常見的IoT問題。
探索各種人工智能技術(shù),從零開始構(gòu)建智能物聯(lián)網(wǎng)解決方案
使用機(jī)器學(xué)習(xí)和深度學(xué)習(xí)技術(shù)構(gòu)建智能語音識別和面部檢測系統(tǒng)
使用算法深入了解物聯(lián)網(wǎng)數(shù)據(jù)并在項目中實施
對時間序列數(shù)據(jù)和其他類型的物聯(lián)網(wǎng)數(shù)據(jù)執(zhí)行異常檢測
在小型設(shè)備上實施用于機(jī)器學(xué)習(xí)的嵌入式系統(tǒng)學(xué)習(xí)技術(shù)
將預(yù)訓(xùn)練的機(jī)器學(xué)習(xí)模型應(yīng)用于邊緣設(shè)備
使用TensorFlow.js和Java將機(jī)器學(xué)習(xí)模型部署到Web應(yīng)用程序和移動設(shè)備
人工智能 (Artificial Intelligence,AI) 正在各種垂直行業(yè)中迅速找到實際應(yīng)用,物聯(lián)網(wǎng) (Internet of Things,IoT) 就是其中之一。開發(fā)人員正在尋找使IoT設(shè)備更智能并讓用戶生活更輕松的方法。本書介紹如何使用IoT數(shù)據(jù)實施智能分析,預(yù)測結(jié)果并做出明智的決策,內(nèi)容涵蓋有助于在IoT應(yīng)用程序中進(jìn)行分析和學(xué)習(xí)的高級AI技術(shù)。
基于50 的實用案例,讀者可以充分了解數(shù)據(jù)采集、數(shù)據(jù)分析、建模、統(tǒng)計和監(jiān)控以及部署等基本人工智能 IoT流程。利用來自智能家居、工業(yè)IoT和智能設(shè)備的真實數(shù)據(jù)集,訓(xùn)練和評估簡單和復(fù)雜的模型,并使用經(jīng)過訓(xùn)練的模型進(jìn)行預(yù)測。同時,書中還介紹了實施機(jī)器學(xué)習(xí)、深度學(xué)習(xí)和其他人工智能技術(shù)(如自然語言處理)時面臨的主要挑戰(zhàn); 如何利用計算機(jī)視覺和嵌入式機(jī)器學(xué)習(xí)構(gòu)建智能IoT系統(tǒng); 如何輕松部署模型并提高其性能。
讀完本書,讀者將能夠打包和部署端到端AI應(yīng)用程序,并將實踐解決方案應(yīng)用于常見的IoT問題。
讀者對象
本書面向IoT從業(yè)者、構(gòu)建以IoT為重點的人工智能解決方案的數(shù)據(jù)科學(xué)家及人工智能開發(fā)人員。全書提供人工智能技術(shù)構(gòu)建智能IoT解決方案,且無須閱讀大量人工智能理論。本書讀者需要了解Python編程語言和基本的物聯(lián)網(wǎng)概念,方能有效掌握書中涵蓋的概念。
涵蓋內(nèi)容
第1章重點介紹如何設(shè)置正確的環(huán)境。內(nèi)容涵蓋如何選擇滿足AI需求的設(shè)備; 如何與設(shè)備或云端模塊進(jìn)行安全通信; 如何設(shè)置在云中獲取數(shù)據(jù)的方法,設(shè)置Spark和AI工具執(zhí)行數(shù)據(jù)分析、訓(xùn)練模型并大規(guī)模運(yùn)行機(jī)器學(xué)習(xí)模型。
第2章討論可以有效使用任何格式數(shù)據(jù)的基礎(chǔ)知識。
第3章討論使用邏輯回歸和決策樹等機(jī)器學(xué)習(xí)模型解決常見的IoT問題,例如對醫(yī)療診斷進(jìn)行分類、
危險駕駛行為檢測
及對化學(xué)數(shù)據(jù)進(jìn)行分類等。
第4章重點介紹使IoT設(shè)備成為智能設(shè)備的各種分類技術(shù)。
第5章解釋當(dāng)警報檢測未能對特定問題進(jìn)行分類時,如何發(fā)現(xiàn)相關(guān)問題以及如果設(shè)備以異常方式運(yùn)行時的解決方案。
第6章討論如何在云端以及NVIDIA Jetson Nano等邊緣設(shè)備上實現(xiàn)計算機(jī)視覺。
第7章討論如何使用自然語言處理技術(shù)和機(jī)器人與在餐廳自助點餐亭訂購食物的用戶進(jìn)行交互。
第8章討論如何將強(qiáng)化學(xué)習(xí)用于智能交通路口,實現(xiàn)交通信號燈決策,從而減少等待時間并讓交通更暢通。
第9章討論將預(yù)先訓(xùn)練的機(jī)器學(xué)習(xí)模型應(yīng)用于邊緣設(shè)備的各種方法,將詳細(xì)討論IoT Edge部署對AI Pipeline的重要性,還介紹如何使用TensorFlow.js和Java將模型部署到Web應(yīng)用程序和移動設(shè)備。
掌握技巧
為了充分掌握本書,讀者應(yīng)對軟件開發(fā)有基本的了解,并對本書使用的Python、C及Java等語言具備基本的了解。
本書使用的硬件是現(xiàn)成的傳感器和常見的IoT開發(fā)套件,可以從Adafruit.com和 Amazon.com等網(wǎng)站購買。大多數(shù)代碼可以跨設(shè)備移植。用Python語言編寫的代碼可以輕松移植到各種微處理器,包括Raspberry Pi、NVIDIA Jetson、Lotte Panda甚至計算機(jī)。用C語言編寫的代碼可以移植到各種微控制器,包括ESP32、ESP8266和Arduino。用Java語言編寫的代碼可以移植到任何Android設(shè)備,包括平板電腦和手機(jī)。
本書使用Databricks進(jìn)行實驗,免費(fèi)版本可到其官網(wǎng)下載。
資源分享
本書提供全部代碼資源,可掃描下方的二維碼下載。
文本慣例
本書中使用了許多文本慣例。
代碼設(shè)置如下:
import numpy as np
import torch
from torch import nn
from torch import optim
import torch.nn.functional as F
from torchvision import datasets, transforms, models
from torch.utils.data.sampler import SubsetRandomSampler
命令行的輸入或輸出寫成如下樣式:
pip install deap
粗體字表示一個新的術(shù)語,一個重要的單詞,或屏幕上顯示的單詞。
Michael Roshak 云架構(gòu)師和戰(zhàn)略家,研究重點是設(shè)計和部署面向云的解決方案和架構(gòu)。在企業(yè)云轉(zhuǎn)型計劃和基礎(chǔ)設(shè)施現(xiàn)代化方面擁有深厚的專業(yè)知識。他負(fù)責(zé)為云應(yīng)用提供戰(zhàn)略咨詢服務(wù)、咨詢技術(shù)銷售,并通過跨多個行業(yè)的高度戰(zhàn)略客戶推動廣泛的云服務(wù)。
高慧敏 博士,教授。嘉興學(xué)院圖書館副館長(兼學(xué)報編輯部主任),浙江省嘉興光伏技術(shù)創(chuàng)新服務(wù)平臺主任,《系統(tǒng)仿真學(xué)報》編委會委員,長三角G60科創(chuàng)走廊專家咨詢委員會專家。主要從事復(fù)雜系統(tǒng)建模與仿真,生產(chǎn)優(yōu)化與調(diào)度等領(lǐng)域的科研工作。
第1章搭建IoT和AI環(huán)境
1.1準(zhǔn)備工作
1.1.1設(shè)備選型
1.1.2搭建Databricks
1.2搭建IoT Hub
1.2.1預(yù)備工作
1.2.2操作步驟
1.2.3工作機(jī)理
1.3設(shè)置IoT Edge設(shè)備
1.3.1預(yù)備工作
1.3.2操作步驟
1.3.3工作機(jī)理
1.4將ML模塊部署到邊緣設(shè)備端
1.4.1預(yù)備工作
1.4.2操作步驟
1.4.3工作機(jī)理
1.4.4補(bǔ)充說明
1.5搭建Kafka
1.5.1預(yù)備工作
1.5.2操作步驟
1.5.3工作機(jī)理
1.5.4補(bǔ)充說明
1.6在Databricks上安裝ML庫
1.6.1預(yù)備工作
1.6.2操作步驟
1.6.3工作機(jī)理
第2章數(shù)據(jù)處理
2.1使用Delta Lake存儲數(shù)據(jù)以便分析
2.1.1預(yù)備工作
2.1.2操作步驟
2.1.3工作機(jī)理
2.2數(shù)據(jù)采集設(shè)計
2.2.1預(yù)備工作
2.2.2操作步驟
2.3窗口化
2.3.1預(yù)備工作
2.3.2操作步驟
2.3.3工作機(jī)理
2.4探索性因子分析法
2.4.1預(yù)備工作
2.4.2操作步驟
2.4.3工作機(jī)理
2.4.4補(bǔ)充說明
2.5在Mongo/hot path storage中實現(xiàn)分析查詢
2.5.1預(yù)備工作
2.5.2操作步驟
2.5.3工作機(jī)理
2.6將IoT數(shù)據(jù)導(dǎo)入Spark
2.6.1預(yù)備工作
2.6.2操作步驟
2.6.3工作機(jī)理
第3章面向IoT的機(jī)器學(xué)習(xí)
3.1采用異常檢測分析化學(xué)傳感器
3.1.1預(yù)備工作
3.1.2操作步驟
3.1.3工作機(jī)理
3.1.4補(bǔ)充說明
3.2IoMT中的Logistic回歸
3.2.1預(yù)備工作
3.2.2操作步驟
3.2.3工作機(jī)理
3.2.4補(bǔ)充說明
3.3使用決策樹對化學(xué)傳感器進(jìn)行分類
3.3.1操作步驟
3.3.2工作機(jī)理
3.3.3補(bǔ)充說明
3.4使用XGBoost進(jìn)行簡單的預(yù)測性維護(hù)
3.4.1預(yù)備工作
3.4.2操作步驟
3.4.3工作機(jī)理
3.5危險駕駛行為檢測
3.5.1預(yù)備工作
3.5.2操作步驟
3.5.3工作機(jī)理
3.5.4補(bǔ)充說明
3.6在受限設(shè)備端進(jìn)行人臉檢測
3.6.1預(yù)備工作
3.6.2操作步驟
3.6.3工作機(jī)理
第4章用于預(yù)測性維護(hù)的深度學(xué)習(xí)
4.1使用特征工程增強(qiáng)數(shù)據(jù)
4.1.1預(yù)備工作
4.1.2操作步驟
4.1.3工作機(jī)理
4.1.4補(bǔ)充說明
4.2使用Keras進(jìn)行故障檢測
4.2.1預(yù)備工作
4.2.2操作步驟
4.2.3工作機(jī)理
4.2.4補(bǔ)充說明
4.3實施LSTM來預(yù)測設(shè)備故障
4.3.1預(yù)備工作
4.3.2操作步驟
4.3.3工作機(jī)理
4.4將模型部署到Web服務(wù)
4.4.1預(yù)備工作
4.4.2操作步驟
4.4.3工作機(jī)理
4.4.4補(bǔ)充說明
第5章異常檢測
5.1在Raspberry Pi和Sense HAT上使用ZSpikes
5.1.1預(yù)備工作
5.1.2操作步驟
5.1.3工作機(jī)理
5.2使用自編碼器檢測標(biāo)記數(shù)據(jù)中的異常
5.2.1預(yù)備工作
5.2.2操作步驟
5.2.3工作機(jī)理
5.2.4補(bǔ)充說明
5.3對未標(biāo)記數(shù)據(jù)集使用孤立森林算法
5.3.1預(yù)備工作
5.3.2操作步驟
5.3.3工作機(jī)理
5.3.4補(bǔ)充說明
5.4使用Luminol檢測時間序列異常
5.4.1預(yù)備工作
5.4.2操作步驟
5.4.3工作機(jī)理
5.4.4補(bǔ)充說明
5.5檢測受季節(jié)性影響的異常
5.5.1預(yù)備工作
5.5.2操作步驟
5.5.3工作機(jī)理
5.6使用流分析法檢測峰值
5.6.1預(yù)備工作
5.6.2操作步驟
5.6.3工作機(jī)理
5.7檢測邊緣設(shè)備的異常
5.7.1預(yù)備工作
5.7.2操作步驟
5.7.3工作機(jī)理
第6章計算機(jī)視覺
6.1通過OpenCV連接攝像頭
6.1.1預(yù)備工作
6.1.2操作步驟
6.1.3工作機(jī)理
6.1.4補(bǔ)充說明
6.2使用微軟自定義視覺來訓(xùn)練和標(biāo)記圖像
6.2.1預(yù)備工作
6.2.2操作步驟
6.2.3工作機(jī)理
6.3使用深度神經(jīng)網(wǎng)絡(luò)和Caffe檢測人臉
6.3.1預(yù)備工作
6.3.2操作步驟
6.3.3工作機(jī)理
6.4在Raspberry Pi上使用YOLO檢測物體
6.4.1預(yù)備工作
6.4.2操作步驟
6.4.3工作機(jī)理
6.5在NVIDIA Jetson Nano上使用GPU檢測物體
6.5.1預(yù)備工作
6.5.2操作步驟
6.5.3工作機(jī)理
6.5.4補(bǔ)充說明
6.6在GPU上使用PyTorch訓(xùn)練視覺
6.6.1預(yù)備工作
6.6.2操作步驟
6.6.3工作機(jī)理
6.6.4補(bǔ)充說明
第7章基于NLP和Bots的Kiosks
7.1喚醒詞檢測
7.1.1預(yù)備工作
7.1.2操作步驟
7.1.3工作機(jī)理
7.1.4補(bǔ)充說明
7.2使用Microsoft Speech API實現(xiàn)語音轉(zhuǎn)文字
7.2.1預(yù)備工作
7.2.2操作步驟
7.2.3工作機(jī)理
7.3LUIS入門
7.3.1預(yù)備工作
7.3.2操作步驟
7.3.3工作機(jī)理
7.3.4補(bǔ)充說明
7.4智能機(jī)器人實現(xiàn)
7.4.1預(yù)備工作
7.4.2操作步驟
7.4.3工作機(jī)理
7.4.4補(bǔ)充說明
7.5創(chuàng)建自定義聲音
7.5.1預(yù)備工作
7.5.2操作步驟
7.5.3工作機(jī)理
7.6利用QnA Maker增強(qiáng)機(jī)器人的功能
7.6.1預(yù)備工作
7.6.2操作步驟
7.6.3工作機(jī)理
7.6.4補(bǔ)充說明
第8章采用微控制器和pipeline進(jìn)行優(yōu)化
8.1基于ESP32的IoT簡介
8.1.1預(yù)備工作
8.1.2操作步驟
8.1.3工作機(jī)理
8.1.4補(bǔ)充說明
8.2ESP32環(huán)境監(jiān)控器的實現(xiàn)
8.2.1預(yù)備工作
8.2.2操作步驟
8.2.3工作機(jī)理
8.2.4補(bǔ)充說明
8.3超參數(shù)優(yōu)化
8.3.1預(yù)備工作
8.3.2操作步驟
8.3.3工作機(jī)理
8.4BOM變更的處理
8.4.1預(yù)備工作
8.4.2操作步驟
8.4.3工作機(jī)理
8.4.4補(bǔ)充說明
8.5使用Sklearn構(gòu)建機(jī)器學(xué)習(xí)pipeline
8.5.1預(yù)備工作
8.5.2操作步驟
8.5.3工作機(jī)理
8.5.4補(bǔ)充說明
8.6使用Spark和Kafka進(jìn)行流式機(jī)器學(xué)習(xí)
8.6.1預(yù)備工作
8.6.2操作步驟
8.6.3工作機(jī)理
8.6.4補(bǔ)充說明
8.7使用Kafka的KStreams和KTables豐富數(shù)據(jù)
8.7.1預(yù)備工作
8.7.2操作步驟
8.7.3工作機(jī)理
8.7.4補(bǔ)充說明
第9章部署到邊緣
9.1OTA更新MCU
9.1.1預(yù)備工作
9.1.2操作步驟
9.1.3工作機(jī)理
9.1.4補(bǔ)充說明
9.2采用IoT Edge部署模塊
9.2.1預(yù)備工作
9.2.2Raspberry Pi設(shè)置
9.2.3編碼設(shè)置
9.2.4操作步驟
9.2.5工作機(jī)理
9.2.6補(bǔ)充說明
9.3采用TensorFlow.js卸載到Web端
9.3.1預(yù)備工作
9.3.2操作步驟
9.3.3工作機(jī)理
9.3.4補(bǔ)充說明
9.4部署移動模型
9.4.1預(yù)備工作
9.4.2操作步驟
9.4.3工作機(jī)理
9.5采用孿生設(shè)備維護(hù)設(shè)備群
9.5.1預(yù)備工作
9.5.2操作步驟
9.5.3工作機(jī)理
9.5.4補(bǔ)充說明
9.6采用霧計算實現(xiàn)分布式機(jī)器學(xué)習(xí)
9.6.1預(yù)備工作
9.6.2操作步驟
9.6.3工作機(jī)理
9.6.4補(bǔ)充說明