YOLOv8白皮书-第Y8周:yolov8.yaml文件解读

一、环境

  • 语言:Python3、Pytorch
  • 开发环境
  • 电脑系统:Windows 10
  • 语言环境:Python 3.9.2
  • 编译器:VS Code
  • 显卡:3060
  • CUDA版本:Release 11.4, V11.4.48
  • 本周任务:根据YOLOv8n、YOLOV8s的结构输出,手写出YOLOv8l的模型输出

二、yolov8.yaml

# YOLOv5 🚀 by Ultralytics, AGPL-3.0 license

# Parameters
nc: 80 # number of classes
depth_multiple: 0.33 # model depth multiple  控制模型的深度
width_multiple: 0.50 # layer channel multiple 控制conv通道channel个数(卷积核数量)
anchors:
  - [10, 13, 16, 30, 33, 23] # P3/8 ,检测小目标,10,13是一组尺寸,总共三组检测小目标
  - [30, 61, 62, 45, 59, 119] # P4/16,检测中等目标,30,61是一组尺寸,总共三组检测中等目标
  - [116, 90, 156, 198, 373, 326] # P5/32,检测大目标,116,90是一组尺寸,总共三组检测大目标
# YOLOv5 v6.0 backbone
backbone:
  # [from, number, module, args]
  [
    [-1, 1, Conv, [64, 6, 2, 2]], # 0-P1/2   宽高减半
    [-1, 1, Conv, [128, 3, 2]], # 1-P2/4
    [-1, 3, C3, [128]],
    [-1, 1, Conv, [256, 3, 2]], # 3-P3/8
    [-1, 6, C2, [256]],
    [-1, 1, Conv, [512, 3, 2]], # 5-P4/16
    [-1, 3, C3, [512]],
    [-1, 1, SPPF, [1024, 5]], # 9
  ]

# YOLOv5 v6.0 head
head: [
    [-1, 1, Conv, [512, 3, 2]],   # 宽高减半
    [-1, 1, nn.Upsample, [None, 2, "nearest"]],
    [[-1, 6], 1, Concat, [1]], # cat backbone P4
    [-1, 3, C3, [512, False]], # 13

    [-1, 1, Conv, [256, 1, 1]],
    [-1, 1, nn.Upsample, [None, 2, "nearest"]],
    [[-1, 4], 1, Concat, [1]], # cat backbone P3
    [-1, 3, C3, [256, False]], # 17 (P3/8-small)

    [-1, 1, Conv, [256, 3, 2]],
    [[-1, 12], 1, Concat, [1]], # cat head P4
    [-1, 3, C3, [512, False]], # 20 (P4/16-medium)

    [-1, 1, Conv, [512, 3, 2]],
    [[-1, 8], 1, Concat, [1]], # cat head P5
    [-1, 3, C3, [1024, False]], # 23 (P5/32-large)

    [[15, 18, 21], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)
  ]

#    [
#    [-1, 1, Conv, [64, 6, 2, 2]], # 0-P1/2   宽高减半
#    [-1, 1, Conv, [128, 3, 2]], # 1-P2/4
#    [-1, 3, C3, [128]],
#    [-1, 3, C2, [128]], 
#    [-1, 1, Conv, [256, 3, 2]], # 3-P3/8
#    [-1, 6, C3, [256]],
#    [-1, 1, Conv, [512, 3, 2]], # 5-P4/16
#    [-1, 9, C3, [512]],
#    [-1, 1, Conv, [1024, 3, 2]], # 7-P5/32
#    [-1, 3, C3, [1024]],
#    [-1, 1, SPPF, [1024, 5]], # 9
#  ]
# head: [
#     [-1, 1, Conv, [512, 1, 1]],   # 宽高不变
#     [-1, 1, nn.Upsample, [None, 2, "nearest"]],
#     [[-1, 6], 1, Concat, [1]], # cat backbone P4
#     [-1, 3, C3, [512, False]], # 13
# 
#     [-1, 1, Conv, [256, 1, 1]],
#     [-1, 1, nn.Upsample, [None, 2, "nearest"]],
#     [[-1, 4], 1, Concat, [1]], # cat backbone P3
#     [-1, 3, C3, [256, False]], # 17 (P3/8-small)
# 
#     [-1, 1, Conv, [256, 3, 2]],
#     [[-1, 14], 1, Concat, [1]], # cat head P4
#     [-1, 3, C3, [512, False]], # 20 (P4/16-medium)
# 
#     [-1, 1, Conv, [512, 3, 2]],
#     [[-1, 10], 1, Concat, [1]], # cat head P5
#     [-1, 3, C3, [1024, False]], # 23 (P5/32-large)
# 
#     [[17, 20, 23], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)
#   ]
  • 在yolov8中,depth决定模型的深度,即重复的次数,重复次数=number * depth
  • width决定模型的通道数,通道数=module中的通道数 * width

三、手写yolov8l的输出

	from	n	arguments
0	-1	    1	[3,64,3,2]
1	-1		1	[64,128,3,2]
2	-1		3	[128,128,3,True]
3	-1		1	[128,256,3,2]
4	-1		6	[256,256,6,True]
5	-1		1	[256,512,3,2]
6	-1		6	[512,512,6,True]
7	-1		1	[512,512,3,2]
8	-1		3	[512,512,3,True]
9	-1		1	[512,512,5]
10	-1		1	[None,2,'nearest']
11	[-1,6]	1	[1]
12	-1		3	[1024,512,3]
13	-1		1	[None,2,'nearest']
14	[-1,4]	1	[1]
15	-1		3	[768,256,3]
16	-1		1	[256,256,3,2]
17	[-1,12]	1	[1]
18	-1		3	[768,512,3]
19	-1		1	[512,512,3,2]
20	[-1,9]	1	[1]
21	-1		3	[1024,512,3]
22	[15,18,21]	1	[3,[256,512,512]]

总结

  • 相比于yolov8n和yolov8s,yolov8l的深度和宽度没有缩小
  • 同时,yolov8l的最大通道数由1024降为了512
  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值