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