当前位置:   article > 正文

yolov7.yaml文件详解_yolo的yaml参数含义

yolo的yaml参数含义

 1、parameters

(1)nc代表目标检测所检测的种类

(2)depth_multiple:控制通道的深度的系数,表示channel的缩放系数,就是将配置里面的backbone和head部分有关通道的设置,全部乘以该系数即可;

width_multiple:控制网络宽度的系数;

在此解释一下网络深度与网络宽度

网络深度

实际在构建网络模型的时候,并不是直接使用上述第二个参数,而是用网络深度去乘以第二个参数,最终获得的数量才是真正的层数量。举个例子,此时网络深度是0.33,某个层的第二个参数是3,那么实际在构建网络模型的时候只创建了0.33*3=1个,并不是三个。

网络宽度同网络深度都需要乘系数

 2、anchors

anchor我们经常称为锚 

anchors有三行分为对应大中小特征图,分为对应大特征图、中特征图、小特征图

其中数字每种类型可看成三对,每个预测头所对应的anchors长宽大小

3、backbone(骨干网络*)

  1. # yolov7 backbone
  2. backbone:
  3. # [from, number, module, args]
  4. [[-1, 1, Conv, [32, 3, 1]], # 0
  5. [-1, 1, Conv, [64, 3, 2]], # 1-P1/2
  6. [-1, 1, Conv, [64, 3, 1]],
  7. [-1, 1, Conv, [128, 3, 2]], # 3-P2/4
  8. [-1, 1, Conv, [64, 1, 1]],
  9. [-2, 1, Conv, [64, 1, 1]],
  10. [-1, 1, Conv, [64, 3, 1]],
  11. [-1, 1, Conv, [64, 3, 1]],
  12. [-1, 1, Conv, [64, 3, 1]],
  13. [-1, 1, Conv, [64, 3, 1]],
  14. [[-1, -3, -5, -6], 1, Concat, [1]],
  15. [-1, 1, Conv, [256, 1, 1]], # 11
  16. [-1, 1, MP, []],
  17. [-1, 1, Conv, [128, 1, 1]],
  18. [-3, 1, Conv, [128, 1, 1]],
  19. [-1, 1, Conv, [128, 3, 2]],
  20. [[-1, -3], 1, Concat, [1]], # 16-P3/8
  21. [-1, 1, Conv, [128, 1, 1]],
  22. [-2, 1, Conv, [128, 1, 1]],
  23. [-1, 1, Conv, [128, 3, 1]],
  24. [-1, 1, Conv, [128, 3, 1]],
  25. [-1, 1, Conv, [128, 3, 1]],
  26. [-1, 1, Conv, [128, 3, 1]],
  27. [[-1, -3, -5, -6], 1, Concat, [1]],
  28. [-1, 1, Conv, [512, 1, 1]], # 24
  29. [-1, 1, MP, []],
  30. [-1, 1, Conv, [256, 1, 1]],
  31. [-3, 1, Conv, [256, 1, 1]],
  32. [-1, 1, Conv, [256, 3, 2]],
  33. [[-1, -3], 1, Concat, [1]], # 29-P4/16
  34. [-1, 1, Conv, [256, 1, 1]],
  35. [-2, 1, Conv, [256, 1, 1]],
  36. [-1, 1, Conv, [256, 3, 1]],
  37. [-1, 1, Conv, [256, 3, 1]],
  38. [-1, 1, Conv, [256, 3, 1]],
  39. [-1, 1, Conv, [256, 3, 1]],
  40. [[-1, -3, -5, -6], 1, Concat, [1]],
  41. [-1, 1, Conv, [1024, 1, 1]], # 37
  42. [-1, 1, MP, []],
  43. [-1, 1, Conv, [512, 1, 1]],
  44. [-3, 1, Conv, [512, 1, 1]],
  45. [-1, 1, Conv, [512, 3, 2]],
  46. [[-1, -3], 1, Concat, [1]], # 42-P5/32
  47. [-1, 1, Conv, [256, 1, 1]],
  48. [-2, 1, Conv, [256, 1, 1]],
  49. [-1, 1, Conv, [256, 3, 1]],
  50. [-1, 1, Conv, [256, 3, 1]],
  51. [-1, 1, Conv, [256, 3, 1]],
  52. [-1, 1, Conv, [256, 3, 1]],
  53. [[-1, -3, -5, -6], 1, Concat, [1]],
  54. [-1, 1, Conv, [1024, 1, 1]], # 50
  55. ]

from 表示该层的输入从哪来。-1表示输入取自上一层,-2表示上两层,3表示第3层(从0开始数),[-1, 4]表示取自上一层和第4层,依次类推。。。。。
number 表示该层模块堆叠的次数,对于C3、BottleneckCSP等模块,表示其子模块的堆叠,具体细节可以查看源代码。当然最终的次数还要乘上depth_multiple系数。
module 表示该层的模块是什么类型。Conv就是卷积+BN+激活模块。所有的模块在 model/common.py 中都有定义。
args 表示输入到模块的参数。例如Conv:[128, 3, 2] 表示输出通道128,卷积核尺寸3,strid=2,当然最终的输出通道数还要乘上 width_multiple,对于其他模块,第一个参数值一般都是指输出通道数,具体细节可以看 model/common.py 中的定义。


4、head

  1. # yolov7 head
  2. head:
  3. [[-1, 1, SPPCSPC, [512]], # 51
  4. [-1, 1, Conv, [256, 1, 1]],
  5. [-1, 1, nn.Upsample, [None, 2, 'nearest']],
  6. [37, 1, Conv, [256, 1, 1]], # route backbone P4
  7. [[-1, -2], 1, Concat, [1]],
  8. [-1, 1, Conv, [256, 1, 1]],
  9. [-2, 1, Conv, [256, 1, 1]],
  10. [-1, 1, Conv, [128, 3, 1]],
  11. [-1, 1, Conv, [128, 3, 1]],
  12. [-1, 1, Conv, [128, 3, 1]],
  13. [-1, 1, Conv, [128, 3, 1]],
  14. [[-1, -2, -3, -4, -5, -6], 1, Concat, [1]],
  15. [-1, 1, Conv, [256, 1, 1]], # 63
  16. [-1, 1, Conv, [128, 1, 1]],
  17. [-1, 1, nn.Upsample, [None, 2, 'nearest']],
  18. [24, 1, Conv, [128, 1, 1]], # route backbone P3
  19. [[-1, -2], 1, Concat, [1]],
  20. [-1, 1, Conv, [128, 1, 1]],
  21. [-2, 1, Conv, [128, 1, 1]],
  22. [-1, 1, Conv, [64, 3, 1]],
  23. [-1, 1, Conv, [64, 3, 1]],
  24. [-1, 1, Conv, [64, 3, 1]],
  25. [-1, 1, Conv, [64, 3, 1]],
  26. [[-1, -2, -3, -4, -5, -6], 1, Concat, [1]],
  27. [-1, 1, Conv, [128, 1, 1]], # 75
  28. [-1, 1, MP, []],
  29. [-1, 1, Conv, [128, 1, 1]],
  30. [-3, 1, Conv, [128, 1, 1]],
  31. [-1, 1, Conv, [128, 3, 2]],
  32. [[-1, -3, 63], 1, Concat, [1]],
  33. [-1, 1, Conv, [256, 1, 1]],
  34. [-2, 1, Conv, [256, 1, 1]],
  35. [-1, 1, Conv, [128, 3, 1]],
  36. [-1, 1, Conv, [128, 3, 1]],
  37. [-1, 1, Conv, [128, 3, 1]],
  38. [-1, 1, Conv, [128, 3, 1]],
  39. [[-1, -2, -3, -4, -5, -6], 1, Concat, [1]],
  40. [-1, 1, Conv, [256, 1, 1]], # 88
  41. [-1, 1, MP, []],
  42. [-1, 1, Conv, [256, 1, 1]],
  43. [-3, 1, Conv, [256, 1, 1]],
  44. [-1, 1, Conv, [256, 3, 2]],
  45. [[-1, -3, 51], 1, Concat, [1]],
  46. [-1, 1, Conv, [512, 1, 1]],
  47. [-2, 1, Conv, [512, 1, 1]],
  48. [-1, 1, Conv, [256, 3, 1]],
  49. [-1, 1, Conv, [256, 3, 1]],
  50. [-1, 1, Conv, [256, 3, 1]],
  51. [-1, 1, Conv, [256, 3, 1]],
  52. [[-1, -2, -3, -4, -5, -6], 1, Concat, [1]],
  53. [-1, 1, Conv, [512, 1, 1]], # 101
  54. [75, 1, RepConv, [256, 3, 1]],
  55. [88, 1, RepConv, [512, 3, 1]],
  56. [101, 1, RepConv, [1024, 3, 1]],
  57. [[102,103,104], 1, IDetect, [nc, anchors]], # Detect(P3, P4, P5)
  58. ]

其他规则和backbone规则一样,在这里解释一下

[102,103,104], 1, IDetect, [nc, anchors]

[[17, 20, 23], 1, Detect, [nc, anchors]] 表示把第102、103和104三层作为Detect模块的输入,

[nc, anchors]是初始化Detect模块的参数。Detect模块在model/yolo.py中声明,相当于从模型中提出想要的层作为输入,转换为相应的检测头,其输出用来计算loss

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号