使用Jetson nano結(jié)合AWS機(jī)器學(xué)習(xí)和IoT實(shí)現(xiàn)邊緣智能

來源:知乎
作者:AWS云計(jì)算
時間:2020-07-21
2694
本文帶你開啟AWS邊緣智能,教你使用Jetson nano結(jié)合AWS機(jī)器學(xué)習(xí)和IoT實(shí)現(xiàn)邊緣智能。

一、一些概念

在正式開啟AWS邊緣智能之前,我們先了解一些基礎(chǔ)概念:

1.1邊緣智能(Edge Intelligence,EI)是指在“終端側(cè)”部署人工智能。為什么只在云端做推理不行?眾所周知,人工智能(AI)正在成為改變各行各業(yè)的通用技術(shù)。此前絕大部分AI是依賴云端實(shí)現(xiàn)的,因?yàn)樵贫擞懈S富的算力、GPU資源、機(jī)器學(xué)習(xí)平臺等。隨著AI芯片和邊緣算力的不斷發(fā)展,EI已成為未來的趨勢。

1.2邊緣計(jì)算定義:OpenStack基金會對外發(fā)布的白皮書《邊緣計(jì)算–跨越傳統(tǒng)數(shù)據(jù)中心》對“邊緣計(jì)算”這一概念進(jìn)行了清晰的闡述,邊緣計(jì)算是為應(yīng)用開發(fā)者和服務(wù)提供商在網(wǎng)絡(luò)的邊緣側(cè)提供云服務(wù)和IT環(huán)境服務(wù),“邊緣”指的是位于管理域的邊緣,盡可能地靠近數(shù)據(jù)源或用戶。其目標(biāo)是在靠近數(shù)據(jù)輸入或用戶的地方提供計(jì)算、存儲和網(wǎng)絡(luò)帶寬。但不同的行業(yè)對應(yīng)邊緣計(jì)算的定義可能不同。基于物聯(lián)網(wǎng)技術(shù)的行業(yè)更多的邊緣側(cè)旨在設(shè)備端。

1.3 Jetson Nano是NVIDIA推出邊緣AI的開發(fā)板,GPU使用NVIDIA Maxwell?架構(gòu),配備128個NVIDIA CUDA?核心,開發(fā)者們可以基于Jetson Nano開發(fā)很多EI的應(yīng)用。

v2-15270b3f6ce3410cc4ad91c3d91acc27_720w.jpg

Jetson Nano Developer Kit

1.4邊緣計(jì)算與IoT云平臺,邊緣計(jì)算與云計(jì)算平臺將是共生互補(bǔ)。邊緣計(jì)算并不會取代云計(jì)算,而是通過邊緣側(cè)的算力,讓傳統(tǒng)的云計(jì)算框架進(jìn)一步去中心化,在邊緣側(cè)完成部分計(jì)算工作,然后將結(jié)果匯聚到云端進(jìn)行統(tǒng)一處理。云端也可以通過OTA,模型的訓(xùn)練后的下放與邊緣端集成到一起。云端仍舊可以處理時間不敏感的應(yīng)用場景,通過數(shù)據(jù)的匯聚以及云端的大數(shù)據(jù)分析進(jìn)一步為業(yè)務(wù)的決策提供數(shù)據(jù)支撐。

二、場景描述:

在本篇博客中,我們將通過AWS Greengrass和Jetson Nano實(shí)現(xiàn)圖片的分類,AWS Greengrass通過Lambda處理圖像分類的消息與調(diào)用本地的SageMaker訓(xùn)練好的Neo模型,然后通過Topic把圖像分類的結(jié)果發(fā)送至AWS IoT Core。其中邊緣推理部分使用了Greengrass ML inference。本篇博客以樂高恐龍圖像分類作為開啟EI亦或AIoT應(yīng)用的開端。

v2-85028fea0915eef4532740342c969596_720w.jpg

恐龍圖片分類素材

三、技術(shù)架構(gòu):

v2-a536882647d293d445684962aed958f6_720w.jpg

AWS EI image classification

AWS IoT Greengrass可將AWS無縫擴(kuò)展至邊緣設(shè)備,因此可以在本地操作其生成的數(shù)據(jù),同時仍可將云用于管理、分析和持久存儲。借助AWS IoT Greengrass,邊緣設(shè)備可以運(yùn)行AWS Lambda函數(shù)、Docker容器,基于機(jī)器學(xué)習(xí)模型執(zhí)行預(yù)測、使設(shè)備數(shù)據(jù)保持同步以及與其他設(shè)備安全通信–甚至在沒有連接Internet的情況下也可實(shí)現(xiàn)這些功能。

Amazon SageMaker是一種完全托管的機(jī)器學(xué)習(xí)服務(wù)。借助Amazon SageMaker,數(shù)據(jù)科學(xué)家和開發(fā)人員可以快速輕松地構(gòu)建和訓(xùn)練機(jī)器學(xué)習(xí)模型,然后直接將模型部署到托管的生產(chǎn)就緒環(huán)境中。它提供了一個集成Jupyter Notebook的實(shí)例,供您輕松訪問數(shù)據(jù)源以便進(jìn)行探索和分析,因此您無需管理服務(wù)器。

Amazon SageMaker Ground Truth是數(shù)據(jù)標(biāo)注的服務(wù),為機(jī)器學(xué)習(xí)模型構(gòu)建高品質(zhì)的訓(xùn)練數(shù)據(jù)集。

Amazon SageMaker Neo使機(jī)器學(xué)習(xí)模型訓(xùn)練一次即可在云和邊緣站點(diǎn)中的任何環(huán)境運(yùn)行。Neo可自動優(yōu)化TensorFlow、Apache MXNet、PyTorch、ONNX和XGBoost模型以部署在ARM、Intel和Nvidia處理器上,減少移植所需的時間和工作。但需要注意一點(diǎn)的是,Neo當(dāng)前支持的是從TensorFlow、MXNet或PyTorch導(dǎo)出的圖像分類模型,以及XGBoost模型。

本篇具體實(shí)現(xiàn)的流程如下圖,在最后的參考鏈接會附有源代碼和對應(yīng)的庫:

v2-7b5d491622490b28360e3929debd5281_720w.png

AWS EI Demo流程圖

四、AWS EI實(shí)驗(yàn)步驟:

4.1圖片標(biāo)注(SageMaker GroundTruth)

在這次試驗(yàn)中,我們將使用SageMaker GroundTruth的服務(wù)來標(biāo)注由樂高恐龍組成的圖像訓(xùn)練集。

步驟如下:

將未標(biāo)注的數(shù)據(jù)集上傳到S3上

在Sagemaker GroundTruth中創(chuàng)建一個私有的Labeling workforce

創(chuàng)建一個GroundTruth Labeling job

使用GroundTruth平臺來標(biāo)注圖片

分析結(jié)果

4.1.1下載未標(biāo)注的數(shù)據(jù)集:

在這一步中,我們將未標(biāo)注的數(shù)據(jù)集下載到本地,然后upload到剛剛創(chuàng)建的存儲桶中作為SageMaker GroundTruth的數(shù)據(jù)輸入。這個數(shù)據(jù)集中包含388個文件,其中包含6大分類(Brachiosaurus,Dilophosaurus,Spinosaurus,Stegosaurus,Triceratops and Unknown)。

數(shù)據(jù)集下載地址:

https://ml-jetson-greengrass.s3.cn-north-1.amazonaws.com.cn/lego_dinosaurs_dataset.zip

或者

https://sagemaker-nvidia-webinar.s3.amazonaws.com/lego_dinosaurs_dataset.zip

將未標(biāo)注的數(shù)據(jù)集上傳到S3上:

在ap-northeast-1區(qū)域中創(chuàng)建一個S3存儲桶并給存儲桶唯一的命名.(比如,ground-truth-labelling-job-initials-20200112)

·將download的數(shù)據(jù)集上傳到剛剛創(chuàng)建的桶中。(因?yàn)橄旅娴牟襟E我們需要做人工標(biāo)注,所以建議將6大類的樂高恐龍分別選取2-3張作為需要標(biāo)注的數(shù)據(jù)集即可)

·在設(shè)置權(quán)限這一步保持默認(rèn)即可,然后完成設(shè)置。

4.1.2在GroundTruth中創(chuàng)建一個私有的Labeling workforce

這一步驟中我們將通過Sagemaker GroundTruth創(chuàng)建一個圖像分類任務(wù)在ap-northeast-1。

·打開AWS控制臺>Amazon SageMaker>標(biāo)簽工作人員(Labeling workforces)

·選擇私有(Private)的標(biāo)簽然后創(chuàng)建私有團(tuán)隊(duì)(Create private team)

·給私有標(biāo)注的工作組命名

·填寫一個有效的郵箱地址

·

·創(chuàng)建私有團(tuán)隊(duì)

v2-88db320eada619c8daacd27129c2bb4b_720w.jpg

創(chuàng)建私有團(tuán)隊(duì)

·當(dāng)創(chuàng)建成功后,我們的郵箱會收到來自于no-reply verificationemail.com發(fā)來的驗(yàn)證郵件,這個郵件包含了我們創(chuàng)建workforce的用戶名和臨時密碼。

v2-d160266abbfbcdaa2b0d7d03a3b29ee6_720w.jpg

創(chuàng)建workforce

·使用log in的連接和臨時密碼登陸到標(biāo)注控制臺進(jìn)行標(biāo)注。

·此時會要求我們更改臨時密碼。

·因?yàn)槲覀冞€沒有分配給worker(我們自己)標(biāo)注任務(wù),此時標(biāo)注任務(wù)是空的,下一步我們將分配給自己標(biāo)注樂高恐龍的標(biāo)注任務(wù)。

4.1.3創(chuàng)建一個GroundTruth Labeling job

這一步驟就是我們創(chuàng)建一個標(biāo)注的任務(wù),然后分配給workforce。

·打開AWS控制臺>Amazon SageMaker>標(biāo)記任務(wù)(Labeling jobs)

·Step1:指定任務(wù)詳細(xì)信息中:

—定義任務(wù)名稱(記住任務(wù)名稱,我們在notebook中的代碼會用到)

—創(chuàng)建清單文件(manifest),輸入S3訓(xùn)練數(shù)據(jù)集的路徑,注意要以/結(jié)尾。For e.g.:s3:///<prefix/foldername>/

v2-1dad9c0877781716d58b1f887b32b060_720w.jpg

v2-d3af971a6ed15d5ae06e5d5926c15bce_720w.jpg

v2-89da0b092d81c7cb32f8cd9ae94b76c3_720w.jpg

創(chuàng)建manifest

—IAM角色,在測試環(huán)境中我們可以允許它訪問所有的S3 bucket,當(dāng)然我們可以指定它可以訪問特定S3 bucket。

v2-dbffcd6c5bc69e7cd39d7931e71396db_720w.jpg

—任務(wù)類型,我們選擇圖像分類。

v2-972e07d184b083ffe503713d4274756d_720w.jpg

任務(wù)類型

·Step2:選擇工作人員并配置工具

選擇“私有(Private)”&gt;“私有團(tuán)隊(duì)(Private teams)在下拉框中我們已經(jīng)在1.2創(chuàng)建過的”&gt;“取消自動標(biāo)記”&gt;“其他配置中工作人員數(shù)量為1”&gt;“圖像分類標(biāo)記工具中添加6個標(biāo)簽:Brachiosaurus,Dilophosaurus,Spinosaurus,Stegosaurus,Triceratops and Unknown”

·返回標(biāo)注作業(yè)的頁面查看jobs的狀態(tài),此時我們的郵箱會有no-reply verificationemail.com發(fā)來的郵件,內(nèi)容是分配給我1個jobs需要完成。

4.1.4用GroundTruth平臺來標(biāo)注圖片

這一步驟就是人工標(biāo)注的過程,因?yàn)榍懊嫖覀円呀?jīng)節(jié)選出13張有代表的圖像,我們下面就對這13張圖像進(jìn)行標(biāo)注即可。如下圖:

v2-2d6e2dd2ffeb24a6b2146a119d88c940_720w.jpg

當(dāng)標(biāo)注完成后,我們返回到Sagemaker平臺上??梢愿櫂?biāo)記任務(wù)的狀態(tài)以及進(jìn)度。

v2-eab103f3a7a05be134422d600b7a567e_720w.jpg

4.1.5結(jié)果驗(yàn)證

我們可以用sublime text打開在output中的/manifests/output.manifest文件,它是一個json文件包含一些被標(biāo)記圖片的metadata.比如:

v2-bd2c2d722cf6470f6eb58ded30247f78_720w.jpg

Manifests格式

4.2模型訓(xùn)練與優(yōu)化

這一步我們主要的目的就是通過Amazon SageMaker notebook編寫訓(xùn)練模型的代碼,通過代碼來調(diào)用云計(jì)算的資源,比如機(jī)器學(xué)習(xí)類型的instance。它將執(zhí)行數(shù)據(jù)訓(xùn)練,并將訓(xùn)練和優(yōu)化好的模型以Amazon SageMaker Neo導(dǎo)出。下一步將Amazon SageMaker Neo模型部署到Jetson Nano的設(shè)備上。如果不想對模型進(jìn)行訓(xùn)練的話可以到參考鏈接處下載訓(xùn)練好的模型。

這個notebook主要是展示端到端機(jī)器學(xué)習(xí)的工作流程

·使用Sagemaker GroundTruth創(chuàng)建的標(biāo)簽數(shù)據(jù)集。然后將數(shù)據(jù)集分為訓(xùn)練和驗(yàn)證。

·使用Sagemaker容器訓(xùn)練模型

·使用Sagemaker Neo優(yōu)化模型

4.2.1下載代碼ipynb并導(dǎo)入到SageMaker notebook中

圖像分類代碼https://ml-jetson-greengrass.s3.cn-north-1.amazonaws.com.cn/sagemaker_image_classification-Copy1.ipynb

注意不要使用參考鏈接中的github上的代碼。

v2-2855f61c033400633e57b74b57fe664f_720w (1).png

創(chuàng)建Amazon SageMaker筆記本

4.2.2部分代碼解析

·在OUTPUT_MANIFEST要輸入Sagemaker GroundTruth的output路徑,前面的步驟已經(jīng)驗(yàn)證過output的manifest的json格式。

v2-b044a4420495ad85e4137304d0aa407b_720w.jpg

代碼解析-1

·在創(chuàng)建Sagemaker訓(xùn)練任務(wù)的時候,請根據(jù)自己數(shù)據(jù)集訓(xùn)練的個數(shù)來調(diào)整超參數(shù)(hyperparamerter)和訓(xùn)練instance的類型(InstanceType)如下:

v2-9ab1688533861e9279955f4347356781_720w.jpg

代碼解析-2

·在InputDataConfig替換AttributeNames為自己定義的name,比如:

“AttributeNames”:[“source-ref”,”groundtruth-labeling-job-20191209-clone”]

·啟動訓(xùn)練作業(yè),我們可以在Sagemaker notebook中查看到結(jié)果,也可以返回到Sagemaker控制臺的訓(xùn)練任務(wù)中看到訓(xùn)練的狀態(tài)。訓(xùn)練的時間長短取決于訓(xùn)練實(shí)例類型、數(shù)據(jù)集大小、超參數(shù)的定義。

v2-ba61fd6e9c8f241d2d59402bba02f94f_720w.jpg

Sagemaker notebook的訓(xùn)練狀態(tài)

v2-99cfe0e9d50db6156373674268df47d7_720w.png

Sagemaker console的訓(xùn)練狀態(tài)

·通過使用Sagemaker Neo來優(yōu)化壓縮模型給終端Jetson Nano使用,導(dǎo)出的模型路徑我們要記錄一下,在下一步驟部署GreenGrass的時候會用到。

v2-f7feb614e907a6f9a8c70bc8101ad19b_720w.jpg

模型導(dǎo)出

小結(jié):

回顧一下我們的Demo流程圖,我們一起完成了第一部分:圖片標(biāo)注和第二部分模型訓(xùn)練與優(yōu)化。下一章是我們的另一個重點(diǎn),開始構(gòu)建邊緣環(huán)境與執(zhí)行邊緣推理。

v2-7b5d491622490b28360e3929debd5281_720w.png

AWS EI Demo流程圖

原文鏈接:點(diǎn)擊前往 >
版權(quán)說明:本文內(nèi)容來自于知乎,本站不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。文章內(nèi)容系作者個人觀點(diǎn),不代表快出海對觀點(diǎn)贊同或支持。如有侵權(quán),請聯(lián)系管理員(zzx@kchuhai.com)刪除!
個人VIP
小程序
快出海小程序
公眾號
快出海公眾號
商務(wù)合作
商務(wù)合作
投稿采訪
投稿采訪
出海管家
出海管家