当前位置:   article > 正文

【学习笔记】yolov5代码逐行解析<models-yolov5s.yaml>_yolov5源码逐行超详细注释与解读

yolov5源码逐行超详细注释与解读

本文创作为自用学习

yolov5-models-yolov5s.yaml
#l、m、s、x四个文件只有控制模型参数的两个参数depth-multiple和width-multiple不同,其他都相同
# parameters
nc: 80  #所判断目标类别的种类,此处80类
depth_multiple: 0.33  # model depth multiple
width_multiple: 0.50  # layer channel multiple

# anchors
anchors:
  - [10,13, 16,30, 33,23]  # P3/8
  - [30,61, 62,45, 59,119]  # P4/16
  - [116,90, 156,198, 373,326]  # P5/32

# YOLOv5 backbone
#backbone:每层layer,from=-1表示上层的输出为这层的输入;
#number表示该层的重复次数,但最后真正的重复次数还要number乘#以depth_multiple后取整;
#module表示该层的名字,args是每层layer的参数,
#[64,6,2,2]
#64是输出的通道(最终输出的还要乘以width-multiple取整),
#6是6×6卷积核,2是padding=2(边缘空白),2是stride
#0-P1/2表示该层为第0层,输出后会变成原图的二分之一
  # [from, number, module, args]
  [[-1, 1, Focus, [64, 3]],  # 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, 9, 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, 1, SPP, [1024, [5, 9, 13]]],
   [-1, 3, C3, [1024, False]],  # 9
  ]

# YOLOv5 head
head:
#head文件包括neck和detect两个部分
#上面最后一层C3输出chanel为1024,
#此处head第一层会改变chanel为512
  [[-1, 1, Conv, [512, 1, 1]],
#nn.upsample不改变chanel但是会把图片宽和高都变为2倍
   [-1, 1, nn.Upsample, [None, 2, 'nearest']],
#现在就可以与前面backbone中的backbone P4阶段的最后一个输出做一个contect
#即输出40×40×512contact40×40×512=40×40×1024
   [[-1, 6], 1, Concat, [1]],  # cat backbone P4
#经过下面的C3输出为40×40×512
   [-1, 3, C3, [512, False]],  # 13
#即此时输出为40×40×512

   [-1, 1, Conv, [256, 1, 1]],
   经过这一层输出40×40×256
   [-1, 1, nn.Upsample, [None, 2, 'nearest']],
   [[-1, 4], 1, Concat, [1]],  # cat backbone P3
   [-1, 3, C3, [256, False]],  # 17 (P3/8-small)
#上面两个是向上
#下面两个阶段是向下contect
   [-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层下面
   [[17, 20, 23], 1, Detect, [nc, anchors]],  # Detect(P3, P4, P5)
  ]


图像输入进入卷积,提取特征
↓
C3和conv交替出现
↓
spp是空间特征金字塔融合,进一步增大feature map 的感受野
使得物体在不同的尺度下输入时都可以被很好的检测到
↓
调整输出图片的大小使得neck的前两层可以向上融合
再有两层向下的contect
↓
detect
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号