介绍
想象一下,在确保家人的安全时,要醒来烟味,心跳加速。早期检测至关重要,并且是一个深层学习驱动的火灾探测系统的“火焰监护人”,旨在使挽救生命的差异。本文指导您使用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中文网其他相关文章!

自2008年以来,我一直倡导这辆共享乘车面包车,即后来被称为“ Robotjitney”,后来是“ Vansit”,这是城市运输的未来。 我预见这些车辆是21世纪的下一代过境解决方案Surpas

革新结帐体验 Sam's Club的创新性“ Just Go”系统建立在其现有的AI驱动“扫描和GO”技术的基础上,使会员可以在购物旅行期间通过Sam's Club应用程序进行扫描。

NVIDIA在GTC 2025上的增强可预测性和新产品阵容 NVIDIA是AI基础架构的关键参与者,正在专注于提高其客户的可预测性。 这涉及一致的产品交付,达到绩效期望以及

Google的Gemma 2:强大,高效的语言模型 Google的Gemma语言模型家族以效率和性能而庆祝,随着Gemma 2的到来而扩展。此最新版本包括两种模型:270亿个参数VER

这一领先的数据剧集以数据科学家,天体物理学家和TEDX演讲者Kirk Borne博士为特色。 Borne博士是大数据,AI和机器学习的著名专家,为当前状态和未来的Traje提供了宝贵的见解

这次演讲中出现了一些非常有见地的观点——关于工程学的背景信息,这些信息向我们展示了为什么人工智能如此擅长支持人们的体育锻炼。 我将从每位贡献者的观点中概括出一个核心思想,以展示三个设计方面,这些方面是我们探索人工智能在体育运动中应用的重要组成部分。 边缘设备和原始个人数据 关于人工智能的这个想法实际上包含两个组成部分——一个与我们放置大型语言模型的位置有关,另一个与我们人类语言和我们的生命体征在实时测量时“表达”的语言之间的差异有关。 Alexander Amini 对跑步和网球都很了解,但他还

卡特彼勒(Caterpillar)的首席信息官兼高级副总裁杰米·恩格斯特(Jamie Engstrom)领导了一支由28个国家 /地区的2200多名IT专业人员组成的全球团队。 在卡特彼勒(Caterpillar)工作了26年,其中包括她目前的四年半,Engst

Google Photos的新Ultra HDR工具:快速指南 使用Google Photos的新型Ultra HDR工具增强照片,将标准图像转换为充满活力的高动态范围杰作。对于社交媒体而言,此工具可提高任何照片的影响,


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

Atom编辑器mac版下载
最流行的的开源编辑器

SublimeText3 Linux新版
SublimeText3 Linux最新版

mPDF
mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),

禅工作室 13.0.1
功能强大的PHP集成开发环境

SecLists
SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。