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

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被检测到

相关文章:

  • 【C语言文件精选题】
  • 《网络管理》实践环节01:OpenEuler22.03sp4安装zabbix6.2
  • 验证Linux多进程时间片切换的程序
  • PyTorch 张量的new_tensor方法介绍
  • 算法基础——树
  • RAG基建之PDF解析的“流水线”魔法之旅
  • 网络安全-网络安全基础
  • freecad gear模块 生成齿轮导出fcstd step
  • 20组电影美学RED摄像摄影机视频胶片模拟色彩分级调色LUT预设包 Pixflow – CL – RED Camera LUTs
  • 项目实战--权限列表
  • Mybatis日志模块分析--适配器模式+代理模式
  • 身份验证:区块链如何让用户掌控一切
  • Scrapy对比Selenium:哪个最适合您的网络爬虫项目
  • 深度学习Note.5(机器学习2)
  • Unity中UDP异步通信常用API使用
  • Python小练习系列 Vol.7:全排列生成(回溯算法模板题)
  • Spring笔记03-依赖注入
  • Javaweb后端登录认证 登录校验 过滤器 filter令牌校验,执行流程,拦截路径
  • 业之峰与宏图智能战略携手,开启家装数字化新篇章
  • excel 时间戳 转日期
  • 首开股份:一季度净利润亏损约10.79亿元,签约金额63.9亿元
  • 赵乐际主持十四届全国人大常委会第十五次会议闭幕会并作讲话
  • 美国清洗政治:一幅残酷新世界的蓝图正在展开
  • 智能终端出海服务创新联合体成立
  • 浙江官宣:五一假期,没电、没气、没油车辆全部免费拖离高速
  • 五月院线片单:就看五一档表现了