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
英文地址,請注明出處:http://en.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等成熟組件庫來提升開發效率。但即便組件庫提供了基礎樣式配置,實際業務中仍需根據設計需求調整組件內部細節樣式——這時候,「樣式穿透」就成了必須掌握的技能。而要理解樣…