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.74908854
       29.           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五折交叉验证后的结果,感觉召回率不理想啊,忧愁。

论文的疑问

  1. 最大的疑问就是召回率咋那么低,该咋调
  2. 训练集是由正常车数据组成的?给的源码我理解是这样的。
  3. 代码和文章不同之处-里程损失定义和模型定义:代码中里程损失是encoder输出结果和真实里程之间计算mse,文章中写的是decoder结果和真实里程之间计算mse;代码中隐藏层是128维,num_layers是2,文章中是32维3层。
  4. 正常充电片段数据定义规则,故障片段数据定义规则
    如距故障发生时间点算起,向前推多久的数据算作故障数据?
    数据集中的每辆车只有一个确定的故障标签,在样本数据构造过程中,同一辆车不能同时取故障和正常两个时期的数据吗(文章未明确,数据分析得出)
    epochs超过3,loss就不行了?
相关推荐
量子-Alex6 分钟前
【遥感图像分类】【综述】遥感影像分类:全面综述与应用
人工智能·分类·数据挖掘
张申傲8 分钟前
多模态(3):实战 GPT-4o 视频理解
人工智能·chatgpt·aigc·多模态
阡之尘埃10 分钟前
Python数据分析案例73——基于多种异常值监测算法探查内幕交易信息
人工智能·python·机器学习·数据分析·异常检测·无监督学习
猫先生Mr.Mao18 分钟前
2025年3月AGI技术月评|技术突破重构数字世界底层逻辑
人工智能·aigc·大语言模型·agi·多模态·行业洞察
睿创咨询36 分钟前
科技与商业动态简报
人工智能·科技·ipd·商业
科技在线36 分钟前
科技赋能建筑新未来:中建海龙模块化建筑产品入选中国建筑首批产业化推广产品
大数据·人工智能
HED1 小时前
用扣子快速手撸人生中第一个AI智能应用!
前端·人工智能
极小狐1 小时前
极狐GitLab 如何 cherry-pick 变更?
人工智能·git·机器学习·gitlab
小宋加油啊1 小时前
深度学习小记(包括pytorch 还有一些神经网络架构)
pytorch·深度学习·神经网络
沛沛老爹1 小时前
从线性到非线性:简单聊聊神经网络的常见三大激活函数
人工智能·深度学习·神经网络·激活函数·relu·sigmoid·tanh