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

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

http://www.kler.cn/a/614231.html

相关文章:

  • 金融市场中的时间序列预测:思考与方法
  • 【商城实战(102)】破局与进阶:商城系统的未来进化之路
  • hbuilderx打包iOS上传苹果商店的最简流程
  • 【Linux系统】—— 进程状态
  • LLaMA-Factory微调实操记录
  • 12款星光闪光污迹艺术绘画效果Clip Studio Paint笔刷画笔+闪光纹理图片 Clip Studio Glitter Texture Brushes
  • Linux中安装宝塔面板
  • 雨云云应用测评!内测持续进行中!
  • 全新版租赁商城小程序源码系统 源码开源支持二开+图文搭建教程
  • 人工智能之数学基础:实对称矩阵
  • Java项目实现幂等性方案总结
  • MOSN(Modular Open Smart Network)-03-流量劫持
  • LLMs Multi-agent 概述
  • SQL Server数据库引擎服务启动失败:端口冲突
  • 【Spring Boot 与 Spring Cloud 深度 Mape 之一】剖析 Spring Boot 核心:从快速构建到自动配置原理与实战
  • 7.3 主成分分析(PCA)
  • 3. 第三放平台部署deepseek
  • Oracle常用高可用方案(10)——DG
  • CentOS 上 Apache Kafka 2.13-3.8.1 集群部署指南(ZooKeeper 模式)
  • vue3源码分析 -- watch