博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
将人工智能带到物联网边界设备(2)
阅读量:5292 次
发布时间:2019-06-14

本文共 2779 字,大约阅读时间需要 9 分钟。

 

IOT Edge最大的一个优势和特性就是可以把用户的业务逻辑,预处理,机器学习,人工智能等模块部署在边界设备上,部署的方式就是容器方式,在IOT edge上被称为一个模块。

 

  1. 登录到Azure的portal上,选择之前注册的IOT Edge设备,选择Set Module

  1. 选择" Add IOT Edge Module",输入相应参数,这里我们使用一个demo的模块温度传感器的模块来做测试, URI是microsoft/azureiotedge-simulated-temperature-sensor:1.0-preview

  1. 选择下一步可以选择消息在不同的模块之间通讯,暂时不用修改,选择下一步即可:

 

  1. 重新看一下最终部署的模块,并选择提交,在设备详细信息主界面,你可以看到有3个模块在设备上运行,EdgeAgent,EdgeHUb和我们刚才配置的tempSensor:

在我们的模拟终端设备上使用docker ps查看,也可以看到有3个容器在运行:

也可以查看正在发送的数据:

  1. 打开你本地的Visual Studio Code,安装Azure IOT Toolkit插件:

 

配置IOT Hub的连接字符串,连接串可以通过登陆Azure的portal,点击共享访问策略得到,连接成功后,,单击右键,选择"Start monitoring D2C messages",可以看到当前IOT Edge设备只是收集和直接发送数据,并无任何处理:

 

 

部署IOT Edge机器学习模块

 

Azure新一代机器学习服务,提供了一个强大的端到端的全生命周期的机器学习系统,从数据的处理,模型的训练,模型的管理,模型的发布都提供了完善的支持。通过Azure ML训练的模型,无论是机器学习模型,图像识别,语音识别等等,一样可以快速的发布在IOT Edge,通过这样的方式,真正将人工智能带到边界设备。

接下来我们介绍如何将机器学习模型部署到模拟的边界设备上,针对当前设备情况做最基本的诊断:

  1. Azure提供了比较丰富的将Azure ML部署到IOT Edge的例子,在这里我们选择异常检测的机器学习模型,更多的模型可以参考:

    克隆该repo,并且进入目录IoT Edge anomaly detection tutorial目录,该目录下有两个文件,iot_score.py用来接受输入的参数,model.pkl是机器学习模型用来对异常进行检测。

     

  2. 请注意,Azure ML CLI和Azure CLI目前是分开的,需要单独安装,否则会报az ml无法找到的命令:

pip install -r

  1. 首先创建一个机器学习实验账号

az ml account experimentation create -n mymldemo -g myaksdemo -l eastus2

  1. 注册相应的provider并设置本地执行环境::

az provider register -n Microsoft.MachineLearningCompute

az provider register -n Microsoft.ContainerRegistry

az provider register -n Microsoft.ContainerService

 

az ml env setup -l eastus2 -n mymlenv -g myaksdemo

 

az ml env set -n mymlenv -g myaksdemo

 

  1.  创建模型管理账户

     

    az ml account modelmanagement create -l eastus2 -n mymldemo -g myaksdemo --sku-instances 1 --sku-name S1

  2. 创建机器学习模型并提交到容器注册表:

    az ml service create realtime --model-file model.pkl -f iot_score.py -n machinelearningmodule -r python

     

  3. 获得容器注册表的相关信息:

    az acr list -o table

    az acr credential show --name mlcrpacreb1907133456

     

  4. 将容器注册表添加到边缘设备,以便于注册表中的容器可以部署到边界:

    iotedgectl login --address mlcrpacreb1907133456.azurecr.io --username mlcrpacreb1907133456 --password jtTVyKwDQ=blPFuwDEBbkWXVyZFwvOqi

     

  5. 添加machine learning模块,保存后,选择下一步:

     

  6. 那么不同的两个边界设备模型之间如何通讯呢?这个时候就用到了设备设置的路有模块,在路由界面中,拷贝如下json片段:

    {

    "routes": {

    "sensorToMachineLearning":"FROM /messages/modules/tempSensor/outputs/temperatureOutput INTO BrokeredEndpoint(\"/modules/abnormalmlmodule/inputs/amlInput\")",

    "machineLearningToIoTHub": "FROM /messages/modules/abnormalmlmodule/outputs/amlOutput INTO $upstream"

    }

    }

第一句路由是将之前传感器处理的数据收集,但数据的处理对象是机器学习,第二句是数据经过机器学习模块处理之后,然后再发送回IOT Hub,其实智能的处理已经发生在边界,数据传回之前。添加完成后,点击提交,需要一点时间容器被部署到边界,状态变成running:

 

  1. 使用VSCode的IOT插件进行监控,从实际的处理结果我们也可以看到,机器学习模型接收基基本的输入数据,通过模型来判断数据是否为异常,设置异常标识(注意接收消息里面的anomaly项),将最终的结果返回给云端IOT Hub:

 

从这个例子我们可以看到,微软的IOT Edge结合了Azure新一代的机器学习服务,当然你可以写自己的逻辑和代码,将机器学习模型通过容器的image发布,然后通过设备管理发送到边界,在物联网的边界设备上实现了人工智能服务,这种技术可以广泛的运用于多种不同的场景,例如车联网,石油勘探,面部检测,终端图像识别等等,为将AI带到任何地方设置了清晰的技术路线。

转载于:https://www.cnblogs.com/cloudapps/p/8671821.html

你可能感兴趣的文章
转载:编剧技巧思路乱谈
查看>>
Linux centos7 rsync工具介绍、rsync常用选项、rsync通过ssh同步
查看>>
函数堆栈
查看>>
关于在linux系统下安装jdk
查看>>
请帮我看看这个页面,红色部份如何改才能保存到ACCess数据库中
查看>>
Oracle数据库初学者入门教程
查看>>
PHP实现栈(Stack)数据结构
查看>>
python常见问题及解决
查看>>
[原创]Java 的传值小例子
查看>>
【MySQL学习】安装和配置 服务无法启动 没有报告任何错误
查看>>
C# 修饰符
查看>>
JavaScript启示录
查看>>
我需要什么样的浏览器?
查看>>
取textaera里的值
查看>>
java设计模式1--工厂方法模式(Factory Method)
查看>>
博客第一弹—聊聊HTML的那些事
查看>>
上海2017QCon个人分享总结
查看>>
HIVE快速入门 分类: B4_HIVE 2015-...
查看>>
Mysql安装方法及安装问题解决
查看>>
Java动态代理的两种实现方式:
查看>>