首页 > 其他分享 >一篇关于预测“未来”的教程:运行在 Intel AIxBoard™ 开发板上的 TDengine

一篇关于预测“未来”的教程:运行在 Intel AIxBoard™ 开发板上的 TDengine

时间:2023-07-31 11:12:06浏览次数:45  
标签:通行 OpenVINO Intel TDengine 模型 开发板 速度 数据

英特尔数字化开发套件 AIxBoard 是一款 AI 架构的人工智能嵌入式开发板,体积小巧功能强大,可以在时序数据预测、图像分类、目标检测分割和语音处理等应用中并行运行多个神经网络。作为一款面向专业创客、开发者的功能强大的小型计算机,借助开源人工智能工具套件 OpenVINO ,AIxBoard 能够让 CPU、iGPU 都具备强劲的 AI 推理能力。

 

如果时序数据库(Time Series Database,TSDB)TDengine 高效的存储查询特性和开放易用的生态集成能力,叠加上 AIxBoard/OpenVINO 的人工智能分析能力,这一强强组合将可以帮助用户更简单快速地开发出一个强大的时序数据人工智能分析系统。   本文将为大家介绍 Intel 团队如何在 AIxBoard 开发套件上运行 TDengine、OpenVINO 和其他软件,搭建时序数据收集、存储、分析和展示的解决方案,模拟实现高速公路网的通行速度实时预测功能。

方案架构

本方案采用了微服务架构,每个模块都有各自的 Docker 镜像,所有微服务均使用 docker compose 管理,代码仓库位于 https://github.com/wayfeng/traffic_prediction。

数据采集模块

本方案使用的数据集来自加州交通部的 PeMS 交通数据库——包含在加州的高速公路上收集的大量真实数据。我们模拟传感器 sensor 应用 MQTT 协议发布通行速度数据,其中模拟数据来自 PeMSD7 数据集的测试部分,模拟模块根据系统时间提取数据集对应的当时速度,再加上少量随机分布的误差,作为整个系统的输入。通过 MQTT broker,我们能够接收到模拟传感器发布的速度数据,随后将这部分数据转发给 TDengine 进行存储。

数据存储模块

数据存储使用 TDengine 的官方 Docker 镜像进行。借助 TDengine 丰富的生态协作能力,只需经过简单配置,即可通过 MQTT broker 将数据写入 TDengine,并通过 Grafana 对 TDengine 存储的数据进行展示。

数据分析模块

分析模块(gcrnn)集成了 OpenVINO 和 TDengine 客户端。在每一次分析过程中,我们使用 TDengine 客户端查询已经存入的各路段通行速度,并使用 TDengine 的数据聚合函数获取过去一小时的每 5 分钟均值,将生成的张量作为 OpenVINO Runtime 的输入,然后使用 TDengine 客户端将 OpenVINO Runtime 推理输出——也就是模型预测的未来通行速度——写入TDengine。定时重复这一过程,即可实时预测各个路段未来的通行速度。

数据展示

数据展示模块使用了 Grafana 官方提供的 Docker 镜像。TDengine 官方支持 data source plugin,可以轻松为 Grafana 提供数据。为了避免重复配置数据源和 Dashboard,这里可以使用 Grafana 的 Profiling 功能,通过配置文件使 Grafana 容器在启动时将 TDengine 设置为默认数据源,同时也可以加载准备好的 Dashboard。 相关资料参见 Provision Grafana:https://grafana.com/docs/grafana/latest/administration/provisioning

方案效果

本文本例中采用的 PeMSD7 子集,其中包含了加州第七区 (District 7) 的高速公路网中设置的 228 个速度传感器采集到的 44 个工作日的数据,这些传感器每 30 秒采集一次所在路段的通过速度,最终的数据则是通行速度每 5 分钟的平均值。  

 

下图为随机挑选的 3 个传感器采集的三天通行速度曲线。图中纵坐标为通行速度,单位是 km/h。横坐标是时间,每个点代表 5 分钟。从图中很容易看出每个传感器所在路段的通行速度随一天时间变化都有比较明显的规律,但不同路段各自的规律又有明显的差别。     对某一个或多个变量,基于过去一段时间观察到的值来预测未来一段时间内可能可能发生的值,属于典型的时序数据预测问题。在本案例中,我们希望通过每个路段过去一段时间的通行速度,来预测未来一段时间的通行速度。  

 

模型训练

此前传统统计模型(例如 ARIMA 模型及其各个变种模型)在时间序列预测问题取得了显著成果,但这类传统模型往往受限于数据平稳性假设,在处理多个变量时,变量间关系也无法体现在模型中。比如本例中,各个传感器所在路段在地理上的关联就在传统模型中被忽略掉了。   相关资料参见 Spatio-Temporal Graph Convolutional Networks: A Deep Learning Framework for Traffic Forecasting:https://arxiv.org/abs/1709.04875 本文采用了上方参考资料中介绍的图卷积(graph convolution)加 LSTM 的简化模型。模型首先需要根据传感器间的距离构建一张无向图,并使用图卷积作为模型的第一层,配合 LSTM 层可以使模型同时学习空间和时间的信息。  

 

我们提取了 PeMSD7 数据集中的 26 个传感器的数据,并按照训练(50%),验证(20%),和测试(30%)对其进行了分割,部分测试数据用来作为数据模拟模块的输入。 具体模型训练的细节参见 Traffic forecasting using graph neural networks and LSTM:https://keras.io/examples/timeseries/timeseries_traffic_forecasting/

模型转换

OpenVINO 自带的模型优化器能够将 PyTorch、TensorFlow 等多种框架训练得到的模型转换为 OpenVINO Runtime 需要的中间格式(IR)。具体转换方法在 OpenVINO 官方文档中有详细解释。   详细信息可见《使用模型优化器转换模型》:https://docs.openvino.ai/cn/2022.1/openvino_docs_MO_DG_Deep_Learning_Model_Optimizer_DevGuide.html

展示效果

经过一段时间运行,可以观察到类似下图的效果。  

 

图中第一列是随机选取的几个传感器发送的实时数据和使用 gcrnn 模块推理得到的一小段时间之后的预测值。上面的 4 个折线图中,黄色曲线是 gcrnn 预测的通行速度,绿色曲线是实际的通行速度。可以看出,使用本例中的简单模型进行推理得到的预测结果与实际数据还是比较接近的。

总结

本文通过模拟高速公路网通行速度采集与实时预测的案例,介绍了构建时间序列信号收集、存储和分析的基本流程以及所需工具,展示了运行在 Intel AIxBoard™ 上的 TDengine 便捷高效的数据收集、存储、查询和展示能力,以及 OpenVINO 基于深度学习进行时间序列信号分析的能力。阅读完本篇文章,你对时序数据处理和预测一定也有了更深的体会,如果你想要进行深度技术交流,可以添加小T vx:tdengine1,申请加入 TDengine 技术交流群。   作者介绍: 冯伟,英特尔软件架构师,16 年软件研发经验,涵盖浏览器、计算机视觉、虚拟机等多个领域。2015 年加入英特尔,近年来专注于边缘计算、深度学习模型落地,以及时序数据分析等方向。

TDengine 简介

TDengine™ 是一款开源的云原生时序数据库,专为物联网(IoT)、连接汽车和工业物联网进行的设计和优化。它能够高效地进行海量数据实时写入、处理,监控一天内由数十亿个传感器和数据收集器产生的 PB 级别数据。许多用户将由物联网设备、汽车或 IT 基础设施生成的海量数据实时存储到 TDengine 中,并使用标准的 SQL 命令用 TDengine 进行数据查询——TDengine 支持过滤、分组、窗口、连接和许多聚合函数以帮助用户更好地查询数据。此外,TDengine 还能够在多种主流的硬件平台上运行,并提供和其他第三方软件工具集成的能力,以及便捷的数据接入、数据分析和数据展示等功能。

标签:通行,OpenVINO,Intel,TDengine,模型,开发板,速度,数据
From: https://www.cnblogs.com/taosdata/p/17592921.html

相关文章

  • iTOP-RK3568开发板Windows 安装 RKTool 驱动
    在烧写镜像之前首先需要安装RKTool驱动。RKTool驱动在网盘资料“iTOP-3568开发板\01_【iTOP-RK3568开发板】基础资料\02_iTOP-RK3568开发板烧写工具及驱动”路径下。驱动如下图所示:解压缩后,进入文件夹,如下图所示:点击“DriverInstall.exe”,如下图所示:如果出现提示,选择安装,如下......
  • 官方实锤!AMD真的已经有了大小核:不搞Intel那一套
    Intel12代酷睿开始引入大小核混合架构,多核跑分提升立竿见影,在游戏、渲染等场景中也有很好的辅助作用,但因为大核心、小核心基于完全不同的架构,需要复杂的系统、软件调度配合,也直接导致失去了AVX-512指令集。AMD也早就确认在开发自己的大小核,并强调两种核心会是完全相同的架构、IP......
  • Java学习-1.jdk和IntelliJ IDEA安装
    1.jdk下载与安装下载地址:https://www.oracle.com/java/technologies/downloads/#jdk20-windows 环境配置:1.我的电脑–》右键属性–》高级系统设置–》环境变量2.系统变量–》新建系统变量–》完成后点击确定3.双击系统变量下的PATH变量,新建两个路径(最下方两个)4. 新......
  • 体验IntelliJ IDEA的远程开发(Remote Development)
    欢迎访问我的GitHub这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos本篇概览IDEA的远程开发功能,可以将本地的编译、构建、调试、运行等工作都放在远程服务器上执行,而本地仅运行客户端软件进行常规的开发操作即可,官方给出的逻辑图如下,可见......
  • TDengine Cloud 加入 AWS 合作伙伴网络,助力出海企业数字化转型
    近日,全托管的时序数据云平台TDengineCloud正式入驻AWSMarketplace(海外区),用户可通过AWSMarketplace轻松实现TDengineCloud的订阅与部署,以最低的成本搭建最高效的数据处理架构。此外,早在2022年12月,时序数据库(TimeSeriesDatabase)TDengine就已经成功上线了AWSMa......
  • Intel指令集及SIMD数据加速
    查看CPU相关信息执行结果举例:查看电脑CPU支持的指令集:cat/proc/cpuinfo|grep"processor"|wc-l支持的指令集:向量指令集Flynn分类法根据指令和数据进入CPU的方式,将计算机架构分为四种不同的类型。1.单指令流单数据流(SISD,SingleInstructionstreamSingleDat......
  • ST官方基于米尔STM32MP135开发板培训课程(一)
    本文将以Myirtech的MYD-YF13X以及STM32MP135F-DK为例,讲解如何使用STM32CubeMX结合Developerpackage实现最小系统启动。    1.开发准备1.1Developer package准备a.Developerpackage下载:‍https://www.st.com/en/embedded-software/stm32mp1dev.html‍b.解压后进入......
  • 国产龙芯2k1000开发板运行SylixOS嵌入式实时系统--迅为电子
     国产龙芯2k1000开发板运行SylixOS嵌入式实时系统--迅为电子龙芯生态体系越来越完善,继RK3568开发板成功搭载SylixOS国产实时操作系统后,迅为的国产龙芯2K1000开发平台也可以流畅运行SylixOS国产实时操作系统了。    SylixOS采用抢占式、多任务、硬实时的方式来设计整......
  • 添加USB转串口设备驱动-迅为i.MX8M开发板
    对于通过USB接口访问的模块,在Linux内核中集成USB驱动程序。我们需要配置内核选中支持GSM和CDMA模块的USB转串口驱动>DeviceDrivers->USBsupport(USB_SUPPORT[=y])->USBSerialConvertersupport(USB_SERIAL[=y])->USBdriverforGSMandCDMAmodems这个......
  • 保护 TDengine 查询性能——3.0 如何大幅降低乱序数据干扰?
    在时序数据库(TimeSeriesDatabase)场景下,乱序数据的定义为:“时间戳(timestamp)不按照递增顺序到达数据库的数据。”虽然它的定义很简单,但时序数据库需要有相应的处理逻辑来保证数据存储时的顺序性,这势必会增加数据库架构的复杂性,从而影响数据库的性能表现。已知完全乱序的数据处理是......