电池故障估计:Realistic fault detection of li-ion battery via dynamical deep learning
昇科能源、清华大学欧阳明高院士团队等的最新研究成果《动态深度学习实现锂离子电池异常检测》,用已经处理的整车充电段数据,分析车辆当前或近期是否存在故障。
思想步骤:
- 用正常电池的充电片段数据构造训练集,用如下的方式构造损失函数训练模型。
损失函数构造:
(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)加权得出。 - 用1中的模型计算训练集和部分故障车充电数据(result)的误差(这里的误差指的是如上(2)所示)。
- 获得误差阈值,误差阈值的选取方式为:误差排序后((2)所示)的第千分之n的result数据所对应的误差值,n是使得result数据中故障车的比例最高时的取值。
- 按照真实故障标签和同一辆车前百分比误差均值计算auroc,按照误差阈值计算混淆矩阵、召回率等。
- 用剩余正常电池的充电片段数据和剩余故障电池的充电片段数据构建测试集
- 用3中所述误差阈值计算5中测试集的故障标签,计算混淆矩阵、召回率等,按照真实故障标签和同一辆车前百分比误差均值计算auroc
数据介绍
- 文章发布了从清华大学EV数据平台收集的三个大规模数据集,这些数据集包括来自347辆电动汽车的69万多个LiB充电片段,包括55辆异常车辆(LiB故障车辆)和292辆正常车辆(LiB无故障车辆),为相同品牌的车辆。
- 车级故障标签由驾驶员报告生成,工程师根据镀锂、续航里程过低、温度过高或电压异常变化(过低、电池间不一致等)的识别进行确认。这些标签是逐案创建的,不能用基于规则的数据表达式来描述。
- 电池故障时或故障附近的异常数据被删除。
- 发布的数据已经被清洗过,数值的大小不能再反映电池本身的特性,但数据变化的趋势仍然符合电池的规律,每个样本数据(对应于作者给的每个pkl文件)具有(128, 8)的时序数据。
- 字段名称:包含两部分,第一部分的列名为: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五折交叉验证后的结果,感觉召回率不理想啊,忧愁。

论文的疑问
- 最大的疑问就是召回率咋那么低,该咋调
- 训练集是由正常车数据组成的?给的源码我理解是这样的。
- 代码和文章不同之处-里程损失定义和模型定义:代码中里程损失是encoder输出结果和真实里程之间计算mse,文章中写的是decoder结果和真实里程之间计算mse;代码中隐藏层是128维,num_layers是2,文章中是32维3层。

- 正常充电片段数据定义规则,故障片段数据定义规则
如距故障发生时间点算起,向前推多久的数据算作故障数据?
数据集中的每辆车只有一个确定的故障标签,在样本数据构造过程中,同一辆车不能同时取故障和正常两个时期的数据吗(文章未明确,数据分析得出)
epochs超过3,loss就不行了?

相关文章:
电池故障估计:Realistic fault detection of li-ion battery via dynamical deep learning
昇科能源、清华大学欧阳明高院士团队等的最新研究成果《动态深度学习实现锂离子电池异常检测》,用已经处理的整车充电段数据,分析车辆当前或近期是否存在故障。 思想步骤: 用正常电池的充电片段数据构造训练集,用如下的方式构造…...
微服务和Spring Cloud Alibaba介绍
1、微服务介绍 1.1 系统架构演变 随着互联网的发展,网站应用的规模也在不断的扩大,进而导致系统架构也在不断的进行变化。从互联网早起到现在,系统架构大体经历了下面几个过程: 单体应用架构 —> 垂直应用架构 —> 分布 式架构—>…...
【js】 lodash命名转换和封装
▒ 目录 ▒ 🛫 导读需求开发环境 1️⃣ lodash转换函数h3与underscore比较 2️⃣ 实战:对象属性名转换函数封装单元测试 🛬 文章小结📖 参考资料 🛫 导读 需求 爬虫中经常出现各种类型的命名,往往一个对象…...
RK3568驱动指南|第七篇 设备树-第67章 of操作函数实验:获取属性
瑞芯微RK3568芯片是一款定位中高端的通用型SOC,采用22nm制程工艺,搭载一颗四核Cortex-A55处理器和Mali G52 2EE 图形处理器。RK3568 支持4K 解码和 1080P 编码,支持SATA/PCIE/USB3.0 外围接口。RK3568内置独立NPU,可用于轻量级人工…...
vue3安装vue-router
环境 node 18.14.2 yarn 1.22.19 windows 11 vite快速创建vue项目 参考 安装vue-touter 官网 yarn add vue-router4src下新建router文件夹,该文件夹下新建index.ts // router/index.ts 文件 import { createRouter, createWebHashHistory, RouterOptions, Ro…...
〖大前端 - 基础入门三大核心之JS篇㊱〗- JavaScript 的DOM节点操作
说明:该文属于 大前端全栈架构白宝书专栏,目前阶段免费,如需要项目实战或者是体系化资源,文末名片加V!作者:不渴望力量的哈士奇(哈哥),十余年工作经验, 从事过全栈研发、产品经理等工作…...
【计算机基础】优雅的PPT就应该这样设计
📢:如果你也对机器人、人工智能感兴趣,看来我们志同道合✨ 📢:不妨浏览一下我的博客主页【https://blog.csdn.net/weixin_51244852】 📢:文章若有幸对你有帮助,可点赞 👍…...
Vatee万腾的科技征程:Vatee数字化创新的前沿探讨
在Vatee万腾的科技征程中,我们目睹了一场数字化创新的引领之旅,探讨了Vatee在科技前沿的独到见解。Vatee万腾不仅仅是一家科技公司,更是一支前行不辍的冒险队伍,通过不断突破自我,探索未知领域,引领着数字化…...
【PB续命05】WinHttp.WinHttpRequest的介绍与使用
0 WinHttp.WinHttpRequest简介 winhttp.winhttprequest是Windows操作系统中的一个API函数,用于创建和发送HTTP请求。它可以用于从Web服务器获取数据,或将数据发送到Web服务器。该函数提供了许多选项,例如设置请求头、设置代理服务器、设置超…...
【Linux】进程间是这样通信的--管道篇
TOC 目录 进程间通信的介绍 进程间通信的概念 进程间通信的目的 进程间通信的本质 进程间通信的分类 管道 什么是管道 匿名管道 pipe函数 匿名管道使用步骤 管道读写规则 管道的特点 1、管道内部自带同步与互斥机制 2、管道的生命周期随进程 3、管道提供的是流式…...
Python基础入门例程60-NP60 跳过列表的某个元素(循环语句)
最近的博文: Python基础入门例程59-NP59 提前结束的循环(循环语句)-CSDN博客 Python基础入门例程58-NP58 找到HR(循环语句)-CSDN博客 Python基础入门例程57-NP57 格式化清单(循环语句)-CSDN博客 目录 最近的博文: 描述...
三十二、W5100S/W5500+RP2040树莓派Pico<UPnP示例>
文章目录 1 前言2 简介2 .1 什么是UPnP?2.2 UPnP的优点2.3 UPnP数据交互原理2.4 UPnP应用场景 3 WIZnet以太网芯片4 UPnP示例概述以及使用4.1 流程图4.2 准备工作核心4.3 连接方式4.4 主要代码概述4.5 结果演示 5 注意事项6 相关链接 1 前言 随着智能家居、物联网等…...
2023.11.18 Hadoop之 YARN
1.简介 Apache Hadoop YARN (Yet Another Resource Negotiator,另一种资源协调者)是一种新的 Hadoop 资源管理器,它是一个通用资源管理系统和调度平台,可为上层应用提供统一的资源管理和调度。支持多个数据处理框架&…...
ceph 常用命令
bucket 常用命令 查看 realm (区域) radosgw-admin realm list输出 {"default_info": "43c462f5-5634-496e-ad4e-978d28c2x9090","realms": ["myrgw"] }radosgw-admin realm get{"id": "2cfc…...
6.8完全二叉树的节点个数(LC222-E)
算法: 如果不考虑完全二叉树的特性,直接把完全二叉树当作普通二叉树求节点数,其实也很简单。 递归法: 用什么顺序遍历都可以。 比如后序遍历(LRV):不断遍历左右子树的节点数,最后…...
基于协作mimo系统的RM编译码误码率matlab仿真,对比硬判决译码和软判决译码
目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 ..................................................................... while(Err < TL…...
Django模型层
模型层 与数据库相关的,用于定义数据模型和数据库表结构。 在Django应用程序中,模型层是数据库和应用程序之间的接口,它负责处理所有与数据库相关的操作,例如创建、读取、更新和删除记录。Django的模型层还提供了一些高级功能 首…...
计算机视觉的应用18-一键抠图人像与更换背景的项目应用,可扩展批量抠图与背景替换
大家好,我是微学AI,今天给大家介绍一下计算机视觉的应用18-一键抠图人像与更换背景的项目应用,可扩展批量抠图与背景替换。该项目能够让你轻松地处理和编辑图片。这个项目的核心功能是一键抠图和更换背景。这个项目能够自动识别图片中的主体&…...
Redis(哈希Hash和发布订阅模式)
哈希是一个字符类型字段和值的映射表。 在Redis中,哈希是一种数据结构,用于存储键值对的集合。哈希可以理解为一个键值对的集合,其中每个键都对应一个值。哈希在Redis中的作用主要有以下几点: 1. 存储对象:哈希可以用…...
php正则表达式汇总
php正则表达式有"/pattern/“、”“、”$“、”.“、”[]“、”[]“、”[a-z]“、”[A-Z]“、”[0-9]“、”\d"、“\D”、“\w”、“\W”、“\s”、“\S”、“\b”、“*”、“”、“?”、“{n}”、“{n,}”、“{n,m}”、“\bword\b”、“(pattern)”、“x|y"和…...
23-Oracle 23 ai 区块链表(Blockchain Table)
小伙伴有没有在金融强合规的领域中遇见,必须要保持数据不可变,管理员都无法修改和留痕的要求。比如医疗的电子病历中,影像检查检验结果不可篡改行的,药品追溯过程中数据只可插入无法删除的特性需求;登录日志、修改日志…...
macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用
文章目录 问题现象问题原因解决办法 问题现象 macOS启动台(Launchpad)多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显,都是Google家的办公全家桶。这些应用并不是通过独立安装的…...
C++ 基础特性深度解析
目录 引言 一、命名空间(namespace) C 中的命名空间 与 C 语言的对比 二、缺省参数 C 中的缺省参数 与 C 语言的对比 三、引用(reference) C 中的引用 与 C 语言的对比 四、inline(内联函数…...
汇编常见指令
汇编常见指令 一、数据传送指令 指令功能示例说明MOV数据传送MOV EAX, 10将立即数 10 送入 EAXMOV [EBX], EAX将 EAX 值存入 EBX 指向的内存LEA加载有效地址LEA EAX, [EBX4]将 EBX4 的地址存入 EAX(不访问内存)XCHG交换数据XCHG EAX, EBX交换 EAX 和 EB…...
C++使用 new 来创建动态数组
问题: 不能使用变量定义数组大小 原因: 这是因为数组在内存中是连续存储的,编译器需要在编译阶段就确定数组的大小,以便正确地分配内存空间。如果允许使用变量来定义数组的大小,那么编译器就无法在编译时确定数组的大…...
LangFlow技术架构分析
🔧 LangFlow 的可视化技术栈 前端节点编辑器 底层框架:基于 (一个现代化的 React 节点绘图库) 功能: 拖拽式构建 LangGraph 状态机 实时连线定义节点依赖关系 可视化调试循环和分支逻辑 与 LangGraph 的深…...
《Docker》架构
文章目录 架构模式单机架构应用数据分离架构应用服务器集群架构读写分离/主从分离架构冷热分离架构垂直分库架构微服务架构容器编排架构什么是容器,docker,镜像,k8s 架构模式 单机架构 单机架构其实就是应用服务器和单机服务器都部署在同一…...
leetcode73-矩阵置零
leetcode 73 思路 记录 0 元素的位置:遍历整个矩阵,找出所有值为 0 的元素,并将它们的坐标记录在数组zeroPosition中置零操作:遍历记录的所有 0 元素位置,将每个位置对应的行和列的所有元素置为 0 具体步骤 初始化…...
【版本控制】GitHub Desktop 入门教程与开源协作全流程解析
目录 0 引言1 GitHub Desktop 入门教程1.1 安装与基础配置1.2 核心功能使用指南仓库管理日常开发流程分支管理 2 GitHub 开源协作流程详解2.1 Fork & Pull Request 模型2.2 完整协作流程步骤步骤 1: Fork(创建个人副本)步骤 2: Clone(克隆…...
Axure零基础跟我学:展开与收回
亲爱的小伙伴,如有帮助请订阅专栏!跟着老师每课一练,系统学习Axure交互设计课程! Axure产品经理精品视频课https://edu.csdn.net/course/detail/40420 课程主题:Axure菜单展开与收回 课程视频:...
