YOLO目标检测创新改进与实战案例专栏
专栏目录: YOLO有效改进系列及项目实战目录 包含卷积,主干 注意力,检测头等创新机制 以及 各种目标检测分割项目实战案例
专栏链接: YOLO基础解析+创新改进+实战案例
之前写过一篇YOLOv8yaml配置文件逐层的解析:结合YOLOv8源码逐层解读yaml文件的配置,本文主要从整体的角度去解析yaml。
YOLOv8 模型
YOLOv8 提供了非常多的模型,详见:https://docs.ultralytics.com/models/yolov8/#__tabbed_1_1。
其中 n, s, m, l, x
模型是在输入尺寸为 640x640
的图像上训练得到的,最终会对输入图像进行 32
倍下采样,并输出 3
个预测特征层。以下是对这些模型的进一步详细描述:
模型尺寸和复杂度
n
(nano): 最小且最快的模型,设计用于资源受限的环境,比如移动设备或嵌入式系统。它在性能和速度之间取得了极佳的平衡,适合实时性要求高但计算资源有限的应用场景。s
(small): 这个模型在复杂度和性能之间取得了更好的平衡,适合需要快速推理且有一定计算资源的应用。它比n
模型稍大,提供了更高的精度和复杂性。m
(medium): 中等规模的模型,提供了比s
模型更高的精度和复杂性,适用于计算资源相对充足且对精度要求较高的场景。l
(large): 较大的模型,具有更高的精度和复杂性,适用于有较高计算资源的服务器或高性能计算平台。它在精度和复杂性方面比m
模型有显著提升。x
(extra large): 系列中最大的模型,提供了最高的精度和最复杂的特征表示,适合用于对精度要求最高的应用场景,如需要高精度物体检测的任务。
下采样和预测特征层
输入图像尺寸为 640x640
,经过模型处理后,最终会进行 32
倍下采样,并输出 3
个预测特征层。这些特征层的具体功能如下:
- 下采样:输入图像经过多层卷积操作后,尺寸被逐渐缩小,最终缩小到原始尺寸的 1/32。这种下采样机制使得模型能够有效地捕获不同尺度的特征。
- 预测特征层:模型输出
3
个预测特征层,每个特征层对应不同尺度的预测:- 大特征层:捕捉细节较多的小物体,适用于检测图像中的小目标。
- 中特征层:平衡大物体和小物体的检测,适用于检测中等大小的目标。
- 小特征层:捕捉图像中范围较大的大物体,适用于检测大目标。
通过结合这些特征层,YOLOv8 模型能够实现多尺度物体检测,提供高效且准确的检测结果,适用于各种复杂的计算机视觉任务。
Model | size(pixels) | mAPval50-95 | Speed CPU ONNX(ms) | Speed A100 TensorRT(ms) | params(M) | FLOP(B) |
---|---|---|---|---|---|---|
YOLOv8n | 640 | 37.3 | 80.4 | 0.99 | 3.2 | 8.7 |
YOLOv8s | 640 | 44.9 | 128.4 | 1.20 | 11.2 | 28.6 |
YOLOv8m | 640 | 50.2 | 234.7 | 1.83 | 25.9 | 78.9 |
YOLOv8l | 640 | 52.9 | 375.2 | 2.39 | 43.7 | 165.2 |
YOLOv8x | 640 | 53.9 | 479.1 | 3.53 | 68.2 | 257.8 |
模型区别
YOLOv8 的各个模型 n, s, m, l, x
具有相同的结构设计,不同之处在于网络的深度和宽度。其中,网络的深度是指 C2f 模块中 Bottleneck 的数量,即深度的数值决定了 Bottleneck 的个数。而网络的宽度则是指每层网络的通道数。
-
网络深度
在 YOLOv8 模型中,深度由 C2f 模块中的 Bottleneck 数量决定。C2f 模块是 YOLOv8 的核心结构之一,它通过多个 Bottleneck 模块来提取和处理特征。Bottleneck 模块的数量直接影响模型的深度。模型的深度越大,网络能够捕捉和处理的特征就越多,但计算复杂度也会随之增加。