新能源当道,如何构建一个电动汽车电池告警预测平台?

2023-10-19 04:50

本文主要是介绍新能源当道,如何构建一个电动汽车电池告警预测平台?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

简介

近年来,我国新能源汽车行业呈现蓬勃发展的态势。主机厂已经收集了大量的电动车的车联网数据,包括三大类(静态车辆数据、实时处理数据和实时车辆告警数据)160多项数据。主机厂希望从这些数据中得到报警的统计和分析,并且希望延伸到报警的预测,可以及时召回可能发生故障的车辆或者主动推送更新软件到车端进行修复,降低电池事故造成的损失,提升客户的满意度。

本篇介绍了如何利用Amazon Web Services的服务组件快速搭建电动车电池告警预测平台,包括存储海量测试数据,构建基于XGBoost分类算法的电池故障报警预测模型,推理预测数据以及可视化的数据展示。

代码仓库

https://github.com/aws-samples/aws-bev-bms-battery-consistency-bias-alarm-prediction

架构概述

该解决方案是基于数据驱动来对电池单体一致性偏差报警事件进行预测,借助于Amazon SageMaker,您可以快速便捷地构建自己的机器学习模型(如XGBoost,递归神经网络等),并完成模型训练,模型推理。该解决方案中使用Amazon DynamoDB和Amazon S3来存储预测事件的输入和推理结果。当您部署完该解决方案后,在SageMaker Notebook中会预置一个基于XGBoost二分类的机器学习模型脚本(xgboost_beginner.ipynb)以及样例数据(series_samples.csv),运行该机器学习脚本可以实现预测模型的快速构建和自动部署。本解决方案支持的推理事件有两种方式:其一为用户直接使用POST请求携带输入特征数据获取推理结果,该方式是基于Amazon API Gateway和 Lambda实现;其二为用户上传收集到的批量电池数据(可以来源于您on-premise数据库,或实时车辆网收集到的电池数据)至Amazon S3桶,数据上传事件会自动触发Lambda进行推理。所有的POST请求推理和S3上传事件触发的推理均可以通过Apache Superset进行可视化,它是由 Fargate进行承载,方便您实时查看具体的电池单体一致性偏差报警事件。架构图中各个组件之间的关系用连接箭头表示,其具体含义分别为:

  1. 主机厂或电池厂商将采集的电池数据上传至 S3桶中,用于模型建模和训练;

  2. SageMaker Notebook Instance获取电池数据;

  3. 在SageMaker Notebook Instance中完成模型建模,训练和部署,部署后的Inference Model是一个Runtime Endpoint,它用来提供预测推理服务;

  4. 应用场景一:车辆网上传的数据推送到的S3桶,S3桶中新增加的Batch数据即为需要推理的数据;

  5. 应用场景一:新增加的Batch数据自动调用Lambda进行转发请求;

  6. 应用场景一:Lambda调用SageMaker Runtime Endpoint进行前向推理;

  7. 应用场景一:前向推理的结果写入到Dynamo DB进行存储;

  8. 应用场景一:前向推理的结果写入到S3进行存储(供Superset可视化);

  9. 应用场景二:用户调用API进行前向预测推理,用户采用POST调用;

  10. 应用场景二:API Gateway将请求路由到Lambda函数;

  11. 应用场景二:Lambda调用SageMaker Runtime Endpoint进行前向推理;

  12. 应用场景二:前向推理的结果写入到Dynamo DB进行存储;

  13. 应用场景二:前向推理的结果写入到S3进行存储(供Superset可视化);

  14. Superset后台部署在Fargate Service, 基于SQL数据查询访问实时推理结果的数据;

  15. Amazon Athena从Glue Data Catalog中的数据库和表中查询数据;

  16. Glue Data Catalog的表格Schema是对预测结果S3桶中记录的定义。

解决方案部署

部署可以在北京区、宁夏区、美东一区进行,若在国内部署需要开通ICP Exception。可以直接基于Cloudformation部署,cloudformation的模板下载链接进行,创建堆栈时参数保持默认值即可。

美东一区:

https://aws-gcr-solutions.s3.amazonaws.com/Amazon-bev-bms-battery-consistency-bias-alarm-prediction/latest/AwsBevBmsBatteryConsistencyBiasAlarmPredictionStack.template

中国区(宁夏/北京):

https://aws-gcr-solutions.s3.cn-north-1.amazonaws.com.cn/Amazon-bev-bms-battery-consistency-bias-alarm-prediction/latest/AwsBevBmsBatteryConsistencyBiasAlarmPredictionStack.template

数据分析/模型训练/模型部署

在解决方案部署完成之后,在SageMaker控制台中会创建一个笔记本实例。内置XGBoost的脚本和电池样例数据集,用户在真实使用场景中可以基于自身的电池数据集来进行模型构建,训练和部署。

打开SageMaker控制台,可以看到部署之后预置的笔记本实例:

点击 [打开Jupyter],进入界面如下:

打开 xgboost_beginner.ipynb,依次执行每一个代码块,便可以逐步进行数据加载,各维度数据分析与可视化,数据集划分,XGBoost分类模型构建与训练,模型自动部署,模型性能测试等一系列操作。

样例数据集中包含了“车架号VIN”,“采集时间Date”,“总电压(V)”,“总电流(A)”,“电池单体电压最高值(V)”,“电池单体电压最低值(V)”, “最高温度值(℃)”, “最低温度值(℃)” 信息。最后一列的Label表征数据在该天是否发生了电池单体一致性差报警,0表示没有报警,1表示发生报警。在xgboost_beginner.ipynb脚本中,选取历史14天的样本并聚合在一起形成一个 14*6 维度的特征向量,基于该向量预测未来14天内是否出现电池一致性差报警,此问题被抽象成一个二分类问题。

在构建模型输入数据集时,首先将历史特征聚合成一个大的向量,并将未来14天内的电池一致性报警标签进行聚合,举例说明:对于第x天而言,第x-14天(含)到第x-1天(含)这共计14天的特征(维度为6)聚合成一个84维度的特征向量;若第x天(含)到第x+13天(含)这未来14天出现电池单体一致性报警,则该特征向量对应的分类标签为1;反之为0。通过滑窗操作对所有数据执行上述操作,提取所有的样本,再按照4:1划分为训练集和验证集。

完成模型训练后可以看到训练迭代过程中的error (loss)逐步收敛,如下图所示:

模型部署需要5分钟左右,保持脚本中的 sm_endpoint_name参数不变即可,在解决方案中lambda函数会以此名调用Sagemaker endpoint:

在XGBoost模型部署完成之后在SageMaker终端节点中会出现如下处于“InService”状态的推理节点。

继续执行xgboost_beginner.ipynb的代码块,可以对电池故障报警分类算法的性能作出评估,采用的性能指标包括:

  • 真阳(True Positive): 实际上是正例的数据被分类为正例

  • 假阳(False Positive): 实际上是反例的数据被分类为正例

  • 真阴(True Negative): 实际上是反例的数据被分类为反例

  • 假阴(False Negative): 实际上是正例的数据被分类为反例

  • 召回率(Recall): Recall = TPR = TP / (TP + FN), 衡量的数据集中所有的正样本被模型区分出来的比例

  • 精确率(Persion): Persion = TP / (TP + FP), 衡量的模型区分出来的正样本中真正为正样本的比例

  • 假阳率(False Positive Rate, FPR): FPR = FP / (FP + TN), 衡量的是 被错分的反例 在所有反例样本中的占比

基于不同分类阈值绘制出ROC曲线(FPR-TPR),当选择的阈值越小,其TPR越大,FPR越大;ROC曲线下的面积约接近1.0说明模型越优。下图为示例数据训练后在验证集上的性能呈现。

基于POST请求调用触发推理

在SageMaker推理节点部署成功后,你可以通过HTTP POST请求来调用电池预测推理服务,POST数据中携带特征数据,在该解决方案中以14天数据为特征,每一天包含“总电压(V)”,“总电流(A)”,“电池单体电压最高值(V)”,“电池单体电压最低值(V)”, “最高温度值(℃)”, “最低温度值(℃)”这六个维度的特征,共计84维数据,POST请求地址为cloudformation部署诚征的API Gateway地址后加上“inference”路由。基于curl调用示意如下所示:

curl --location --request POST 'https://<your_api_gateway_route_address> /inference' \
--header 'Content-Type: text/csv' \
--data-raw '{"vin": "1DS7KPXR9HJU3MB6L","date": "2018-02-11","features": "3.384580459770114658e+02,8.701149425287356687e-01,3.532045977011495363e+00,3.516270114942528391e+00,2.154597701149425149e+01,1.897701149425287426e+01,3.398913612565444851e+02,-6.835078534031412412e-01,3.543062827225131439e+00,3.532743455497382445e+00,2.099476439790576165e+01,1.978534031413612482e+01,3.402831125827814844e+02,-5.124999999999998446e-01,3.547005794701986403e+00,3.537400662251656058e+00,2.720033112582781953e+01,2.516390728476821081e+01,3.407290270270270298e+02,-8.411351351351350480e-01,3.551178918918919791e+00,3.541806486486486882e+00,2.770324324324324650e+01,2.623675675675676189e+01,3.402226449275361801e+02,-5.949275362318843241e-01,3.546726449275362736e+00,3.536807971014492402e+00,2.436594202898551131e+01,2.247463768115942173e+01,3.403696066746126121e+02,7.842669845053640287e-02,3.548485101311084744e+00,3.537239570917760201e+00,2.264600715137067866e+01,2.049463647199046434e+01,3.404395087001022944e+02,-7.123848515864886211e-02,3.549054247697031705e+00,3.538847492323438981e+00,2.271340839303992354e+01,2.069907881269192274e+01,3.408940234791888315e+02,-3.463180362860191486e-01,3.553680896478121021e+00,3.543157950907150688e+00,2.316648879402347916e+01,2.132337246531483643e+01,3.408360576923076906e+02,1.437499999999999889e-01,3.552947115384615273e+00,3.542481971153845777e+00,2.368870192307692690e+01,2.163942307692308020e+01,3.407270958083831829e+02,-7.137724550898206788e-01,3.552561377245509355e+00,3.539895209580837587e+00,2.052095808383233688e+01,1.858532934131736170e+01,3.412096446700508068e+02,1.184433164128595624e-02,3.556835025380711723e+00,3.546649746192892749e+00,2.414890016920473670e+01,2.245685279187816974e+01,3.421997359735972850e+02,5.627062706270629100e-01,3.567919471947194943e+00,3.558117491749174466e+00,2.529174917491748786e+01,2.353729372937293363e+01,3.405827586206896171e+02,-5.479623824451408387e-01,3.549921630094044378e+00,3.538965517241378755e+00,2.196238244514106697e+01,2.023824451410658654e+01,3.414845094664372027e+02,-1.037693631669534877e+00,3.560283993115317625e+00,3.548870912220310370e+00,2.196385542168674831e+01,1.999311531841652467e+01"
}'

基于S3桶批量数据上传触发推理

此解决方案还支持批量数据预测,测试数据可以从下方地址下载:

https://github.com/aws-samples/aws-bev-bms-battery-consistency-bias-alarm-prediction/blob/main/source/sagemaker/sample-data/test_batch_samples.csv

将此数据上传至部署账户中名为bev-bms-infer-<region_name>-<account_id>的S3桶中(该桶在部署时已经自动创建),数据上传事件会自动触发推理。

推理结果会实时写入到DynamoDB数据表中,如下所示:

Apache Superset配置

此解决方案基于Apache Superset来对预测的电池单体一致性偏差报警事件进行可视化,首先打开Cloudformation部署成功后的输出链接,如下所示:

登录用户名和密码均为admin.

点击[Source]à[Databases],如下图所示:

点击右上角+号,创建Database,如下图所示:

添加Database,Database处输入“demo”,  SQLAlchemy URI处输入:

“awsathena+rest://@athena.< region_name>.amazonaws.com.cn/default?s3_staging_dir=s3://bev-bms-events-<region_name> -<account_id >/query”

输入完成后可以点击[TEST CONNECTION]测试连通性,确认可以与Amazon Athena相连通。

滚动到最下面,点击[Save],出现如下界面:

推理事件可视化

点击Superset页面顶端导航栏[SQL Lab]à[SQL Editor],左侧依次选择Database, Schema, Table, 在SQL查询输入栏中输入查询语句,如:

SELECT "request_id","vin","date","predicted_prob","total_voltage_1","total_current_1","cell_max_voltage_1","cell_min_voltage_1","max_temperature_1","min_temperature_1"
FROM "battery-consistency-bias-alarm-prediction-glue-database"."battery-consistency-bias-alarm-prediction-events"
LIMIT 100

查询结果如下图所示:

点击上图中的 [EXPLORE],选择排序方式为根据预测报警概率从高到低排序,如下图所示,可以清晰地看到推理结果中电池单体一致性偏差报警概率高的车辆VIN码,日期等信息。

用户可以编写其他SQL语句来查询数据库表中的推理事件,如针对某一辆车,某个日期进行查询,等等。

总结

此解决方案提供了在亚马逊云上构建电动汽车电池单体一致性偏差预测解决方案,并提供REST API调用推理和批量数据推理功能,最后还支持使用Apache Superset进行推理结果可视化呈现。该解决方案适用于主机厂(OEM)或电池供应商来对电动汽车的电池健康情况进行监测和预测,同时适用于具有自主开发需求的OEM或电池供应商,可以基于该解决方案来自行开发算法模型,实现快速生产部署。

本篇作者

徐高伟

亚马逊云科技解决方案架构师

负责基于亚马逊云科技的云计算方案的咨询与架构设计,致力于亚马逊云科技云服务在汽车,物联网,人工智能等行业的应用和推广。在加入亚马逊云科技之前曾在BMW无人驾驶研发中心担任机器人和人工智能专家,负责无人车环境感知,行为预测和决策规划研发。

曹菱欣

亚马逊云科技汽车行业资深解决方案架构师

超过20年IT行业工作经验,有售前,实施和研发经验,5年以上针对客户PaaS和SaaS方面的项目实施经验。专注于亚马逊云科技云计算在车联网,无人驾驶,汽车生产制造,银行证券等领域的技术咨询和实施。

这篇关于新能源当道,如何构建一个电动汽车电池告警预测平台?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/237444

相关文章

流媒体平台/视频监控/安防视频汇聚EasyCVR播放暂停后视频画面黑屏是什么原因?

视频智能分析/视频监控/安防监控综合管理系统EasyCVR视频汇聚融合平台,是TSINGSEE青犀视频垂直深耕音视频流媒体技术、AI智能技术领域的杰出成果。该平台以其强大的视频处理、汇聚与融合能力,在构建全栈视频监控系统中展现出了独特的优势。视频监控管理系统EasyCVR平台内置了强大的视频解码、转码、压缩等技术,能够处理多种视频流格式,并以多种格式(RTMP、RTSP、HTTP-FLV、WebS

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖

嵌入式QT开发:构建高效智能的嵌入式系统

摘要: 本文深入探讨了嵌入式 QT 相关的各个方面。从 QT 框架的基础架构和核心概念出发,详细阐述了其在嵌入式环境中的优势与特点。文中分析了嵌入式 QT 的开发环境搭建过程,包括交叉编译工具链的配置等关键步骤。进一步探讨了嵌入式 QT 的界面设计与开发,涵盖了从基本控件的使用到复杂界面布局的构建。同时也深入研究了信号与槽机制在嵌入式系统中的应用,以及嵌入式 QT 与硬件设备的交互,包括输入输出设

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟&nbsp;开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚&nbsp;第一站:海量资源,应有尽有 走进“智听

如何解决线上平台抽佣高 线下门店客流少的痛点!

目前,许多传统零售店铺正遭遇客源下降的难题。尽管广告推广能带来一定的客流,但其费用昂贵。鉴于此,众多零售商纷纷选择加入像美团、饿了么和抖音这样的大型在线平台,但这些平台的高佣金率导致了利润的大幅缩水。在这样的市场环境下,商家之间的合作网络逐渐成为一种有效的解决方案,通过资源和客户基础的共享,实现共同的利益增长。 以最近在上海兴起的一个跨行业合作平台为例,该平台融合了环保消费积分系统,在短

Retrieval-based-Voice-Conversion-WebUI模型构建指南

一、模型介绍 Retrieval-based-Voice-Conversion-WebUI(简称 RVC)模型是一个基于 VITS(Variational Inference with adversarial learning for end-to-end Text-to-Speech)的简单易用的语音转换框架。 具有以下特点 简单易用:RVC 模型通过简单易用的网页界面,使得用户无需深入了

Android平台播放RTSP流的几种方案探究(VLC VS ExoPlayer VS SmartPlayer)

技术背景 好多开发者需要遴选Android平台RTSP直播播放器的时候,不知道如何选的好,本文针对常用的方案,做个大概的说明: 1. 使用VLC for Android VLC Media Player(VLC多媒体播放器),最初命名为VideoLAN客户端,是VideoLAN品牌产品,是VideoLAN计划的多媒体播放器。它支持众多音频与视频解码器及文件格式,并支持DVD影音光盘,VCD影

【区块链 + 人才服务】区块链集成开发平台 | FISCO BCOS应用案例

随着区块链技术的快速发展,越来越多的企业开始将其应用于实际业务中。然而,区块链技术的专业性使得其集成开发成为一项挑战。针对此,广东中创智慧科技有限公司基于国产开源联盟链 FISCO BCOS 推出了区块链集成开发平台。该平台基于区块链技术,提供一套全面的区块链开发工具和开发环境,支持开发者快速开发和部署区块链应用。此外,该平台还可以提供一套全面的区块链开发教程和文档,帮助开发者快速上手区块链开发。

K8S(Kubernetes)开源的容器编排平台安装步骤详解

K8S(Kubernetes)是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。以下是K8S容器编排平台的安装步骤、使用方式及特点的概述: 安装步骤: 安装Docker:K8S需要基于Docker来运行容器化应用程序。首先要在所有节点上安装Docker引擎。 安装Kubernetes Master:在集群中选择一台主机作为Master节点,安装K8S的控制平面组件,如AP

maven 编译构建可以执行的jar包

💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」👈,「stormsha的知识库」👈持续学习,不断总结,共同进步,为了踏实,做好当下事儿~ 专栏导航 Python系列: Python面试题合集,剑指大厂Git系列: Git操作技巧GO