电子发烧友App

硬声App

0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示
电子发烧友网>电子资料下载>电子资料>Tyhac covid 19音频诊断堆栈开源分享

Tyhac covid 19音频诊断堆栈开源分享

2022-11-04 | zip | 0.29 MB | 次下载 | 免费

资料介绍

描述

为什么选择泰哈克

在大流行开始时对 COVID-19 进行测试很困难,没有足够的测试套件可供使用,而且就可靠性而言,套件本身仍在开发中。几十年来,医生一直通过听病人咳嗽和呼吸来诊断各种疾病。研究人员已经对开发机器学习模型进行了研究,以预测患者是否患有支气管炎,我们可以将相同的方法应用于 COVID-19 吗?

是的,答案是肯定的,麻省理工学院和其他人已经做到了……并且正在制作一个应用程序……

麻省理工学院研究的关键信息之一是,他们能够使用他们训练有素的模型识别出没有病毒症状的人,事实证明咳嗽是关键。

现在,麻省理工学院这次击败了我们,但正如麻省理工学院已经指出的那样,无症状的人可能不会急于接受测试,如果麻省理工学院发布一个应用程序,它仍然需要用户下载和使用该应用程序。

Tyhac 旨在通过提供一种被动听音设备来解决这些问题,该设备可以检测咳嗽,然后对样本进行深度学习推理以确定 COVID-19 是阳性还是阴性。通过在办公室、电梯、候诊室等公共场所安装 tyhac,我们可以通过响应检测到的事件来帮助更好地保护我们的社区。我们还可以使用 tyhac 更好地了解社区在流感季节的反应,以及是否在工作场所管理健康习惯活动,以确保工人照顾好自己,并在可能的情况下使用远程工作来限制传播。

它是如何工作的?

得益于 M5 Core2 堆栈和 AWS,解决方案本身非常简单,这让一切变得非常简单。它将贯穿设备的高级设计和 AWS 配置:

现在我们对堆栈有了更好的理解,我们可以讨论一些关键特性,然后进入演示。该设备设计为在两种模式下运行:

被动的

此模式专为安装在工作场所、电梯、候诊室、办公室隔间、家庭等中的设备而开发。LM393 麦克风传感器具有可闻噪音阈值,一旦超过该阈值,SPM1423 内部 I2S 麦克风将开始录音一个 10 秒的音频样本。

临床医生(现场单位)

此模式专为医疗专业人员设计,在此模式下,设备不使用 LM393,技术上不需要。如果喜欢移动设备,该设备可以使用电池(包括在设备中)。

 
tyhac临床医生模式
 

用户会看到一个显示两个选项的菜单:

提交

此按钮旨在供医疗专业人员提交阳性样本,我已将其包含在内,以便我们接收标记样本以继续训练模型并改进预测。

测试

此按钮用于诊断患者,一旦按下按钮,它将使用内部 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 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
cloudformation tyhac 部署完成
 

恭喜,您刚刚构建了容器、函数、存储桶、数据库、物联网等。很酷!

步骤 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
使用 platformio 打开 tyhac
 

文件夹结构

文件夹结构主要基于默认的 platformio 框架,您会注意到包含的自述文件比我能更好地解释这一点。

poYBAGNkcRiAPANoAABitZGkZZI379.png
tyhac 物联网文件夹结构
 

我想强调几项:

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
platformio 工具栏
 

勾选=构建

箭头 = 上传到设备

垃圾箱/垃圾=干净

插头 = 监控串行输出

终端 = 新的 platformio 终端

使用勾选,构建项目,然后使用箭头上传到设备,终端输出将显示当前状态。一旦上传完成,它应该会自动切换到监听输出,但如果没有按下插头按钮切换到监听。

 

您可以看到在正常操作下,串行输出将提供有关 tyhac 操作方式的一些有用细节。在下一节中,我将详细介绍每个不同的指标和消息的含义。

专业提示:如果您单击工具栏中的 platformio 监视器按钮,请注意按钮位置是否像视频中那样移动。啊。

设备状态指示灯串行输出

M5 Stack Core2 AWS EduKit 在设备的两侧带有两个 RGB 条,所以我想我们也可以使用它们。现在您的设备正在运行 tyhac 固件并与 AWS 通信,您可能会注意到发生了不同的指标。

橙色 = 正在连接或处理,这可以用于 Wifi 或 AWS MQTT

绿色 = 操作正常,例如 wifi 已连接

红色 = 严重错误,很可能无法连接到 Wifi

白色 = 正常操作模式

注意:预测显示使用相同的颜色。例如正负绿色和红色。

显示屏和串行输出中的状态消息大多是不言自明的:

pYYBAGNkcSOAd42iAADrV7ysITc871.png
tyhac 串行输出
 

MQTT = 订阅、接收、连接

Heartbeat = 以当前模式每分钟向 AWS 发送一条心跳 MQTT 消息

NTP = 与远程时间服务器同步

Screen = LCD 屏幕相关项目,例如更改显示

按钮 = 切换模式,例如被动或临床医生(主动)

Tyhac 设备库

我尝试将代码拆分为库,以便更轻松地管理代码库并允许其他人使用其他项目所需的位:

pYYBAGNkcSWAaTySAAAiFxS7OH0091.png
tyhac 设备库
 

音频 = 与将音频从麦克风录制到 SD 卡相关的所有内容

env = 您的环境特定配置

mqtt = 与 AWS 发布/订阅 MQTT 相关的所有内容

ntp = 使用远程 NTP 服务器设置时钟

rgbcolor = 管理 RGB 条带

ui = 与液晶屏界面相关的一切

上传 = 与通过 HTTPS 上传 AWS S3 相关的所有内容

version = 只是一个版本文件

例如,如果您想更改 RGB 的颜色,您只需转到 lib/rgbcolor 库并使用您选择的 RGB 值更新 changeRgbColor 函数或添加不同的颜色等。

Step4:AWS-Sagemaker 可选模型训练

关于 sagemaker,我不会过多介绍。正如我之前所说,除非您想自己理解或希望维护模型,否则您不需要执行此部分。我对 sagemaker 采取的基本方法是我需要 CPUGPU 和存储,而我根本没有,AWS 以低成本按需为我们提供这些。

专业提示:我已采取措施通过使用现货市场进行培训来降低与 sagemaker 相关的成本,这应该会节省约 70% 的成本,具体取决于您所在的地区和 AWS 市场。但是,这仍然是该项目中成本最高的部分,请确保您监控成本并设置计费警报并在完成后删除任何内容。

AWS Sagemaker 工作室

我最终使用了sagemaker studio ,因为它为我提供了很多功能,我可以使用 Studio IDE 在标准浏览器中构建、训练和部署所有功能,考虑到我们的时间框架很短,这很有意义。AWS 提供了更多关于为什么首选 Studio 的信息如果您在 AWS 中有自己的设置或标准笔记本实例,您应该能够在本地执行此操作。这将进一步降低成本,但会花费您更多的时间。

创建贤者工作室

使用浏览器中的 AWS 控制台前往 sagemaker 并使用登录页面点击橙色的“SageMaker Studio”按钮。

poYBAGNkcSiAeMM1AAFLaAHn69k545.png
AWS SageMaker Studio 入门
 

使用“快速启动”选项,这将为您设置和环境所需的权限。一旦您接受配置 AWS 将开始配置您的环境,这将需要几分钟但只是一次。

当您的配置准备就绪时,您会注意到一条横幅消息,如下所示:

pYYBAGNkcSqAcJuHAABEt_qxYZQ189.png
SageMaker 工作室已准备就绪
 

您应该注意到“Open Studio”单击可用,这将启动 AWS SageMaker Studio Web IDE,以便我们开始。

poYBAGNkcSyAOijBAAAUWYJOQDM068.png
打开工作室
 

如果这不可用,您的环境可能仍在配置中,或者您需要使用“分配用户和组”按钮来关联您的用户帐户。

启动 SageMaker studio 后,您会看到一个可爱的 SageMaker 徽标加载屏幕,第一次启动往往需要更长的时间,之后会更快。

pYYBAGNkcS-AGNPaAACeDTpAeL0892.png
SageMaker 工作室加载
 

加载 Studio 后,您将进入 Studio IDE:

pYYBAGNkcTOARKTaAALh40ILYNk612.png
工作室 IDE
 

我真的很喜欢 Studio IDE,在大多数情况下,我发现它非常直观且视觉上非常好用。因为我们将添加一个 git 存储库,所以我们可以使用 git 图标来加载 tyhac 存储库并点击“克隆存储库”:

poYBAGNkcTaADYUxAAAZZRjxjr4511.png
Git 仓库
 

克隆后,您会注意到熟悉的 tyhac 代码库结构,导航到 aws-sagemaker 以使用我们需要的文件:

poYBAGNkcTiAAIfGAACppae-EkE613.png
在 Sagemaker Studio 中克隆的 tyhac 存储库
 

用于 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
泰哈克圣人
 

使用笔记本_

Studio IDE 和笔记本将为您提供运行所需的一切,只需打开笔记本并逐步浏览单元格:

pYYBAGNkcT6AWJ-PAAIuqw9qxSQ243.png
运行笔记本
 

在大多数情况下,我使用 AWS 的 tensorflow 内核并添加了几个我需要的包。您可以在 IDE 顶部更改内核。

poYBAGNkcUKAcuXqAAH74Q93s64706.png
改变内核
 

数据可视化

完成一些数据准备后,在您开始训练之前,会出现包含数据可视化的单元格,下面显示了来自 covid-19 阳性和阴性患者的样本。输出是我们用于训练的音频梅尔谱图:

pYYBAGNkcUWABfgAAAEtFAYn524249.png
缩放梅尔谱图
 
poYBAGNkcUeACn3GAAErH9sSd5g703.png
更多频谱图
 

我们可以进一步挖掘数据集以显示我们当前的标签和频谱图:

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
泰哈克模型 roc
 

在 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
删除 Studio 应用程序
 

导航到 AWS EFS

  • 选择 EFS 卷,然后删除
pYYBAGNkcVKAchPNAAEjfeFNZKY276.png
删除 EFS 卷
 

专业提示:如果您有多个卷检查标签,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 将这一挑战放在一起,并创建了一个社区以使这成为可能。

快乐编码。


下载该资料的人也在下载 下载该资料的人还在阅读
更多 >

评论

查看更多

下载排行

本周

  1. 1山景DSP芯片AP8248A2数据手册
  2. 1.06 MB  |  532次下载  |  免费
  3. 2RK3399完整板原理图(支持平板,盒子VR)
  4. 3.28 MB  |  339次下载  |  免费
  5. 3TC358743XBG评估板参考手册
  6. 1.36 MB  |  330次下载  |  免费
  7. 4DFM软件使用教程
  8. 0.84 MB  |  295次下载  |  免费
  9. 5元宇宙深度解析—未来的未来-风口还是泡沫
  10. 6.40 MB  |  227次下载  |  免费
  11. 6迪文DGUS开发指南
  12. 31.67 MB  |  194次下载  |  免费
  13. 7元宇宙底层硬件系列报告
  14. 13.42 MB  |  182次下载  |  免费
  15. 8FP5207XR-G1中文应用手册
  16. 1.09 MB  |  178次下载  |  免费

本月

  1. 1OrCAD10.5下载OrCAD10.5中文版软件
  2. 0.00 MB  |  234315次下载  |  免费
  3. 2555集成电路应用800例(新编版)
  4. 0.00 MB  |  33566次下载  |  免费
  5. 3接口电路图大全
  6. 未知  |  30323次下载  |  免费
  7. 4开关电源设计实例指南
  8. 未知  |  21549次下载  |  免费
  9. 5电气工程师手册免费下载(新编第二版pdf电子书)
  10. 0.00 MB  |  15349次下载  |  免费
  11. 6数字电路基础pdf(下载)
  12. 未知  |  13750次下载  |  免费
  13. 7电子制作实例集锦 下载
  14. 未知  |  8113次下载  |  免费
  15. 8《LED驱动电路设计》 温德尔著
  16. 0.00 MB  |  6656次下载  |  免费

总榜

  1. 1matlab软件下载入口
  2. 未知  |  935054次下载  |  免费
  3. 2protel99se软件下载(可英文版转中文版)
  4. 78.1 MB  |  537798次下载  |  免费
  5. 3MATLAB 7.1 下载 (含软件介绍)
  6. 未知  |  420027次下载  |  免费
  7. 4OrCAD10.5下载OrCAD10.5中文版软件
  8. 0.00 MB  |  234315次下载  |  免费
  9. 5Altium DXP2002下载入口
  10. 未知  |  233046次下载  |  免费
  11. 6电路仿真软件multisim 10.0免费下载
  12. 340992  |  191187次下载  |  免费
  13. 7十天学会AVR单片机与C语言视频教程 下载
  14. 158M  |  183279次下载  |  免费
  15. 8proe5.0野火版下载(中文版免费下载)
  16. 未知  |  138040次下载  |  免费