AIoT即融合了AI(人工智能)和IoT(物联网)的技术,图形图像处理是人工智能领域中重要的一个分支,在日常生活中也存在大量基于图形图像的处理的场景:比如交通违章抓拍,基于视觉的司机防疲劳监测,家用摄像机的老人摔倒报警等功能;对于物联网则在智能家居,网联汽车,智慧供应链等场景下有句他的市场应用。 随着科技的发展,越来越多的细分场景要求尽可能多的将基于图形图像的AI技术和IoT技术结合在一起,比如工厂工地的安全帽检测,疫情状态下进入商场的是否佩戴口罩检测,基于视觉的ADAS高级驾驶辅助系统等等,面对这些日益增长的需求,如何快速落地一个AIOT项目变得更为重要,实际上,喊着“INVENT WITH PURPOSE”口号微软云Azure上提供了几个非常有趣的的工具就可以帮助我们快速的实现AIOT创新。接下来我们以“消防通道,禁止占用”为例,看下如何利用微软云提供的工具落地这个场景。
1. Azure IoT Hub
Azure IoT Hub是一个可承载“百万级[1]”设备的云端“网关”服务,主要提供了IoT 设备的身份验证,设备和云端的双向通讯,设备OAT,设备管理,安全等功能。
我们依次看下这几个功能对应的场景:
设备身份验证:
设备身份验证是设备和云交互的第一步,必须验证了设备的合法身份,才允许设备向云端发起数据请求。
设备和云的双向通讯:
所谓双向通讯,比如智能空调,从空调上报室温到云端后呈现在手机,实际上是一个设备上传“遥测”数据的过程;从手机上远程“控制”空调设定某个温度,即通过云端“反向控制”设备的过程
设备OTA:
设备OAT(Over-the-Air Technology),该技术最响亮的场景应该是智能汽车通过OTA升级最新的功能,实际上OTA通常会包含设备操作系统层面的更新和操作系统上的应用程序的更新。
设备管理:
这是IoT系统的重要基础,所谓设备管理,主要是在维护某个IoT系统所包含的设备的“数据库”,这个数据库里记录着有多少台设备是可以连接到平台的,每台设备当前的运行状态是什么,是否对这些设备进行了逻辑的分组比如某个商场的某些自动扶梯,哪些设备可以在什么时间段执行一些耗时操作,比如硬件版本为1.0.1的上海的汽车可以在周日凌晨2点经由用户确认后自动升级等等。
安全功能:
安全功能也是一个重要的功能,细数史上的IOT安全事件,从智慧鱼缸,到智能摄像头,智慧门铃都曝出过安全漏洞,某些漏洞可能泄漏用户隐私,有些则可能带来生命危险,比如医疗设备一旦被非法攻击,后果不堪设想。IoT 安全也会从几个层面考虑:1. 操作系统的安全,2.系统上应用的安全,3.通讯安全等
2. Azure IoT Edge
Azure IoT Edge是一组运行在“边缘计算设备”上的应用集合,主要是一个包含Moby 容器引擎的一个运行时和一组内置的容器。这组应用集合可以安装在大部分的Linux或者Windows设备上,大到基于Widows 地铁闸机,银行自助取款机,小到基于Linux的树莓派,无人机等等设备都可以运行Azure IoT Edge [2] ,同时既然是基于容器的运行时,那么理论上,任何可以容器化的服务也都可以运行在这个平台上,比如Mysql,Nginx等,当然微软原厂的一些云服务,也可以以容器形态运行在边缘设备上,比如Azure Functions,Azure SQL Edge等等。
之所以将应用部署在边缘计算设备上,主要有如下的好处,比如:
集成了与Azure IoT Hub交互的能力:
Azure IoT Edge的设备管理,双向通讯,OTA等能力与Azure IoT Hub打通,是一个从云端的Hub到边缘扩展延伸的方案
内置了一些场景化的功能:
Azure IoT Edge针对工业等场景内置了一些工业协议支持,比如Modbus,OPC-UA等
更低的时延和更强的算力下沉:
在有海量视频处理的场景下,时延是一个很重要的指标,比如在笔者曾经实施过的某个5G智慧港口,塔吊需要有一些基于视频的分析,对起吊的集装箱唛头进行拍照分析后记录集装箱装配区域,设想一旦拍照后20秒才有返回结果,则整体装卸货的效率会大大降低,因此通常会在塔吊附近安放专门的带有GPU的视频处理服务器,利用5G专网构建将塔吊摄像机和GPU服务器部署在一个由5G支持的“局域网”中,则时延大大的降低了。
可应对网络频闪:
在某些地下停车库或者高速公路上,可能出现4/5G信号不稳定的情况,这时候也可以利用边缘计算设备,然后将停车服务或高速的视频采集服务放置到“本地”,即使网络不好,依然可以完成终端和”边缘计算设备“的通讯。
应对数据主权问题:
某些工厂生产数据,有将数据存储在本地的要求,同时又希望将报警数据发送到云端,这种场景也可以在工厂内部部署边缘计算设备,在边缘设备上部署SQL Edge记录本地数据,在本地部署Azure Functions或者流分析服务对本地数据进行筛选分析并将报警数据发送出去。
云边扩展能力:
云边扩展主要是将云端的一些能力扩展到边缘,Azure上本身有很多原厂服务,可以以容器形式部署,这类服务大多也可以部署在本地边缘设备上,比如自定义视觉,SQL Edge等。
远程部署容器的能力:
通过将Azure IoT Edge和Azure IoT Hub配合使用,可以在云端配置容器部署清单,IoT Edge 会自动根据清单里的内容从云端拉取容器并部署在边缘计算设备上。
介绍完上述的这些内容,我们以一张图的形式概括IoT Edge的主要功能:
关于如何创建Azure IoT Hub,请参见:
《https://www.51azure.cloud/post/2020/2/23/azure-iot-hub-quick-start-list》
关于如何使用Azure IoT Edge,请参见:
《https://www.51azure.cloud/post/2019/9/29/azure-iot-edge-quick-start-list》
3. Azure Custom Vision:
Azure Custom Vision 自定义视觉是一个可实现图像分类和图像识别的服务,如果我们要制作一个分类老虎和大象的应用,则只需要提供几十张老虎的照片和几十张大象的照片,然后在Custom Vision上进行标注,经由Custom Vision服务训练后,即可生成在线API或导出成容器或其他算法模型,通过简单的API交互即可实现物体分类。
Custom Vision对混凝土骨料分类的案例:
《https://www.51azure.cloud/post/2021/2/19/custom-vision-demo》
Custom Vision检测是否戴口罩的案例:
《https://www.51azure.cloud/post/2019/8/4/ai-custom-vision》
在使用Custom Vision训练消防通道占用算法时可能需要考虑的训练集情况:
- 各种颜色的车辆
- 各种类型的车辆;
- 车头朝向;
- 天气因素(包含黑夜白天等)
至此,我们已经可以像混凝土骨料分类案例一样,实现消防通道占用与否的检测并导出容器了,导出的容器,可以通过IoT Hub部署到远程的边缘设备上。
部署在边缘设备上的Custom Vision模块也已经具备了对图像进行分类的能力。
接下来,我们看下如何利用Azure 提供的工具和服务实现RTSP视频处理。
4.Azure video analyzer:
Azure 视频分析器提供了一个平台用于构建跨越边缘和云的智能视频应用程序。 该平台包含一个 IoT Edge 模块和一个 Azure 服务。 它提供捕获、记录和分析实时视频并将结果(即视频以及视频中的见解)发布到边缘或云的功能。
AVA 内置了对RTSP的支持能力,可以直接对接大部分录像机。
AVA主要具备如下功能:
检测运动并发出事件:
例如如果视频中的画面是静止的,则此时大部分时候无需对静止画面进行分析,当视频画面发生运动时,比如某辆汽车驶入视频监控画面,则自此时开始分析视频,当检测到车辆到达禁止占用位置时,发出报警。
检测运动并录制视频:
视频录制可以保存在本地边缘设备或者本地局域网中的文件系统中:
视频录制可以保存在云端:
分析实时视频 gRPC或HTTP:
支持两种gRPC和HTTP扩展来进行视频分析算法的集成:
AVA中的 Edge 模块可以从RTSP相机中拉取视频源,并将视频帧发送到 HTTP 扩展处理器节点。HTTP 扩展节点扮演代理的角色, 它对传入视频帧采样,并将视频帧转换为指定的图像类型。 然后,它将图像通过 REST 转发到另一个 Edge 模块,该模块在 HTTP 终结点后运行一个 AI 模型,这些模型可以是自定义开发的容器,也可以是由custom vision中导出的容器。 HTTP 扩展处理器节点收集检测结果并将事件发布到 IoT 中心消息接收器节点。 然后该节点将这些事件发送到 IoT Edge Hub,到达IoT Edge Hub的消息可本地存储或者过滤后上传到云端IoT Hub。
和Power Platform家族的集成:
AVA场景可以和Power Platform家族集成在一起,比如在收到某个消防通道被占用时,通过Power Automate和Power Apps 实现消息推送:
使用Power BI和Azure 流分析可以进一步将推理事件可视化:
在Power BI中使用播放器组件,同步观看对应的报警视频:
关于AVA案例,请参考: