点击观看视频
内容作者:
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 仪表板上进行直观显示。
本文介绍了如何安装、部署与定制该参考实现。
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。
from AWSIoTPythonSDK.MQTTLib import AWSIoTMQTTClient
import json
# 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 MQTT 参数
host = args.host
rootCAPath = args.rootCAPath
certificatePath = args.certificatePath
privateKeyPath = args.privateKeyPath
port = 8883
clientId = args.clientId
topic = args.topic
#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()
#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)
def__init__(self,manager,worker,db,models,num_reqs,last_frame_id,min_distances,show_period,no_show,grid_sizes,display_resolution,topic,myAWSIoTMQTTClient):
self.topic = topic
self.myAWSIoTMQTTClient = myAWSIoTMQTTClient
timestamp=datetime.datetime.utcnow().strftime("%Y-%m-%d %H:%M:%S.%f")[:-3]
#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)
a. Value - ${time_to_epoch(timestamp, “yyyy-MM-dd HH:mm:ss.SSS”)}
b. Unit - MILLISECONDS
a. 将主机上的 Grafana 升级到最新版本;
b. 添加 AWS timestream 插件;
c. 使用您的凭证配置 AWS 插件;
d. 配置您的仪表板。
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"
违反社交距离规定的行为将在视频中被标记出来,用户可通过仪表板监控性能。
更多用例和软件产品
开发人员都希望开发出可定制的 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 岁,并同意向英特尔分享个人信息,以便通过电子邮件和电话随时了解最新英特尔技术和行业趋势。您可以随时取消订阅。英特尔网站和通信内容遵守我们的隐私声明和使用条款。