当前位置: 首页 > news >正文

Realistic fault detection of li-ion battery via dynamical deep learning

昇科能源、清华大学欧阳明高院士团队等的最新研究成果《动态深度学习实现锂离子电池异常检测》,用已经处理的整车充电段数据,分析车辆当前或近期是否存在故障。

思想步骤:

  1. 用正常电池的充电片段数据构造训练集,用如下的方式构造损失函数训练模型。
    损失函数构造:
    (1)计算mean_pred(由encoder输出)和里程之间的mse损失;
    (2)计算log_p(由decoder输出)和(“min_temp”, “max_single_volt”, “max_temp”, “min_single_volt”, “volt”)之间的SmoothL1Loss损失;
    (3)计算log_v和mean的kl损失。
    (4)最终的损失由(1)(2)(3)加权得出。
  2. 用1中的模型计算训练集和部分故障车充电数据(result)的误差(这里的误差指的是如上(2)所示)。
  3. 获得误差阈值,误差阈值的选取方式为:误差排序后((2)所示)的第千分之n的result数据所对应的误差值,n是使得result数据中故障车的比例最高时的取值。
  4. 按照真实故障标签和同一辆车前百分比误差均值计算auroc,按照误差阈值计算混淆矩阵、召回率等。
  5. 用剩余正常电池的充电片段数据和剩余故障电池的充电片段数据构建测试集
  6. 用3中所述误差阈值计算5中测试集的故障标签,计算混淆矩阵、召回率等,按照真实故障标签和同一辆车前百分比误差均值计算auroc

数据介绍

  1. 文章发布了从清华大学EV数据平台收集的三个大规模数据集,这些数据集包括来自347辆电动汽车的69万多个LiB充电片段,包括55辆异常车辆(LiB故障车辆)和292辆正常车辆(LiB无故障车辆),为相同品牌的车辆。
  2. 车级故障标签由驾驶员报告生成,工程师根据镀锂、续航里程过低、温度过高或电压异常变化(过低、电池间不一致等)的识别进行确认。这些标签是逐案创建的,不能用基于规则的数据表达式来描述。
  3. 电池故障时或故障附近的异常数据被删除。
  4. 发布的数据已经被清洗过,数值的大小不能再反映电池本身的特性,但数据变化的趋势仍然符合电池的规律,每个样本数据(对应于作者给的每个pkl文件)具有(128, 8)的时序数据。
  5. 字段名称:包含两部分,第一部分的列名为:volt, current, soc, max_single_volt, min_single_volt, max_temp, min_temp, timestamp;第二部分的列名为:fault label, car number, charge segment number and mileage
    timestamp:时间戳
    fault label:故障标签,多种故障类型在数据中统一标注为1
    样本数据案例:
(array([[  -1.54891411, -107.14166667,   46.97083333, ...,   29.        ,26.        ,    0.        ],[  -1.54891411, -107.1625    ,   47.16875   , ...,   29.        ,26.        ,   10.        ],[  -1.54891411, -107.18333333,   47.36666667, ...,   29.        ,26.        ,   20.        ],...,[   1.59613311,  -90.29166667,   72.91666667, ...,   34.        ,31.        , 1250.        ],[   1.62806252,  -90.02083333,   73.08333333, ...,   34.        ,31.        , 1260.        ],[   1.65999193,  -89.6875    ,   73.25      , ...,   34.        ,31.        , 1270.        ]]), OrderedDict([('label', '00'), ('car', 168), ('charge_segment', '122'), ('mileage', 1728.670740234375)]))样本案例中取出第一条数据:[  -1.54891411 -107.14166667   46.97083333    3.76328125    3.7490885429.           26.            0.        ]

模型

model DynamicVAE((encoder_rnn): GRU(7, 128, num_layers=2, batch_first=True, bidirectional=True)(decoder_rnn): GRU(2, 128, num_layers=2, batch_first=True, bidirectional=True)(hidden2mean): Linear(in_features=512, out_features=8, bias=True)(hidden2log_v): Linear(in_features=512, out_features=8, bias=True)(latent2hidden): Linear(in_features=8, out_features=512, bias=True)(outputs2embedding): Linear(in_features=256, out_features=5, bias=True)(mean2latent): Sequential((0): Linear(in_features=8, out_features=64, bias=True)(1): ReLU()(2): Linear(in_features=64, out_features=1, bias=True))

结果

battery_brand1五折交叉验证后的结果,感觉召回率不理想啊,忧愁。
0)

论文的疑问

  1. 最大的疑问就是召回率咋那么低,该咋调
  2. 训练集是由正常车数据组成的?给的源码我理解是这样的。
  3. 代码和文章不同之处-里程损失定义和模型定义:代码中里程损失是encoder输出结果和真实里程之间计算mse,文章中写的是decoder结果和真实里程之间计算mse;代码中隐藏层是128维,num_layers是2,文章中是32维3层。
    在这里插入图片描述
  4. 正常充电片段数据定义规则,故障片段数据定义规则
    如距故障发生时间点算起,向前推多久的数据算作故障数据?
    数据集中的每辆车只有一个确定的故障标签,在样本数据构造过程中,同一辆车不能同时取故障和正常两个时期的数据吗(文章未明确,数据分析得出)
    epochs超过3,loss就不行了?
    在这里插入图片描述

相关文章:

  • JimuReport积木报表 v1.6.5 版本发布—免费报表工具
  • AIOT数字孪生智慧工地一体化管理平台源码
  • Vue3 源码解读系列(五)——响应式
  • [Socket]Unix socket 运行权限问题
  • 关于跨域问题的个人理解
  • Vue 3.0 + vite + axios+PHP跨域问题的解决办法
  • 【数据结构】顺序表 | 详细讲解
  • 17. 机器学习——SVM
  • 专业的SRM系统全流程管理服务
  • iText v1.8.1(OCR截图文字识别工具)
  • centralwidget 不能布局
  • HarmonyOS 高级特性
  • SpringCloud Alibaba(上):注册中心-nacos、负载均衡-ribbon、远程调用-feign
  • 「Verilog学习笔记」用优先编码器①实现键盘编码电路
  • element-ui el-tree 文本超出显示省略号 添加移入提示
  • [rust! #004] [译] Rust 的内置 Traits, 使用场景, 方式, 和原因
  • [译]Python中的类属性与实例属性的区别
  • 【挥舞JS】JS实现继承,封装一个extends方法
  • 【跃迁之路】【519天】程序员高效学习方法论探索系列(实验阶段276-2018.07.09)...
  • Docker 1.12实践:Docker Service、Stack与分布式应用捆绑包
  • Fabric架构演变之路
  • Java|序列化异常StreamCorruptedException的解决方法
  • Java知识点总结(JavaIO-打印流)
  • MD5加密原理解析及OC版原理实现
  • MySQL QA
  • Redis的resp协议
  • session共享问题解决方案
  • sublime配置文件
  • UEditor初始化失败(实例已存在,但视图未渲染出来,单页化)
  • WordPress 获取当前文章下的所有附件/获取指定ID文章的附件(图片、文件、视频)...
  • 观察者模式实现非直接耦合
  • 猫头鹰的深夜翻译:Java 2D Graphics, 简单的仿射变换
  • 世界上最简单的无等待算法(getAndIncrement)
  • 为物联网而生:高性能时间序列数据库HiTSDB商业化首发!
  • 原生js练习题---第五课
  • 云栖大讲堂Java基础入门(三)- 阿里巴巴Java开发手册介绍
  • ​直流电和交流电有什么区别为什么这个时候又要变成直流电呢?交流转换到直流(整流器)直流变交流(逆变器)​
  • !!Dom4j 学习笔记
  • ![CDATA[ ]] 是什么东东
  • #我与Java虚拟机的故事#连载03:面试过的百度,滴滴,快手都问了这些问题
  • #我与Java虚拟机的故事#连载17:我的Java技术水平有了一个本质的提升
  • ${factoryList }后面有空格不影响
  • $L^p$ 调和函数恒为零
  • (14)Hive调优——合并小文件
  • (LNMP) How To Install Linux, nginx, MySQL, PHP
  • (Redis使用系列) SpringBoot 中对应2.0.x版本的Redis配置 一
  • (附源码)springboot学生选课系统 毕业设计 612555
  • (附源码)ssm码农论坛 毕业设计 231126
  • (中等) HDU 4370 0 or 1,建模+Dijkstra。
  • (转)【Hibernate总结系列】使用举例
  • (转)菜鸟学数据库(三)——存储过程
  • (转)利用PHP的debug_backtrace函数,实现PHP文件权限管理、动态加载 【反射】...
  • (最优化理论与方法)第二章最优化所需基础知识-第三节:重要凸集举例
  • .naturalWidth 和naturalHeight属性,
  • .NET CF命令行调试器MDbg入门(三) 进程控制