YOLOv5【网络结构】

YOLOv5 网络结构主要由以下几部分组成:

    骨干网络(Backbone): New CSP-Darknet53
    颈部网络(Neck): SPPF, New CSP-PAN
    头部网络(Head): YOLOv3 Head

    基于深度学习的现在目标检测算法中主要有三个组件:Backbone、Neck和Head。

    Backbone:骨干网络,主要指用于特征提取的,已在大型数据集(例如ImageNet|COCO等)上完成预训练,拥有预训练参数的卷积神经网络,例如:ResNet-50、Darknet53等
    Head:检测头/头部网络,主要用于预测目标的种类和位置(bounding boxes)
    Neck:颈部网络,在Backone和Head之间,会添加一些用于收集不同阶段中特征图的网络层。
    基于深度学习的目标检测模型的结构是这样的:输入->主干->脖子->头->输出。主干网络提取特征,脖子提取一些更复杂的特征,然后头部计算预测输出。

YOLOv5与Yolov3及Yolov4进行比较。主要的不同点:

(1)输入端 : Mosaic数据增强(v4中使用到了)、自适应锚框计算、自适应图片缩放
(2)骨干网络(Backbone) : Focus结构,CSP结构
(3)颈部网络(Neck) : FPN+PAN结构
(4)头部网络(Head) : GIOU_Loss
YOLOv5基本组件:

    Focus:基本上就是YOLO v2的passthrough。
    CBL:由Conv+Bn+Leaky_relu激活函数三者组成。
    CSP1_X:借鉴CSPNet网络结构,由三个卷积层和X个Res unint模块Concate组成。
    CSP2_X:不再用Res unint模块,而是改为CBL。
    SPP:采用1×1,5×5,9×9,13×13的最大池化的方式,进行多尺度融合。

二、YOLOv5输入端
2.1 Mosaic数据增强

      Yolov5的输入端采用了和Yolov4一样的Mosaic数据增强的方式。Mosaic是参考2019年底提出的CutMix数据增强的方式,但CutMix只使用了两张图片进行拼接,而Mosaic数据增强则采用了4张图片,随机缩放、随机裁剪、随机排布的方式进行拼接,使模型在更小的范围内识别目标

 Mosaic数据增强的主要步骤为:

    随机选取图片拼接基准点坐标(xc,yc),随机选取四张图片。
    四张图片根据基准点,分别经过尺寸调整和比例缩放后,放置在指定尺寸的大图的左上,右上,左下,右下位置。
    根据每张图片的尺寸变换方式,将映射关系对应到图片标签上。
    依据指定的横纵坐标,对大图进行拼接。处理超过边界的检测框坐标。

采用Mosaic数据增强的优点:

    丰富数据集: 随机使用4张图像,随机缩放后随机拼接,增加很多小目标,大大增加了数据多样性。
    增强模型鲁棒性: 混合四张具有不同语义信息的图片,可以让模型检测超出常规语境的目标。
    加强批归一化(Batch Normalization)的效果: 当模型设置 BN 操作后,训练时会尽可能增大批样本总量(BatchSize),因为 BN 原理为计算每一个特征层的均值和方差,如果批样本总量越大,那么 BN 计算的均值和方差就越接近于整个数据集的均值和方差,效果越好。
    有利于提升小目标检测性能: Mosaic 数据增强图像由四张原始图像拼接而成,这样每张图像会有更大概率包含小目标,从而提升了模型的检测能力。

2.2 自适应锚框计算

     在之前学习的YOLO系列算法中,对于不同的数据集,初始设定长宽的锚框。

     在YOLOv3和YOLOv4中,训练不同的数据集,都是通过单独的程序运行来获得初始锚点框。在 YOLOv5 中,则是将此功能嵌入到整个训练代码里中。所以在每次训练开始之前,它都会根据不同的数据集来自适应计算不同训练集中的最佳锚框值。

如果觉得计算的锚框效果并不好,也可以在代码中将此功能关闭。指令代码:

控制的代码即train.py中上面一行代码,设置成False,每次训练时,不会自动计算。

    自适应的计算具体过程:

        获取数据集中所有目标的宽和高。
        将每张图片中按照等比例缩放的方式到 resize 指定大小,这里保证宽高中的最大值符合指定大小。
        将 bboxes 从相对坐标改成绝对坐标,这里乘以的是缩放后的宽高。
        筛选 bboxes,保留宽高都大于等于两个像素的 bboxes。
        使用 k-means 聚类三方得到n个 anchors,与YOLOv3、YOLOv4 操作一样。
        使用遗传算法随机对 anchors 的宽高进行变异。倘若变异后的效果好,就将变异后的结果赋值给 anchors;如果变异后效果变差就跳过,默认变异1000次。这里是使用 anchor_fitness 方法计算得到的适应度 fitness,然后再进行评估。

2.3 自适应图片缩放

        在目标检测算法中,不同的图片的长宽都不相同,因此常用的方式是将原始图片统一缩放到一个标准尺寸,再送入检测网络中。

        原始的缩放方法存在着一些问题,在实际的使用中的很多图片的长宽比不同,缩放填充之后,两端的黑边大小都不相同,然而如果填充的过多,会存在大量的信息冗余,从而影响整个算法的推理速度。为了进一步提升YOLO v5的推理速度,该算法提出一种方法能够自适应的添加最少的黑边到缩放之后的图片中。

具体步骤如下:

YOLO算法中常用416*416等尺寸,对下面800*600的图像进行缩放。
(1) 根据原始图片大小以及输入到网络的图片大小计算缩放比例

原始缩放尺寸是416*416,都除以原始图像的尺寸后,可以得到0.52,和0.69两个缩放系数,选择小的缩放系数。

(2)计算缩放后的尺寸

 原始图片的长宽都乘以最小的缩放系数0.52,宽变成了416,而高变成了312。

(3) 计算黑边填充数值

图中416表示YOLO v5网络所要求的图片宽度,312为缩放后图片的宽度。

       通过加减操作获得需要填充的黑边长度104,然后对该数值执行np.mod 取余操作,获得8个像素点,使用32是因为YOLOv5网络执行了5次下采样操作。最后因将填充的区域分散到图片两边,因此再÷2。

    注意:
    (1)Yolov5中填充的是灰色,即(114,114,114)。
    (2)训练时没有采用缩减黑边的方式,还是采用传统填充的方式,即缩放到416*416大小。只是在测试,使用模型推理时,才采用缩减黑边的方式,提高目标检测,推理的速度。
    (3)为什么np.mod函数的后面用32?
    因为YOLOv5的网络经过5次下采样,而2的5次方,等于32。所以至少要去掉32的倍数,再进行取余。以免产生尺度太小走不完stride(filter在原图上扫描时,需要跳跃的格数)的问题,再进行取余。

三、骨干网络(Backbone)
3.1 Focus结构

       Focus模块在YOLOv5中是图片进入Backbone前,对图片进行切片操作,具体操作是在一张图片中每隔一个像素拿到一个值,类似于邻近下采样,这样就拿到了四张图片,四张图片互补,长得差不多,但是没有信息丢失,这样一来,将W、H信息就集中到了通道空间,输入通道扩充了4倍,即拼接起来的图片相对于原先的RGB三通道模式变成了12个通道,最后将得到的新图片再经过卷积操作,最终得到了没有信息丢失情况下的二倍下采样特征图。
       以YOLOv5s为例,原始的640 × 640 × 3的图像输入Focus结构,采用切片操作,先变成320 × 320 × 12的特征图,再经过一次卷积操作,最终变成320 × 320 × 32的特征图。
切片操作如下:

作用: 可以使信息不丢失的情况下提高计算力

不足:Focus 对某些设备不支持且不友好,开销很大,另外切片对不齐的话模型就崩了。

后期改进: 在新版中,YOLOv5 将Focus 模块替换成了一个 6 x 6 的卷积层。两者的计算量是等价的,但是对于一些 GPU 设备,使用 6 x 6 的卷积会更加高效。

3.2 CSP结构

     CSPNet主要是将feature map拆成两个部分,一部分进行卷积操作,另一部分和上一部分卷积操作的结果进行concate。

      在之前的YOLOv4网络结构中,借鉴了CSPNet的设计思路,在主干网络中设计了CSP结构。下图是YOLOv4的网络结构图:

 在目标检测问题中,使用CSPNet作为Backbone带来的提升比较大,可以有效增强CNN的学习能力,同时也降低了计算量。

      虽然YOLOv4与YOLOv5都是用了CSP结构,但YOLOv5与其不同点在于:YOLOv4中只有主干网络使用了CSP结构。 而YOLOv5中设计了两种CSP结构,以YOLOv5s网络为例,CSP1_ X结构应用于Backbone主干网络,而CSP2_X结构则应用于Neck中。下图清楚的表示出来了:

 四、颈部网络(Neck)

       YOLOv5与YOLOv4的颈部网络(Neck)都采用FPN+PAN的结构。但是在它的基础上做了一些改进操作:YOLOV4的Neck结构中,采用的都是普通的卷积操作,而YOLOV5的Neck中,采用CSPNet设计的CSP2结构,从而加强了网络特征融合能力。
      FPN-PAN结构如下图所示,FPN层自顶向下传达强语义特征,而PAN塔自底向上传达定位特征:

五、头部网络(Head)
5.1 Bounding box损失函数   

    YOLO v5采用CIOU_LOSS 作为bounding box 的损失函数。下面依次对IOU_Loss、GIOU_Loss、DIOU_Loss以及CIOU_Loss进行介绍。

(1) IOU_Loss : 预测框与GT框之间的交集/预测框与GT框之间的并集。

       这种损失存在一些问题:如下图所示,当预测框和GT框不相交时,即IoU=0,此时无法反映两个框之间的距离,此时该损失函数不可导,即IoU Loss无法优化两个框不相交的情况;当两个预测框大小相同时,那么这两个IOU也相同。

 (2) GIOU_Loss:

        为了解决以上的问题,GIOU_Loss增加了相交尺度的衡量方式。其引入最小外接矩形及外接矩形与并集的差集。

     但是这种方法并不能完全解决这种问题,仍然存在着其他的问题。如上图所示,状态1、2、3都是预测框在GT框内部且预测框大小一致的情况,这时预测框和GT框的差集都是相同的,因此这三种状态的GIoU值也都是相同的,这时GIoU退化成了IoU,无法区分相对位置关系。

(3) DIOU_Loss:

        针对IOU和GIOU损失所存在的问题,DIOU为了解决如何最小化预测框和GT框之间的归一化距离这个问题,DIOU_Loss考虑了预测框与GT框的重叠面积和中心点距离,当GT框包裹预测框的时候,直接度量2个框的距离,因此DIOU_Loss的收敛速度更快一些。

如下图所示,当GT框包裹预测框时,此时预测框的中心点的位置都是一样的,因此按DIOU_Loss的计算公式,三者的值都是相同的。

(4)CIOU_Loss:

       在DIOU_Loss的基础上增加了一个影响因子,将预测框和GT框的长宽比也考虑了进来。具体的计算方法如下式所示,即CIOU_Loss将GT框的重叠面积、中心点距离和长宽比全都考虑进来了。

         综上:

        IOU_Loss主要考虑了检测框和GT框之间的重叠面积。
        GIOU_Loss在IOU的基础上,解决边界框不重合时出现的问题。
        DIOU_Loss在IOU和GIOU的基础上,同时考虑了边界框中心点距离信息。
        CIOU_Loss在DIOU的基础上,又考虑了边界框宽高比的尺度信息。

5.2 NMS非极大值抑制

NMS 的本质是搜索局部极大值,抑制非极大值元素。

       非极大值抑制,主要就是用来抑制检测时冗余的框。因为在目标检测中,在同一目标的位置上会产生大量的候选框,这些候选框相互之间可能会有重叠,所以我们需要利用非极大值抑制找到最佳的目标边界框,消除冗余的边界框。

    算法流程:


      1.对所有预测框的置信度降序排序
      2.选出置信度最高的预测框,确认其为正确预测,并计算他与其他预测框的 IOU。
      3.根据步骤2中计算的 IOU 去除重叠度高的,IOU > threshold 阈值就直接删除。
      4.剩下的预测框返回第1步,直到没有剩下的为止.
     

    SoftNMS:
          当两个目标靠的非常近时,置信度低的会被置信度高的框所抑制,那么当两个目标靠的十分近的时候就只会识别出一个 BBox。为了解决这个问题,可以使用 softNMS。
          它的基本思想是用稍低一点的分数来代替原有的分数,而不是像 NMS 一样直接置零。

六、训练策略

    (1)多尺度训练(Multi-scale training)。 如果网络的输入是416 x 416。那么训练的时候就会从 0.5 x 416 到 1.5 x 416 中任意取值,但所取的值都是32的整数倍。
    (2)训练开始前使用 warmup 进行训练。 在模型预训练阶段,先使用较小的学习率训练一些epochs或者steps (如4个 epoch 或10000个 step),再修改为预先设置的学习率进行训练。
    (3)使用了 cosine 学习率下降策略(Cosine LR scheduler)。
    (4)采用了 EMA 更新权重(Exponential Moving Average)。 相当于训练时给参数赋予一个动量,这样更新起来就会更加平滑。
    (5)使用了 amp 进行混合精度训练(Mixed precision)。 能够减少显存的占用并且加快训练速度,但是需要 GPU 支持。

【YOLOv5】Backbone、Neck、Head各模块详解

YOLOv5模型结构

    yolov5有五个版本:yolov5s、yolov5m、yolov5l、yolov5x和yolov5nano。其中,yolov5s是最小的版本,yolov5x是最大的版本。它们的区别在于网络的深度、宽度和参数量等方面。

下面以yolov5s为模板详解yolov5。其具有较高的精度和较快的检测速度,
同时参数量更少。
YOLOv5s 模型主要由 Backbone、Neck 和Head 三部分组成,网络模型见下图。其中:
Backbone 主要负责对输入图像进行特征提取。
Neck 负责对特征图进行多尺度特征融合,并把这些特征传递给预测层。
Head 进行最终的回归预测。

Backbone骨干网络

骨干网络是指用来提取图像特征的网络,它的主要作用是将原始的输入图像转化为多层特征图,以便后续的目标检测任务使用。在Yolov5中,使用的是CSPDarknet53或ResNet骨干网络,这两个网络都是相对轻量级的,能够在保证较高检测精度的同时,尽可能地减少计算量和内存占用。
Backbone中的主要结构有Conv模块、C3模块、SPPF模块。
Conv模块

Conv模块是卷积神经网络中常用的一种基础模块,它主要由卷积层、BN层和激活函数组成。下面对这些组成部分进行详细解析。

    卷积层是卷积神经网络中最基础的层之一,用于提取输入特征中的局部空间信息。卷积操作可以看作是一个滑动窗口,窗口在输入特征上滑动,并将窗口内的特征值与卷积核进行卷积操作,从而得到输出特征。卷积层通常由多个卷积核组成,每个卷积核对应一个输出通道。卷积核的大小、步长、填充方式等超参数决定了卷积层的输出大小和感受野大小。卷积神经网络中,卷积层通常被用来构建特征提取器。
    BN层是在卷积层之后加入的一种归一化层,用于规范化神经网络中的特征值分布。它可以加速训练过程,提高模型泛化能力,减轻模型对初始化的依赖性。BN层的输入为一个batch的特征图,它将每个通道上的特征进行均值和方差的计算,并对每个通道上的特征进行标准化处理。标准化后的特征再通过一个可学习的仿射变换(拉伸和偏移)进行还原,从而得到BN层的输出。
    激活函数是一种非线性函数,用于给神经网络引入非线性变换能力。常用的激活函数包括sigmoid、ReLU、LeakyReLU、ELU等。它们在输入值的不同范围内都有不同的输出表现,可以更好地适应不同类型的数据分布。

    综上所述,Conv模块是卷积神经网络中常用的基础模块,它通过卷积操作提取局部空间信息,并通过BN层规范化特征值分布,最后通过激活函数引入非线性变换能力,从而实现对输入特征的转换和提取。

C3模块

C3模块是YOLOv5网络中的一个重要组成部分,其主要作用是增加网络的深度和感受野,提高特征提取的能力。

C3模块是由三个Conv块构成的,其中第一个Conv块的步幅为2,可以将特征图的尺寸减半,第二个Conv块和第三个Conv块的步幅为1。C3模块中的Conv块采用的都是3x3的卷积核。在每个Conv块之间,还加入了BN层和LeakyReLU激活函数,以提高模型的稳定性和泛化性能。

C3模块中的第一个Conv块的步幅为2,红色方框内两个Conv组成Bottleneck,这意味着它会将特征图的尺寸减半。这样做的目的是为了增加网络的感受野,同时减少计算量。通过将特征图的尺寸减半,可以使网络更加关注物体的全局信息,从而提高特征提取的效果。

C3模块中的第二个Conv块和第三个Conv块的步幅为1,这意味着它们不会改变特征图的尺寸。这样做的目的是为了保持特征图的空间分辨率,从而更好地保留物体的局部信息。同时,这两个Conv块的主要作用是进一步提取特征,增加网络的深度和感受野。

总的来说,C3模块通过增加网络的深度和感受野,提高了特征提取的能力。这对于目标检测等计算机视觉任务来说非常重要,因为这些任务需要对物体进行准确的识别和定位,而准确的识别和定位需要良好的特征提取能力。

SPP

SPP模块是一种池化模块,通常应用于卷积神经网络中,旨在实现输入数据的空间不变性和位置不变性,以便于提高神经网络的识别能力。其主要思想是将不同大小的感受野应用于同一张图像,从而能够捕捉到不同尺度的特征信息。在SPP模块中,首先对输入特征图进行不同大小的池化操作,以得到一组不同大小的特征图。然后将这些特征图连接在一起,并通过全连接层进行降维,最终得到固定大小的特征向量。

SPP模块通常由三个步骤组成:

    池化:将输入特征图分别进行不同大小的池化操作,以获得一组不同大小的特征图。
    连接:将不同大小的特征图连接在一起。
    全连接:通过全连接层将连接后的特征向量降维,得到固定大小的特征向量。

Neck特征金字塔

由于物体在图像中的大小和位置是不确定的,因此需要一种机制来处理不同尺度和大小的目标。特征金字塔是一种用于处理多尺度目标检测的技术,它可以通过在骨干网络上添加不同尺度的特征层来实现。在Yolov5中,采用的是FPN(Feature Pyramid Network)特征金字塔结构,通过上采样和下采样操作将不同层次的特征图融合在一起,生成多尺度的特征金字塔。自顶向下部分主要是通过上采样和与更粗粒度的特征图融合来实现不同层次特征的融合,而自下向上则是通过使用一个卷积层来融合来自不同层次的特征图。

在目标检测算法中,Neck模块通常被用于将不同层级的特征图结合起来,生成具有多尺度信息的特征图,以提高目标检测的准确率。在 YOLOv5 中,使用了一种名为 PANet 的特征融合模块作为 Neck 模块。

具体来说,自顶向下部分是通过上采样和与更粗粒度的特征图融合来实现不同层次特征的融合,主要分为以下几步:

1.对最后一层特征图进行上采样,得到更精细的特征图;
2.将上采样后的特征图与上一层特征图进行融合,得到更丰富的特征表达;
3.重复以上两个步骤,直到达到最高层。

自下向上部分主要是通过使用一个卷积层来融合来自不同层次的特征图,主要分为以下几步:

1.对最底层特征图进行卷积,得到更丰富的特征表达;
2.将卷积后的特征图与上一层特征图进行融合,得到更丰富的特征表达;
3.重复以上两个步骤,直到达到最高层。

最后,自顶向下部分和自下向上部分的特征图进行融合,得到最终的特征图,用于目标检测。
Head目标检测头

目标检测头是用来对特征金字塔进行目标检测的部分,它包括了一些卷积层、池化层和全连接层等。在 YOLOv5 模型中,检测头模块主要负责对骨干网络提取的特征图进行多尺度目标检测。该模块主要包括三个部分,此外,Yolov5还使用了一些技巧来进一步提升检测精度,比如GIoU loss、Mish激活函数和多尺度训练等。

    Anchors:用于定义不同大小和长宽比的目标框,通常使用 K-means 聚类对训练集的目标框进行聚类得到,可以在模型训练之前进行计算,存储在模型中,用于预测时生成检测框。
    Classification:用于对每个检测框进行分类,判断其是否为目标物体,通常采用全连接层加 Softmax 函数的形式对特征进行分类。
    Regression:用于对每个检测框进行回归,得到其位置和大小,通常采用全连接层的形式对特征进行回归。

YOLOv5的检测层由几个重要的组成部分构成,包括:

Anchors(锚框):
    锚框是预定义的一组边界框,用于在特征图上生成候选框。
    YOLOv5通过提前定义不同比例和尺寸的锚框来适应不同大小的目标。

Convolutional Layers(卷积层):
    YOLOv5的检测层包含一系列卷积层,用于处理特征图和提取特征。
    这些卷积层可以通过调整通道数和核大小来适应不同的检测任务。

Prediction Layers(预测层):
    每个预测层负责预测一组边界框和类别。
    每个预测层通常由卷积层和一个输出层组成。
    输出层的通道数和形状决定了预测的边界框数量和类别数量。

Non-Maximum Suppression (NMS)(非极大值抑制):
    在输出的边界框中,使用非极大值抑制算法来抑制重叠的边界框,只保留最具有代表性的边界框。

YOLOv5 的检测头模块采用了多层级特征融合的方法,首先将骨干网络输出的特征图经过一个 Conv 模块进行通道数的降维和特征图的缩放,然后再将不同层级的特征图进行融合,得到更加丰富的特征信息,从而提高检测性能。
YOLOv5总结

    Yolov5是目标检测领域中的一种深度学习算法,是对Yolov4的改进版本,其在速度和精度方面都取得了很大的提升。Yolov5的整体架构由主干网络、FPN、Neck、Head等模块组成。
    主干网络部分采用的是CSPDarknet53,通过使用残差结构和特征重用机制,可以有效地提高模型的特征提取能力。
    FPN部分采用的是基于高斯加权的特征金字塔,可以解决多尺度目标检测的问题。

    Neck部分采用的是SPP和PAN结合的结构,能够在保持高效性的同时提升模型的性能。
    Head部分采用的是YOLOv5头结构,可以输出网络的预测结果。

总的来说,Yolov5在各个模块上的设计都充分考虑了速度和精度的平衡,使得它在目标检测任务中表现出色。

YOLOv5/v8/v10/v11详细介绍:网络结构,创新点

YOLOv5简介

    源码地址:https://github.com/ultralytics/yolov5

YOLOv5算法是目前应用最广泛的目标检测算法之一,它基于深度学习技术,在卷积神经网络的基础上加入了特征金字塔网络和SPP结构等模块,从而实现了高精度和快速检测速度的平衡。

基本网络结构如下:

YOLOv5算法创新点:

    Anchor-free设计:传统目标检测算法中需要先确定物体位置并给出候选框,但yolov5采用了无锚设计方式,直接预测物体的位置和大小,从而避免了候选框对检测性能的影响。
    多尺度检测:yolov5算法可以精确检测到不同尺度、各种形状和姿态的目标,具有很好的适应性。
    目标定位精确:yolov5通过导出中心点坐标来实现目标的精准定位,并且在分类和回归两个方面都进行优化,从而提高了目标检测精度。
    检测速度快:采用高效计算方法,并利用GPU等硬件加速技术,使得yolov5算法在保证高精度的同时,具有非常快的检测速度。

YOLOv8简介

    源码地址:https://github.com/ultralytics/ultralytics

Yolov8是一个SOTA模型,它建立在Yolo系列历史版本的基础上,并引入了新的功能和改进点,以进一步提升性能和灵活性,使其成为实现目标检测、图像分割、姿态估计等任务的最佳选择。其具体创新点包括一个新的骨干网络、一个新的Ancher-Free检测头和一个新的损失函数,可在CPU到GPU的多种硬件平台上运行。

YOLOv8创新点:

Yolov8主要借鉴了Yolov5、Yolov6、YoloX等模型的设计优点,其本身创新点不多,偏重在工程实践上,具体创新如下:

    提供了一个全新的SOTA模型(包括P5 640和P6 1280分辨率的目标检测网络和基于YOLACT的实例分割模型)。并且,基于缩放系数提供了N/S/M/L/X不同尺度的模型,以满足不同部署平台和应用场景的需求。
    Backbone:同样借鉴了CSP模块思想,不过将Yolov5中的C3模块替换成了C2f模块,实现了进一步轻量化,同时沿用Yolov5中的SPPF模块,并对不同尺度的模型进行精心微调,不再是无脑式一套参数用于所有模型,大幅提升了模型性能。
    Neck:继续使用PAN的思想,但是通过对比YOLOv5与YOLOv8的结构图可以看到,YOLOv8移除了1*1降采样层。
    Head部分相比YOLOv5改动较大,Yolov8换成了目前主流的解耦头结构(Decoupled-Head),将分类和检测头分离,同时也从Anchor-Based换成了Anchor-Free。
    Loss计算:使用VFL Loss作为分类损失(实际训练中使用BCE Loss);使用DFL Loss+CIOU Loss作为回归损失。
    标签分配:Yolov8抛弃了以往的IoU分配或者单边比例的分配方式,而是采用Task-Aligned Assigner正负样本分配策略。

YOLOv10简介

论文地址:https://arxiv.org/abs/2405.14458
源码地址:https://github.com/THU-MIG/yolov10

YOLOv10 的架构建立在以前 YOLO 模型的优势之上,通过消除非最大抑制 (NMS) 和优化各种模型组件, 实现了最先进的性能,并显著降低了计算开销。
网络结构如下:

模型网络结构由以下组件组成:
主干:YOLOv10 中的主干网负责特征提取,使用增强版的 CSPNet(Cross Stage Partial Network)来改善梯度流并减少计算冗余。
颈部:颈部被设计成聚合来自不同尺度的特征,并将它们传递到头部。它包括 PAN(路径聚合网络)层,用于有效的多尺度特征融合。
一对多头:在训练过程中为每个对象生成多个预测,以提供丰富的监督信号,提高学习准确性。
一对一头:在推理过程中为每个对象生成一个最佳预测,消除对 NMS 的需求,从而减少延迟并提高效率。
YOLOv10创新点如下
无 NMS 训练:利用一致的双重分配来消除对 NMS 的需求,从而减少推理延迟。
整体模型设计:从效率和精度两个角度对各种组件进行全面优化,包括轻量级分类头、空间通道解耦下采样和秩引导块设计。
增强的模型功能:整合大核卷积和部分自注意力模块,可在不增加大量计算成本的情况下提高性能。

YOLO11简介

    源码地址:https://github.com/ultralytics/ultralytics

Ultralytics YOLO11是一款尖端的、最先进的模型,它在之前YOLO版本成功的基础上进行了构建,并引入了新功能和改进,以进一步提升性能和灵活性。YOLO11设计快速、准确且易于使用,使其成为各种物体检测和跟踪、实例分割、图像分类以及姿态估计任务的绝佳选择。

基本网络结构如下:

YOLO11创新点如下:

YOLO 11主要改进包括:
增强的特征提取:YOLO 11采用了改进的骨干和颈部架构,增强了特征提取功能,以实现更精确的目标检测。
优化的效率和速度:优化的架构设计和优化的训练管道提供更快的处理速度,同时保持准确性和性能之间的平衡。
更高的精度,更少的参数:YOLO11m在COCO数据集上实现了更高的平均精度(mAP),参数比YOLOv8m少22%,使其在不影响精度的情况下提高了计算效率。
跨环境的适应性:YOLO 11可以部署在各种环境中,包括边缘设备、云平台和支持NVIDIA GPU的系统。
广泛的支持任务:YOLO 11支持各种计算机视觉任务,如对象检测、实例分割、图像分类、姿态估计和面向对象检测(OBB)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值