目标检测 | yolov7 原理和介绍

2024-08-21 02:52

本文主要是介绍目标检测 | yolov7 原理和介绍,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

相关系列:
目标检测 | yolov1 原理和介绍
目标检测 | yolov2/yolo9000 原理和介绍
目标检测 | yolov3 原理和介绍
目标检测 | yolov4 原理和介绍
目标检测 | yolov5 原理和介绍
目标检测 | yolov6 原理和介绍
目标检测 | yolov7 原理和介绍
目标检测 | yolov8 原理和介绍
目标检测 | yolov9 原理和介绍
目标检测 | yolov10 原理和介绍
论文:https://arxiv.org/abs/2207.02696
代码:https://github.com/WongKinYiu/yolov7

1. 简介

 YOLOv7是目标检测领域中YOLO系列的最新进展,它在速度和准确性上都取得了显著的提升,被认为是目标检测领域的新里程碑。YOLOv7的核心技术亮点包括:

  • 模型重参数化:YOLOv7首次将模型重参数化技术引入网络架构中,这一技术最早在REPVGG中提出,有助于提升模型表达能力而不增加计算复杂度。
  • 标签分配策略:YOLOv7采用了结合YOLOv5和YOLOX优点的标签分配策略,通过跨网格搜索和匹配策略,提高了检测准确性。
  • ELAN高效网络架构:YOLOv7提出了ELAN(Extended Efficient Layer Aggregation etwork)架构,通过优化网络结构和计算流程,实现高检测性能和低计算复杂度。
  • 带辅助头的训练:YOLOv7引入了辅助头进行训练,这为模型提供了更多监督信息,有助于学习有用的特征表示,尽管这会增加一定的训练成本,但可以提高检测精度,且不影响推理速度 。
  • 架构改革:YOLOv7的架构源自YOLOv4、Scaled YOLOv4和YOLO-R,并在此基础上进行了进一步的实验和开发。
  • 复合模型缩放:YOLOv7执行模型缩放以适应不同的应用需求,考虑了分辨率、宽度、深度和阶段等因素。
  • 可训练的Bag of Freebies (BoF):YOLOv7引入了计划重参数化卷积等BoF方法,在不增加训练成本的情况下提高模型性能。
    Coarse for Auxiliary and Fine for Lead loss:YOLOv7采用了深度监督技术,使用多个头进行训练,其中包括Lead Head和辅助头,以及Lead Head Guided Label Assigner,有助于模型更好地学习。

本论文主要工作:

  • 提出了一个实时对象检测器,主要是希望它能够从边缘到云端同时支持移动GPU和GPU设备。
  • 优化了架构,专注于优化训练过程。重点放在优化模块和优化方法上,称为可训练的 “Bag of freebies”。
  • 对于模型重参数化问题,本文使用梯度传播路径的概念分析了适用于不同网络中的层的模型重参数化策略,并提出了有计划的重参数化模型。
  • 对于动态标签分配问题,本文提出了一种新的标签分配方法,称为由粗到细引导标签分配

本文主要贡献:

  • 提出了几种可用于训练的方法,这些方法仅仅会增加训练上的负担用于提升model性能,而不会增加推理负担
  • 对于目标检测方法的发展,作者发现了两个新问题: ​​​​
    ①重参数化模块如何替换原始模块
    ②动态标签分配策略如何处理对不同输出层的分配
    不过本文提出了解决这俩问题的方法
  • 作者针对目标检测可以更有效的利用参数和计算问题,提出了"扩展"(extend)和“复合缩放”(compound scaling)
  • 提出的方法可以有效的减少40%参数量和50%计算量,高精度高速度

在这里插入图片描述

2. Related work 相关工作

2.1 Real-time object detectors 实时物体检测器

 目前最先进的实时目标检测器主要基于 YOLO [61, 62, 63] 和 FCOS [76, 77],分别是 [3, 79, 81, 21, 54, 85, 23] . 能够成为最先进的实时目标检测器通常需要以下特性:
(1) 更快更强的网络架构;
(2) 更有效的特征整合方法[22, 97, 37, 74, 59, 30, 9, 45];
(3) 更准确的检测方法 [76, 77, 69];
(4) 更稳健的损失函数 [96, 64, 6, 56, 95, 57];
(5) 一种更有效的标签分配方法 [99, 20, 17, 82, 42];
(6) 更有效的训练方法。
 在本文中,我们不打算探索需要额外数据或大型模型的自我监督学习或知识蒸馏方法。 相反,我们将针对与上述 (4)、(5) 和 (6) 相关的最先进方法衍生的问题设计新的可训练bag-of-freebies方法。

2.2 Model re-parameterization 模型重新参数化

 模型重新参数化技术 [71、31、75、19、33、11、4、24、13、12、10、29、14、78] 在推理阶段将多个计算模块合并为一个。 模型重参数化技术可以看作是一种集成技术,我们可以将其分为两类,即模块级集成和模型级集成。 模型级别的重新参数化有两种常见的做法来获得最终的推理模型。 一种是用不同的训练数据训练多个相同的模型,然后对多个训练模型的权重进行平均。 另一种是对不同迭代次数的模型权重进行加权平均。 模块级重新参数化是最近比较热门的研究问题。这种方法在训练时将一个模块拆分为多个相同或不同的模块分支,在推理时将多个分支模块整合为一个完全等效的模块。然而,并非所有提出的重新参数化模块都可以完美地应用于不同的架构。 考虑到这一点,我们开发了新的重新参数化模块,并为各种架构设计了相关的应用策略。

2.3. Model scaling 模型缩放

 模型缩放[1,14,15,49,57,69-71]是一种放大或缩小已设计模型并使其适合不同计算设备的方法。模型缩放方法通常使用不同的缩放因子,如分辨率(输入图像的大小)、深度(层数)、宽度(通道数)和级数(特征金字塔数),以便在网络参数量、计算量、推理速度和精度方面实现良好的折衷。网络体系结构搜索(NAS)是常用的模型缩放方法之一。NAS可以从搜索空间中自动搜索合适的缩放因子,而无需定义过于复杂的规则。NAS的缺点是它需要非常昂贵的计算来完成模型缩放因子的搜索。在[14]中,研究人员分析了缩放因子与参数和操作量之间的关系,试图直接估计一些规则,从而获得模型缩放所需的缩放因子。通过查阅文献,我们发现几乎所有的模型缩放方法都独立分析单个缩放因子,甚至复合缩放类别中的方法也独立优化了缩放因子。这是因为大多数流行的NAS架构处理的扩展因素相关性不大。我们观察到,当缩放这些模型的深度时,所有基于连接的模型,如DenseNet[31]或VoExpressRoute[38],都会改变某些层的输入宽度。由于所提出的架构是基于连接的,我们必须为该模型设计一种新的复合缩放方法。

3. Architecture 结构

3.1. Extended efficient layer aggregation networks 扩展的高效层聚合网络

 在大多数关于设计高效架构的文献中,主要考虑的无非是参数的数量、计算量和计算密度。Ma等人[52]从存储器访问成本的特点出发,分析了输入/输出通道比、体系结构分支数和元素运算对网络推理速度的影响。Doll’ar等人[14]在执行模型缩放时还考虑了激活,即更多地考虑卷积层输出张量中的元素数量。图2 (b)中的CSPVoVNet[76]的设计是VoVNet[38]的变体。CSPVoVNet的架构[76]除了考虑上述基本的设计问题外,还对梯度路径进行了分析,以使不同层的权值能够学习到更多样化的特征。上述的梯度分析方法使推理更快、更准确。图2 ©中的ELAN[78]考虑了以下设计策略——“如何设计一个高效的网络?”他们得出了一个结论:通过控制最长最短的梯度路径,一个更深层次的网络可以有效地学习和收敛。在本文中,我们提出了基于ELAN的扩展ELAN (E-ELAN),其主要架构如图2 (d)所示。
 在大规模ELAN中,无论梯度路径长度和计算块的堆叠数量如何,它都达到了稳定状态。如果无限地堆叠更多的计算块,这种稳定状态可能会被破坏,参数利用率会下降。本文提出的E-ELAN算法通过扩展、洗牌、合并基数来实现在不破坏原有梯度路径的情况下不断增强网络学习能力的能力。在体系结构上,E-ELAN只改变了计算块的体系结构,而过渡层的体系结构完全不变。我们的策略是使用群卷积来扩展计算块的通道和基数。我们将对计算层的所有计算块应用相同的组参数和信道乘法器。然后,将每个计算块计算出的特征图按照设定的组参数g进行洗牌,再将其拼接在一起。此时,每组特征图中的通道数将与原架构中的通道数相同。最后,我们添加g组特征映射来执行合并基数。E-ELAN除了保持原有的ELAN设计架构外,还可以引导不同组的计算块学习更多样化的特性。
在这里插入图片描述

(a) VoVNet
 VoVNet是一个基于连接的模型,由OSA组成,将 DenseNet 改进的更高效,区别于常见的plain结构和残差结构。
 这种结构不仅继承了 DenseNet 的多感受野表示多种特征的优点,也解决了密集连接效率低下的问题。
(b) CSPVoVNet
 (b)是(a)的CSP变体,CSPVoVNet除了考虑到参数量、计算量、计算密度、ShuffleNet v2提出的内存访问成本(输入输出通道比,架构分支数量,element-wise等),还分析了梯度路径,可以让不同层的权重学习到更具有区分性的特征。
(c) ELAN
 通过控制最短最长的梯度路径,更深的网络可以更有效地学习和收敛。
优点:
1.可以有效地使用网络参数 ,在这一部分中提出通过调整梯度传播路径,不同计算单元的权重可以学习各种信息,从而实现更高的参数利用效率
2.具有稳定的模型学习能力,由于梯度路径设计策略直接确定并传播信息以更新权重到每个计算单元,因此所设计的架构可以避免训练期间的退化
3.具有高效的推理速度,梯度路径设计策略使得参数利用非常有效,因此网络可以在不增加额外复杂架构的情况下实现更高的精度。
缺点: 当梯度更新路径不是网络的简单反向前馈路径时,编程的难度将大大增加。
(d) ELAN
 (d)是作者提出的 Extended-ELAN (E-ELAN) ,E-ELAN 使用了 expand、shuffle、merge cardinality来实现对 ELAN 网络的增强。
在架构方面,E-ELAN 只改变了计算块(computation blocks)的架构,而过渡层(transition layer)的架构完全没有改变。
YOLOv7 的策略是使用组卷积来扩展计算块的通道和基数。

3.2. Model scaling for concatenation-based models 基于连接的模型的模型缩放

 模型缩放的主要目的是调整模型的某些属性,生成不同尺度的模型,以满足不同推理速度的需要。例如,effentnet的缩放模型[69]考虑了宽度、深度和分辨率。缩放后的yolov4[76],其缩放模型是调整级数。在[14]中,Doll’ar等人分析了香草卷积和群卷积在进行宽度和深度缩放时对参数量和计算量的影响,并以此设计了相应的模型缩放方法。上述方法主要用于诸如PlainNet或ResNet等体系结构中。当这些架构执行放大或缩小时,每一层的入度和出度不会改变,因此我们可以独立分析每个缩放因子对参数和计算量的影响。然而,如果这些方法应用于concatenation-based架构中,我们会发现,当进行深度扩展或收缩,翻译的入度层concatenation-based计算块后立即将减少或增加,如图3所示(a)和(b)。
 它可以推断出从上面的现象我们不能单独分析不同尺度因子concatenation-based模型但必须考虑在一起。以放大深度为例,这种动作会导致过渡层的输入通道和输出通道的比例发生变化,从而可能导致模型的硬件使用率下降。因此,我们必须针对基于串联的模型提出相应的复合模型缩放方法。当我们缩放计算块的深度因子时,我们还必须计算该块的输出通道的变化。然后,我们将对过渡层进行相同变化量的宽度因子缩放,结果如图3 ©所示。我们提出的复合缩放方法可以保持模型在初始设计时的属性,并保持最优结构。
在这里插入图片描述

 作者对于连接模型,提出了一种复合模型方法,在考虑计算模块深度因子缩放的同时也考虑过渡层宽度因子做同等量的变化。当对连接结构的网络进行尺度缩放时,只缩放计算块的深度,转换层的其余部分只进行宽度的缩放

4. Trainable bag-of-freebies 可训练的bag-of-freebies

4.1. Planned re-parameterization model 计划的重新参数化模型

 虽然RepConv[12]在VGG[65]上取得了优异的性能,但当我们直接将其应用于ResNet[25]和DenseNet[31]等非平面架构时,其准确率会显著降低。利用梯度流传播路径分析了重参数化卷积如何与不同的网络相结合。并设计了相应的规划再参数化模型。
 RepConv实际上在一个卷积层中结合了3×3卷积、1×1卷积和恒等连接。经过分析组合和相应的性能-图4。计划的重新参数化模型。在提出的规划重参数化模型中,我们发现,对于残差连接或连接连接的层,其RepConv不应该有身份连接。在这种情况下,可以用不包含身份连接的RepConvN代替它。
 研究发现,RepConv中的身份连接破坏了ResNet中的残差和DenseNet中的拼接,为不同的特征映射提供了更多的梯度多样性。基于以上原因,我们使用无身份连接的RepConvN (RepConvN)来设计计划重参数化模型的体系结构。在我们的想法中,当残差或拼接的卷积层被重新参数化卷积取代时,应该没有恒等连接。图4显示了我们设计的“计划的重新参数化模型”如何在PlainNet和ResNet中应用的示例。至于基于残差模型和基于串联模型的完整的计划重参数化模型实验,将在消融研究部分进行。
在这里插入图片描述

4.2. Coarse for auxiliary and fine for lead loss 粗用于辅助,细用于铅损失

Lead head是负责最终输出的 head ;Auxiliary head是负责辅助训练的 head
负责辅助训练的head用粗标签,负责最终输出的head用细标签

 深度监督[37]是一种用于训练深度网络的技术。其主要概念是在网络的中间层添加额外的辅助头部,并以辅助损失为导向对浅层网络进行加权。即使对于ResNet[25]和DenseNet[31]等通常收敛良好的架构,深度监督[45,48,62,64,67,80,84,95]仍然可以显着提高模型在许多任务上的性能。图5 (a)和(b)分别显示了“无”和“有”深度监督的目标检测器架构。在本文中,我们将负责最终输出的头部称为先导头部,将辅助训练的头部称为辅助头部。
 接下来我们要讨论标签分配的问题。过去,在深度网络的训练中,标签分配通常直接参考ground truth,并根据给定的规则生成硬标签。然而,近年来,如果以目标检测为例,研究人员经常利用网络预测输出的质量和分布,然后结合地面真值,使用一些计算和优化方法来生成可靠的软标签[7,16,19,35,40 - 42,58,87,88,96]。例如,YOLO[58]使用边界盒回归预测的IoU和ground truth作为对象的软标签。本文将考虑网络预测结果和地面真实值并分配软标签的机制称为“标签分配器”。

关于hard label和soft label:
hard label:有些论文中也称为hard target ,其实这也是借鉴了知识蒸馏的思想,hard字面意思上就可以看出比较强硬,是就是,不是就是不是,标签形式:(1,2,3…)或(0,1,0,0…)【举个栗子:要么是猫要么是狗】
soft label:soft是以概率的形式来表示。可理解为对标签的平滑也即软化,比如像[0.6,0.4],【举个栗子:有60%的概率是猫, 40%的概率是狗】,就好像不会给你非常明确的回答。
现在比较流行的结构中,经常会将网络输出的数据分布通过一定的优化方法等与GT进行匹配生成soft label(其实我们熟悉的经过softmax的或者sigmod输出就是一种soft label)。

 无论辅助负责人还是领导负责人的情况如何,深度监督都需要对目标目标进行培训。在软标签贴标机相关技术的发展过程中,我们意外发现了一个新的衍生问题,即“如何将软标签分配给辅助头和导联头”,据我们所知,相关文献至今尚未探讨过这个问题。目前最流行的方法结果如图5 ©所示,即将辅助头和引线头分开,然后利用各自的预测结果和ground truth进行标签赋值。本文提出的方法是一种利用导流头预测同时引导辅助导流头和导流头的新型标签分配方法。换句话说,我们使用引线头部预测作为指导来生成粗到细的层次标签,这些标签分别用于辅助头部和引线头部学习。提出的两种深度监管标签分配策略分别如图5 (d)和(e)所示。
在这里插入图片描述
 导联头导联标签分配器主要是根据导联头的预测结果和地面真实情况进行计算,并通过优化过程生成软标签。这套软标签将作为辅助头和导头的目标训练模型。这样做的原因是因为铅头具有相对较强的学习能力,因此由其生成的软标签应该更能代表源数据与目标数据之间的分布和相关性。进一步,我们可以把这种学习看作是一种广义残差学习。通过让较浅的辅助头直接学习铅头已经学习过的信息,铅头将更能专注于学习尚未学习的剩余信息
 粗精导标器还利用导标头的预测结果和接地真值生成软标。但是在这个过程中,我们生成了两组不同的软标签,即粗标签和细标签,其中细标签与引线头引导标签分配器生成的软标签相同,而粗标签是通过放宽正样本分配过程的约束,允许更多的网格被视为正目标而生成的。究其原因,是因为辅助头的学习能力不如先导头强,为了避免丢失需要学习的信息,我们将重点优化辅助头在目标检测任务中的召回。对于引线头的输出,我们可以从高查全率的结果中过滤出高精度的结果作为最终输出。但是,我们必须注意,如果粗标签的附加权重与细标签的附加权重接近,则可能在最终预测时产生不良先验。因此,为了使这些超粗的正网格影响较小,我们在解码器中加入了限制,使得超粗的正网格不能很好地产生软标签。该机制允许在学习过程中动态调整细标签和粗标签的重要性,并且使细标签的可优化上界始终高于粗标签。

粗标签和细标签究竟是什么?
 首先是细标签,网络最终输出的三个head是Lead head,会将这部分的预测结果与ground truth生成soft label,网络会觉得这个soft label得到是数据分布更接近真实的数据分布,训练得到的内容更加“细致”,
 再来说说粗标签,Auxiliary head由于是从中间网络部分得到的,它的预测效果肯定是没有深层网络Lead head提取到的数据或者特征更细致,所以Auxiliary head部分的内容是比较“粗糙”的,在训练过程中,会将Lead head与ground truth的soft label当成一个全新的ground truth,然后与Auxiliary head之间建立损失函数,说白了,就是让辅助head的预测结果也“近似”为Lead head

4.3. Other trainable bag-of-freebies 其他可训练的免费包

 在本节中,我们将列出一些可训练的免费包。这些免费赠品是我们在训练中使用的一些技巧,但最初的概念并不是我们提出的。这些免费赠品的训练细节将在附录中详细阐述,包括(1)convn -bn激活拓扑中的批归一化:这部分主要是将批归一化层直接连接到卷积层。这样做的目的是在推理阶段将批处理归一化的均值和方差整合到卷积层的偏置和权值中。(2) YOLOR中的隐式知识[79]与卷积特征映射加法乘法相结合:在推理阶段通过预计算,将YOLOR中的隐式知识简化为一个向量。这个向量可以与前一个或后一个卷积层的偏置和权重相结合。(3) EMA模型:EMA是一种用于平均教师的技术[72],在我们的系统中,我们使用EMA模型纯粹作为最终的推理模型。

5. Experiments 实验

5.1. Experimental setup 实验步骤

 使用MS COCO数据集进行实验。我们所有的模型都是从零开始训练的。我们使用train 2017 set进行训练,然后使用val 2017 set进行验证和选择超参数。最后,使用2017年测试集与最先进的目标探测器进行比较。详细的培训设置见附录。
 我们设计了边缘GPU、普通GPU和云GPU的基本模型,分别命名为YOLOv7-tiny、YOLOv7和YOLOv7- w6。我们还使用基本模型对不同的服务需求进行模型缩放。对于YOLOv7,我们在颈部进行堆栈缩放,并使用所提出的复合缩放方法对整个模型的深度和宽度进行缩放,得到YOLOv7- x。对于YOLOv7-W6,我们采用新提出的复合标度法得到了YOLOv7-E6和YOLOv7-D6。此外,我们对YOLOv7-E6使用了拟议的E-ELAN,从而完成了YOLOv7-E6E。由于YOLOv7-tiny是面向边缘gpu的架构,它将使用泄漏的ReLU作为激活函数。对于其他模型,我们使用SiLU作为激活函数。我们将在附录中详细描述每个模型的比例因子。

5.2. Baselines 基线

 我们选择以前版本的YOLO[2,76]和最先进的目标检测器YOLOR[79]作为我们的基线。表1显示了我们提出的YOLOv7模型与使用相同设置训练的基线的比较。从结果中我们可以看到,基于yolov7的模型在参数数量、计算量和准确性方面优于基线模型。对于普通GPU设计的模型,YOLOv7和YOLOv7x减少了约40%的参数和20%的计算量,仍然可以实现更高的AP。对于边缘GPU设计的模型,YOLOv7-tiny减少了39%的参数和49%的计算量,并且可以实现与yolov4 -tiny- 31相同的AP。
在这里插入图片描述

5.3. Comparison with state-of-the-arts 与最先进水平的比较

 我们将所提出的方法与最先进的目标探测器进行了比较,结果如表2所示。由表2可知,该方法具有最佳的速度-精度综合权衡。
在这里插入图片描述

5.4. Ablation study 消融实验

5.4.1 Proposed compound scaling method 提出复合结垢法

 表3显示了使用不同模型扩展策略进行扩展时获得的结果。其中,我们提出的复合缩放方法是将计算块的深度增加1.5倍,过渡块的宽度增加1.25倍。从表3的结果可以看出,我们提出的复合缩放策略可以更有效地利用参数和计算量。
在这里插入图片描述

5.4.2 Proposed planned re-parameterization model 提出的计划再参数化模型

 为了验证我们提出的计划重参数化模型的通用性,我们分别在基于级联的模型和基于残差的模型上使用它进行验证。我们选择用于验证的基于串联的模型和基于残差的模型分别是3-stacked ELAN和CSPDarknet。
 在基于级联模型的实验中,我们用RepConv替换3堆叠ELAN中不同位置的3 × 3卷积层,详细配置如图6所示。从表4所示的结果中,我们看到所有较高的AP值都出现在我们提出的计划的重新参数化模型中。
在基于残差的模型实验中,我们设计了一个反向暗块来适应我们的实验设计策略,其架构如图7所示。
在这里插入图片描述
 实验结果如表5所示,充分证实了所提出的计划再参数化模型对残差模型同样有效。我们发现RepCSPResNet[83]的设计也符合我们的设计模式。
在这里插入图片描述
5.4.3 Proposed assistant loss for auxiliary head 辅助水头的拟辅助损耗
 在辅助头部的辅助损失实验中,我们比较了一般的导联头部独立标签分配方法和辅助头部方法,并比较了两种提出的导联引导标签分配方法。我们在表6中显示了所有的比较结果。从表6中列出的结果可以清楚地看出,任何增加辅助损失的模型都可以显著提高整体性能。
在这里插入图片描述

 在表7中,我们进一步比较了引入上限约束和不引入上限约束的结果。从表中的数字可以看出,用距离物体中心的距离来约束物体上界的方法可以获得更好的性能。
在这里插入图片描述
 将辅助头部直接连接到中间层金字塔进行训练,可以弥补下一层金字塔预测中可能丢失的信息。为了解决这个问题,我们的方法是在合并E-ELAN的基数之前,在其中一组特征映射之后连接辅助头部。表8显示了采用粗-细铅引导和部分粗-细铅引导方法获得的结果。显然,部分粗转细铅导法具有较好的辅助效果。
在这里插入图片描述

6. Conclusions 结论

 本文提出了一种新的实时目标检测器体系结构和相应的模型缩放方法。此外,我们发现目标检测方法的发展过程产生了新的研究课题。在研究过程中,我们发现了重参数化模块的替换问题和动态标签分配问题。为了解决这个问题,我们提出了可训练的免费袋方法来提高目标检测的准确性。在此基础上,我们开发了YOLOv7系列的目标检测系统,该系统获得了最先进的结果。

这篇关于目标检测 | yolov7 原理和介绍的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1091920

相关文章

性能测试介绍

性能测试是一种测试方法,旨在评估系统、应用程序或组件在现实场景中的性能表现和可靠性。它通常用于衡量系统在不同负载条件下的响应时间、吞吐量、资源利用率、稳定性和可扩展性等关键指标。 为什么要进行性能测试 通过性能测试,可以确定系统是否能够满足预期的性能要求,找出性能瓶颈和潜在的问题,并进行优化和调整。 发现性能瓶颈:性能测试可以帮助发现系统的性能瓶颈,即系统在高负载或高并发情况下可能出现的问题

水位雨量在线监测系统概述及应用介绍

在当今社会,随着科技的飞速发展,各种智能监测系统已成为保障公共安全、促进资源管理和环境保护的重要工具。其中,水位雨量在线监测系统作为自然灾害预警、水资源管理及水利工程运行的关键技术,其重要性不言而喻。 一、水位雨量在线监测系统的基本原理 水位雨量在线监测系统主要由数据采集单元、数据传输网络、数据处理中心及用户终端四大部分构成,形成了一个完整的闭环系统。 数据采集单元:这是系统的“眼睛”,

Hadoop数据压缩使用介绍

一、压缩原则 (1)运算密集型的Job,少用压缩 (2)IO密集型的Job,多用压缩 二、压缩算法比较 三、压缩位置选择 四、压缩参数配置 1)为了支持多种压缩/解压缩算法,Hadoop引入了编码/解码器 2)要在Hadoop中启用压缩,可以配置如下参数

深入探索协同过滤:从原理到推荐模块案例

文章目录 前言一、协同过滤1. 基于用户的协同过滤(UserCF)2. 基于物品的协同过滤(ItemCF)3. 相似度计算方法 二、相似度计算方法1. 欧氏距离2. 皮尔逊相关系数3. 杰卡德相似系数4. 余弦相似度 三、推荐模块案例1.基于文章的协同过滤推荐功能2.基于用户的协同过滤推荐功能 前言     在信息过载的时代,推荐系统成为连接用户与内容的桥梁。本文聚焦于

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖

hdu4407(容斥原理)

题意:给一串数字1,2,......n,两个操作:1、修改第k个数字,2、查询区间[l,r]中与n互质的数之和。 解题思路:咱一看,像线段树,但是如果用线段树做,那么每个区间一定要记录所有的素因子,这样会超内存。然后我就做不来了。后来看了题解,原来是用容斥原理来做的。还记得这道题目吗?求区间[1,r]中与p互质的数的个数,如果不会的话就先去做那题吧。现在这题是求区间[l,r]中与n互质的数的和

烟火目标检测数据集 7800张 烟火检测 带标注 voc yolo

一个包含7800张带标注图像的数据集,专门用于烟火目标检测,是一个非常有价值的资源,尤其对于那些致力于公共安全、事件管理和烟花表演监控等领域的人士而言。下面是对此数据集的一个详细介绍: 数据集名称:烟火目标检测数据集 数据集规模: 图片数量:7800张类别:主要包含烟火类目标,可能还包括其他相关类别,如烟火发射装置、背景等。格式:图像文件通常为JPEG或PNG格式;标注文件可能为X

图神经网络模型介绍(1)

我们将图神经网络分为基于谱域的模型和基于空域的模型,并按照发展顺序详解每个类别中的重要模型。 1.1基于谱域的图神经网络         谱域上的图卷积在图学习迈向深度学习的发展历程中起到了关键的作用。本节主要介绍三个具有代表性的谱域图神经网络:谱图卷积网络、切比雪夫网络和图卷积网络。 (1)谱图卷积网络 卷积定理:函数卷积的傅里叶变换是函数傅里叶变换的乘积,即F{f*g}

C++——stack、queue的实现及deque的介绍

目录 1.stack与queue的实现 1.1stack的实现  1.2 queue的实现 2.重温vector、list、stack、queue的介绍 2.1 STL标准库中stack和queue的底层结构  3.deque的简单介绍 3.1为什么选择deque作为stack和queue的底层默认容器  3.2 STL中对stack与queue的模拟实现 ①stack模拟实现

基于 YOLOv5 的积水检测系统:打造高效智能的智慧城市应用

在城市发展中,积水问题日益严重,特别是在大雨过后,积水往往会影响交通甚至威胁人们的安全。通过现代计算机视觉技术,我们能够智能化地检测和识别积水区域,减少潜在危险。本文将介绍如何使用 YOLOv5 和 PyQt5 搭建一个积水检测系统,结合深度学习和直观的图形界面,为用户提供高效的解决方案。 源码地址: PyQt5+YoloV5 实现积水检测系统 预览: 项目背景