目錄
介紹
學習成果
目錄
深度學習中的革命檢測
火災檢測中的挑戰
數據集概述
火和非火圖像的組成
設置環境
數據準備
可視化圖像的分佈
創建圖像發行的餅圖
展示火和非火圖像
通過增強技術增強培訓數據
可視化增強圖像
構建火災檢測模型
用優化器和損失功能編譯模型
添加回調以進行最​​佳培訓
模型擬合:培訓卷積神經網絡
評估模型
示例用法:預測新圖像中的火
下載和加載圖像
做出預測
結論
關鍵要點
常見問題
首頁 科技週邊 人工智慧 火焰監護人:基於深度學習的火災檢測系統

火焰監護人:基於深度學習的火災檢測系統

Apr 18, 2025 am 10:54 AM

介紹

想像一下,在確保家人的安全時,要醒來煙味,心跳加速。早期檢測至關重要,並且是一個深層學習驅動的火災探測系統的“火焰監護人”,旨在使挽救生命的差異。本文指導您使用CNN和TensorFlow創建此技術,從數據收集和增強到模型構建和微調。無論您是技術愛好者還是專業人士,都可以發現如何利用尖端技術來保護生活和財產。

學習成果

  • 獲得準備,組織和增強圖像數據集的技能,以優化模型性能。
  • 了解如何構建和微調卷積神經網絡以進行有效的圖像分類任務。
  • 使用指標和可視化來評估和解釋模型性能的能力。
  • 了解如何為實用應用部署和調整DL(深度學習)模型,以證明其在消防檢測等現實世界中的實用性。

本文作為數據科學博客馬拉鬆的一部分發表

目錄

  • 深度學習中的革命檢測
  • 火災檢測中的挑戰
  • 數據集概述
  • 設置環境
  • 數據準備
  • 可視化圖像的分佈
  • 展示火和非火圖像
  • 通過增強技術增強培訓數據
  • 構建火災檢測模型
  • 模型擬合:培訓卷積神經網絡
  • 評估模型
  • 示例用法:預測新圖像中的火
  • 常見問題

深度學習中的革命檢測

最近,Thedeep Learning徹底改變了從醫療保健到金融的色彩豐富的領域,現在,它在安全和災難運營方面取得了長足的進步。深度學習的一個特別激烈的操作是火災發現領域。隨著全球範圍反射的增加頻率和僵化性,開發有效且可靠的火災發現系統比以往任何時候都更加關鍵。在這個全面的伴侶中,我們將引導您完成使用卷積神經網絡(CNN)和TensorFlow創建重要的火災發現系統的過程。該系統恰當地命名為“火焰監護人”。

火災,無論是野火還是結構性火災對生命,財產和環境構成重大威脅。早期發現對於減輕火災的毀滅性影響至關重要。基於深度學習的火災檢測系統可以快速,準確地分析大量數據,在升級之前識別火災事件。

火災檢測中的挑戰

使用深度學習檢測火提出了一些挑戰:

  • 數據可變性:火影圖像在顏色,強度和周圍環境方面可能有很大差異。強大的檢測系統必須能夠處理此變異性。
  • 誤報:將假陽性(錯誤地識別為火災)最小化以避免不必要的恐慌和資源部署至關重要。
  • 實時處理:為了實際使用,系統應能夠實時處理圖像,並提供及時的警報。
  • 可伸縮性:系統應可擴展以處理大型數據集並在不同的情況下工作。

數據集概述

用於火焰監護人火災檢測系統的數據集包括分為兩個類:“火”和“非火力”的圖像。該數據集的主要目的是訓練卷積神經網絡(CNN)模型,以準確區分包含火的圖像和那些沒有火災的圖像。

火和非火圖像的組成

  • 火災圖像:這些圖像包含存在火災的各種情況。該數據集包括野火,結構火和受控燒傷的圖像。這些圖像中的火可能在大小,強度和存在的環境上有所不同。這種多樣性有助於模型學習火的不同視覺特徵。
  • 非火圖像:這些圖像不包含任何火。它們包括各種場景,例如景觀,建築物,森林以及其他自然和城市環境,而沒有任何火災。包含多種非火圖像可確保模型不能在非火災情況下錯誤地識別火災。

您可以從這裡下載數據集。

設置環境

首先,我們需要使用必要的庫和工具來建立自己的地形。我們將使用Google協作進行此設計,因為它為GPU支持提供了一個可訪問的平台。我們以前已經下載了數據集並將其上傳到驅動器上。

 #mount驅動器
從Google.Colab Import Drive
drive.mount('/content/drive')

#Importing必要的庫
導入numpy作為NP
導入大熊貓作為pd
導入matplotlib.pyplot作為PLT
進口海洋作為SNS
導入plotly.extress為px
導入plotly.graph_objects作為go
從plotly.subplots導入make_subplots
導入操作系統
導入TensorFlow作為TF
來自Tensorflow.keras.preprocessing導入圖像
來自tensorflow.keras.preprocessing.image導入成像的Atagenerator


#setting樣式網格 
sns.set_style('darkgrid')
登入後複製

數據準備

我們需要一個帶有火和非火語腳本圖片的數據集,以訓練我們的算法。將創建一個空白的數據幀和一個函數來添加Google驅動器中的圖像。

 #創建一個空數據框
df = pd.dataframe(columns = ['path','label'])

#功能將圖像添加到數據框
def add_images_to_df(目錄,標籤):
    對於dirname,_,在OS.Walk(目錄)中的文件名:
        用於文件名中的文件名:
            df.loc [len(df)] = [os.path.join(dirname,filename),標籤]

#添加火圖像
add_images_to_df('/content/drive/mydrive/fire/fire_dataset/fire_images','fire')

#添加非火圖像
add_images_to_df('/content/drive/mydrive/fire/fire_dataset/non_fire_images','non_fire')

#洗牌數據集
df = df.sample(frac = 1).Reset_index(drop = true)
登入後複製

可視化圖像的分佈

可視化火災和非火力圖像的分佈有助於我們更好地了解數據集。我們將繪圖用於交互式圖。

創建圖像發行的餅圖

現在讓我們創建一個用於圖像分佈的餅圖。

 #創建散點圖
無花果= px.scatter(
    data_frame = df,
    x = df.index,
    y ='label',
    顏色='label',
    title =“火和非火圖像的分佈”
)

#更新標記大小
圖.update_traces(Marker_Size = 2)

圖.add_trace(go.pie(values = df ['label']。value_counts()。
登入後複製

火焰監護人:基於深度學習的火災檢測系統

展示火和非火圖像

現在讓我們編寫用於顯示火和非火圖像的代碼。

 Def Visualize_images(標籤,標題):
    data = df [df ['label'] ==標籤]
    圖片= 6#設置圖片的數量
    圖,ax = plt.subplots(int(pics // 2),2,無花果=(15,15))
    plt.suptitle(標題)
    ax = ax.ravel()
    對於範圍((圖片// 2) * 2)的i
        路徑= data.sample(1).loc [:,'path']。 to_numpy()[0]
        img = image.load_img(路徑)
        img = image.img_to_array(img) / 255
        ax [i] .imshow(img)
        ax [i] .axes.xaxis.set_visible(false)
        ax [i] .axes.yaxis.set_visible(false)
visualize_images('fire','帶火的圖像')
visualize_images('non_fire',“無火的圖像”) 
登入後複製

火焰監護人:基於深度學習的火災檢測系統

火焰監護人:基於深度學習的火災檢測系統

通過顯示一些來自火災和非火災類別的示例圖像,我們將了解我們的模型將使用的內容。

通過增強技術增強培訓數據

我們將採用圖像添加方法來改善我們的培訓數據。應用任意圖像適應(類似於迴旋,無人機和剪切)被稱為加法。通過生成更健壯和不同的數據集,此過程增強了模型概括為新圖像的能力。

來自tensorflow.keras.models導入順序
來自tensorflow.keras.layers導入conv2d,maxpool2d,扁平,密集

Generator = Imagedatagenerator(
    rotation_range = 20,
    width_shift_range = 0.1,
    height_shift_range = 0.1,
    shear_range = 2,
    zoom_range = 0.2,
    recale = 1/255,
    驗證_split = 0.2,
)
train_gen = generator.flow_from_dataframe(df,x_col ='path',y_col ='label',images_size =(256,256),class_mode ='binary',subset ='訓練')
val_gen = generator.flow_from_dataframe(df,x_col ='path',y_col ='label',images_size =(256,256),class_mode ='binary',subset ='驗證')
class_indices = {}
對於train_gen.class_indices.keys()中的鍵:
    class_indices [train_gen.class_indices [鍵]] =鍵
    
打印(class_indices)
登入後複製

可視化增強圖像

我們可以可視化訓練集產生的一些增強圖像。

 sns.set_style('dark')
圖片= 6#設置圖片的數量
圖,ax = plt.subplots(int(pics // 2),2,無花果=(15,15))
plt.suptitle(“訓練集中生成的圖像”)
ax = ax.ravel()
對於範圍((圖片// 2) * 2)的i
    ax [i] .imshow(train_gen [0] [0] [i])
    ax [i] .axes.xaxis.set_visible(false)
    ax [i] .axes.yaxis.set_visible(false)
登入後複製

火焰監護人:基於深度學習的火災檢測系統

構建火災檢測模型

我們的模型將對應幾個卷積層,每個卷積層隨後是最大池子播種機。卷積層是CNN的核心結構塊,使模型可以從圖像中學習特徵的空間尺度。最大池層有助於降低點圖的維度,從而使模型更有效。我們還將在模型末端添加完全連接的(厚)。這些層有助於結合卷積層學到的功能,並做出最終的括號決定。該事件子播種將具有具有Sigmoid激活函數的單個神經元,該神經元的概率得分錶明圖像是否包含火。定義模型電樞後,我們將發布一個摘要,以查看每個子播種機中的結構和參數數量。此步驟對於確保正確配置模型很重要。

來自tensorflow.keras.models導入順序
來自tensorflow.keras.layers導入conv2d,maxpool2d,扁平,密集

型號=順序()
model.Add(conv2d(過濾器= 32,kernel_size =(2,2),activation ='relu',input_shape =(256,256,3)))))))))
model.Add(maxpool2d())
model.Add(conv2d(filters = 64,kernel_size =(2,2),activation ='relu'))
model.Add(maxpool2d())
model.Add(conv2d(filters = 128,kernel_size =(2,2),activation ='relu'))
model.Add(maxpool2d())
模型add(Flatten())
ADD(密集(64,激活='relu'))
ADD(密集(32,激活='relu'))
ADD(密集(1,激活='Sigmoid'))
model.summary()
登入後複製

用優化器和損失功能編譯模型

接下來,我們將使用ADAM優化器和二進制交叉滲透損失函數進行編譯。 Adam Optimizer的效率和自適應學習率廣泛用於深度學習。二進制跨凝結適用於我們的二元分類問題(火與非火災)。

我們還將指定其他指標,例如曲線(AUC)下的準確性,召回和區域,以評估模型在訓練和驗證過程中的性能。

添加回調以進行最​​佳培訓

回調是TensorFlow中的一個強大功能,使我們能夠監視和控制訓練過程。我們將使用兩個重要的回調:

  • 早期踩踏:當驗證損失停止改善,防止過度擬合時,停止訓練。
  • REDUCELRONPLATEAU:降低驗證損失高原時的學習率,幫助模型收斂到更好的解決方案。
 #compiling模型
來自Tensorflow.keras.metrics導入召回,AUC
來自tensorflow.keras.utils導入plot_model

model.compile(優化器='adam',loss ='binary_crossentropy',metrics = ['fecuctiacy',召回(),auc()),)

#定義回調
從tensorflow.keras.callbacks進口早期踩踏,還原
早期_Stoppping =早期踩踏(Monitor ='Val_loss',耐心= 5,Restore_best_weights = true)
redy_lr_on_plateau = reducelronplateau(Monitor ='val_loss',因子= 0.1,耐心= 5)
登入後複製

模型擬合:培訓卷積神經網絡

模型擬合是指訓練數據集上的機器學習模型的過程。在此過程中,該模型通過調整其參數(權重和偏見)以最大程度地減少損耗函數來了解數據中的基本模式。在深度學習的背景下,這涉及到訓練數據的幾個時代和後退傳球。

 model.fit(x = train_gen,batch_size = 32,epochs = 15,validation_data = val_gen,callbacks = [forath_stopppping,redion_lr_on_plateau])
登入後複製

評估模型

訓練後,我們將在驗證集上評估模型的性能。此步驟有助於我們了解模型對新數據的推廣程度。我們還將可視化培訓歷史,以了解損失和指標如何隨著時間的流逝而發展。

 eval_list = model.evaluate(val_gen,return_dict = true)
對於eval_list.keys()中的公制:
    打印(公制F”:{eval_list [metric] :. 2f}”)
   
eval_list = model.evaluate(val_gen,return_dict = true)
對於eval_list.keys()中的公制:
    打印(公制F”:{eval_list [metric] :. 2f}”)
登入後複製

火焰監護人:基於深度學習的火災檢測系統

示例用法:預測新圖像中的火

最後,我們將演示如何使用訓練有素的模型來預測新圖像是否包含火。此步驟涉及加載圖像,預處理以匹配模型的輸入要求,並使用模型進行預測。

下載和加載圖像

我們將從Internet下載示例圖像,並使用TensorFlow的圖像處理功能加載它。此步驟涉及調整圖像並標準化其像素值。

做出預測

使用訓練有素的模型,我們將對已加載的圖像進行預測。該模型將輸出概率分數,我們將進行四捨五入以獲得二進制分類(火災或非火災)。我們還將使用類索引將預測映射到其相應的標籤。

 #下載圖像
!
#加載圖像
img = image.load_img('preadive.jpg')
IMG

img = image.img_to_array(img)/255
img = tf.image.resize(img,(256,256))
img = tf.expand_dims(img,axis = 0)

打印(“圖像形狀”,img.shape)

預測= int(tf.Round(model.predict(x = img))。numpy()[0] [0])
打印(“預測值是:”,預測”,預測標籤為: 
登入後複製

火焰監護人:基於深度學習的火災檢測系統

火焰監護人:基於深度學習的火災檢測系統

結論

開發基於深度學習的火災探測系統,例如“火焰監護人”,體現了深度學習在應對現實世界挑戰時的變革潛力。通過精心遵循每個步驟,從數據準備和可視化到模型構建,培訓和評估,我們創建了一個可靠的框架來檢測圖像中的火災。該項目不僅強調了技術複雜性涉及深度學習,而且還強調了利用技術對安全和災難預防的重要性。

正如我們得出的那樣,很明顯,DL模型可以顯著增強火災檢測系統,從而使其更高效,可靠和可擴展。儘管傳統方法具有其優點,但深度學習的融合卻引入了新的精緻和準確性。開發“火焰監護人”的旅程既具有啟發性和有意義,展現了現代技術的巨大能力。

關鍵要點

  • 了解數據處理和可視化技術。
  • 理解適當的數據收集和增強確保有效的模型培訓和概括。
  • 實施模型構建和模型評估。
  • 理解諸如早期和還原的回調,以優化培訓並防止過度擬合。
  • 學習的建築卷積神經網絡使用CNN進行火災檢測。

常見問題

Q1。什麼是“火焰監護人”?

答:“火焰監護人”是一種使用卷積神經網絡(CNN)和Tensorflow的火災檢測系統,以高精度識別圖像中的火災。

Q2。為什麼早期火災檢測很重要?

答:早期的火災檢測對於防止廣泛損害,挽救生命並減少火災的環境影響至關重要。快速反應可以顯著減輕野火和結構火的毀滅性影響。

Q3。使用深度學習構建火災檢測系統涉及哪些挑戰?

A.挑戰包括處理數據可變性(顏色,強度和環境的差異),最大程度地減少誤報,確保實時處理能力以及可伸縮性處理大型數據集。

Q4。圖像增強如何有助於訓練模型?

A.圖像增強通過應用旋轉,變焦和剪切等隨機轉換來增強訓練數據集。這可以通過將其暴露於各種場景,改善其穩健性來更好地推廣模型。

Q5。哪些指標用於評估模型的性能?

答:使用準確性,回憶和曲線下的面積(AUC)等指標評估該模型。這些指標有助於評估模型如何區分火災和非火圖像及其整體可靠性。

本文所示的媒體不由Analytics Vidhya擁有,並由作者酌情使用。

以上是火焰監護人:基於深度學習的火災檢測系統的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1664
14
CakePHP 教程
1421
52
Laravel 教程
1315
25
PHP教程
1266
29
C# 教程
1239
24
開始使用Meta Llama 3.2 -Analytics Vidhya 開始使用Meta Llama 3.2 -Analytics Vidhya Apr 11, 2025 pm 12:04 PM

Meta的Llama 3.2:多模式和移動AI的飛躍 Meta最近公佈了Llama 3.2,這是AI的重大進步,具有強大的視覺功能和針對移動設備優化的輕量級文本模型。 以成功為基礎

10個生成AI編碼擴展,在VS代碼中,您必須探索 10個生成AI編碼擴展,在VS代碼中,您必須探索 Apr 13, 2025 am 01:14 AM

嘿,編碼忍者!您當天計劃哪些與編碼有關的任務?在您進一步研究此博客之前,我希望您考慮所有與編碼相關的困境,這是將其列出的。 完畢? - 讓&#8217

AV字節:Meta' llama 3.2,Google的雙子座1.5等 AV字節:Meta' llama 3.2,Google的雙子座1.5等 Apr 11, 2025 pm 12:01 PM

本週的AI景觀:進步,道德考慮和監管辯論的旋風。 OpenAI,Google,Meta和Microsoft等主要參與者已經釋放了一系列更新,從開創性的新車型到LE的關鍵轉變

向員工出售AI策略:Shopify首席執行官的宣言 向員工出售AI策略:Shopify首席執行官的宣言 Apr 10, 2025 am 11:19 AM

Shopify首席執行官TobiLütke最近的備忘錄大膽地宣布AI對每位員工的基本期望是公司內部的重大文化轉變。 這不是短暫的趨勢。這是整合到P中的新操作範式

GPT-4O vs OpenAI O1:新的Openai模型值得炒作嗎? GPT-4O vs OpenAI O1:新的Openai模型值得炒作嗎? Apr 13, 2025 am 10:18 AM

介紹 Openai已根據備受期待的“草莓”建築發布了其新模型。這種稱為O1的創新模型增強了推理能力,使其可以通過問題進行思考

視覺語言模型(VLMS)的綜合指南 視覺語言模型(VLMS)的綜合指南 Apr 12, 2025 am 11:58 AM

介紹 想像一下,穿過​​美術館,周圍是生動的繪畫和雕塑。現在,如果您可以向每一部分提出一個問題並獲得有意義的答案,該怎麼辦?您可能會問:“您在講什麼故事?

最新的最佳及時工程技術的年度彙編 最新的最佳及時工程技術的年度彙編 Apr 10, 2025 am 11:22 AM

對於那些可能是我專欄新手的人,我廣泛探討了AI的最新進展,包括體現AI,AI推理,AI中的高科技突破,及時的工程,AI培訓,AI,AI RE RE等主題

如何在SQL中添加列? - 分析Vidhya 如何在SQL中添加列? - 分析Vidhya Apr 17, 2025 am 11:43 AM

SQL的Alter表語句:動態地將列添加到數據庫 在數據管理中,SQL的適應性至關重要。 需要即時調整數據庫結構嗎? Alter表語句是您的解決方案。本指南的詳細信息添加了Colu

See all articles