利用 Amazon Rekognition 自定义标签检测太阳能面板损坏
作者 Ramakant Joshi Shekar Tippur Anand Iyer发布时间 2023年2月20日来源 Amazon Machine Learning
关键要点
本文介绍了如何使用 Amazon Rekognition 自定义标签识别受损的太阳能面板。随着太阳能的普及,对面板损坏检测的需求不断增加。使用 AWS 管理的 AI 服务可以提供更简单和成本效益更高的解决方案。SOLVED 项目所使用的机器学习框架能够对损坏的太阳能面板进行实时检测。企业在确保产品符合生产标准和避免潜在品牌声誉损害时,常常会进行质量控制。随着传感器成本的降低和连接性的提高,各行业正在采用实时图像分析来检测质量问题。与此同时,人工智能AI的进步使得先进的自动化成为可能,能够降低整体成本和项目时间,并制造出准确的缺陷检测结果。在这些技术逐渐成熟的背景下,基于 AI 的检查在工厂环境之外的应用越来越普遍。
解决方案概述
本文描述了我们的 SOLVEDSolar Roving Eye Detector项目,该项目利用机器学习ML通过 Amazon Rekognition Custom Labels 来识别损坏的太阳能面板,并及时警告操作员采取纠正措施。
随着太阳能使用的增加,检测面板损坏的需求也在上升。采用 AWS 管理的 AI 服务比人工检查太阳能面板或定制开发的生产应用程序更简单、更具成本效益。客户可以直接从现场捕获并处理视频,并在不需要建立专业数据科学团队的情况下构建有效的计算机视觉模型。这一点可以广泛应用于不同行业的用例,例如检测风力涡轮机、手机塔、汽车零部件及其他现场设备的缺陷。
Amazon Rekognition Custom Labels 构建于已有的服务能力之上,已针对数百万张跨类别图像进行了训练,以识别其中的对象和场景。用户只需将一小部分训练图像通常不超过几百张上传至控制台。解决方案将自动加载和检查训练数据,选择合适的 ML 算法,训练模型并提供模型性能指标。然后,用户可以通过 Amazon Rekognition Custom Labels API 将自定义模型集成到应用程序中。
操作步骤
本文将介绍在 reInvent 2021 Builders Fair 上展出的 SOLVED 项目,将涵盖以下内容:
太阳能面板损坏检测的必要性涉及云端的方案以获取、存储、处理、分析和检测受损的太阳能面板展示一个系统图,说明如何从 Raspberry Pi 流式传输视频,将其存储在 Amazon Simple Storage Service (Amazon S3),然后使用 AWS 解决方案处理这些视频,并通过 Amazon Rekognition 进行损坏推断介绍一个模拟操作中心的控制台以便采取必要的措施演示 AWS IoT Core 与 Philips Hue 智能灯泡的连接,提醒操作员前提条件
在开始之前,请查看该解决方案的以下前提条件:
本文假设您对 AWS Lambda、Amazon Kinesis Video Streams、AWS IoT Core 和 AWS 身份与访问管理IAM 有一定了解。拥有一个可以创建安装步骤中所述资源的 AWS 账户。有一个 AWS IAM 用户,具有后文描述的权限。能够接触到 Freenove 4WD 智能小车,Raspberry Pi,以及 Philips Hue 智能灯泡。SOLVED 项目
SOLVED 项目利用机器学习识别损坏的太阳能面板,涉及以下四个步骤:
数据获取:从移动的巡检车实时采集太阳能面板视频并上传到 Amazon S3 桶中。预处理:将捕获的视频切分成缩略图。处理与可视化:使用 ML 模型实时推断,识别损坏面板,并提供查看图像和预测分数的仪表板。警报:检测到受损板后,通过 MQTT 消息发送通知点亮智能灯泡。系统架构如图 1 所示。
安装步骤
让我们逐步回顾该用例中的每个步骤。
数据获取
SOLVED 项目的数据获取层由持续的视频流组成,视频是随着移动的巡检车经过一片太阳能面板时捕获的。
我们使用一辆装有 Raspberry Pi 的 Freenove 4WD 智能小车,安装的摄像头在移动过程中捕获视频。我们在 Pi 上安装了 Amazon Kinesis Video Streams 生产者,并将实时视频流传送至名为 reinventbuilder2021 的 Kinesis 视频流。
图 2 显示了 reinventbuilder2021 的 Kinesis 视频流设置窗口。
要开始流式传输,请按照以下步骤操作。
使用 Amazon Kinesis Video Streams 开发者指南 创建新的 Kinesis 视频流。记下 Amazon 资源名称ARN。在 Pi 上访问命令提示符并使用 aws sts getsessiontoken 获取临时凭证。IAM 用户应具备 Kinesis 视频流 PutMedia 的权限。设置以下环境变量:
bashexport AWSDEFAULTREGION=useast1export AWSACCESSKEYID=xxxxxexport AWSSECRETACCESSKEY=yyyyyexport AWSSESSIONTOKEN=zzzzz
使用下面的命令启动流媒体:
bashcd /amazonkinesisvideostreamsproducersdkcpp/build/kvsgstreamersample reinventbuilder2021
在控制台上查看媒体回放以验证捕获的流。
图 3 显示了视频流控制台,包括媒体回放选项。
接下来,我们将有两种方式来提取视频片段。
您可以使用视频流控制台上的下载片段按钮,如图 4 所示。
作为替代,您还可以使用以下命令行脚本:
bashONEMINAGO=(date v 30S u FTT0000)NOW=(date u FTT0000)
FILENAME=reinventbuildersolvedRANDOMmp4echo FILENAMES3PATH=s3//videoondemandsplittersourcee6lyof9qjv1j/
aws kinesisvideoarchivedmedia getclip endpointurl KVSDATAENDPOINT streamname reinventbuilder2021 clipfragmentselector FragmentSelectorType=SERVERTIMESTAMPTimestampRange={StartTimestamp=ONEMINAGOEndTimestamp=NOW} FILENAME
echo Running getclip for stream
sleep 45
aws s3 cp FILENAME S3PATHecho copying file FILENAME TO S3PATH
提取的片段将存放在使用 AWS CloudFormation 创建的 Amazon S3 源文件夹中,如图 5 所示。
预处理
为了处理视频,我们利用了 AWS 的视频点播解决方案。该解决方案使用 AWS Elemental MediaConvert 对视频文件进行编码,具备以下功能:
自动转码上传到 Amazon S3 的视频,以适应各种设备的播放格式。通过上传定制文件和采用不同的输入设置,自定义 MediaConvert 作业设置。将转码后的视频文件存储在目标 Amazon S3 存储桶中,并使用 CloudFront 将其交付给最终观众。提供的输出包括输入文件元数据、作业设置和输出细节,此外还生成一个包含转码后视频的单独 JSON 文件,供进一步处理。对于我们的用例,使用该解决方案的帧捕获功能,从源视频中创建了一组缩略图。缩略图存储在 Amazon S3 桶中,与视频输出一起。
要部署此解决方案,请使用 CloudFormation 样板。
处理与可视化
每个训练的 ML 模型都需要高质量的训练数据。我们从公开可用的太阳能面板图像开始,这些图像被分类为“良好”或“缺陷”,我们将图像上传到 Amazon S3 桶的相应文件夹中。
接下来,我们配置 Amazon Rekognition Custom Labels,将文件夹指示为模型训练和部署所需的标签。利用巡检车记录到的良好和损坏的太阳能面板视频,并利用这些标注的信息进行训练。视频随后通过 MediaConvert 切分为单独的帧图像,得到了一个良好标注的数据集,用于驱动我们使用 Amazon Rekognition Custom Labels 训练的模型。
我们通过模型端点在不同地点的太阳能面板上推断出损坏情况。AWS Elemental MediaConvert 加快了训练集的策划过程,而使用 Amazon Rekognition 创建模型和端点则相对简单。
如图 6 所示,我们使用了 7000 张图像的训练集,其中良好和损坏的面板各占一半。
良好面板图像示例如图 7 所示。

损坏面板图像示例如图 8 所示。
在此用例中,我们达到了90的模型准确率。
为了可视化结果,我们采用了 AWS Amplify 提供操作员界面,以便识别损坏的面板。
图 9 展示了操作员仪表板的屏幕截图,显示了来自 Amazon Custom Labels Rekognition 模型对良好与缺陷面板的输出。
警报
维护团队必须被通知以便对受损面板采取纠正措施。为了生成警报,我们配置了 AWS IoT Core 发送 MQTT 消息给 Philips Hue 智能灯泡,红灯表明面板受到损坏。有关 Philips Hue API 的设置,请使用 Hue 开发指南。
例如,下面的 API 更改灯泡颜色:
httpPUT https//192xxxxxx/api/xxxxxxx/lights/1/state{ontrue sat254 bri254hue20000}
此命令将颜色更改为绿色。
http{ontrue sat254 bri254hue1000}
此命令则将灯泡颜色更改为红色。
我们在 Pi 上设置了一个客户端,监听 AWS IoT Core 的 MQTT 主题,并向 Philips Hue 发出 API 请求。
要将设备连接到 AWS IoT,请完成以下步骤:
一元机场 ink创建 IoT 设备、设备证书和 AWS IoT 策略。AWS IoT 设备表示一个物理设备此处指 Raspberry Pi,并包含静态设备元数据,如图 10 所示。创建设备证书以连接并进行身份验证所需,示例如图 11 所示。将 AWS IoT 策略与每个设备证书关联,用以确定设备可以访问哪些 AWS IoT 资源。在此案例中,我们赋予了 iot 的权限,允许设备访问所有 IoT 资源,如图 12 所示。设备和其他客户端使用 AWS IoT 根 CA 证书 进行身份验证,确保它们连接到正确的服务器。有关设备如何与 AWS IoT Core 进行身份验证的更多信息,请参考 服务器身份验证。
为便于与 Philips Hue 通信,我们使用了 Qhue 封装 ,如图 13 所示。
![Qhue 封装](https//d2908q