資料介紹
描述
為什么選擇泰哈克
在大流行開始時對 COVID-19 進行測試很困難,沒有足夠的測試套件可供使用,而且就可靠性而言,套件本身仍在開發中。幾十年來,醫生一直通過聽病人咳嗽和呼吸來診斷各種疾病。研究人員已經對開發機器學習模型進行了研究,以預測患者是否患有支氣管炎,我們可以將相同的方法應用于 COVID-19 嗎?
是的,答案是肯定的,麻省理工學院和其他人已經做到了……并且正在制作一個應用程序……
麻省理工學院研究的關鍵信息之一是,他們能夠使用他們訓練有素的模型識別出沒有病毒癥狀的人,事實證明咳嗽是關鍵。
現在,麻省理工學院這次擊敗了我們,但正如麻省理工學院已經指出的那樣,無癥狀的人可能不會急于接受測試,如果麻省理工學院發布一個應用程序,它仍然需要用戶下載和使用該應用程序。
Tyhac 旨在通過提供一種被動聽音設備來解決這些問題,該設備可以檢測咳嗽,然后對樣本進行深度學習推理以確定 COVID-19 是陽性還是陰性。通過在辦公室、電梯、候診室等公共場所安裝 tyhac,我們可以通過響應檢測到的事件來幫助更好地保護我們的社區。我們還可以使用 tyhac 更好地了解社區在流感季節的反應,以及是否在工作場所管理健康習慣活動,以確保工人照顧好自己,并在可能的情況下使用遠程工作來限制傳播。
它是如何工作的?
得益于 M5 Core2 堆棧和 AWS,解決方案本身非常簡單,這讓一切變得非常簡單。它將貫穿設備的高級設計和 AWS 配置:
現在我們對堆棧有了更好的理解,我們可以討論一些關鍵特性,然后進入演示。該設備設計為在兩種模式下運行:
被動的
此模式專為安裝在工作場所、電梯、候診室、辦公室隔間、家庭等中的設備而開發。LM393 麥克風傳感器具有可聞噪音閾值,一旦超過該閾值,SPM1423 內部 I2S 麥克風將開始錄音一個 10 秒的音頻樣本。
臨床醫生(現場單位)
此模式專為醫療專業人員設計,在此模式下,設備不使用 LM393,技術上不需要。如果喜歡移動設備,該設備可以使用電池(包括在設備中)。
用戶會看到一個顯示兩個選項的菜單:
提交
此按鈕旨在供醫療專業人員提交陽性樣本,我已將其包含在內,以便我們接收標記樣本以繼續訓練模型并改進預測。
測試
此按鈕用于診斷患者,一旦按下按鈕,它將使用內部 SPM1423 I2S 麥克風錄制 10 秒的音頻。
上傳
兩種模式都將音頻樣本記錄為 WAV 文件并寫入設備上的 SD 卡。然后設備將發布到 S3 Pre-signed URL MQTT 主題以請求安全 url 來上傳 WAV 文件。收到后,設備將開始通過安全 HTTPS 上傳。
驗證
文件上傳到 AWS S3 后,存儲桶觸發事件將調用暫存 Lambda 函數。暫存過程對樣本進行一系列檢查:
- 樣本是有效的 WAV 文件嗎?
- 樣本是咳嗽嗎?
- 擴充文件
- 歸檔文件并復制到最終存儲桶
如果在任何階段暫存功能不起作用或檢查失敗,則文件將從存儲桶中刪除。DynamoDB 事件隨結果更新,旨在最大限度地減少非咳嗽相關音頻樣本的存儲。
推理/預測
在最終存儲桶中創建文件后,將從 S3 事件調用推理 Lambda 函數。這將加載經過訓練的 tyhac 模型并對樣本進行預測。結果通過 MQTT 返回。
演示
我準備了一個演示,它將運行一些功能,以便我們可以看到它的作用。演示顯示:
- 啟動
- 被動covid-19檢測
- 臨床模式測試
讓我們構建一些東西(代碼)
在本節中,我們將逐步啟動和運行您的設置。請務必查看 BOM 以確保您擁有運行構建所需的組件。
除了 BOM,您還需要一個有效的 AWS 賬戶,因為這需要使用 AWS 服務(太棒了!!!)。如果您沒有賬戶,請按照AWS 官方文檔設置賬戶。
專業提示:云需要花錢,我強烈建議您了解構建成本并使用計費警報設置您滿意的閾值。我創建了一個單獨的項目來自動執行此操作,請隨時查看。
構建這個項目所需的一切(不包括物理資產)都可以在talkncloud github repo 上開源。以下內容將作為“快速入門”幫助您啟動和運行。
注意:您將在項目代碼和 github 存儲庫中找到其他信息來補充這篇文章。
項目文件夾結構
瀏覽存儲庫后,您會注意到該項目已分為三個單獨的文件夾:
- aws-cdk
- aws-物聯網
- aws-sagemaker
AWS-CDK
AWS Cloud Development Kit (CDK) 文件夾包含在云中部署所需服務所需的一切。如果您之前參考高級設計圖,圖中的所有內容都將自動為您提供。這就是基礎設施即代碼 (IaC),通過將所有內容開發為代碼,我可以提供一致的可重復環境,以確保其按設計工作。另一種方法是您需要手動創建所有內容(無聊)。
注意:CDK 是一個很棒的項目,如果您在熟悉開發定義風格的語言(如 JSON 或 YAML)之前看過 IaC。CDK 允許您將諸如 typescript、python 之類的編程語言帶到聚會中,如果您正在瀏覽 hackster,我相信您會喜歡的。
AWS-物聯網
用于構建固件并將其上傳到您的 M5 Core2 AWS EduKit 設備的 arduino 代碼。這是在您的設備上運行 tyhac 固件所必需的,我們將使用 platformio 使事情變得更容易一些。
AWS-SAGEMaker
如果您正在深入學習,此文件夾包含執行數據準備、模型訓練和模型托管所需的一切。高級設計中使用的訓練模型包含在項目中。對于此構建,您根本不需要使用 sagemaker。Sagemaker 不包含在 aws-cdk 部署中。
如果您想在模型上構建或只是好奇,此文件夾適合您。
專業提示:我正在使用 fastai 和 fastaudio ,如果您正在考慮進行任何深度學習,我強烈建議您檢查一下。
第一步:克隆倉庫
讓我們通過準備本地環境來工作,我們將從 cdk 開始,然后移動到設備上。
克隆倉庫
讓我們克隆所有 tyhac 的優點...
git clone https://github.com/talkncloud/tyhac-aws-hackster
cd tyhac-aws-hackster
Step2:AWS-CDK部署AWS
該項目需要使用 docker 容器,這些容器將使用 AWS Elastic Container Registry 構建并存儲在您的 AWS 賬戶中。這些容器用于 lambda 函數以執行分段和推理。如果您安裝并運行了 docker,您可以在本地構建這些容器,CDK 會處理所有事情。如果您沒有這些或您的互聯網速度很慢,我可以推薦AWS Cloud9。容器將上傳大約 3-4GB。
您不需要了解有關容器的任何信息,一切都會得到照顧。
如果你要去本地,請參考 docker doco 進行安裝和配置。如果您使用的是 Cloud9,它已經安裝。
注意:Cloud9 不是免費的,請參閱 AWS 定價,Cloud9 未包含在此構建的最終成本中,因為它不是必需的。
除了 CDK,我們將使用projen,另一個很棒的項目,這簡化了 CDK 和類似項目的構建和維護。這假設您已經安裝了節點,有關詳細信息,請參閱節點文檔。
npm install -g aws-cdk
npm install -g projen
npm install -g yarn
您需要下載并安裝 AWS cli ,這將允許您向 AWS 進行身份驗證并執行與云相關的操作,這是我們需要將 CDK 部署到您的帳戶中的。
安裝 AWS cli 后,您需要配置客戶端以添加訪問密鑰。這將授予 AWS cli 訪問您賬戶的權限。有關配置,請參閱AWS 文檔。
專業提示:AWS 所指的密鑰是密碼,請像這樣對待它們。不要共享它們并限制他們的訪問。如果這是您第一次進入 AWS,請在此構建結束時刪除您的憑證文件以及您在 AWS 賬戶中生成的任何密鑰。如果需要,您可以隨時創建更多。最好不要把鑰匙掛在身邊。
現在您已經安裝了所有東西,并且您已經為您的 AWS cli 配置了訪問權限,您可以為 tyhac 預置后端 AWS 資源、權限、策略和配置。
projen
projen deploy
以下視頻展示了使用 Cloud9 的部署,同樣適用于 Visual Studio 代碼:
讓我們驗證幾件事,我不會詳細介紹,但如果您愿意,請了解 CDK 使用 AWS Cloudformation,即 IaC 'OG'。使用控制臺前往 cloudformation 并找到部署:
![pYYBAGNkcRKAK--tAAAXHuMCtMM578.png](https://file.elecfans.com/web2/M00/78/10/pYYBAGNkcRKAK--tAAAXHuMCtMM578.png)
恭喜,您剛剛構建了容器、函數、存儲桶、數據庫、物聯網等。很酷!
步驟 3:AWS-IOT 構建和上傳 tyhac arduino 固件
現在,您可能最感興趣的部分是 tyhac。現在我們的 AWS 后端正在等待并準備好迎接您的事情,我們可以繼續構建我們的設備。
我強烈推薦AWS EduKit 上的示例和指南,這是從設置環境到運行示例項目的豐富信息。最好通過其中的一兩個來感受一下。
LM393麥克風單元和SD卡
這部分很簡單,如果您使用的是 LM393 單元,只需將??傳感器連接到設備上的端口 B。這在 LM393 的外殼上標明。
將 micro SD 卡插入設備的 SD 卡插槽。
平臺
我正在使用 platformio 來提供功能豐富且易于擴展的 Visual Studio 代碼。請參閱Visual Studio 代碼下載和安裝和platformio 安裝以使它們運行。
現在讓我們進入 aws-iot 文件夾:
cd aws-iot
code
這應該在該位置打開 Visual Studio 代碼編輯器,否則打開 Visual Studio 代碼并打開克隆的存儲庫。
我們將使用 platformio 打開 iot 項目,這將創建連接到設備和使用 platformio 所需的環境:
![poYBAGNkcRWASwwZAAFrzj_O3-0744.png](https://file.elecfans.com/web2/M00/77/7E/poYBAGNkcRWASwwZAAFrzj_O3-0744.png)
文件夾結構
文件夾結構主要基于默認的 platformio 框架,您會注意到包含的自述文件比我能更好地解釋這一點。
![poYBAGNkcRiAPANoAABitZGkZZI379.png](https://file.elecfans.com/web2/M00/77/7E/poYBAGNkcRiAPANoAABitZGkZZI379.png)
我想強調幾項:
certs - 安全 HTTPS 通信所需的公共 AWS 證書
實用程序 - 我們將使用它來自動使用 AWS 配置事物
lib - 大多數代碼已被拆分為單獨的庫以使其更容易,此文件夾包含 tyhac 庫
lib/env - 你需要為你的環境更新它,我們將在下一節中詳細討論
platformio.ini - 您可能需要根據您的系統更改此文件中的設置,主要是 USB 端口。例如,AWS EduKit、USB 信息。
環境樣本.h
使用編輯器打開環境文件,您需要將示例文件復制到名為env.h的相同位置
更新您的環境的設置,該文件包含有關如何檢索您需要的 AWS 相關信息的有用詳細信息。例子:
您的 AWS 賬戶:
aws sts get-caller-identity
您的 AWS IoT 終端節點:
aws iot describe-endpoint --endpoint-type iot:Data-ATS
設備配置
您可以想象,我們不希望任何人都使用我們的 AWS tyhac 堆棧。要將 AWS IoT 與我們的配置一起使用,您需要將設備注冊到 AWS IoT。這需要生成證書并將設備與相關策略相關聯,以便事物可以做它需要做的事情,例如 MQTT。
我提供了一個腳本來為你處理這個問題。如果您遵循AWS EduKit 指南,您會注意到這是一種類似的方法。該腳本將在 AWS IoT 中注冊事物,生成證書并將證書與我們之前在 CDK 堆棧中創建的策略相關聯。
cd utilities/AWS_IoT_registration_helper
./registration_helper.sh
生成的證書存儲在 output_files 文件夾中,這些是您的證書并且是私有的。這些證書將在構建期間加載到設備上的 SPIFFS 中,并用于與 AWS 的安全通信。
設備構建和上傳
連接 M5 Core2 AWS EduKit 設備、完成 AWS 后端、為您的環境預置和配置設備后,您就可以構建固件并上傳到您的設備了。
我喜歡使用位于 IDE 底部的 platformio 工具欄:
![pYYBAGNkcRqALzuNAAAHqoeHOu4755.png](https://file.elecfans.com/web2/M00/78/10/pYYBAGNkcRqALzuNAAAHqoeHOu4755.png)
勾選=構建
箭頭 = 上傳到設備
垃圾箱/垃圾=干凈
插頭 = 監控串行輸出
終端 = 新的 platformio 終端
使用勾選,構建項目,然后使用箭頭上傳到設備,終端輸出將顯示當前狀態。一旦上傳完成,它應該會自動切換到監聽輸出,但如果沒有按下插頭按鈕切換到監聽。
您可以看到在正常操作下,串行輸出將提供有關 tyhac 操作方式的一些有用細節。在下一節中,我將詳細介紹每個不同的指標和消息的含義。
專業提示:如果您單擊工具欄中的 platformio 監視器按鈕,請注意按鈕位置是否像視頻中那樣移動。啊。
設備狀態指示燈和串行輸出
M5 Stack Core2 AWS EduKit 在設備的兩側帶有兩個 RGB 條,所以我想我們也可以使用它們。現在您的設備正在運行 tyhac 固件并與 AWS 通信,您可能會注意到發生了不同的指標。
橙色 = 正在連接或處理,這可以用于 Wifi 或 AWS MQTT
綠色 = 操作正常,例如 wifi 已連接
紅色 = 嚴重錯誤,很可能無法連接到 Wifi
白色 = 正常操作模式
注意:預測顯示使用相同的顏色。例如正負綠色和紅色。
顯示屏和串行輸出中的狀態消息大多是不言自明的:
![pYYBAGNkcSOAd42iAADrV7ysITc871.png](https://file.elecfans.com/web2/M00/78/10/pYYBAGNkcSOAd42iAADrV7ysITc871.png)
MQTT = 訂閱、接收、連接
Heartbeat = 以當前模式每分鐘向 AWS 發送一條心跳 MQTT 消息
NTP = 與遠程時間服務器同步
Screen = LCD 屏幕相關項目,例如更改顯示
按鈕 = 切換模式,例如被動或臨床醫生(主動)
Tyhac 設備庫
我嘗試將代碼拆分為庫,以便更輕松地管理代碼庫并允許其他人使用其他項目所需的位:
![pYYBAGNkcSWAaTySAAAiFxS7OH0091.png](https://file.elecfans.com/web2/M00/78/10/pYYBAGNkcSWAaTySAAAiFxS7OH0091.png)
音頻 = 與將音頻從麥克風錄制到 SD 卡相關的所有內容
env = 您的環境特定配置
mqtt = 與 AWS 發布/訂閱 MQTT 相關的所有內容
ntp = 使用遠程 NTP 服務器設置時鐘
rgbcolor = 管理 RGB 條帶
ui = 與液晶屏界面相關的一切
上傳 = 與通過 HTTPS 上傳 AWS S3 相關的所有內容
version = 只是一個版本文件
例如,如果您想更改 RGB 的顏色,您只需轉到 lib/rgbcolor 庫并使用您選擇的 RGB 值更新 changeRgbColor 函數或添加不同的顏色等。
Step4:AWS-Sagemaker 可選模型訓練
關于 sagemaker,我不會過多介紹。正如我之前所說,除非您想自己理解或希望維護模型,否則您不需要執行此部分。我對 sagemaker 采取的基本方法是我需要 CPU、GPU 和存儲,而我根本沒有,AWS 以低成本按需為我們提供這些。
專業提示:我已采取措施通過使用現貨市場進行培訓來降低與 sagemaker 相關的成本,這應該會節省約 70% 的成本,具體取決于您所在的地區和 AWS 市場。但是,這仍然是該項目中成本最高的部分,請確保您監控成本并設置計費警報并在完成后刪除任何內容。
AWS Sagemaker 工作室
我最終使用了sagemaker studio ,因為它為我提供了很多功能,我可以使用 Studio IDE 在標準瀏覽器中構建、訓練和部署所有功能,考慮到我們的時間框架很短,這很有意義。AWS 提供了更多關于為什么首選 Studio 的信息。如果您在 AWS 中有自己的設置或標準筆記本實例,您應該能夠在本地執行此操作。這將進一步降低成本,但會花費您更多的時間。
創建賢者工作室
使用瀏覽器中的 AWS 控制臺前往 sagemaker 并使用登錄頁面點擊橙色的“SageMaker Studio”按鈕。
![poYBAGNkcSiAeMM1AAFLaAHn69k545.png](https://file.elecfans.com/web2/M00/77/7E/poYBAGNkcSiAeMM1AAFLaAHn69k545.png)
使用“快速啟動”選項,這將為您設置和環境所需的權限。一旦您接受配置 AWS 將開始配置您的環境,這將需要幾分鐘但只是一次。
當您的配置準備就緒時,您會注意到一條橫幅消息,如下所示:
![pYYBAGNkcSqAcJuHAABEt_qxYZQ189.png](https://file.elecfans.com/web2/M00/78/10/pYYBAGNkcSqAcJuHAABEt_qxYZQ189.png)
您應該注意到“Open Studio”單擊可用,這將啟動 AWS SageMaker Studio Web IDE,以便我們開始。
![poYBAGNkcSyAOijBAAAUWYJOQDM068.png](https://file.elecfans.com/web2/M00/77/7E/poYBAGNkcSyAOijBAAAUWYJOQDM068.png)
如果這不可用,您的環境可能仍在配置中,或者您需要使用“分配用戶和組”按鈕來關聯您的用戶帳戶。
啟動 SageMaker studio 后,您會看到一個可愛的 SageMaker 徽標加載屏幕,第一次啟動往往需要更長的時間,之后會更快。
![pYYBAGNkcS-AGNPaAACeDTpAeL0892.png](https://file.elecfans.com/web2/M00/78/10/pYYBAGNkcS-AGNPaAACeDTpAeL0892.png)
加載 Studio 后,您將進入 Studio IDE:
![pYYBAGNkcTOARKTaAALh40ILYNk612.png](https://file.elecfans.com/web2/M00/78/10/pYYBAGNkcTOARKTaAALh40ILYNk612.png)
我真的很喜歡 Studio IDE,在大多數情況下,我發現它非常直觀且視覺上非常好用。因為我們將添加一個 git 存儲庫,所以我們可以使用 git 圖標來加載 tyhac 存儲庫并點擊“克隆存儲庫”:
![poYBAGNkcTaADYUxAAAZZRjxjr4511.png](https://file.elecfans.com/web2/M00/77/7F/poYBAGNkcTaADYUxAAAZZRjxjr4511.png)
克隆后,您會注意到熟悉的 tyhac 代碼庫結構,導航到 aws-sagemaker 以使用我們需要的文件:
![poYBAGNkcTiAAIfGAACppae-EkE613.png](https://file.elecfans.com/web2/M00/77/7F/poYBAGNkcTiAAIfGAACppae-EkE613.png)
用于 fastai 培訓的Docker容器
當您需要執行訓練時,AWS SageMaker 將提交訓練作業并啟動您為訓練指定的計算、GPU、內存實例或實例。AWS SageMaker 為各種框架提供了一堆預配置的容器,讓您可以繼續使用,例如 tensorflow、pytorch 等。當您想要使用不同的東西時,您可以使用您的自定義框架構建容器。這就是我所做的。存儲庫中的 docker 文件夾包含構建容器并將其推送到您的 AWS ECR 所需的代碼,以供 SageMaker 在需要時使用。
專業提示:與前面的提示一樣,如果您的互聯網速度較慢或不想配置 docker 等,AWS Cloud9 在這里是一個很大的幫助。
您會注意到兩個容器,一個用于訓練,一個用于推理。如果您想訓練模型并在 tyhac 后端替換它,則無需擔心推理容器。如果您想使用專用 SageMaker 端點運行推理,則包含容器代碼和筆記本。
要構建容器,您需要再次使用 aws cli 進行身份驗證,更新 Dockerfile 以反映您的 AWS 區域,然后只需運行 shell 腳本:
./build_and_push.sh
SageMaker 圖表
使用圖表更容易理解 SageMaker、ECR 和筆記本如何連接在一起。下圖顯示了 tyhac 筆記本和服務如何協同工作:
![pYYBAGNkcTuAKOAIAABhMk61Opc592.png](https://file.elecfans.com/web2/M00/78/10/pYYBAGNkcTuAKOAIAABhMk61Opc592.png)
使用筆記本_
Studio IDE 和筆記本將為您提供運行所需的一切,只需打開筆記本并逐步瀏覽單元格:
![pYYBAGNkcT6AWJ-PAAIuqw9qxSQ243.png](https://file.elecfans.com/web2/M00/78/10/pYYBAGNkcT6AWJ-PAAIuqw9qxSQ243.png)
在大多數情況下,我使用 AWS 的 tensorflow 內核并添加了幾個我需要的包。您可以在 IDE 頂部更改內核。
![poYBAGNkcUKAcuXqAAH74Q93s64706.png](https://file.elecfans.com/web2/M00/77/7F/poYBAGNkcUKAcuXqAAH74Q93s64706.png)
數據可視化
完成一些數據準備后,在您開始訓練之前,會出現包含數據可視化的單元格,下面顯示了來自 covid-19 陽性和陰性患者的樣本。輸出是我們用于訓練的音頻梅爾譜圖:
![pYYBAGNkcUWABfgAAAEtFAYn524249.png](https://file.elecfans.com/web2/M00/78/11/pYYBAGNkcUWABfgAAAEtFAYn524249.png)
![poYBAGNkcUeACn3GAAErH9sSd5g703.png](https://file.elecfans.com/web2/M00/77/7F/poYBAGNkcUeACn3GAAErH9sSd5g703.png)
我們可以進一步挖掘數據集以顯示我們當前的標簽和頻譜圖:
![pYYBAGNkcUqABvOMAAIrnaSAMEY102.png](https://file.elecfans.com/web2/M00/78/11/pYYBAGNkcUqABvOMAAIrnaSAMEY102.png)
訓練
一旦您對 dataprep 感到滿意,您就可以進入訓練筆記本,這將運行 sagemaker 訓練作業并將模型文件輸出到 s3,您可以更新筆記本中的超參數和模型架構:
hyperparams = { 'epochs' : 1,
'learning-rate': 0.001, # fastai default
'batch-size' : 64, # fastaudio default
'model-arch' : 'resnet18', # resnet34
'workers' : 16 # default 2
}
您將需要為您的帳戶更新容器位置:
image_uri = 'ACCOUNTID.dkr.ecr.ap-southeast-2.amazonaws.com/tyhac-sagemaker-fastai:1.0-gpu-py36',
我開發的 notebook 會輸出一些圖像,您可以使用這些圖像查看模型性能:
![poYBAGNkcUyAGlEEAAAvljM0p4Q781.png](https://file.elecfans.com/web2/M00/77/7F/poYBAGNkcUyAGlEEAAAvljM0p4Q781.png)
在 AWS 中更新模型
如果您對模型感到滿意,您只需從 sagemaker S3 存儲桶下載 model.tar.gz,提取內容并將 export.pkl 復制到 aws-cdk/src/lambda/predictor/model 文件夾中。
然后更新您的 AWS CDK 部署:
cd aws-cdk
projen deploy
現在,當 tyhac M5 Core AWS EduKit 事物接收到新樣本以對其執行推理時,將使用您新訓練的模型。簡單的!
第五步:清理
一旦您完成了項目并且您不再需要運行任何 tyhac AWS 堆棧,我們應該刪除它們。
因為我們使用了 CDK,所以移除堆棧很容易
您首先需要使用 AWS 管理控制臺從 AWS IoT 核心 CDK 策略中刪除設備證書,然后:
cd aws-cdk
projen destroy
專業提示:您還可以通過 AWS 控制臺使用 cloudformation 來刪除堆棧。
這將留下以下需要手動刪除的內容:
- AWS S3 存儲桶
- AWS DynamoDB
- AWS ECR(容器)
導航到 AWS 控制臺中的這些服務以清空和刪除它們。
如果您配置了 SageMaker Studio:
- 導航到 SageMaker Studio
- 點擊用戶,刪除關聯應用
- 刪除用戶
- 回去
- 刪除工作室
![pYYBAGNkcU-AeLQjAAA7rGHo76w884.png](https://file.elecfans.com/web2/M00/78/11/pYYBAGNkcU-AeLQjAAA7rGHo76w884.png)
導航到 AWS EFS
- 選擇 EFS 卷,然后刪除
![pYYBAGNkcVKAchPNAAEjfeFNZKY276.png](https://file.elecfans.com/web2/M00/78/11/pYYBAGNkcVKAchPNAAEjfeFNZKY276.png)
專業提示:如果您有多個卷檢查標簽,SageMaker 會標記與 SageMaker 關聯的卷。
困難/挑戰
我現在將討論我在這個項目中遇到的一些挑戰,劇透有很多(現在仍然如此):)
使用SageMaker 進行深度學習
- 你怎么能從音頻中預測任何東西?
這是一個兔子洞,試圖了解我如何使用音頻咳嗽來預測任何事情。一旦我開始研究這個問題,我就能找到一些非常棒的信息和研究論文(參見 repo)。最后,最好的方法是使用具有已知架構的梅爾譜圖和卷積神經網絡。使用音頻圖像,而不是查看音頻樣本的數字數據點。
- 資料準備,資料準備,資料準備
這似乎永無止境,下載數據,排序數據,找到標簽,沖洗并重復。發現沒有足夠的數據,盡可能調整以獲得更多數據,然后意識到我在數據準備中犯了一個錯誤,需要重做。耗時但關鍵的堆棧部分。
- 超參數、音頻參數、框架
時代?優化器?一種全新的語言,我在訓練一個完全有效的模型時遇到了很多麻煩。嘗試了各種框架但沒有成功,我幾乎放棄了這個項目,并準備寫下我的失敗。我會不斷地訓練一個 ROC 為 0.5 的模型,這是一個完全沒用的模型。FastAI 真的把我從我自己那里救了出來,一旦我改用 fastai,我就能夠訓練一些有用的東西,將它與 fastaudio 配對對音頻組件有相同的效果。
- 只是使用更多的 CPU 內核,反正誰需要 GPU
切換到 FastAI 后,我需要為框架構建自定義 docker 容器。這很棒,但是,我在訓練期間注意到從未使用過 GPU。我把這個問題放在了待辦事項上,并投入了更多的 CPU(不聰明),以使每個周期的訓練時間達到 5-7 分鐘左右。我最終發現 tensorflow 所需的軟件包是根據您的系統安裝的,我的本地系統缺少 NVIDIA GPU 并安裝了 CPU 軟件包。調整 Dockerfile 以提取 GPU 包意味著 GPU 已被使用,并且周期下降到大約 1 分鐘。這意味著,更多的成本節省,更少的時間!
- 好的,我有一個訓練有素的模型,現在呢?
自定義容器和 SageMaker 推理。這過于復雜,如果您想使用 SageMaker 端點,您需要在 SageMaker 推理要求的框架內工作。您的服務腳本中需要某些功能,這些功能只需要存在即可。我為此奮斗了最長時間,認為這不是真的,但現在理解了結構化方法。
M5 Core2 堆棧 Arduino
- Micropython,不,arduino
我想快點,我正在為 SageMaker 開發 python 筆記本,我知道 M5 Core2 可以使用 micropython。我最初對 micropython 的實驗并不順利,很早就很清楚我試圖做的事情超出了設備上 micropython 的范圍,因為時間限制。我的下一個目標是 arduino,它最終運行良好。該設備支持多種語言真是太好了。我認為轉移到 esp-idf 將是一個很好的下一步。
- LM393是麥克風嗎?
我以為這是麥克風,而不僅僅是聲音傳感器。我最初的設計需要一個觸發器來啟動錄音,這就是我購買 LM393 的原因,但我也認為它是一個更高質量的麥克風。我必須快速適應使用內置麥克風。
- SM1423 內置麥克風 I2S
內置麥克風使用 I2S,這與我過去沒有任何關系。試圖了解如何從 I2S 接口讀取數據并將其寫入文件是一項挑戰。關于 arduino、SDCards 和 wav 文件有一些例子,但并不多。大量的試驗和錯誤。
- 我只想通過 HTTPS 將文件上傳到 S3,有什么用?
我無法計算出 AWS S3 所需的標頭,它會不斷被 S3 拒絕。大量的調試、更改文件類型、查看標題等,我最終得到了它的工作。我找不到任何關于如何使用 arduino 執行此操作的明確示例。據我所知,我的示例是迄今為止唯一公開可用的已知工作示例。
- 嘿,酷,RGB燈,讓我們使用它們,這不是橙色的嗎?
在經歷了所有挑戰之后,我決定繞道而行,用 RGB 燈玩一玩。原來 fastled 庫中的 RGB 燈出現故障,我會嘗試制作橙色,它會以不同的方式結束。一旦我理解了這個問題,在我的代碼中交換值就可以更容易地選擇我的 RGB 顏色,然后讓我的函數句柄交換。都是些小事...
- 搬家,網速慢,AWS Cloud9 來拯救
在我搬家的項目快結束時,新位置的下載速度不錯,但上傳可能會更好。通常這不是問題,但我的堆棧嚴重依賴需要上傳到 AWS ECR 的容器。當我處理設備和分段/預測 lambda 函數時,我需要快速迭代代碼更改。進行簡單的更改需要 20、30、60 分鐘。
我最終切換到 AWS Cloud9 進行 aws-cdk 部署,這將容器更改的時間縮短到 2-5 分鐘。托管服務的啟動和運行快速、簡單且具有成本效益。切換到 Cloud9 只需幾分鐘,如果沒有它,我將無法完成挑戰。
下一步
這個項目是一個很好的開始,可以端到端地展示您如何使用 M5 Core2 AWS EduKit 解決這個問題。有許多改進和未來的機會可以考慮:
- 設備注冊
我正在使用 RSA 證書身份驗證(根據 AWS 控制臺),M5 堆棧包含一個安全硬件元素。我最初試圖讓它與 arduino 一起工作的嘗試沒有奏效。AWS 在 M5 Stack 存儲庫中有一個修改過的庫,我懷疑這是它工作所必需的。
- 嘗試不同的麥克風
我想使用不同的麥克風,看看社區可能會推薦什么來提高音頻質量。
- 局部推理
一個不錯的改變是嘗試將模型推理帶到設備本身,但在 AWS 中更接近邊緣時失敗。這將減少推理時間,但是基于數據進行訓練仍然會很好,后臺上傳可能需要研究。
- 更多數據
該模型與數據一樣好,它需要更多。看看公共數據是否繼續增長將會很有趣,這可能有助于用新數據重新訓練模型并提高準確性。
- 不同的設備
因為堆棧是解耦的,我們幾乎可以使用任何記錄音頻的設備來執行此操作。我們可以利用任何可能已經在錄制音頻的現有公共服務嗎?
最后的想法
我度過了很愉快的時間來應對這個挑戰,這是對 M5 Core2 Stack 的一個很好的介紹,它是一個非常強大的設備,非常適合像這個堆棧或更復雜的堆棧這樣的快速原型設計。我喜歡 AWS IoT 如何成為您所有 IoT 相關服務的中心點,從該中心服務與 AWS 安全交互的能力使得設計和與 DynamoDB 和 Lambda 集成變得容易。
我希望這個項目對其他人有用,可以在此基礎上進行構建、擴展或獲取他們需要的部分,以使他們的原型或產品起步。
感謝 Hackster 和 AWS 將這一挑戰放在一起,并創建了一個社區以使這成為可能。
快樂編碼。
- COVID-19印度更新程序開源分享
- COVID-19最新項目
- COVID-19危機-發燒警報系統開源分享
- COVID-19消毒和監測隧道開源項目
- 自動COVID-19貨幣消毒器開源分享
- COVID-19短信警報
- COVID-19額溫槍開源分享
- COVID-19密度追蹤器開源分享
- 適用于Covid-19的免費診斷移動應用程序和DIY防護面罩
- 一款Covid 19疾病監測器開源分享
- COVID 19社交距離提醒開源分享
- 基于手勢的Covid 19面具
- covid 19使用arduino洗手
- Covid19健康監測系統
- 開源COVID 19肺呼吸機
- 堆棧和內存的基本知識 521次閱讀
- 如何使用音頻接口播放音頻文件 685次閱讀
- 如何使用Polyspace Code Prover來統計堆棧 560次閱讀
- 什么是堆棧溢出?如何分配堆棧空間大小? 4772次閱讀
- 使用D類音頻放大器診斷汽車故障 981次閱讀
- 任務堆棧的檢測方法 2827次閱讀
- 詳解C/C++堆棧的工作機制 1161次閱讀
- 一款由3D打印筆制造的針狀SARS-CoV-2基因傳感器 1840次閱讀
- 單片機堆棧的基本原理解析 4741次閱讀
- 什么是單片機堆棧?單片機堆棧有什么作用和原理說明 2w次閱讀
- 詳解單片機堆棧 6130次閱讀
- 基于單片機設計堆棧的基本概念解析 1200次閱讀
- 基于FPGA的16位堆棧處理器的設計 3541次閱讀
- 實時診斷技術:滿足汽車視音頻傳輸線路需求 1082次閱讀
- 檢測線束中的開路和短路的診斷技術 5286次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數據手冊
- 1.06 MB | 532次下載 | 免費
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費
- 3TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費
- 5元宇宙深度解析—未來的未來-風口還是泡沫
- 6.40 MB | 227次下載 | 免費
- 6迪文DGUS開發指南
- 31.67 MB | 194次下載 | 免費
- 7元宇宙底層硬件系列報告
- 13.42 MB | 182次下載 | 免費
- 8FP5207XR-G1中文應用手冊
- 1.09 MB | 178次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應用800例(新編版)
- 0.00 MB | 33566次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關電源設計實例指南
- 未知 | 21549次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數字電路基礎pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅動電路設計》 溫德爾著
- 0.00 MB | 6656次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉中文版)
- 78.1 MB | 537798次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191187次下載 | 免費
- 7十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183279次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論