当前位置: 首页 > news >正文

兰州优秀网站推广asp.net 3.5网站开发全程解析

兰州优秀网站推广,asp.net 3.5网站开发全程解析 ,wordpress模板怎么安装教程,直播电商平台有哪些文章目录 前言一、目标检测理论1.目标检测发展史2.目标检测框架理论基础3.本章小结 二、YOLOv1理论知识1.YOLOv1网络结构2.YOLOv1检测原理3.YOLOv1的训练流程#xff08;1#xff09;边界框的位置参数#xff08;2#xff09;边界框的置信度#xff08;3#xff09;类别置… 文章目录 前言一、目标检测理论1.目标检测发展史2.目标检测框架理论基础3.本章小结 二、YOLOv1理论知识1.YOLOv1网络结构2.YOLOv1检测原理3.YOLOv1的训练流程1边界框的位置参数2边界框的置信度3类别置信度 4.YOLOv1的损失函数5.YOLOv1的推理 总结 前言 对于初学者的你来说选择适合的论文、选择通俗易懂又全面的科普文章等具有太多的偶然性。如果迟迟没有找到合适的文章那就不能理解什么是 YOLO 检测器什么又是 Detection with Transformers 框架。对于小白来说直接上手开源项目难道比较大而且网上直接带你上手的 YOLO 项目很多虽然能明白一套训练流程和推理流程但对于一些 YOLO 模型理论、损失函数和整体框架逻辑显得茫然不知因此这期文章我会一步一步带你了解 YOLO 目标检测理论让你快速上手 YOLO。 一、目标检测理论 这里又有同学问什么是目标检测啊别着急接下来会带你理解什么是目标检测。首先你要了解目标检测发展史吧其次需要理解一些主流框架最后了解它的一些经典工作。 1.目标检测发展史 在深度学习时代到来之前目标检测的研究大致可以分为两个主要阶段。 第一个阶段是基于传统计算机视觉方法 首先通过区域选择方法目前比较常用的就是滑动窗口的方法通过使用不同尺度的 Anchor Box根据图像的颜色、纹理、边缘等信息对整幅图像进行遍历选出大量的候选区域。其次将这些视觉特征输入到 HOG 特征提取中还有其他 HAAR、SIFT、SURF、ORB 等特征提取方法这里就不解释太久远的方法了大家只要知道有这些方法就好了。最后通过分类器如支持向量机、 Haar 分类器、DPM等 输出预测的结果 小总结对于传统的方法来说要设计一个能够识别多种复杂物体的通用目标检测器难度则大得多这种难度的核心原因在于我们难以用一套精确的语言或数学公式来定义世间万物。显然待检测的物体种类越多模型需要学习的特征也就越复杂仅靠手工进行标记方法已经难以应对这一需求。因此研究界大佬开始需求新的方法下面开始详解第二个阶段方法。 第二个阶段是深度学习时代的到来 两阶段two-stage目标检测算法 直到2014年R-CNN 由 Ross Girshick 等人提出的标志着目标检测领域的一次重要突破。从整体上来看R-CNN 的思路是先使用选择性搜索Selective Search算法从图像中生成多个候选区域Region Proposals即感兴趣区域框然后对这些候选区域进行裁剪并将它们调整为固定大小的图像块然后使用一个卷积神经网络(convolutional neuralnetworkCNN)分别处理每一个感兴趣区域ROI提取特征最后通过支持向量机SVM对这些特征进行分类判断这些区域中是否包含目标对象同时使用回归方法进一步调整边界框的位置。R-CNN 检测流程如下 通常搜索算法会先给出约 2000 个候选区域之后卷积神经网络对每个候选区域提取出相应的特征显然这一过程会十分耗时因为 R-CNN需要对每个候选区域单独执行卷积神经网络的特征提取导致计算量巨大且处理效率低。为了解决这一问题在 R-CNN 工作的基础上先后诞生了 Fast R-CNN 和 Faster R-CNN 。Fast R-CNN2015 年提出通过对 R-CNN 的过程进行优化将候选区域的特征提取与分类过程结合起来从而加快了检测速度。具体来说Fast R-CNN 不再对每个候选区域单独进行卷积运算而是对整张图像进行一次卷积操作后利用区域建议网络RoI Pooling提取每个候选区域。而Faster RCNN 提出了候选区域网络RPN完成候选区域提取过程Faster RCNN 相当于 Fast RCNN 和 RPN 的组合。R-CNN、Fast R-CNN、Faster RCNN 都是“先提取后识别”的检测范式简称两阶段two-stage目标检测算法即先提取出可能包含目标的区域再依次对每个区域进行识别最后经过处理得到最终的检测结果。R-CNN、Fast R-CNN、Faster RCNN 检测流程图如下所示 单阶段one–stage目标检测算法 而在 2015 年另一个革命性的工作——YOLOYou Only Look Once 由 Joseph Redmon 等人提出。与 R-CNN 系列的分阶段处理方式不同YOLO 采用了全新的思路将目标检测问题转化为一个端到端的回归问题简单来说就是提取候选区域定位和逐一识别分类完全可以由一个单独的网络同时完成无须分成两个阶段从而显著提升了检测速度这也是为什么 YOLO 能在实时应用场景中表现出色的关键原因之一。大家感兴趣可以去看一下 YOLOv1 论文 点击即可跳转YOLOv1论文YOLOv1 检测流程如下图 显然YOLO 直接通过一次前向传播同时预测目标的位置和类别标签简称单阶段one–stage目标检测算法。YOLO 解决了以往目标检测算法在速度和精度之间的平衡问题尤其是在需要实时检测的应用场景如无人驾驶、安防监控、视频分析等中YOLO 表现出了巨大的潜力。因此在当年迅速走红被广泛应用于工业界和研究领域。 小总结通常来说两阶段框架往往具备较高的检测精度但速度较慢相对的单阶段框架则以较快的检测速度为优势但精度通常稍逊。在许多计算机视觉任务中精度和速度常常是互相制约的也激励着研究界的大佬去探索和设计能够在二者之间找一个较为平衡的解决方案。随着研究的深入和技术的进步现代的单阶段检测框架逐渐突破了这一限制成功在精度与速度两方面都取得了显著的提升实现了出色的平衡。 2.目标检测框架理论基础 从深度学习时代开始目标检测网络的框架逐渐被确定典型的目标检测网络通常可以分为三大部分主干网络Backbone Network、颈部网络Neck Network和检测头Detection Head。这三部分共同协作完成从特征提取、特征融合到目标检测的整个流程。 主干网络Backbone Network 主干网络是目标检测网络的核心部分负责从输入图像中提取特征。主干网络通常基于卷积神经网络CNN如 VGG、ResNet、MobileNet 等通过多层卷积、池化等操作从低级到高级提取图像的特征形成多尺度特征图。较深的层次能捕捉图像的抽象特征而浅层则保留更多的空间细节信息。主干网络的选择对检测性能包括速度和精度有重要影响因此许多目标检测方法都会根据实际应用需求选择不同的主干网络。简单来说主干网络作用就是提取输入图像中的高级特征减少图像中的冗余信息以便于后续的网络去做深入的处理颈部网络Neck Network 颈部网络是连接主干网络和检测头的中间层主要用于特征融合。由于主干网络提取的特征是多尺度的而不同尺度的特征对检测不同尺寸的目标物体有重要作用因此颈部网络的主要任务是对这些不同尺度的特征进行融合与加强。常见的颈部网络结构包括 FPN特征金字塔网络和 PAN路径聚合网络。FPN 通过自顶向下的特征金字塔结构增强小目标的检测能力而 PAN 则通过自底向上的路径聚合网络增强大目标的检测效果。除此之外还有很多单独的、可即插即用的模块如 RFB、ASPP 和 YOLOv4 所使用的 SPP 模块等这些模块都可以添加在主干网络之后以进一步地处理和丰富特征信息扩大模型的感受野。简单来说颈部网络的主要作用是将由主干网络输出的特征进行二次处理。下面将详细解释常用的特征融合网络。 1FPN 特征金字塔 FPN 网络中的不同大小的特征图所包含的信息是不一样的即浅层特征图包含更多的位置信息且分辨率较高感受野较小便于检测小物体而深层特征图包含更多的语义信息且分辨率较低感受野较大便于检测大物体。因此FPN 设计了一种自顶向下的融合方式将深层的特征不断融合到浅层特征中通过将浅层与深层的信息进行融合可以有效地提升网络对不同尺度物体的检测性能。网络结构如下图 2SPP 空间金字塔池化模块 在目标检测中由 YOLOv3 作者设计的 SPP 结构包含 4 条并行的分支且每条分支用了不同大小的池化核。SPP主要是通过在特征图上应用多种不同尺度的池化窗口如1x1、5x5、9x9 和 13x13 等然后将不同尺度的池化结果进行拼接形成一个更加丰富的特征向量能够同时获取到小物体的细节信息和大物体的全局信息。SPP 性价比比较高我们可以看到在YOLOv4、YOLOv5、YOLOv6、YOLOv7、YOLOv8、和 YOLOv10 工作中广泛应用需要注意的是在YOLOv5-6.0版本以后以及目前流行的 YOLOv8 和最新的 YOLOv10 中采用的是 SPPF 结构。 SPPF 是对 SPP 的优化版本最早在 YOLOv5 中引入。SPPF 的目标是简化 SPP 的多尺度池化过程在保持相似特征提取能力的同时加快计算速度减少计算成本。SPPF 通过递归使用 3x3 池化窗口模拟多尺度特征提取极大提高了计算速度和效率适合对实时性要求较高的任务。而 SPP 使用多个不同尺度的池化窗口能够捕捉多尺度特征但池化次数较多计算开销稍大。SPP 网络结构如下所示 检测头Detection Head 检测头是目标检测网络的最后一部分负责对主干网络和颈部网络输出的特征进行目标类别的分类和边界框的定位。在 two-stage 方法如 Faster R-CNN中检测头首先生成候选区域再对这些候选区域进行精细的分类和边界框回归而在 one-stage 方法如 YOLO 和 SSD中检测头直接从特征图上生成目标的类别和边界框。简单来说检测头也被称为解码器Decoder其核心任务是将主干网络和颈部网络提取并融合的特征转换为具体的目标检测结果即目标类别的分类和边界框的定位。通常检测头的设计相对简单例如 RetinaNet 采用了“解耦”结构的检测头这是当前目标检测网络中较为常用的结构设计。所谓“解耦”结构它将定位和分类这两个任务分开进行每个任务由一条独立的分支来处理。RetinaNet的网络结构如下图所示 3.本章小结 通过了解目标检测发展史和目前主流的目标检测网络结构组成由主干网络、颈部网络、检测头。重点YOLO目标检测架构是非常重要的市面上很多改进都是从这三部分出发提出各种修改。接下来我会继续带领大家学习 YOLOv1 框架理论 弄明白这些那么学习 YOLOv5、YOLOv7、YOLOv8、YOLOv9、YOLOv10 简直湿湿碎普通话翻译就是小事一桩。 欢迎大家订阅专栏一起学习 YOLO 专栏地址-YOLOv8在主干网络、Neck网络、检测头等改进大家可以参考我写的专栏点击可跳转订阅专栏 专栏地址-YOLOv9在主干网络、Neck网络、检测头等改进大家可以参考我写的专栏点击可跳转订阅专栏 专栏地址-YOLOv10在主干网络、Neck网络、检测头等改进可以参考我写的专栏点击可跳转订阅专栏 二、YOLOv1理论知识 YOLOv1 作为 YOLO 系列的开山之祖它也是最早的一阶段目标检测算法。YOLOv1 设计之处有相对其它算法极大优势算法思想是将一整张目标图像输入神经网络卷积层用卷积计算然后直接进入输出层对 Bounding-box 位置进行运算并在此过程进行类别的分类回归运算。与传统的二阶段目标检测算法不同它没有候选框阶段会直接将目标检测问题转变为相对更加简单的回归问题。YOLOv1 的独特性引起众多码农关注从此之后各类 one-stage 框架纷纷被提出不断迭代更新推动了这一新框架的持续优化使其逐渐成为目标检测领域的主流所以说 YOLOv1 在当时目标检测算法背景下打开了新世界。接下来会详细讲解 YOLOv1 框架理论。 1.YOLOv1网络结构 YOLOv1 主干网络结构是模仿 GoogLeNet 网络结构网络有24个卷积层随后是2个全连接层但没有采用 GoogLeNet 的 Inception 模块YOLOv1 仅使用1×1的降维卷积层接着是3×3的卷积层。YOLOv1网络结构如图下图所示 在 YOLO 的年代典型的图像分类网络会将卷积层的输出特征图展平flatten成一维特征向量再通过全连接层进行分类。YOLOv1也是如此YOLOv1 在最后的卷积层之后特征图尺寸为 7×7×1024这部分特征图通过全连接层后转变为 4096 维的向量最终连接一层输出层。YOLOv1 输出特征图计算公式如下 F ∈ R H o × W o × C o F \in \mathbb{R}^{H_o \times W_o \times C_o} F∈RHo​×Wo​×Co​ 其中 F 表示特征图 R H o × W o × C o {R}^{H_o \times W_o \times C_o} RHo​×Wo​×Co​表示特征图是一个实数空间的三维张量Ho​ 表示特征图的高度Height。Wo 表示特征图的宽度Width。Co​ 表示特征图的通道数Channels 可以看到 YOLOv1 输出层是一个三维向量因为考虑到目标检测是一个空间任务YOLOv1 又将这个特征维度转换为一个三维矩阵 Y ∈ R 7 × 7 × 30 Y \in \mathbb{R}^{7 \times 7 \times 30} Y∈R7×7×30其中7×7是三维矩阵的空间尺寸30 是该三维矩阵的通道数。我们经常听到 张量 (tensor) 这一词三维及三维以上数据结构通常被称为张量。 模型参数量也是需要知道的计算参数量时需要考虑两个部分 权重参数每个神经元连接到展平后的每个输入单元因此权重的数量是展平后向量长度乘以神经元数量。偏置参数每个神经元都有一个对应的偏置值。 如果特征图尺寸为 7×7×1024展平后的向量长度为 7×7×102450176全连接层中的每个神经元都与展平后的输入向量的每一个单元相连。因此权重的参数量等于展平后的输入向量长度乘以神经元的数量。如果全连接层有 4096 个神经元则权重参数的数量为 50176×4096205,520,896。每个神经元都有一个对应的偏置因此偏置参数的数量等于全连接层中的神经元数量。对于 4096 个神经元全连接层的偏置参数量为 4096。所以全连接层的总参数量为权重参数加上偏置参数即 7×7×1024×4096 4096 205,524,992 可以看出仅这一层的参数量就已经非常庞大也不一定代表 YOLOv1 推理速度会很慢但是如此多的参数肯定占用大量存储空间这也是 YOLOv1 的缺点。 YOLOv1 在 PASCAL VOC 数据集上的性能与其他检测模型的对比情况包括训练数据、mAPmean Average Precision平均精度以及帧率FPSFrames Per Second如下表格 mAPmean Average Precision的计算思路首先计算每个类别的 APAverage Precision平均精度然后将所有类别的 AP 取平均得到最终的 mAP 值。AP的计算通常是根据模型在不同置信度阈值下的精度-召回率曲线来进行积分。FPSFrames Per Second帧率表示模型每秒可以处理的多少张图像如果模型处理一张图像的时间为 t 秒那么 FPS 就是 1 t \frac{1}{t} t1​ ​。例如如果模型处理一张图像需要 0.01 秒那么它的 FPS 就是 100。 2.YOLOv1检测原理 从 YOLOv1 网络结构看网络接收一张尺寸为 448×448×3 的图像作为输入经过网络的下采样操作输出的特征图尺寸被降采样了 64 倍即从 448×448 降为 7×7我们知道特征图计算公式为 F ∈ R H o × W o × C o F \in \mathbb{R}^{H_o \times W_o \times C_o} F∈RHo​×Wo​×Co​Co为特征图的通道数即 1024YOLOv1 设置的那么特征图的高度 Ho​ 和宽度 Wo​ 与原始图片的高度 H 和宽度 W 之间的关系可以表示为 H o H s t r i d e , W o W s t r i d e {\ H}_{o}\frac{{\ H}}{s t r i d e},\quad W_{o}\frac{\mathcal{W}}{s t r i d e}  Ho​stride H​,Wo​strideW​ 其中stride 是网络的输出步长其值通常等于网络的降采样倍数。 之后特征图 F 经过若干全连接层处理以及一些必要的维度转换的操作后最终输出 7×7×30 的立方体这里 7×7 可以想象成一个网格每个网格都是一个特征维度为30 的向量。 YOLOv1的输入和输出如下图所示 上图将输入图像划分为一个 S×S 的网格在每一个网格这个长度为 30 的向量都包含了两个边界框的参数以及总数为20的类别数量。每个网格单元预测边界框和这些边界框的置信度分数。置信度分数反映了模型对边界框包含物体的信心以及模型认为边界框预测准确的程度。每个边界框由 5 个预测值组成x, y, w, h和置信度。其中(x, y)表示边界框中心相对于网格单元的坐标。宽度和高度相对于整个图像进行预测。最后置信度表示预测框与真实框的IOU。 简单来说YOLOv1的核心检测思想逐个网格找物体。YOLOv1 的“网格划分”思想如下图所示 具体来说YOLOv1 的主干网络将原始图像转化为特征图特征图的每个网格单元都包含长度为 1024 的特征向量该特征向量包含了该网格处的某种高级特征信息。YOLOv1 遍历所有网格处理每个网格的特征信息预测该网格内是否有物体的中心点坐标及对应的类别信息。每个网格单元还输出多个边界框及其置信度每个边界框由 5 个参数置信度和边界框位置参数表示因此每个网格总共会输出5BNc 个预测参数。B 表示每个网格单元所预测的 边界框。YOLOv1 中每个网格预测有 2 个边界框每个边界框有 5 个参数分别是 x边界框中心的横坐标相对于网格单元的偏移y边界框中心的纵坐标w边界框的宽度h边界框的高度置信度预测该框内有物体的置信度。 Nc表示类别的数量在 PASCAL VOC 数据集上使用 20 个类别所以 5BNc30这个 30 就是这样计算的。随着人工智能的发展YOLOv1 的这种检测思路逐渐演变为后来的 “anchor-based” 方法其中每个网格单元相当于一个 “anchor”。 3.YOLOv1的训练流程 1边界框的位置参数 在 YOLOv1 中由于目标检测的原理是通过网格单元检测图像中的目标中心点因此只有目标中心点位于某个网格的情况下才会认为该网格单元包含物体。为此YOLOv1 引入了 “objectness” 概念用来表示该网格是否包含物体。若该网格包含目标物体objectness 的值为 1若没有物体objectness 的值为 0。这个标志帮助模型区分哪些网格单元需要进一步处理以预测物体的类别和边界框。 如下图为 YOLOv1 中正样本候选区域的示意图。带颜色的网格单元表明该网格有物体也就是图中的每个物体的边界框中心点图中的黄、蓝、粉点落在了这个网格内。在训练过程中该网格内所要预测的边界框其置信度会尽可能接近1。而对于其他没有物体的网格其边界框的置信度就会尽可能接近0。黄色框、蓝色框、粉色框表示模型为不同物体自行车、狗、汽车生成的边界框。只有物体的中心点所在的网格单元才被认为是“正样本”也就是说在训练过程中训练的正样本只会从此网格处的预测中得到而其他区域的预测都是该目标的负样本。 从上面图中目标的中心点通常并不会完全位于网格单元的正中央而是相对于该网格的四边存在一定的偏移量。这是因为物体在图像中的位置是连续的而网格是离散的划分因此物体的中心点在其所属网格内可以有不同的偏移位置这是网格划分必然的结果。在YOLOv1中虽然每个网格负责预测其范围内物体的中心点但仅靠网格的位置信息无法准确描述物体在图像中的精确位置。为了解决这个问题YOLOv1通过网络训练学习每个网格单元内物体中心点的偏移量。这个偏移量帮助模型对物体进行更加精确的定位。那怎么计算偏移量呢? 首先对于给定的边界框其左上角点的坐标可以记作 (xmin,ymin)表示边界框在图像中的左上角位置。与此同时边界框的右下角点坐标可以记作 (xmax,ymax)表示该框的另一端的坐标那么可以计算边界框的中心点公式如下 x c e n t e r x m i n x m a x 2 y c e n t e r y m i n y m a x 2 \begin{array}{c}{{x_{\mathrm{center}}\frac{x_{\mathrm{min}}x_{\mathrm{max}}}{2}}}\\ {{y_{\mathrm{center}}\frac{y_{\mathrm{min}}y_{\mathrm{max}}}{2}}}\end{array} xcenter​2xmin​xmax​​ycenter​2ymin​ymax​​​ 假设网格的步长为 stride则中心点所在的网格坐标grid 坐标可以通过以下公式计算得到 g r i d x ∣ x c e n t e r s t r i d e ∣ g r i d y ∣ y c e n t e r s t r i d e ∣ \begin{array}{r}{{\mathrm{grid}_{x}\left|{\frac{x_{\mathrm{center}}}{\mathrm{stride}}}\right|}}\\ {{\mathrm{grid}_{y}\left|{\frac{y_{\mathrm{center}}}{\mathrm{stride}}}\right|}}\end{array} gridx​ ​stridexcenter​​ ​gridy​ ​strideycenter​​ ​​ 那么这个中心点偏移量就可以被计算出来YOLOv1 的 stride 为 64 t x x c e n t e r s t r i d e − g r i d x t y y c e n t e r s t a t − g r i d y \begin{array}{c}{{t_{x}\frac{x_{\mathrm{center}}}{\mathrm{stride}}-\mathrm{grid}_{x}}}\\ {{t_{y}\frac{y_{\mathrm{center}}}{\mathrm{stat}}-\mathrm{grid}_{y}}}\end{array} tx​stridexcenter​​−gridx​ty​statycenter​​−gridy​​ YOLOv1 的核心思想之一即在逐网格进行目标检测的基础上使用偏移量提高目标定位的精度为此网格处的正样本的学习标签。如下图更好解释中心点的偏移量。 在推理阶段YOLOv1 是通过对偏移量公式进行逆运算来计算物体的最终中心点坐标计算公式如下 x c e n t e r ( g r i d x t x ) × s t r i d e y c e n t e r ( g r i d y t y ) × s t r i d e \begin{array}{c}{{x_{\mathrm{center}}\left({\mathrm{grid}_{x}t_{x}}\right)\times{\mathrm{stride}}}}\\ {{y_{\mathrm{center}}\left({\mathrm{grid}}_{y}t_{y}\right)\times{\mathrm{stride}}}}\end{array} xcenter​(gridx​tx​)×strideycenter​(gridy​ty​)×stride​ 归根到底就是在训练阶段YOLOv1 学习到的是物体中心点相对于网格左上角的偏移量 tx 和 ty并且这些值是归一化到 0 和 1 之间的相对值。在推理阶段模型通过这些预测的偏移量结合网格的绝对位置和步长 stride逆向推导出物体的 绝对中心点坐标。 为了应对边界框宽度和高度较大的问题YOLOv1 采用了归一化处理。边界框的宽和高通常是相对于整个图像来说的因此其数值相对较大。如果直接将这些值作为模型的回归目标可能会导致训练过程中的数值不稳定尤其是在损失函数中过大的损失值可能导致发散问题。 w ˉ w W h ˉ h H \bar{w}\frac{w}{W}\\ \bar{h}\frac{h}{H} wˉWw​hˉHh​ 其中 w 和 h 分别表示物体的真实边界框的宽度和高度。W 和 H 分别表示输入图像的宽度和高度。 归一化的值都在 0 到 1 之间这有助于模型在训练时保持数值稳定避免因边界框尺寸过大导致损失函数不平衡或训练发散。 2边界框的置信度 那么如何让网络确定中心点的位置为了让网络确定中心点的位置以及学习边界框的置信度YOLOv1 通过在训练过程中定义一个 置信度损失 来优化这个部分。置信度是一个关键的预测值它直接决定了一个网格是否包含目标的中心点。下图展示 IOU 计算原理 交集Intersection预测的边界框和真实的边界框之间的重叠区域并集Union预测的边界框和真实边界框的联合区域即二者的面积之和减去重叠区域的面积 计算公式如下 IoU Area of Intersection Area of Union \text{IoU} \frac{\text{Area of Intersection}}{\text{Area of Union}} IoUArea of UnionArea of Intersection​ IoU 的值范围在 0 到 1 之间越接近 1表示预测的边界框与真实边界框越接近定位精度越高。于是YOLOv1 就把预测的边界框预测框和目标的边界框目标框的 IoU 作为置信度的学习标签。 我们知道YOLOv1 的输出包含 S×S×B 个预测边界框但不是所有的边界框都需要关注。我们只关心那些包含目标中心点的网格。如下图假设蓝框和绿框代表两个预测边界框红框表示真实边界框。蓝框和绿框它们都属于正样本候选区域即该网格包含目标的中心点这里我们假设蓝框的 IoU 为 0.75绿框的 IoU 为 0.6由于蓝框预测框和真实边界框的 IoU 最大即该预测框更加精确因此我们就理所当然地希望这个预测框能作为正样本去学习目标的信息即 只保留 IoU 最大的蓝框作为训练的正样本去参与计算边界框的置信度损失、边界框的位置参数损失以及类别损失并做反向传播。则绿框将其标记为负样本它不参与类别损失和边界框的位置参数损失的计算只计算边界框的置信度损失且置信度的学习标签为 0。 可以看到 无锚框技术YOLOv1 直接预测每个网格的边界框而不是使用基于先验框anchor的策略。IoU-aware 技术YOLOv1 将 IoU交并比作为置信度评估的一部分直接影响类别预测提升了边界框预测的精度既考虑是否有物体也关注预测边界框与真实边界框的重合程度。动态标签分配技术在 YOLOv1 中正样本的分配不是预定义的而是根据预测框与目标框的 IoU 动态选择。这一思想后来被称为动态标签分配技术即在训练过程中根据实际的预测结果决定哪些边界框作为正样本从而提高模型的学习效果和适应性。 3类别置信度 YOLOv1 在处理类别置信度时采用了一种相对简单的方法每个网格只预测一个目标且只对包含目标中心点的正样本网格进行类别学习不考虑其他网格。类别标签采用了 one-hot 编码格式这是图像分类中常见的格式。通常one-hot 编码格式的类别学习会使用 Softmax 函数来处理类别预测之后通过 交叉熵损失函数计算损失。这是常见的做法能够保证类别置信度在 0 到 1 之间。然而YOLOv1 通过线性函数输出类别置信度使用 L2 损失来计算每个类别的损失。 大家可以通过标注工具来制作数据集正样本并且把数据集进行归一化操作训练流程了解后下面将介绍 YOLOv1 的损失函数计算了。 4.YOLOv1的损失函数 损失函数的设计对于目标检测性能起着决定性作用。好的损失函数设计能在边界框定位、置信度预测、类别分类之间找到平衡使模型在速度和精度上都表现出色。如果损失函数设计不合理可能会导致边界框不准确、置信度预测错误或类别混淆从而影响模型的整体表现。因此损失函数的设计直接关系到模型在实际应用中的效果。 在 YOLOv1 中损失函数是用来优化模型的核心组件它考虑了 定位损失、置信度损失 和 分类损失。YOLOv1 的损失函数由三部分组成分别对应边界框位置的误差、物体置信度的误差以及物体类别的误差。YOLOv1 总的损失函数计算公式如下 其中 S×S 表示将图像划分的网格数例如 7×7B 是每个网格单元预测的边界框数量在 YOLOv1 中 B2。x^i y^i​ 和 xi,yi 表示预测和真实的边界框中心位置。w^i, h^i​ 和 wi,hi​ 是预测和真实的边界框宽度和高度。C^i 和 Ci 是预测和真实的置信度。p^i(c 和 pi(c是预测和真实的类别概率。 1 i j o b j \mathbf{1}_{i j}^{\mathrm{{obj}}} 1ijobj​ 是指示函数表示网格单元 ii 的第 jj 个边界框是否包含物体如果有物体为1否则为0。 1 i j n o o b j \mathsf{1}_{i j}^{\mathrm{noobj}} 1ijnoobj​ 是指示函数表示网格单元中没有物体。λcoord 用于增加定位误差的权重防止分类误差主导损失论文中使用 λcoord5。λnoobj 用于降低无物体的置信度误差的权重避免大量负样本的影响论文中使用 λnoobj0.5。 5.YOLOv1的推理 YOLOv1训练完成之后当输入一张图像之后模型会为每个网格单元输出边界框和类别概率输出太多框显然不是我们想要的结果。为此模型预测之后需要进一步筛选和过滤。通常可以通过以下 4 个步骤来筛选最终的检测结果 计算所有预测边界框的得分 使用边界框的置信度分数和类别概率计算每个边界框的最终得分score。得分是边界框置信度和类别概率的乘积反映了该边界框包含特定物体的可能性。 得分阈值筛选 计算了所有边界框的得分后设置一个得分阈值过滤掉得分低于该阈值的边界框。通常这个阈值可以设置为 0.3确保只保留置信度较高的预测结果。如下图所示 计算边界框的中心点坐标及宽高 筛选完后计算每个边界框的中心点位置 (x,y) 和边界框的宽 w和高 h。这些参数用于进一步确定物体的准确位置。 使用非极大值抑制NMS进行第二次筛选 由于 YOLOv1 可能对同一个目标给出多个得分较高的边界框。因此通过非极大值抑制NMS过滤重叠的边界框保留得分最高的边界框。NMS 会根据边界框之间的 IOU交并比来去除重叠较大的框确保每个物体只保留一个边界框。NMS具体步骤如下 选择得分最高的边界框对于某个类别的所有边界框首先选取置信度得分最高的边界框作为最有可能正确的检测结果。 计算IOU然后计算其他边界框与这个得分最高的边界框的交并比IOU。 剔除重复检测如果其他边界框的 IOU 值超过设定的阈值则认为该边界框是重复检测予以剔除。 循环处理对所有类别的边界框都依次进行这一过程直到所有的边界框都被筛选完毕。最终只保留置信度最高且非重复的检测结果。 非极大值抑制处理结果如下图所示 总结 创作不易对你有帮助的话请帮忙点一个爱心谢谢关注我带你不挂科
http://www.dnsts.com.cn/news/147506.html

相关文章:

  • 菏泽 做网站 多少钱运营推广seo招聘
  • 推荐常州网站建设公司做精品课程网站需要啥素材
  • 做智能网站软件最新装修风格2021图片
  • 薛城区住房和城乡建设局网站友言 wordpress
  • 个人做民宿需要建立网站吗做网站怎么每天更新内容
  • 留言网站怎么做大气预警在建设局网站
  • dw做静态网站网页游戏脚本制作教程
  • 工程做网站中国公关公司排行榜
  • 酒店网站程序眯眯扑克app哪个公司开发
  • 江西南昌网站开发宁阳移动网站制作
  • 义乌制作网站公司信息系统软件有哪些
  • 企业网站页面图片做网店运营需要学什么?
  • 哪个公司的网站做得好男女朋友在一起做那个的网站
  • 密云手机网站建设昆明旅游网页设计
  • 站长网站优化公司网上商城的主要功能
  • 怎么用wordpress建立自己的网站安康网站建设电话
  • 织梦文章类网站模板建设众筹网站
  • 怎样做后端数据传输前端的网站室内设计效果图报价
  • 站外推广免费网站中国企业网站建设
  • 专业网站设计专家中企z云邮企业邮箱登录
  • 蛋糕网站建设的目的做视频网站利润如何处理
  • 中国住房和城乡建设厅网站先进网站建设流程
  • 如何弄网站排名湖南营销型网站建设推广
  • 宿主选择 网站建设做宣传图片用什么网站
  • 关键词搜索引擎排名查询商丘seo公司甄选24火星
  • 阿里云域名注册好后怎么建设网站网站设计公司 知道万维科技
  • 有哪些做伦敦金的网站wordpress getresults
  • 企业网站建设中企动力诚信通网站怎么做
  • 视频网站制作教程视频wordpress 列表页
  • 如何给一个网站做压测诸暨哪些公司可以制作网站