Python TensorFlow的CNN-LSTM-GRU集成模型在边缘物联网数据IoT电动汽车充电站入侵检测应用

全文链接:https://tecdat.cn/?p=43881
原文出处:拓端抖音号@拓端tecdat

随着物联网(IoT)技术在电动汽车充电站(EVCS)中的普及,充电站不仅成为智能交通的关键节点,更因连接电网、用户设备与管理系统,成为网络攻击的重点目标。传统入侵检测系统(IDS)要么难以处理IoT环境的动态数据,要么在多类型威胁识别中精度不足,这给充电站的安全运营带来极大隐患。
 

一、引言

本文内容改编自我们团队为某客户提供的IoT安全咨询项目——当时客户面临充电站数据泄露、充电流程被篡改等问题,我们通过构建深度学习集成模型成功解决了这些痛点。现在将项目核心技术整理为报告,方便相关领域学生与从业者参考。
报告中,我们采用Python结合TensorFlow/Keras框架,基于Edge-IIoTset真实边缘物联网数据集,设计了融合卷积神经网络(CNN)、长短期记忆网络(LSTM)与门控循环单元(GRU)的集成模型:CNN负责提取网络流量的空间特征(如异常数据包结构),LSTM+GRU负责捕捉时序特征(如多步攻击序列),最终实现对“正常行为”与“DDoS、注入攻击、扫描攻击”等多类威胁的精准识别。测试显示,模型在二分类任务中准确率达100%,15类细分威胁识别中准确率仍保持96.90%,完全满足实际应用需求。


完整项目代码和数据文件已分享在交流社群,阅读原文进群和600+行业人士共同交流和成长。

二、IoT电动汽车充电站的安全挑战与入侵检测需求

1. IoT电动汽车充电站的特殊性

IoT技术让充电站实现了“车-站-网”联动(如图1),图中清晰展示了可再生能源、电网、IoT设备与待充电车辆之间的互联关系,每一条连接都代表实时数据交互——这些交互是充电站高效运行的核心,但也放大了安全风险。与普通IoT系统相比,充电站的IoT架构有三个关键差异:

  • 实时性要求高:充电过程中数据延迟可能导致设备故障,甚至引发安全事故,因此IDS必须低延迟;
  • 多系统融合:同时连接能源系统(电网、光伏)、IT系统(用户数据、支付)和OT系统(充电设备控制),任何一个系统被攻击都会影响整体运营;
  • 协议特殊:采用Open Charge Point Protocol(OCPP)专用协议,传统IDS难以解析这类协议的异常流量。

2. 主要网络威胁类型

实际应用中,充电站面临的威胁主要有四类:

  • 充电流程篡改:攻击者修改充电参数,导致电池过充损坏或设备过载;
  • 数据拦截:窃取用户支付信息、车辆电池数据等敏感内容;
  • 电网联动攻击:通过篡改充电站与电网的通信数据,影响区域电网稳定;
  • 恶意软件入侵:植入后门程序,长期控制充电设备。

三、CNN-LSTM-GRU集成模型设计与实现

1. 模型核心思路

传统单一模型存在短板:CNN擅长空间特征提取但无法处理时序数据,LSTM/GRU能捕捉时序关系但对空间特征敏感度过低。我们的集成模型通过“空间特征提取→时序特征分析→联合分类”的流程,实现优势互补(模型架构如图2)。

为了让大家更清楚各组件的作用,这里补充三个关键结构的示意图:

  • CNN空间特征提取(图3):通过卷积滤波器滑动扫描网络流量数据,捕捉如“异常数据包长度”“协议字段异常值”等空间特征,这些特征是区分正常流量与攻击流量的基础。
  • LSTM时序记忆机制(图4):通过“记忆单元”和“门控结构”(输入门、遗忘门、输出门),记住长序列中的关键信息——比如DDoS攻击中“连续多数据包请求频率异常”这类跨时间步的特征,避免传统RNN的“梯度消失”问题。
  • GRU简化门控机制(图5):将LSTM的“输入门”和“遗忘门”合并为“更新门”,在保证时序特征捕捉能力的同时,减少参数数量,提升模型运行效率——这对充电站边缘设备的算力适配至关重要。

2. 关键步骤与代码实现

(1)数据预处理

包含10+类IoT设备的真实流量数据,涵盖14种攻击类型(如DDoS_UDP、SQL注入、端口扫描等)。预处理需解决“分类变量数值化”“特征冗余”“数据分布不均”三个问题,代码如下:

import pandas as pd
import numpy as np
from sklearn.preprocessing import LabelEncoder, OneHotEncoder, StandardScaler
from sklearn.feature_selection import SelectKBest, chi2
from sklearn.model_selection import train_test_split
# 1. 读取数据集(实际应用中需替换为本地数据集路径)
data = pd.read_csv("Edge-IIoT.csv")
# 2. 分类变量处理:先标签编码(字符串转数值),再独热编码(避免序数偏差)
label_encoder = LabelEncoder()
# 对OCPP协议类型、HTTP方法、MQTT主题等分类列进行编码
data["ocpp_proto_code"] = label_encoder.fit_transform(data["ocpp_protocol"])
data["http_method_code"] = label_encoder.fit_transform(data["http_method"])
data["mqtt_topic_code"] = label_encoder.fit_transform(data["mqtt_topic"])
# 独热编码:处理多类别特征,避免模型误判“类别顺序”
onehot_encoder = OneHotEncoder(sparse=False, drop="first") # drop="first"避免多重共线性
encoded_cols = onehot_encoder.fit_transform(data[["ocpp_proto_code", "http_method_code", "mqtt_topic_code"]])
encoded_df = pd.DataFrame(encoded_cols, columns=["proto_1", "proto_2", "http_1", "http_2", "mqtt_1"])
data = pd.concat([data, encoded_df], axis=1)
(2)模型构建与训练

模型输入需调整为Conv1D要求的“(样本数,时间步长,特征数)”格式,再依次叠加CNN、LSTM、GRU层,代码如下:


# 2. 构建集成模型
model = Sequential(name="EVCS_IoT_IDS_Model")
# CNN模块:提取空间特征(如异常数据包结构、协议字段异常)
model.add(Conv1D(filters=64, kernel_size=3, activation="relu", input_shape=input_shape, name="Conv1"))
model.add(MaxPooling1D(pool_size=2, name="Pool1")) # 降维,保留关键特征,减少计算量
model.add(Conv1D(filters=32, kernel_size=3, activation="relu", name="Conv2"))
model.add(MaxPooling1D(pool_size=2, name="Pool2"))
# LSTM+GRU模块:提取时序特征(如多步攻击的流量序列变化)
model.add(LSTM(units=64, return_sequences=True, name="LSTM_Layer")) # return_sequences=True:输出序列给后续GRU
model.add(GRU(units=32, name="GRU_Layer")) # 简化门控,提升效率,捕捉近期时序特征
# 分类模块:输出威胁类型概率
model.add(Flatten(name="Flatten_Layer")) # 展平特征图,连接全连接层
model.add(Dense(units=64, activation="relu", name="Dense1"))
model.add(Dropout(rate=0.3, name="Dropout_Layer")) # 随机失活30%神经元,防止过拟合
model.add(Dense(units=15, activation="softmax", name="Output_Layer")) # 15类分类(1正常+14攻击)

四、模型应用测试结果

我们从“二分类(正常/攻击)”“六分类(正常+5大类攻击)”“十五分类(正常+14小类攻击)”三个维度测试模型,所有测试均基于数据的真实流量数据,确保结果贴合实际应用场景。

1. 二分类测试结果(正常/攻击)

二分类任务的目标是快速区分“正常流量”与“任意攻击流量”,适合充电站的实时初步预警。模型仅训练6轮就达到稳定性能,测试损失接近0,准确率100%(表1)。

性能指标二分类结果
测试损失0.0000
测试准确率(%)100
训练时间(秒)1885.46
测试时间(秒)42.53

从准确率与损失曲线(图6)可见,训练轮次增加后,训练集与验证集的准确率始终保持100%,损失快速降至0,说明模型无过拟合,且学习效率高。

混淆矩阵(图7)和归一化混淆矩阵(图8)进一步验证了模型的完美分类能力:所有“正常流量”(279,968条)和“攻击流量”(109,122条)均被正确识别,无任何误判——这意味着模型能100%拦截攻击,且不会产生“正常流量被误判为攻击”的 false alarm(误报),避免影响充电站正常运营。


相关文章

​CNN-LSTM、GRU、​XGBoost、LightGBM风电健康诊断、故障与中国银行股票预测应用实例

原文链接:https://tecdat.cn/?p=41907


2. 六分类测试结果(正常+5大类攻击)

六分类任务将攻击分为“DDoS、注入攻击、扫描攻击、恶意软件、MITM(中间人攻击)”5大类,需要模型区分不同攻击的核心特征。测试结果显示,模型准确率达97.44%,测试损失0.0532(表2)。

性能指标六分类结果
测试损失0.0532
测试准确率(%)97.44
训练时间(秒)14803.63
测试时间(秒)42.20

准确率与损失曲线(图9)显示,模型在50轮训练后收敛,验证集准确率稳定在97%左右,无明显波动,说明模型对大类攻击的分类能力稳定。


从分类报告看,“正常流量”“DDoS”“MITM”的精确率、召回率、F1值均为1.00或接近1.00,而“注入攻击”(精确率0.72)和“恶意软件”(召回率0.62)存在少量误判——这是因为部分“注入攻击”的数据包特征与正常HTTP请求相似,部分“恶意软件”的流量签名较隐蔽。混淆矩阵(图10)和归一化混淆矩阵(图11)进一步显示,误判主要集中在“注入攻击”与“正常流量”、“恶意软件”与“扫描攻击”之间,但整体误判比例低于3%,不影响实际使用。


 

3. 十五分类测试结果(正常+14小类攻击)

十五分类任务是最精细的测试,需区分“正常流量”和14种具体攻击(如DDoS_UDP、SQL注入、端口扫描、勒索软件等)。测试结果显示,模型准确率仍达96.90%,测试损失0.0632(表3),仅比六分类低0.54个百分点,表现远超传统模型。

性能指标十五分类结果
测试损失0.0632
测试准确率(%)96.90
训练时间(秒)14719.47
测试时间(秒)40.65

准确率与损失曲线(图12)显示,模型在50轮训练后收敛,训练集与验证集准确率差距小,说明模型对细分类别的学习能力强,无过拟合。


分类报告显示,“正常流量”“DDoS_UDP”“DDoS_ICMP”“MITM”的精确率和召回率均为1.00,而“SQL注入”(精确率0.62)、“XSS攻击”(精确率0.64)、“指纹识别攻击”(召回率0.27)的表现相对较弱——这是因为这些攻击的流量特征更细微(如SQL注入的恶意语句被加密、XSS攻击的脚本片段短)。混淆矩阵(图13)和归一化混淆矩阵(图14)显示,主要误判集中在“密码攻击”与“后门程序”、“指纹识别”与“端口扫描”之间,但整体正确分类比例仍达96.9%,满足充电站对细分类别攻击的识别需求。


 

4. 与传统模型的对比优势

我们将本模型与近年主流IDS模型对比(表4),可见在多分类任务中,本模型优势明显:

  • 十五分类准确率(96.90%)比DNN(94.67%)高2.23个百分点,比RNN(90.22%)高6.68个百分点;
  • 六分类准确率(97.44%)仅比“CNN-LSTM”(98.69%)低1.25个百分点,但计算效率更高(训练时间缩短约8%);
  • 二分类准确率与“CNN-LSTM”“VGG-16”持平(100%),但模型参数更少,更适合边缘设备部署。
     
模型名称年份二分类准确率(%)六分类准确率(%)十五分类准确率(%)
DNN202299.9996.0194.67
Inception Time2022--94.94
CNN-LSTM202210098.69-
VGG-162023100-94.86
RNN202310092.5390.22
CNN-LSTM-GRU202310097.4496.90

五、结论与展望

本文提出的CNN-LSTM-GRU集成模型,通过“CNN空间特征提取+LSTM-GRU时序特征捕捉”的融合架构,解决了IoT电动汽车充电站IDS的“低延迟”“多威胁识别”“边缘设备适配”三大核心问题。基于Edge-IIoTset真实数据集的测试证明,模型在二分类、六分类、十五分类任务中均保持高准确率,且计算效率优于多数传统模型,可直接部署到充电站的边缘设备中,为实际运营提供安全保障。
未来,我们将从两个方向优化模型:一是适配加密流量场景(如HTTPS协议下的威胁识别),通过提取TLS握手阶段的特征,解决“加密流量不可见”的问题;二是模型压缩(如量化、剪枝),进一步降低对边缘设备的算力要求,让模型能在低配置IoT设备上运行。
希望本文能为相关领域学生提供清晰的技术思路——从数据预处理到模型构建的每一步都有实际代码和图表支撑,便于理解和复现;同时也为企业IoT安全建设提供参考,帮助更多新能源企业解决充电站的网络安全痛点。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/923503.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/923503.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

3dma渲染噪点成因排查及优化方案

有时候在用 3D Max 渲染完效果图,画面上总有密密麻麻的小颗粒,也就是常说的噪点,原本精致的模型和材质,一有噪点质感就掉了大半。其实多数时候,噪点问题都和渲染参数设置有关。那么出现噪点原因和解决方案有哪些&#…

【LeetCode】算法详解#15 ---环形链表II

1.题目描述 给定一个链表的头节点 head ,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评…

Kafka面试精讲 Day 18:磁盘IO与网络优化

【Kafka面试精讲 Day 18】磁盘IO与网络优化 在“Kafka面试精讲”系列的第18天,我们聚焦于磁盘IO与网络优化。作为支撑百万级吞吐量的分布式消息系统,Kafka的高性能不仅依赖于优秀的架构设计,更离不开对底层资源——尤其是磁盘和网络——的极…

ActiveMQ RocketMQ RabbitMQ Kafka选型及应用场景

许多时候我们都将Kafka拿来跟常用的几个消息队列作比较,将 Kafka 加入对比使得选型更加全面和实际。但请注意Kafka并非完全适用消息中间件的所有场景。这四款消息中间件定位不同,选择取决于你的具体场景。消息队列选型核心定位一句话总结RabbitMQ&#x…

STM32初始化串口重定向后printf调试信息不输出的问题

STM32初始化串口重定向后调试信息不输出的问题 Author:明月清了个风Date: 2025/9/9PS:开发stm32F745的过程中发现printf有时候不打印信息,单独调试确定了串口初始化和重定向正确,但是在系统整体调试的时候虽然正确运行…

PCA9535ECDWR2G 微控制器MCU接口芯片 ON 电子元器件解析

一、PCA9535ECDWR2G ON 元器件解析1. 是什么电子元器件? PCA9535ECDWR2G 是安森美半导体(ON Semiconductor)生产的一款16位I/O扩展器。它属于接口芯片类别,具体功能是通过IC总线为微控制器(MCU)提供额外的通…

大模型中token与tokenizer的区别

TokenToken 的基本概念在大模型(如GPT系列)中,token是文本处理的最小单位。模型将输入的文本分割成token序列,每个token对应一个唯一的整数ID,用于模型的内部处理。例如,英文单词"apple"可能被编…

还在觉得剪辑太难?用对视频剪辑软件,让剪辑变得像拼图一样有趣

想制作出精彩的Vlog,拥有一款简单易用的视频编辑软件是关键的第一步。如果你曾因为觉得剪辑太复杂、技术门槛太高而望而却步,那么这篇文章就是为你准备的,因为借助今天简单易用的视频编辑软件,人人都能成为自己生活的导演。本文就…

【ZEGO即构开发者日报】微信公众号上线“智能回复”功能;2025年8月中国应用/游戏厂商出海收入Top30榜;土耳其宣布将封禁29款社交/社媒应用……

💡开发者朋友们大家好,这里是 开发者日报!欢迎查阅您的实时互动日报。本栏目实时聚焦、每日更新【AI】、【泛娱乐】、【语音交互】、【实时音视频】等领域热点,欢迎大家在评论区一起探讨! 🔨「产品技术」 …

前端WebSocket实时通信实现

在项目中使用WebSocket实现实时通信 WebSocket提供了一种在客户端和服务器之间建立持久连接的方式,可以实现实时数据交换。下面我将展示如何在前端项目中集成WebSocket功能。 设计思路 我将创建一个简单的聊天室界面来演示WebSocket的使用,包含以下功能&…

电磁流量计可靠品牌之选,基恩士提供多样化解决方案

引言在工业自动化领域,流量的精确计量是保障产品质量、优化成本和提升设备效率的关键一环。当面临“电磁流量计的可靠品牌”这一问题时,企业通常需要考量产品的耐用性、测量精度、维护成本以及系统集成能力。流量计在安装、维护和测量精度方面面临诸多挑…

NumPy数组与Python列表的赋值行为解析

在Python科学计算中,NumPy数组和Python原生列表是两种常用的数据结构。理解它们之间的赋值行为差异对于编写高效、正确的代码至关重要。本文将深入探讨NumPy数组赋值给Python变量的各种情况,揭示背后的内存机制和类型转换特性。 直接赋值行为分析 当我们…

中国制造难点在哪里?

最近生产一批板子,其中一个进口的连接器为什么能卖我们差不多一千多钱还没现货,有时候还禁售;规格书也就寥寥一页而已,外观看起来也淡淡无奇,身为制造业强国的我们为什么没人做呢?你们怎么看?#中…

python 读取大文件优化示例

核心方法逐行读取 - 最常用,内存占用O(1)分块读取 - 适合超大文件,可控制内存使用内存映射 - 高性能,虚拟内存映射缓冲读取 - 平衡性能和内存特殊场景处理CSV文件 - 使用pandas的chunksize参数JSON Lines - 逐行解析JSON对象文本分析 - 内存高…

VBA数据结构深度解析:字典对象与集合对象的性能终极对决

VBA数据结构大揭秘:Dictionary与Collection,谁才是性能王者? 某头部券商的风控系统曾遭遇"数据黑洞"危机:使用Collection处理10万条交易记录时,系统响应时间长达47秒,而改用Dictionary后仅需3.2秒——效率差距达14.7倍!这背后是VBA开发者普遍存在的认知盲区:…

【系统分析师】2025年上半年真题:论文及解题思路

更多内容请见: 备考系统分析师-专栏介绍和目录 文章目录 试题一:论信息系统运维管理技术与应用 试题二:论软件系统测试方法及应用 试题三:论信息系统开发方法及应用 试题四:论模型驱动分析方法及应用 试题一:论信息系统运维管理技术与应用 智能运维(AIOps)是以人工智能…

立创·庐山派K230CanMV开发板的进阶学习——颜色识别

学习目标:立创庐山派K230CanMV开发板的进阶学习——颜色识别学习内容:颜色识别 颜色识别 1. 本节介绍 📝 学习内容:本节将学习基于颜色阈值的色块检测技术,通过定义特定颜色范围,从摄像头采集的图像中识别并…

【实时Linux实战系列】V4L2 采集零拷贝:DMA-BUF 在低延迟视频中的应用

在实时视频处理系统中,视频帧的高效传输和处理是确保系统低延迟和高吞吐量的关键。传统的视频采集和处理流程中,数据拷贝是一个常见的性能瓶颈,它不仅增加了处理延迟,还可能导致帧间抖动。为了克服这些问题,Linux 提供…

STM32精准控制水流

如何用STM32精准控制水的流量?一、系统组成框图------------- ------------ ----------- -------------| | | | | | | || 流量传感器 -----> STM32 ----->| 驱动电路 ----->…

吃透 Vue 样式穿透:从 scoped 原理到组件库样式修改实战

在 Vue 项目开发中,我们经常会引入 Element Plus、Vant、Ant Design等成熟组件库来提升开发效率。但即便组件库提供了基础样式配置,实际业务中仍需根据设计需求调整组件内部细节样式——这时候,「样式穿透」就成了必须掌握的技能。而要理解样…