YOLO基础知识

YOLO11模型结构:

# Ultralytics YOLO 🚀, AGPL-3.0 license
# YOLO11 object detection model with P3-P5 outputs. For Usage examples see https://docs.ultralytics.com/tasks/detect
 
# Parameters
nc: 80 # number of classes
scales: # model compound scaling constants, i.e. 'model=yolo11n.yaml' will call yolo11.yaml with scale 'n'
  # [depth, width, max_channels]
  n: [0.50, 0.25, 1024] # summary: 319 layers, 2624080 parameters, 2624064 gradients, 6.6 GFLOPs
  s: [0.50, 0.50, 1024] # summary: 319 layers, 9458752 parameters, 9458736 gradients, 21.7 GFLOPs
  m: [0.50, 1.00, 512] # summary: 409 layers, 20114688 parameters, 20114672 gradients, 68.5 GFLOPs
  l: [1.00, 1.00, 512] # summary: 631 layers, 25372160 parameters, 25372144 gradients, 87.6 GFLOPs
  x: [1.00, 1.50, 512] # summary: 631 layers, 56966176 parameters, 56966160 gradients, 196.0 GFLOPs
 
# YOLO11n backbone
backbone:
  # [from, repeats, module, args]
  - [-1, 1, Conv, [64, 3, 2]] # 0-P1/2
  - [-1, 1, Conv, [128, 3, 2]] # 1-P2/4
  - [-1, 2, C3k2, [256, False, 0.25]]
  - [-1, 1, Conv, [256, 3, 2]] # 3-P3/8
  - [-1, 2, C3k2, [512, False, 0.25]]
  - [-1, 1, Conv, [512, 3, 2]] # 5-P4/16
  - [-1, 2, C3k2, [512, True]]
  - [-1, 1, Conv, [1024, 3, 2]] # 7-P5/32
  - [-1, 2, C3k2, [1024, True]]
  - [-1, 1, SPPF, [1024, 5]] # 9
  - [-1, 2, C2PSA, [1024]] # 10
 
# YOLO11n head
head:
  - [-1, 1, nn.Upsample, [None, 2, "nearest"]]
  - [[-1, 6], 1, Concat, [1]] # cat backbone P4
  - [-1, 2, C3k2, [512, False]] # 13
 
  - [-1, 1, nn.Upsample, [None, 2, "nearest"]]
  - [[-1, 4], 1, Concat, [1]] # cat backbone P3
  - [-1, 2, C3k2, [256, False]] # 16 (P3/8-small)
 
  - [-1, 1, Conv, [256, 3, 2]]
  - [[-1, 13], 1, Concat, [1]] # cat head P4
  - [-1, 2, C3k2, [512, False]] # 19 (P4/16-medium)
 
  - [-1, 1, Conv, [512, 3, 2]]
  - [[-1, 10], 1, Concat, [1]] # cat head P5
  - [-1, 2, C3k2, [1024, True]] # 22 (P5/32-large)
 
  - [[16, 19, 22], 1, Detect, [nc]] # Detect(P3, P4, P5)

下面是解释:

一、基础知识铺垫

1. 什么是YOLO?

YOLO(You Only Look Once)是一种实时目标检测算法,它的核心思想是:​通过一次前向传播(只看一次图像)就能预测图像中所有物体的位置和类别

2. 模型配置文件的作用

这个YAML文件定义了YOLO模型的网络结构,就像一张"建筑图纸",告诉计算机:

  • 每一层用什么样的砖块(卷积、池化等)
  • 砖块之间如何连接(数据流动路径)

二、核心参数解释

1. 基础参数
  • nc: 80:模型需要检测80种物体(比如COCO数据集中的"人、车、狗...")
  • scales:定义不同大小的模型(n/s/m/l/x),就像"衣服尺码",小模型(n)速度快但精度低,大模型(x)速度慢但精度高
2. 缩放系数的意义

每个模型尺寸有三个参数 [深度, 宽度, 最大通道数]

  • 深度:控制网络的层数(比如n模型的深度是0.5,表示总层数是大模型的一半)
  • 宽度:控制每层的通道数(比如n模型的宽度是0.25,表示每层的通道数是基准数的25%)
  • 最大通道数:防止某些层的通道数过大(比如n模型最大通道数不超过1024)

三、Backbone(主干网络)详解

1. Backbone的作用

想象Backbone是"特征提取器",它像榨汁机一样把原始图像(比如640x640像素)一步步压榨,提取出不同层次的特征:

  • 浅层特征:边缘、纹理(适合检测小物体)
  • 深层特征:语义信息(适合检测大物体)
2. 逐层拆解(以YOLO11n为例)

我们用输入图像640x640为例,解释每一层:

层编号模块参数输出尺寸变化通俗解释
0Conv[64, 3, 2]640x640 → 320x320用64个3x3的过滤器,步长2(下采样)
1Conv[128, 3, 2]320x320 → 160x160通道数翻倍,继续下采样
2C3k2[256, False, 0.25]保持160x160用多个小卷积组合提取特征
3Conv[256, 3, 2]160x160 → 80x80继续下采样
4C3k2[512, False, 0.25]保持80x80更深的特征提取
7Conv[1024, 3, 2]40x40 → 20x20最终下采样到20x20分辨率
9SPPF[1024, 5]保持20x20空间金字塔池化,融合多尺度特征
10C2PSA[1024]保持20x20注意力机制,让模型关注重要区域
3. 关键模块说明
  • C3k2:由多个卷积组成的模块,类似"乐高积木块",通过堆叠提取复杂特征
  • SPPF:快速空间金字塔池化,把不同大小的池化结果拼接,帮助模型理解不同尺度的物体
  • C2PSA:结合通道注意力和空间注意力,让网络自动学习"看哪里更重要"

四、Head(检测头)详解

1. Head的作用

如果说Backbone是"眼睛",Head就是"大脑",它的任务是:

  1. 融合多尺度特征​(把不同分辨率的特征图拼接)
  2. 预测物体位置和类别​(输出边界框和类别概率)
2. 核心操作解释
  • 上采样(Upsample)​:把小特征图放大(比如20x20→40x40),用最近邻插值法
  • 拼接(Concat)​:把深层特征和浅层特征拼接,结合细节和语义信息
  • C3k2处理:对拼接后的特征再次提取
  • 下采样(Conv步长2)​:降低分辨率,准备多尺度预测
3. 多尺度预测示意图
          [80x80] ← 上采样 + 拼接 ← [40x40] ← 上采样 + 拼接 ← [20x20]
(检测小物体)          (检测中物体)          (检测大物体)

五、Detect层(最终输出)​

1. 输入来源
  • P3: 80x80的高分辨率特征(检测小物体)
  • P4: 40x40的中等分辨率特征(检测中物体)
  • P5: 20x20的低分辨率特征(检测大物体)
2. 输出内容

每个尺度的每个网格会预测:

  • 边界框坐标(x, y, w, h)
  • 置信度(是否有物体)
  • 80个类别的概率
3. 最终检测流程
  1. 输入图像经过Backbone提取特征
  2. Head融合不同尺度的特征
  3. Detect层在每个尺度上生成预测框
  4. 非极大值抑制(NMS)去除冗余框

六、举个实际例子

假设输入一张640x640的图片:

  1. Backbone处理

    • 经过5次下采样,最后得到20x20的特征图
    • 中间过程保留了不同尺度的特征(160x160、80x80、40x40等)
  2. Head处理

    • 把20x20的特征图上采样到40x40,与之前的40x40特征拼接
    • 再次上采样到80x80,与更早的80x80特征拼接
    • 同时也会下采样融合其他尺度的特征
  3. 输出结果

    • 最终在80x80、40x40、20x20三个尺度上分别预测物体
    • 小物体(如远处的行人)主要在80x80被检测到
    • 大物体(如近处的汽车)主要在20x20被检测到
告知:需要学习YOLOv4进行TT100K数据集上中国交通标志识别的学员请前往(1) Ubuntu系统《YOLOv4目标检测实战:中国交通标志识别》课程链接:https://edu.youkuaiyun.com/course/detail/29362(2)《Windows版YOLOv4目标检测实战:中国交通标志识别》课程链接:https://edu.youkuaiyun.com/course/detail/29363在无人驾驶中,交通标志识别是一项重要的任务。本课程中的项目以美国交通标志数据集LISA为训练对象,采用YOLOv3目标检测方法实现实时交通标志识别。具体项目过程包括包括:安装Darknet、下载LISA交通标志数据集、数据集格式转换、修改配置文件、训练LISA数据集、测试训练出的网络模型、性能统计(mAP计算和画出PR曲线)和先验框聚类。YOLOv3基于深度学习,可以实时地进行端到端的目标检测,以速度快见长。本课程将手把手地教大家使用YOLOv3实现交通标志的多目标检测。本课程的YOLOv3使用Darknet,在Ubuntu系统上做项目演示。 Darknet是使用C语言实现的轻型开源深度学习框架,依赖少,可移植性好,值得深入学习和探究。除本课程《YOLOv3目标检测实战:交通标志识别》外,本人推出了有关YOLOv3目标检测的系列课程,请持续关注该系列的其它课程视频,包括:《YOLOv3目标检测实战:训练自己的数据集》《YOLOv3目标检测:原理与源码解析》《YOLOv3目标检测:网络模型改进方法》另一门课程《YOLOv3目标检测实战:训练自己的数据集》主要是介绍如何训练自己标注的数据集。而本课程的区别主要在于学习对已标注数据集的格式转换,即把LISA数据集从csv格式转换成YOLOv3所需要的PASCAL VOC格式和YOLO格式。本课程提供数据集格式转换的Python代码。请大家关注以上课程,并选择学习。下图是使用YOLOv3进行交通标志识别的测试结果
### YOLOv11基础概念 YOLO(You Only Look Once)系列算法是实时物体检测领域的重要组成部分之一。YOLOv11作为该系列的一个迭代版本,在保持原有优势的基础上进行了多项改进[^1]。 #### 一、单阶段检测器特性 YOLO属于单阶段目标检测框架,这意味着它不需要区域提议网络来生成候选框。相反,整个图像被划分为多个网格单元格;对于每个单元格,模型会直接预测边界框及其对应的类别概率。这种设计使得YOLO能够实现快速而高效的推断过程[^3]。 #### 二、输入输出结构 在YOLOv11中,输入图像是固定大小的正方形(例如448×448像素),经过一系列卷积层处理后转化为较小的空间维度特征映射(如7×7)。最终输出是一个三维张量,其中包含了位置信息和分类得分。具体来说: - 输入形状:(batch_size, channels=3, height=448, width=448) - 输出形状:(batch_size, grid_height=7, grid_width=7, num_anchors * (5 + num_classes)) 这里`num_anchors`表示每种尺度下的锚点数量,“5”代表五个参数用于描述边界框的位置与尺寸(中心坐标x,y加上宽度w高度h以及置信度score),而`num_classes`则对应于可能的目标种类数目[^4]。 ```python def forward(self, x): # (448,448,3) -> (7,7,30) S, B, C = self.feature_size, self.num_bboxes, self.num_classes x = self.features(x) # 提取高级语义特征 x = self.conv_layers(x) # 进一步压缩空间分辨率并增加通道数 x = self.fc_layers(x) # 完全连接层调整为合适的输出形式 x = x.view(-1, S, S, 5 * B + C) return x # 返回预测结果 ``` 上述代码片段展示了如何通过神经网络前向传播计算得到所需的输出格式。注意这里的变换是从原始高分辨率彩色图像逐步过渡至低维密集表达的过程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值