首页 > 编程语言 >基于深度学习网络的烟雾检测算法matlab仿真

基于深度学习网络的烟雾检测算法matlab仿真

时间:2023-11-27 20:00:31浏览次数:35  
标签:仿真 ... layer trainingData 检测器 算法 matlab data Size

1.算法运行效果图预览

 

 

2.算法运行软件版本

matlab2022a

 

3.算法理论概述

       基于深度学习网络的烟雾检测算法是一种端到端的检测方法,主要分为基于候选区域的二阶段目标检测器和基于回归的单阶段目标检测器两类。

       基于候选区域的二阶段目标检测器的原理是,先通过训练区域候选网络(RPN)生成候选区域,然后将图片划分为背景和目标两种类别,同时对目标位置进行初步预测;再通过训练目标区域检测网络,实现对候选区域内目标类别的判定和目标位置的确定

具体实现步骤:

1、用遗传算法与Kmeans迭代算出最大可能召回率的anchor组合

2、初始化锚框,并输出预测框

3、将预测框与真实框进行对比,计算两个框之间的差值,再根据差值进行反向更新

4、迭代网络参数,直到收敛,求出最佳的锚框值 该方法具有很好的实用性,但网络结构复杂度较高,导致训练和检测的效率较低。

        另一种是基于回归的单阶段目标检测器。这类检测器的核心思想是将物体的检测视作一个回归任务,直接对每个像素进行分类并回归其边界框。

         其训练方法是采用锚框对每一个像素进行回归,训练出边框的位置和大小。由于所有像素都要进行回归,因此其计算量巨大,训练时间较长。

 

 

 

 

4.部分核心程序

% 预处理训练数据
data           = read(trainingData);
In_layer_Size  = [224 224 3];
 
% 估计锚框
pre_train_data = transform(trainingData, @(data)preprocessData(data,In_layer_Size));
NAnchor        = 3;
NBoxes         = estimateAnchorBoxes(pre_train_data,NAnchor);
numClasses     = width(vehicleDataset)-1;
% 创建Faster R-CNN网络
lgraph         = fasterRCNNLayers(In_layer_Size,numClasses,NBoxes,Initial_nn,featureLayer);
% 数据增强
aug_train_data = transform(trainingData,@augmentData);
augmentedData  = cell(4,1);
 
% 预处理数据并显示标注
trainingData   = transform(aug_train_data,@(data)preprocessData(data,In_layer_Size));
validationData = transform(validationData,@(data)preprocessData(data,In_layer_Size));
data           = read(trainingData);
I              = data{1};
bbox           = data{2};
% 设置训练参数
options = trainingOptions('sgdm',...
    'MaxEpochs',240,...
    'MiniBatchSize',2,...
    'InitialLearnRate',2e-5,...
    'CheckpointPath',tempdir,...
    'ValidationData',validationData);
% 训练Faster R-CNN目标检测器
[detector, info] = trainFasterRCNNObjectDetector(trainingData,lgraph,options,'NegativeOverlapRange',[0 0.15],'PositiveOverlapRange',[0.15 1]);

  

标签:仿真,...,layer,trainingData,检测器,算法,matlab,data,Size
From: https://www.cnblogs.com/matlabworld/p/17860316.html

相关文章

  • 前缀和算法总结
    前缀和思维导图:一维前缀和算法模版:1#include<iostream>23usingnamespacestd;45constintN=100010;67intn,m;8ints[N];910intmain()11{12scanf("%d%d",&n,&m);13for(inti=1;i<=n;i++)14......
  • 排序算法之冒泡排序优化1
    一:概述原始的数列{4,8,6,3,9,2,1,7},执行至第6步和第7步时,数列状态如下:很明显的可以看出,经过第6轮排序之后,整个数列已然是有序的了。可是排序算法依然是继续执行第7轮排序。在这种情况下,如果能判断出数列已经有序,并作出标记,那么剩下的几轮就不必执行了,可以提前结束。二:具体代码优化的......
  • 最小生成树(Kruskal和Prim算法)
    最小生成树(Kruskal和Prim算法)部分资料来源于:最小生成树(Kruskal算法)_kruskal算法求最小生成树-CSDN博客、【算法】最小生成树——Prim和Kruskal算法-CSDN博客关于图的几个概念定义:连通图:在无向图中,若任意两个顶点vi与vj都有路径相通,则称该无向图为连通图。强连通图:在有向图中,若......
  • Proj4:改进LiteOS中物理内存分配算法
    Proj4:改进LiteOS中物理内存分配算法实验目的掌握LiteOS系统调用的自定义方法实验环境Ubantu和IMX6ULLmini实验内容(从代码角度详细描述实验的步骤和过程)原先代码:1/*23*Description:findsuitablefreeblockuse"bestfit"algorithm45*Input......
  • MD5加密算法
    MD5MD5是一种不可逆的加密算法。可以产生出一个128位(16字节)的散列值(hashvalue),用于确保信息传输完整一致md5的特性压缩性:任意长度的数据,算出的MD5值长度都是固定的。容易计算:从原数据计算出MD5值很容易。抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都......
  • 文心一言 VS 讯飞星火 VS chatgpt (144)-- 算法导论12.1 4题
    四、用go语言,对于一棵有n个结点的树,请设计在O(n)时间内完成的先序遍历算法和后序遍历算法。我个人喜欢灵小智。文心一言:在Go语言中,我们可以使用递归来实现树的前序遍历和后序遍历。以下是实现这两种方法的代码。首先,我们定义一个树节点的结构:typeTreeNodestruct{V......
  • 文心一言 VS 讯飞星火 VS chatgpt (144)-- 算法导论12.1 4题
    四、用go语言,对于一棵有n个结点的树,请设计在O(n)时间内完成的先序遍历算法和后序遍历算法。我个人喜欢灵小智。文心一言:在Go语言中,我们可以使用递归来实现树的前序遍历和后序遍历。以下是实现这两种方法的代码。首先,我们定义一个树节点的结构:typeTreeNodestruct{......
  • 【调度算法】开放车间调度问题遗传算法
    问题描述开放车间调度问题可以描述为:有n个需要加工的工件,每个工件有m道工序,需要在m台不同的机器上进行加工,每道工序的加工时间都是已知的,但是每个工件的加工顺序是任意的;一台机器在同一个时刻只能加工一个工件,一个工件不能同时在两台机器上加工;每个工件在同一时刻也只能在某一台......
  • 时间复杂度为 O(nlogn) 的排序算法 | 京东物流技术团队
    归并排序归并排序遵循分治的思想:将原问题分解为几个规模较小但类似于原问题的子问题,递归地求解这些子问题,然后合并这些子问题的解来建立原问题的解,归并排序的步骤如下:划分:分解待排序的n个元素的序列成各具n/2个元素的两个子序列,将长数组的排序问题转换为短数组的排序问题,当待排......
  • floyd算法
    FLOYD复杂度Floyd-Warshall算法的时间复杂度为O(|V|^{3})[4],空间复杂度为O(|V|^{2}),其中V是点集。原理动态规划适用范围Floyd-Warshall算法适用于解决带权有向图或带权无向图的全源最短路径问题,即计算任意两个顶点之间的最短路径长度。Floyd-Warshall算法的适用范围包......