最近,我参加了一项名为“ Azure Data and AI Challenge ”的云技能挑战赛,该挑战赛由微软发起,旨在让开发人员在探索多样性和包容性的旅程中学习 Azure Data & AI 技术以及可访问性。看法。就我而言,我非常喜欢这种学习形式,因为每个模块都包含明确的目的、详细的概念解释、分步教程,以及免费的 Azure 云资源供用户练习。这让我想起了我在课堂上的经历。我们不仅要知道“什么”,还要学会知道“怎么做”。
我遇到的一个特殊学习模块称为“使用自定义视觉分类濒危鸟类”。在本模块中,我们使用 Azure 认知服务自定义视觉创建模型来识别鸟类的种类!更具体地说,我们可以构建一个机器学习模型,该模型将按物种识别图像中的鸟类。
巧合的是,上周有一个鸽子家庭加入了我们,并在我的窗前筑了一个巢。多么惊喜!今天早上他们在巢里下了两个蛋。这些小动物给我们带来了无尽的快乐。我儿子总是尽可能靠近窗户仔细观察它们。然而,当人类靠近时,鸽子看起来有点害怕。
完成学习后,我想到了一个主意。为什么不使用 Azure 自定义视觉来识别我们窗户旁边的鸟呢?但是,如果按照上面提供的学习路径中的步骤,我们应该在PC上上传图像并得到结果,这对于实时监控来说是相当不便的。经过一番思考,我决定用树莓派和网络摄像头作为物联网终端来实现日常监控。然后,我们不必出现在窗户旁边看鸟。PIR 传感器将触发过程拍摄图像,并将图像传输到 Azure 自定义视觉以获取检测结果。然后,Raspberry Pi 会将结果图像上传到 Azure Blob 存储,该存储可从 Internet 随处访问。
如果你对这个项目感兴趣,你可以学习我在这个集合中创建的路径:AI Bird的集合。我已邀请我的朋友在 Twitter:Twitter Post上完成学习模块。完成这些模块后,您就迫不及待地基于 Azure AI 和 IoT 技术制作自己的项目。
如图2所示,整个系统由Raspberry Pi终端、Azure Custom Vision、Azure Blob Storage和用户设备组成。我们将 USB 网络摄像头(或 Raspberry Pi 官方摄像头)和 PIR 传感器连接到 Raspberry Pi 以进行图像捕捉和鸟类检测。一旦鸟靠近 PIR 传感器,它就会向 Raspberry Pi 发送信号,表明某种动物正在接近。然后树莓派会通过摄像头拍照并发送到 Azure Custom Vision 服务获取结果。我们将使用 PIL 库绘制一个矩形来突出显示我们在图片中检测到的对象。最后,树莓派会将图片上传到 Azure Blob Storage 供用户在任何地方查看。
微软 LifeCam HD-3000
树莓派
PIR 传感器
HMDI 屏幕(可选)
我们将在项目中使用 Microsoft 帐户。如果没有,请申请一个。我们在这个项目中使用的所有资源都作为沙箱提供。沙盒只能用于完成 Microsoft Learn 培训。禁止出于任何其他原因使用,并可能导致永久失去对沙盒的访问权限。请注意,您沙箱中的所有资源在 4 小时内可用。一旦时间到了,它们将被丢弃。
步骤 1 至步骤 6 与模块“使用自定义视觉分类濒危鸟类”中的步骤非常相似。不同之处在于我们在这里创建了一个对象检测项目而不是分类项目。如果你只是想实现鸟类的分类,请参考学习模块中提供的步骤。
数据是我们创建机器学习模型所需的第一件事。我们将使用来自康奈尔实验室的 NABirds 数据集的一个子集来训练我们的模型。下载包含数据集的 zip 文件:bird-photos.zip
下载完成后,解压缩文件,如图 3 所示。记下文件夹位置,因为您将在后面的步骤中需要它。我们会发现,这个褶皱里总共有 16 种鸟类。每种包括大约 120 张图像。
接下来,我们将在 Azure 认知服务自定义愿景中创建一个 API 资源。
在 Azure 门户中,选择“创建资源”。
搜索自定义视觉。在搜索结果的自定义视觉卡中,选择创建。
在 Basics 选项卡上,输入或选择所需的值:
⦁ 选择您的 Azure 订阅。如果我们使用沙盒,默认订阅是 Concierge Subscription。
⦁ 默认资源组为 learn-******
⦁ 输入新自定义视觉服务资源的名称(例如,BirdCustomVisionDemo)。
⦁ 在培训资源下:将培训位置设置为最近的点。
⦁ 将培训定价层设置为免费 F0(每秒 2 次交易)。
⦁ 在预测资源下:
⦁ 将预测位置设置为我们在上面选择的位置。
⦁ 将预测定价层设置为免费 F0(每秒 2 次交易)。
⦁ 选择查看 + 创建。
⦁ 选择创建。
详情请参阅图 4。
上传图片有两种方式。首先,在自定义视觉门户中,我们可以选择、上传、然后标记图像。或者,如果我们有大量数据、图像类和标签要上传,我们可以使用自定义视觉 SDK。在这里,我们使用自定义视觉门户进行图像上传。
转到https://www.customvision.ai/projects并登录。选择新建项目。
在创建新项目中:
⦁ 对于名称,输入您选择的项目名称。
⦁ 对于描述,输入模型的简短描述。(例如,DetectBirds)。
⦁ 对于资源组,选择您在 Azure 门户中创建的资源组。
⦁ 对于项目类型,选择对象检测。
⦁ 对于域,选择常规。有关详细信息,请参见图 5。
选择创建项目。
现在,是时候在图片中为鸟类添加图像和标签了。在您的自定义视觉项目中,选择添加图像。
在Open中,转到从数据集 zip 文件中提取图像文件的birds-photo 文件夹。
打开鸟类物种文件夹。
选择Ctrl + A以选择物种文件夹中的所有图像,然后选择Open 。
上传后,我们应该在每张图片中标记对象。详情请参阅图 6。
重复上述步骤,上传下载数据集中每个鸟类文件夹中的照片。
我们已经在自定义视觉中创建了我们的数据集。现在,是时候训练我们的模型了。在自定义视觉门户中,选择我们的项目。在顶部菜单栏中,选择训练。在选择培训类型中,选择快速培训,然后选择培训。如图 7 所示。
训练完成后,有关模型如何为训练迭代执行的信息如图 8 所示。
当我们测试您的模型时,Custom Vision 会显示三个指标。指标是可以帮助您了解模型执行情况的指标。这些指标并不表明模型的真实性或准确性。指标仅告诉您模型对您提供的数据的执行情况。模型在已知数据上的表现如何让您了解模型在新数据上的表现。
精度:如果您的模型预测标签,则此指标表明预测正确标签的可能性有多大。
回忆:在模型应该正确预测的标签中,该指标表示您的模型正确预测的标签的百分比。
平均精度:通过计算不同阈值的精度和召回率来衡量模型性能。
让我们测试我们的模型,看看它在看不见的数据上的表现如何。我们将使用来自互联网搜索的鸟的图像。
在自定义视觉门户中,选择我们的项目。在顶部菜单栏中,选择快速测试。在 Quick Test 中,将 URL 粘贴到 Image URL 中,然后按 Enter 以测试模型的准确性。预测如图 9 所示。我们会发现结果包括图像中的对象坐标,用红色矩形突出显示。
我们可以通过获取预测 URL 或在应用程序中使用 API 来部署到端点。
在自定义视觉门户顶部菜单栏中,选择性能。选择发布。在Publish Model中,选择Prediction资源,然后为您的 Custom Vision 项目选择预测的名称。选择发布。
选择预测 URL选项卡。在如何使用预测 API中,我们可以得到如图 10 所示的 Key。
此外,我们将获取 Endpoint 和 Project ID 以供进一步使用。可以在设置页面上访问它们,如图 11 所示。
在这个项目中,需要一个树莓派、一个 USB 网络摄像头(树莓派官方的摄像头可以)和一个 PIR 传感器。如果您有 HDMI 屏幕,您可以直接在屏幕上看到结果。如果没有,您可以在 Raspberry Pi 上安装 VNC 服务器,并在您的 PC 或其他移动设备上通过 VNC 客户端与它进行交互。以下是我使用的模块:
⦁ 微软 LifeCam HD-3000
⦁ 树莓派 4
⦁ PIR 传感器。
⦁ Waveshare 7寸 HDMI LCD (B) (800*480)
PIR Sensor 配备三个引脚,即 Vcc、GND 和 Out。Vcc 和 GND 将连接到 Raspberry Pi 上的 5V 和 GND 引脚,而 Out 引脚将连接到 BCM 引脚 NO。4、原型如图12所示。
我们将使用 Azure 自定义视觉 Python SDK、Azure 存储博客 Python SDK 和 USB 摄像头。然后我们将使用 pip 工具和 apt-get 安装必要的组件,如下所示。
pip3 install azure-cognitiveservices-vision-customvision
pip3 install azure-storage-blob
pip3 install msrest
sudo apt-get install fswebcam
若要创建 Azure 存储帐户并查看有关如何使用适用于 Python 的 Azure 存储 Blob 客户端库的更多信息,请参阅此文档:适用于 Python 的 Azure 存储 Blob 客户端库。
可以在 Azure 门户上查看连接字符串,如图 13 所示。
您可以从 Github 下载 python 代码:https ://github.com/shijiong/AzureCustomVisionBirdDemo 。请确保您在第 14 行至第 17 行输入了您的自定义视觉项目的预测密钥、预测端点、项目 ID 和发布迭代名称。第 19 行至第 21 行中的连接字符串、容器名称和 blob 名称应为换成你的。详情请参阅图 14。
其次,在第 33 行,我们将图像分辨率指定为 1280*720,这在您的项目中可能会有所不同。很重要的一点是,我们会根据第 46 行的预测 API 的结果在图像上绘制一个矩形。如果图像的分辨率不同,我们应该改变它,否则我们将无法获得识别对象的正确位置在图像上。
第三,我在第 41 行将预测概率的阈值设置为 0.9,您可以更改它以满足您的场景。
最后,如果你想在树莓派上查看预测图像,你可以取消注释第 49 到 52 行的代码。但是,上传过程将被阻止,直到你关闭图像。
我将设备部署在我的窗户旁边。将代码复制到您的 Raspberry Pi,使用 Thonny(Raspberry Pi 上预装的 Python IDE)打开它,然后运行。触发 PIR 传感器后,将捕获图像并将其传输到 Azure 自定义视觉以获取预测结果。如图 15 所示,识别的对象将被红色矩形突出显示。
最后,图像将被传输到 Azure Blob Storage,如图 16 所示。您可以在任何地方查看它。
在本教程中,我们设计了一个基于 Azure Custom Vision、Azure Blob Storage 和 Raspberry Pi 的鸟类检测器。然后给出了数据集上传、数据训练、模型部署、硬件搭建和操作流程的演示。希望这对那些需要在 Raspberry Pi 设备上使用 Azure 自定义视觉服务的人有用。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !