英特尔®边缘技术与 AWS 亚马逊云服务协同构建 AI+IoT 推理方案

点击观看视频

英特尔®边缘技术与 AWS 亚马逊云服务

协同构建AI推理方案

内容作者:

Vibhu Bithar,

Chen Su

Devang Aggarwal

内容翻译:

马小龙

2020 年是转型之年。全球新冠疫情从根本上改变了人们彼此互动的方式。在疫情加剧之际,保持社交距离对于我们创造安全的环境变得至关重要。通过在边缘部署 AI 和计算机视觉,英特尔和 AWS 团队推出了社交距离检测参考实现,开发人员只需一键安装和适当的定制操作,便可在您当地的社区扩展该技术。在本博文中,我们介绍了云边协同架构的优势、基于英特尔和 AWS 技术所开发的参考实现、以及更多帮助改善人类生活的用例。

链接

https://software.intel.com/content/www/us/en/ develop/articles/multi-camera-monitoring-reference-implementation.html

英特尔® 边缘技术与 AWS 亚马逊云服务协同创新

在新冠疫情爆发后,世界各地的许多医学专家均表示保持社交距离是预防这种疾病传播的最有效的非药物方法之一。

为了支持当前的疫情防控,英特尔推出了一款强大的参考实现,通过英特尔® OpenVINO™ 工具套件分发版实施计算机视觉推理,以测量人们之间的社交距离并将数据保存至 InfluxDB,进而帮助抑制疫情传播。这些数据可在 Grafana 仪表板上进行直观显示。

英特尔®边缘技术与 AWS 亚马逊云服务协同构建 AI+IoT 推理方案_第1张图片

本文介绍了如何安装、部署与定制该参考实现。

1.复制、粘贴下方链接到网页打开,根据文档说明安装社交距离检测参考实现:

https://software.intel.com/content/www/us/en/develop/articles/multi-camera-monitoring-reference-implementation.html

2.复制、粘贴下方链接到网页打开,按照说明,在装有参考实现 的机器上安装 AWS IoT python SDK:

https://docs.aws.amazon.com/greengrass/latest/developerguide/IoT-SDK.html

3.复制、粘贴下方链接到网页打开,按照说明在云端配置 AWS 组件并下载证书:

https://docs.aws.amazon.com/greengrass/latest/developerguide/device-group.html

4.在“main.py”中修改代码,将设备连接至AWS IoT并将数据发送至 AWS cloud。

  • 添加Import导入语句

英特尔®边缘技术与 AWS 亚马逊云服务协同构建 AI+IoT 推理方案_第2张图片

from AWSIoTPythonSDK.MQTTLib import AWSIoTMQTTClient
import json
  • 添加代码段以获取更多命令行参数,以集成 AWS IoT
    英特尔®边缘技术与 AWS 亚马逊云服务协同构建 AI+IoT 推理方案_第3张图片
# AWS MQTT client parameter arguments
parser.add_argument("-e", "--endpoint", action="store", required=True, dest="host", help="Your AWS IoT custom endpoint")
parser.add_argument("-r", "--rootCA", action="store", required=True, dest="rootCAPath", help="Root CA file path")
parser.add_argument("-c", "--cert", action="store", dest="certificatePath", help="Certificate file path")
parser.add_argument("-k", "--key", action="store", dest="privateKeyPath", help="Private key file path")
parser.add_argument("-id", "--clientId", action="store", dest="clientId", default="basicPubSub",help="Targeted client id")
parser.add_argument("-t", "--topic", action="store", dest="topic", default="sdk/test/Python", help="Targeted topic")
  • 使用参数变量设置局部变量。
    英特尔®边缘技术与 AWS 亚马逊云服务协同构建 AI+IoT 推理方案_第4张图片
#AWS MQTT 参数
host = args.host
rootCAPath = args.rootCAPath
certificatePath = args.certificatePath
privateKeyPath = args.privateKeyPath
port = 8883
clientId = args.clientId
topic = args.topic
  • 添加代码段以初始化 MQTT 客户端并设置连接配置。
    英特尔®边缘技术与 AWS 亚马逊云服务协同构建 AI+IoT 推理方案_第5张图片
#Setup AWS MQTT Client
myAWSIoTMQTTClient = AWSIoTMQTTClient(clientId)
myAWSIoTMQTTClient.configureEndpoint(host, port)
myAWSIoTMQTTClient.configureCredentials(rootCAPath, privateKeyPath, certificatePath)
 
# AWSIoTMQTTClient connection configuration
myAWSIoTMQTTClient.configureAutoReco-nnectBackoffTime(1, 32, 20)
myAWSIoTMQTTClient.configureOfflinePublishQueueing(-1)  # Infinite offline Publish queueing
myAWSIoTMQTTClient.configureDrainingF-requency(2)  # Draining: 2 Hz
myAWSIoTMQTTClient.configureDrainingFr-equency(2)  # Draining: 2 Hz
myAWSIoTMQTTClient.configureConnectDi-sconnectTimeout(10)  # 10 sec
myAWSIoTMQTTClient.configureMQTTOp-erationTimeout(5)  # 5 s
 
# Connect  to AWS IoT
myAWSIoTMQTTClient.connect()
  • 将topic和 AWS MQTT 客户端对象添加到 Context 类。
    英特尔®边缘技术与 AWS 亚马逊云服务协同构建 AI+IoT 推理方案_第6张图片
#Adding topic and AWS MQTT client object to context so it can be shared across the code
context = Context(manager, worker, db, models, num_reqs, args.input_queue_size - 1, ch_min_dist, show_period, args.no_show, grid_sizes,resolution,topic,myAWSIoTMQTTClient)
  • 将变量添加到Context类的 init 函数。
    英特尔®边缘技术与 AWS 亚马逊云服务协同构建 AI+IoT 推理方案_第7张图片
def__init__(self,manager,worker,db,models,num_reqs,last_frame_id,min_distances,show_period,no_show,grid_sizes,display_resolution,topic,myAWSIoTMQTTClient):
  • 使用传递到 Context 类的 init 函数的值初始化局部变量。

英特尔®边缘技术与 AWS 亚马逊云服务协同构建 AI+IoT 推理方案_第8张图片

self.topic = topic
self.myAWSIoTMQTTClient = myAWSIoTMQTTClient
  • 修改 update_social_violations 函数,将数据发送至 AWS IoT。
    英特尔®边缘技术与 AWS 亚马逊云服务协同构建 AI+IoT 推理方案_第9张图片

  • 以特定格式添加时间戳,将其发送至 AWS TimeStream 数据库。

timestamp=datetime.datetime.utcnow().strftime("%Y-%m-%d %H:%M:%S.%f")[:-3]
  • 添加代码段以创建 MQTT 消息并发布到 AWS IoT。
#This section will Publish  people count and violations to AWS IoT main topic
 
#creating the message
message_indivChannel = {}
message_indivChannel['channel_id'] = str(ch_id)
message_indivChannel['people_count'] = people_count
message_indivChannel['social_distancing_ violation'] = viol_count
message_indivChannel['timestamp'] = timestamp
 
#converting to JSON format
 
message_indivChannel_json = json.dumps(message_indivChannel)
 
#calling MQTT Client publish message
 
self.myAWSIoTMQTTClient.publish (self.topic,message_indivChannel_json, 1)
  1. 配置AWS IoT,以将数据存储到 Timestream 数据库。
  • 添加新规则

英特尔®边缘技术与 AWS 亚马逊云服务协同构建 AI+IoT 推理方案_第10张图片

  • 添加规则查询语句

英特尔®边缘技术与 AWS 亚马逊云服务协同构建 AI+IoT 推理方案_第11张图片

  • 添加操作,选择 Timestream 表

英特尔®边缘技术与 AWS 亚马逊云服务协同构建 AI+IoT 推理方案_第12张图片

  • 配置 Timestream 操作

英特尔®边缘技术与 AWS 亚马逊云服务协同构建 AI+IoT 推理方案_第13张图片

  • 创建一个新的数据库

英特尔®边缘技术与 AWS 亚马逊云服务协同构建 AI+IoT 推理方案_第14张图片

  • 创建一个新表

英特尔®边缘技术与 AWS 亚马逊云服务协同构建 AI+IoT 推理方案_第15张图片

  • 将尺寸设置为 channel_ id
  • 注意,尺寸不能是“整数”

英特尔®边缘技术与 AWS 亚马逊云服务协同构建 AI+IoT 推理方案_第16张图片

  • 针对MQTT payload中的数据设置时间戳

a. Value - ${time_to_epoch(timestamp, “yyyy-MM-dd HH:mm:ss.SSS”)}

b. Unit - MILLISECONDS

  • 创建角色

英特尔®边缘技术与 AWS 亚马逊云服务协同构建 AI+IoT 推理方案_第17张图片

  1. 设置 Grafana。

a. 将主机上的 Grafana 升级到最新版本;

b. 添加 AWS timestream 插件;

c. 使用您的凭证配置 AWS 插件;

d. 配置您的仪表板。

  1. 更新 run.sh 文件。

英特尔®边缘技术与 AWS 亚马逊云服务协同构建 AI+IoT 推理方案_第18张图片

python3 main.py --person_detector "$PERSON_DETECTOR" -d1 $DEVICE1 \
     -m1_height $MODEL1_INPUT_HEIGHT -m1_width $MODEL1_INPUT_WIDTH \
     --width $WIDTH --height $HEIGHT  -n_s $NUM_SOURCES -n_c $NUM_CHANNELS \
     -n_th $NUM_THREADS -i_q $INPUT_QUEUE_SIZE -i "$INPUT1" "$INPUT2"  \
        -min_social_distances $MIN_SOCIAL_DIST1 $MIN_SOCIAL_DIST1   -decode_device $DECODE_DEVICE \
        -e "anee81iss8x57-ats.iot.us-west-2.amazonaws.com" -r "/home/vibhu/VibhuSocialDistancingData/AmazonRootCA1.pem" \
        -c "/home/vibhu/VibhuSocialDistancingData/ac597af7e1-certificate.pem.crt" -k "/home/vibhu/VibhuSocialDistancingData/ac597af7e1-private.pem.key" \
        -id "ieitank1" -t "esh/socialDistancing"
  1. 运行带有示例视频的应用。

违反社交距离规定的行为将在视频中被标记出来,用户可通过仪表板监控性能。

英特尔®边缘技术与 AWS 亚马逊云服务协同构建 AI+IoT 推理方案_第19张图片

更多用例和软件产品

开发人员都希望开发出可定制的 AI 解决方案以解决实际问题。在识别出实际问题后,加快上市时间、降低开发成本并借助强大的生态系统进行扩展也至关重要。为实现以上的需求,英特尔在英特尔® 边缘软件中心上为开发人员提供了各类可直接部署、可复用的容器化软件包和用例。开发人员可以快速找到针对各类实际问题的参考实现,包括大量边缘到云端 AI 应用示例代码、使用教程和文档。

链接:

https://software.intel.com/content/www/us/en/develop/topics/iot/edge-solutions.html

更多资源

复制粘贴以下链接到网页,根据文档说明安装社交距离参考实现方案:

https://software.intel.com/content/www/us/en/develop/articles/multi-camera-monitoring-reference-implementation.html

复制粘贴以下链接到网页,按照说明在装有 RI 的机器上安装 AWS IoT python SDK:

https://docs.aws.amazon.com/greengrass/latest/developerguide/IoT-SDK.html

复制粘贴以下链接到网页,按照说明在云端配置 AWS 组件并下载证书:

https://docs.aws.amazon.com/greengrass/latest/developerguide/device-group.html

通知和免责声明

英特尔技术可能需要支持的硬件、特定软件或服务激活。
没有任何产品或组件是绝对安全的。
您的成本或结果可能有所差异。
© 2020 年英特尔公司。特尔、英特尔标识以及其他英特尔商标是英特尔公司或其子公司在美国和/或其他国家的商标。其他的名称和品牌可能是其他所有者的资产。
英特尔和英特尔标识是英特尔公司或其子公司的商标。

关注英特尔边缘计算社区,表示您确认您已年满 18 岁,并同意向英特尔分享个人信息,以便通过电子邮件和电话随时了解最新英特尔技术和行业趋势。您可以随时取消订阅。英特尔网站和通信内容遵守我们的隐私声明和使用条款。

你可能感兴趣的:(开发者分享,视频)