• 助力森林火情预警检测,基于YOLOv7-tiny、YOLOv7和YOLOv7x开发构建无人机航拍场景下的森林火情检测是别预警系统


    火情的预警与检测识别对于保障林业安全,减少人员伤亡有着重要的意义,科学有效地早发现早扑灭是最有效的干预手段,本文的主要是想就是想要建立基于无人机航拍场景下的森林火情检测预警系统,整体效果如下所示:

    这里文中选择了参数量级自低到高的三款模块,分别是yolov7-tiny、yolov7和yolov7x,接下来看下具体的模型配置:

    【YOLOv7-tiny】

    1. # parameters
    2. nc: 3 # number of classes
    3. depth_multiple: 1.0 # model depth multiple
    4. width_multiple: 1.0 # layer channel multiple
    5. # anchors
    6. anchors:
    7. - [10,13, 16,30, 33,23] # P3/8
    8. - [30,61, 62,45, 59,119] # P4/16
    9. - [116,90, 156,198, 373,326] # P5/32
    10. # yolov7-tiny backbone
    11. backbone:
    12. # [from, number, module, args] c2, k=1, s=1, p=None, g=1, act=True
    13. [[-1, 1, Conv, [32, 3, 2, None, 1, nn.LeakyReLU(0.1)]], # 0-P1/2
    14. [-1, 1, Conv, [64, 3, 2, None, 1, nn.LeakyReLU(0.1)]], # 1-P2/4
    15. [-1, 1, Conv, [32, 1, 1, None, 1, nn.LeakyReLU(0.1)]],
    16. [-2, 1, Conv, [32, 1, 1, None, 1, nn.LeakyReLU(0.1)]],
    17. [-1, 1, Conv, [32, 3, 1, None, 1, nn.LeakyReLU(0.1)]],
    18. [-1, 1, Conv, [32, 3, 1, None, 1, nn.LeakyReLU(0.1)]],
    19. [[-1, -2, -3, -4], 1, Concat, [1]],
    20. [-1, 1, Conv, [64, 1, 1, None, 1, nn.LeakyReLU(0.1)]], # 7
    21. [-1, 1, MP, []], # 8-P3/8
    22. [-1, 1, Conv, [64, 1, 1, None, 1, nn.LeakyReLU(0.1)]],
    23. [-2, 1, Conv, [64, 1, 1, None, 1, nn.LeakyReLU(0.1)]],
    24. [-1, 1, Conv, [64, 3, 1, None, 1, nn.LeakyReLU(0.1)]],
    25. [-1, 1, Conv, [64, 3, 1, None, 1, nn.LeakyReLU(0.1)]],
    26. [[-1, -2, -3, -4], 1, Concat, [1]],
    27. [-1, 1, Conv, [128, 1, 1, None, 1, nn.LeakyReLU(0.1)]], # 14
    28. [-1, 1, MP, []], # 15-P4/16
    29. [-1, 1, Conv, [128, 1, 1, None, 1, nn.LeakyReLU(0.1)]],
    30. [-2, 1, Conv, [128, 1, 1, None, 1, nn.LeakyReLU(0.1)]],
    31. [-1, 1, Conv, [128, 3, 1, None, 1, nn.LeakyReLU(0.1)]],
    32. [-1, 1, Conv, [128, 3, 1, None, 1, nn.LeakyReLU(0.1)]],
    33. [[-1, -2, -3, -4], 1, Concat, [1]],
    34. [-1, 1, Conv, [256, 1, 1, None, 1, nn.LeakyReLU(0.1)]], # 21
    35. [-1, 1, MP, []], # 22-P5/32
    36. [-1, 1, Conv, [256, 1, 1, None, 1, nn.LeakyReLU(0.1)]],
    37. [-2, 1, Conv, [256, 1, 1, None, 1, nn.LeakyReLU(0.1)]],
    38. [-1, 1, Conv, [256, 3, 1, None, 1, nn.LeakyReLU(0.1)]],
    39. [-1, 1, Conv, [256, 3, 1, None, 1, nn.LeakyReLU(0.1)]],
    40. [[-1, -2, -3, -4], 1, Concat, [1]],
    41. [-1, 1, Conv, [512, 1, 1, None, 1, nn.LeakyReLU(0.1)]], # 28
    42. ]
    43. # yolov7-tiny head
    44. head:
    45. [[-1, 1, Conv, [256, 1, 1, None, 1, nn.LeakyReLU(0.1)]],
    46. [-2, 1, Conv, [256, 1, 1, None, 1, nn.LeakyReLU(0.1)]],
    47. [-1, 1, SP, [5]],
    48. [-2, 1, SP, [9]],
    49. [-3, 1, SP, [13]],
    50. [[-1, -2, -3, -4], 1, Concat, [1]],
    51. [-1, 1, Conv, [256, 1, 1, None, 1, nn.LeakyReLU(0.1)]],
    52. [[-1, -7], 1, Concat, [1]],
    53. [-1, 1, Conv, [256, 1, 1, None, 1, nn.LeakyReLU(0.1)]], # 37
    54. [-1, 1, Conv, [128, 1, 1, None, 1, nn.LeakyReLU(0.1)]],
    55. [-1, 1, nn.Upsample, [None, 2, 'nearest']],
    56. [21, 1, Conv, [128, 1, 1, None, 1, nn.LeakyReLU(0.1)]], # route backbone P4
    57. [[-1, -2], 1, Concat, [1]],
    58. [-1, 1, Conv, [64, 1, 1, None, 1, nn.LeakyReLU(0.1)]],
    59. [-2, 1, Conv, [64, 1, 1, None, 1, nn.LeakyReLU(0.1)]],
    60. [-1, 1, Conv, [64, 3, 1, None, 1, nn.LeakyReLU(0.1)]],
    61. [-1, 1, Conv, [64, 3, 1, None, 1, nn.LeakyReLU(0.1)]],
    62. [[-1, -2, -3, -4], 1, Concat, [1]],
    63. [-1, 1, Conv, [128, 1, 1, None, 1, nn.LeakyReLU(0.1)]], # 47
    64. [-1, 1, Conv, [64, 1, 1, None, 1, nn.LeakyReLU(0.1)]],
    65. [-1, 1, nn.Upsample, [None, 2, 'nearest']],
    66. [14, 1, Conv, [64, 1, 1, None, 1, nn.LeakyReLU(0.1)]], # route backbone P3
    67. [[-1, -2], 1, Concat, [1]],
    68. [-1, 1, Conv, [32, 1, 1, None, 1, nn.LeakyReLU(0.1)]],
    69. [-2, 1, Conv, [32, 1, 1, None, 1, nn.LeakyReLU(0.1)]],
    70. [-1, 1, Conv, [32, 3, 1, None, 1, nn.LeakyReLU(0.1)]],
    71. [-1, 1, Conv, [32, 3, 1, None, 1, nn.LeakyReLU(0.1)]],
    72. [[-1, -2, -3, -4], 1, Concat, [1]],
    73. [-1, 1, Conv, [64, 1, 1, None, 1, nn.LeakyReLU(0.1)]], # 57
    74. [-1, 1, Conv, [128, 3, 2, None, 1, nn.LeakyReLU(0.1)]],
    75. [[-1, 47], 1, Concat, [1]],
    76. [-1, 1, Conv, [64, 1, 1, None, 1, nn.LeakyReLU(0.1)]],
    77. [-2, 1, Conv, [64, 1, 1, None, 1, nn.LeakyReLU(0.1)]],
    78. [-1, 1, Conv, [64, 3, 1, None, 1, nn.LeakyReLU(0.1)]],
    79. [-1, 1, Conv, [64, 3, 1, None, 1, nn.LeakyReLU(0.1)]],
    80. [[-1, -2, -3, -4], 1, Concat, [1]],
    81. [-1, 1, Conv, [128, 1, 1, None, 1, nn.LeakyReLU(0.1)]], # 65
    82. [-1, 1, Conv, [256, 3, 2, None, 1, nn.LeakyReLU(0.1)]],
    83. [[-1, 37], 1, Concat, [1]],
    84. [-1, 1, Conv, [128, 1, 1, None, 1, nn.LeakyReLU(0.1)]],
    85. [-2, 1, Conv, [128, 1, 1, None, 1, nn.LeakyReLU(0.1)]],
    86. [-1, 1, Conv, [128, 3, 1, None, 1, nn.LeakyReLU(0.1)]],
    87. [-1, 1, Conv, [128, 3, 1, None, 1, nn.LeakyReLU(0.1)]],
    88. [[-1, -2, -3, -4], 1, Concat, [1]],
    89. [-1, 1, Conv, [256, 1, 1, None, 1, nn.LeakyReLU(0.1)]], # 73
    90. [57, 1, Conv, [128, 3, 1, None, 1, nn.LeakyReLU(0.1)]],
    91. [65, 1, Conv, [256, 3, 1, None, 1, nn.LeakyReLU(0.1)]],
    92. [73, 1, Conv, [512, 3, 1, None, 1, nn.LeakyReLU(0.1)]],
    93. [[74,75,76], 1, IDetect, [nc, anchors]], # Detect(P3, P4, P5)
    94. ]

    【YOLOv7】

    1. # parameters
    2. nc: 3 # number of classes
    3. depth_multiple: 1.0 # model depth multiple
    4. width_multiple: 1.0 # layer channel multiple
    5. # anchors
    6. anchors:
    7. - [12,16, 19,36, 40,28] # P3/8
    8. - [36,75, 76,55, 72,146] # P4/16
    9. - [142,110, 192,243, 459,401] # P5/32
    10. # yolov7 backbone
    11. backbone:
    12. # [from, number, module, args]
    13. [[-1, 1, Conv, [32, 3, 1]], # 0
    14. [-1, 1, Conv, [64, 3, 2]], # 1-P1/2
    15. [-1, 1, Conv, [64, 3, 1]],
    16. [-1, 1, Conv, [128, 3, 2]], # 3-P2/4
    17. [-1, 1, Conv, [64, 1, 1]],
    18. [-2, 1, Conv, [64, 1, 1]],
    19. [-1, 1, Conv, [64, 3, 1]],
    20. [-1, 1, Conv, [64, 3, 1]],
    21. [-1, 1, Conv, [64, 3, 1]],
    22. [-1, 1, Conv, [64, 3, 1]],
    23. [[-1, -3, -5, -6], 1, Concat, [1]],
    24. [-1, 1, Conv, [256, 1, 1]], # 11
    25. [-1, 1, MP, []],
    26. [-1, 1, Conv, [128, 1, 1]],
    27. [-3, 1, Conv, [128, 1, 1]],
    28. [-1, 1, Conv, [128, 3, 2]],
    29. [[-1, -3], 1, Concat, [1]], # 16-P3/8
    30. [-1, 1, Conv, [128, 1, 1]],
    31. [-2, 1, Conv, [128, 1, 1]],
    32. [-1, 1, Conv, [128, 3, 1]],
    33. [-1, 1, Conv, [128, 3, 1]],
    34. [-1, 1, Conv, [128, 3, 1]],
    35. [-1, 1, Conv, [128, 3, 1]],
    36. [[-1, -3, -5, -6], 1, Concat, [1]],
    37. [-1, 1, Conv, [512, 1, 1]], # 24
    38. [-1, 1, MP, []],
    39. [-1, 1, Conv, [256, 1, 1]],
    40. [-3, 1, Conv, [256, 1, 1]],
    41. [-1, 1, Conv, [256, 3, 2]],
    42. [[-1, -3], 1, Concat, [1]], # 29-P4/16
    43. [-1, 1, Conv, [256, 1, 1]],
    44. [-2, 1, Conv, [256, 1, 1]],
    45. [-1, 1, Conv, [256, 3, 1]],
    46. [-1, 1, Conv, [256, 3, 1]],
    47. [-1, 1, Conv, [256, 3, 1]],
    48. [-1, 1, Conv, [256, 3, 1]],
    49. [[-1, -3, -5, -6], 1, Concat, [1]],
    50. [-1, 1, Conv, [1024, 1, 1]], # 37
    51. [-1, 1, MP, []],
    52. [-1, 1, Conv, [512, 1, 1]],
    53. [-3, 1, Conv, [512, 1, 1]],
    54. [-1, 1, Conv, [512, 3, 2]],
    55. [[-1, -3], 1, Concat, [1]], # 42-P5/32
    56. [-1, 1, Conv, [256, 1, 1]],
    57. [-2, 1, Conv, [256, 1, 1]],
    58. [-1, 1, Conv, [256, 3, 1]],
    59. [-1, 1, Conv, [256, 3, 1]],
    60. [-1, 1, Conv, [256, 3, 1]],
    61. [-1, 1, Conv, [256, 3, 1]],
    62. [[-1, -3, -5, -6], 1, Concat, [1]],
    63. [-1, 1, Conv, [1024, 1, 1]], # 50
    64. ]
    65. # yolov7 head
    66. head:
    67. [[-1, 1, SPPCSPC, [512]], # 51
    68. [-1, 1, Conv, [256, 1, 1]],
    69. [-1, 1, nn.Upsample, [None, 2, 'nearest']],
    70. [37, 1, Conv, [256, 1, 1]], # route backbone P4
    71. [[-1, -2], 1, Concat, [1]],
    72. [-1, 1, Conv, [256, 1, 1]],
    73. [-2, 1, Conv, [256, 1, 1]],
    74. [-1, 1, Conv, [128, 3, 1]],
    75. [-1, 1, Conv, [128, 3, 1]],
    76. [-1, 1, Conv, [128, 3, 1]],
    77. [-1, 1, Conv, [128, 3, 1]],
    78. [[-1, -2, -3, -4, -5, -6], 1, Concat, [1]],
    79. [-1, 1, Conv, [256, 1, 1]], # 63
    80. [-1, 1, Conv, [128, 1, 1]],
    81. [-1, 1, nn.Upsample, [None, 2, 'nearest']],
    82. [24, 1, Conv, [128, 1, 1]], # route backbone P3
    83. [[-1, -2], 1, Concat, [1]],
    84. [-1, 1, Conv, [128, 1, 1]],
    85. [-2, 1, Conv, [128, 1, 1]],
    86. [-1, 1, Conv, [64, 3, 1]],
    87. [-1, 1, Conv, [64, 3, 1]],
    88. [-1, 1, Conv, [64, 3, 1]],
    89. [-1, 1, Conv, [64, 3, 1]],
    90. [[-1, -2, -3, -4, -5, -6], 1, Concat, [1]],
    91. [-1, 1, Conv, [128, 1, 1]], # 75
    92. [-1, 1, MP, []],
    93. [-1, 1, Conv, [128, 1, 1]],
    94. [-3, 1, Conv, [128, 1, 1]],
    95. [-1, 1, Conv, [128, 3, 2]],
    96. [[-1, -3, 63], 1, Concat, [1]],
    97. [-1, 1, Conv, [256, 1, 1]],
    98. [-2, 1, Conv, [256, 1, 1]],
    99. [-1, 1, Conv, [128, 3, 1]],
    100. [-1, 1, Conv, [128, 3, 1]],
    101. [-1, 1, Conv, [128, 3, 1]],
    102. [-1, 1, Conv, [128, 3, 1]],
    103. [[-1, -2, -3, -4, -5, -6], 1, Concat, [1]],
    104. [-1, 1, Conv, [256, 1, 1]], # 88
    105. [-1, 1, MP, []],
    106. [-1, 1, Conv, [256, 1, 1]],
    107. [-3, 1, Conv, [256, 1, 1]],
    108. [-1, 1, Conv, [256, 3, 2]],
    109. [[-1, -3, 51], 1, Concat, [1]],
    110. [-1, 1, Conv, [512, 1, 1]],
    111. [-2, 1, Conv, [512, 1, 1]],
    112. [-1, 1, Conv, [256, 3, 1]],
    113. [-1, 1, Conv, [256, 3, 1]],
    114. [-1, 1, Conv, [256, 3, 1]],
    115. [-1, 1, Conv, [256, 3, 1]],
    116. [[-1, -2, -3, -4, -5, -6], 1, Concat, [1]],
    117. [-1, 1, Conv, [512, 1, 1]], # 101
    118. [75, 1, RepConv, [256, 3, 1]],
    119. [88, 1, RepConv, [512, 3, 1]],
    120. [101, 1, RepConv, [1024, 3, 1]],
    121. [[102,103,104], 1, IDetect, [nc, anchors]], # Detect(P3, P4, P5)
    122. ]

    【YOLOv7x】

    1. # parameters
    2. nc: 3 # number of classes
    3. depth_multiple: 1.0 # model depth multiple
    4. width_multiple: 1.0 # layer channel multiple
    5. # anchors
    6. anchors:
    7. - [12,16, 19,36, 40,28] # P3/8
    8. - [36,75, 76,55, 72,146] # P4/16
    9. - [142,110, 192,243, 459,401] # P5/32
    10. # yolov7 backbone
    11. backbone:
    12. # [from, number, module, args]
    13. [[-1, 1, Conv, [40, 3, 1]], # 0
    14. [-1, 1, Conv, [80, 3, 2]], # 1-P1/2
    15. [-1, 1, Conv, [80, 3, 1]],
    16. [-1, 1, Conv, [160, 3, 2]], # 3-P2/4
    17. [-1, 1, Conv, [64, 1, 1]],
    18. [-2, 1, Conv, [64, 1, 1]],
    19. [-1, 1, Conv, [64, 3, 1]],
    20. [-1, 1, Conv, [64, 3, 1]],
    21. [-1, 1, Conv, [64, 3, 1]],
    22. [-1, 1, Conv, [64, 3, 1]],
    23. [-1, 1, Conv, [64, 3, 1]],
    24. [-1, 1, Conv, [64, 3, 1]],
    25. [[-1, -3, -5, -7, -8], 1, Concat, [1]],
    26. [-1, 1, Conv, [320, 1, 1]], # 13
    27. [-1, 1, MP, []],
    28. [-1, 1, Conv, [160, 1, 1]],
    29. [-3, 1, Conv, [160, 1, 1]],
    30. [-1, 1, Conv, [160, 3, 2]],
    31. [[-1, -3], 1, Concat, [1]], # 18-P3/8
    32. [-1, 1, Conv, [128, 1, 1]],
    33. [-2, 1, Conv, [128, 1, 1]],
    34. [-1, 1, Conv, [128, 3, 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, 1, Conv, [128, 3, 1]],
    40. [[-1, -3, -5, -7, -8], 1, Concat, [1]],
    41. [-1, 1, Conv, [640, 1, 1]], # 28
    42. [-1, 1, MP, []],
    43. [-1, 1, Conv, [320, 1, 1]],
    44. [-3, 1, Conv, [320, 1, 1]],
    45. [-1, 1, Conv, [320, 3, 2]],
    46. [[-1, -3], 1, Concat, [1]], # 33-P4/16
    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, 1, Conv, [256, 3, 1]],
    54. [-1, 1, Conv, [256, 3, 1]],
    55. [[-1, -3, -5, -7, -8], 1, Concat, [1]],
    56. [-1, 1, Conv, [1280, 1, 1]], # 43
    57. [-1, 1, MP, []],
    58. [-1, 1, Conv, [640, 1, 1]],
    59. [-3, 1, Conv, [640, 1, 1]],
    60. [-1, 1, Conv, [640, 3, 2]],
    61. [[-1, -3], 1, Concat, [1]], # 48-P5/32
    62. [-1, 1, Conv, [256, 1, 1]],
    63. [-2, 1, Conv, [256, 1, 1]],
    64. [-1, 1, Conv, [256, 3, 1]],
    65. [-1, 1, Conv, [256, 3, 1]],
    66. [-1, 1, Conv, [256, 3, 1]],
    67. [-1, 1, Conv, [256, 3, 1]],
    68. [-1, 1, Conv, [256, 3, 1]],
    69. [-1, 1, Conv, [256, 3, 1]],
    70. [[-1, -3, -5, -7, -8], 1, Concat, [1]],
    71. [-1, 1, Conv, [1280, 1, 1]], # 58
    72. ]
    73. # yolov7 head
    74. head:
    75. [[-1, 1, SPPCSPC, [640]], # 59
    76. [-1, 1, Conv, [320, 1, 1]],
    77. [-1, 1, nn.Upsample, [None, 2, 'nearest']],
    78. [43, 1, Conv, [320, 1, 1]], # route backbone P4
    79. [[-1, -2], 1, Concat, [1]],
    80. [-1, 1, Conv, [256, 1, 1]],
    81. [-2, 1, Conv, [256, 1, 1]],
    82. [-1, 1, Conv, [256, 3, 1]],
    83. [-1, 1, Conv, [256, 3, 1]],
    84. [-1, 1, Conv, [256, 3, 1]],
    85. [-1, 1, Conv, [256, 3, 1]],
    86. [-1, 1, Conv, [256, 3, 1]],
    87. [-1, 1, Conv, [256, 3, 1]],
    88. [[-1, -3, -5, -7, -8], 1, Concat, [1]],
    89. [-1, 1, Conv, [320, 1, 1]], # 73
    90. [-1, 1, Conv, [160, 1, 1]],
    91. [-1, 1, nn.Upsample, [None, 2, 'nearest']],
    92. [28, 1, Conv, [160, 1, 1]], # route backbone P3
    93. [[-1, -2], 1, Concat, [1]],
    94. [-1, 1, Conv, [128, 1, 1]],
    95. [-2, 1, Conv, [128, 1, 1]],
    96. [-1, 1, Conv, [128, 3, 1]],
    97. [-1, 1, Conv, [128, 3, 1]],
    98. [-1, 1, Conv, [128, 3, 1]],
    99. [-1, 1, Conv, [128, 3, 1]],
    100. [-1, 1, Conv, [128, 3, 1]],
    101. [-1, 1, Conv, [128, 3, 1]],
    102. [[-1, -3, -5, -7, -8], 1, Concat, [1]],
    103. [-1, 1, Conv, [160, 1, 1]], # 87
    104. [-1, 1, MP, []],
    105. [-1, 1, Conv, [160, 1, 1]],
    106. [-3, 1, Conv, [160, 1, 1]],
    107. [-1, 1, Conv, [160, 3, 2]],
    108. [[-1, -3, 73], 1, Concat, [1]],
    109. [-1, 1, Conv, [256, 1, 1]],
    110. [-2, 1, Conv, [256, 1, 1]],
    111. [-1, 1, Conv, [256, 3, 1]],
    112. [-1, 1, Conv, [256, 3, 1]],
    113. [-1, 1, Conv, [256, 3, 1]],
    114. [-1, 1, Conv, [256, 3, 1]],
    115. [-1, 1, Conv, [256, 3, 1]],
    116. [-1, 1, Conv, [256, 3, 1]],
    117. [[-1, -3, -5, -7, -8], 1, Concat, [1]],
    118. [-1, 1, Conv, [320, 1, 1]], # 102
    119. [-1, 1, MP, []],
    120. [-1, 1, Conv, [320, 1, 1]],
    121. [-3, 1, Conv, [320, 1, 1]],
    122. [-1, 1, Conv, [320, 3, 2]],
    123. [[-1, -3, 59], 1, Concat, [1]],
    124. [-1, 1, Conv, [512, 1, 1]],
    125. [-2, 1, Conv, [512, 1, 1]],
    126. [-1, 1, Conv, [512, 3, 1]],
    127. [-1, 1, Conv, [512, 3, 1]],
    128. [-1, 1, Conv, [512, 3, 1]],
    129. [-1, 1, Conv, [512, 3, 1]],
    130. [-1, 1, Conv, [512, 3, 1]],
    131. [-1, 1, Conv, [512, 3, 1]],
    132. [[-1, -3, -5, -7, -8], 1, Concat, [1]],
    133. [-1, 1, Conv, [640, 1, 1]], # 117
    134. [87, 1, Conv, [320, 3, 1]],
    135. [102, 1, Conv, [640, 3, 1]],
    136. [117, 1, Conv, [1280, 3, 1]],
    137. [[118,119,120], 1, IDetect, [nc, anchors]], # Detect(P3, P4, P5)
    138. ]

    训练数据配置文件如下所示:

    1. # txt path
    2. train: ./dataset/images/train
    3. val: ./dataset/images/test
    4. test: ./dataset/images/test
    5. # number of classes
    6. nc: 3
    7. # class names
    8. names: ['blacksmoke','fire','smoke']

    数据实例如下所示:

    实例标注详情内容如下所示:

    1. 1 0.425 0.67963 0.072917 0.159259
    2. 0 0.792708 0.138889 0.03125 0.07037
    3. 1 0.882812 0.949074 0.138542 0.101852
    4. 1 0.977083 0.446296 0.04375 0.081481
    5. 2 0.507812 0.574074 0.115625 0.12963

    默认均为相同的训练参数配置,100次epoch的迭代训练之后,整体对比结果如下所示:

    【Precision曲线】
    精确率曲线(Precision-Recall Curve)是一种用于评估二分类模型在不同阈值下的精确率性能的可视化工具。它通过绘制不同阈值下的精确率和召回率之间的关系图来帮助我们了解模型在不同阈值下的表现。
    精确率(Precision)是指被正确预测为正例的样本数占所有预测为正例的样本数的比例。召回率(Recall)是指被正确预测为正例的样本数占所有实际为正例的样本数的比例。
    绘制精确率曲线的步骤如下:
    使用不同的阈值将预测概率转换为二进制类别标签。通常,当预测概率大于阈值时,样本被分类为正例,否则分类为负例。
    对于每个阈值,计算相应的精确率和召回率。
    将每个阈值下的精确率和召回率绘制在同一个图表上,形成精确率曲线。
    根据精确率曲线的形状和变化趋势,可以选择适当的阈值以达到所需的性能要求。
    通过观察精确率曲线,我们可以根据需求确定最佳的阈值,以平衡精确率和召回率。较高的精确率意味着较少的误报,而较高的召回率则表示较少的漏报。根据具体的业务需求和成本权衡,可以在曲线上选择合适的操作点或阈值。
    精确率曲线通常与召回率曲线(Recall Curve)一起使用,以提供更全面的分类器性能分析,并帮助评估和比较不同模型的性能。

    【Recall曲线】
    召回率曲线(Recall Curve)是一种用于评估二分类模型在不同阈值下的召回率性能的可视化工具。它通过绘制不同阈值下的召回率和对应的精确率之间的关系图来帮助我们了解模型在不同阈值下的表现。
    召回率(Recall)是指被正确预测为正例的样本数占所有实际为正例的样本数的比例。召回率也被称为灵敏度(Sensitivity)或真正例率(True Positive Rate)。
    绘制召回率曲线的步骤如下:
    使用不同的阈值将预测概率转换为二进制类别标签。通常,当预测概率大于阈值时,样本被分类为正例,否则分类为负例。
    对于每个阈值,计算相应的召回率和对应的精确率。
    将每个阈值下的召回率和精确率绘制在同一个图表上,形成召回率曲线。
    根据召回率曲线的形状和变化趋势,可以选择适当的阈值以达到所需的性能要求。
    通过观察召回率曲线,我们可以根据需求确定最佳的阈值,以平衡召回率和精确率。较高的召回率表示较少的漏报,而较高的精确率意味着较少的误报。根据具体的业务需求和成本权衡,可以在曲线上选择合适的操作点或阈值。
    召回率曲线通常与精确率曲线(Precision Curve)一起使用,以提供更全面的分类器性能分析,并帮助评估和比较不同模型的性能。

    【F1值曲线】
    F1值曲线是一种用于评估二分类模型在不同阈值下的性能的可视化工具。它通过绘制不同阈值下的精确率(Precision)、召回率(Recall)和F1分数的关系图来帮助我们理解模型的整体性能。
    F1分数是精确率和召回率的调和平均值,它综合考虑了两者的性能指标。F1值曲线可以帮助我们确定在不同精确率和召回率之间找到一个平衡点,以选择最佳的阈值。
    绘制F1值曲线的步骤如下:
    使用不同的阈值将预测概率转换为二进制类别标签。通常,当预测概率大于阈值时,样本被分类为正例,否则分类为负例。
    对于每个阈值,计算相应的精确率、召回率和F1分数。
    将每个阈值下的精确率、召回率和F1分数绘制在同一个图表上,形成F1值曲线。
    根据F1值曲线的形状和变化趋势,可以选择适当的阈值以达到所需的性能要求。
    F1值曲线通常与接收者操作特征曲线(ROC曲线)一起使用,以帮助评估和比较不同模型的性能。它们提供了更全面的分类器性能分析,可以根据具体应用场景来选择合适的模型和阈值设置。

    整体对比来看x系列的效果要更优一些,最后以yolov7x为例看下结果详情:

    【混淆矩阵】

    【PR曲线】

    【batch计算实例】

    本身这种无规则边界的对象检测的难度相比于有确定边界的对象都要低一些,后面再考虑实际业务中要如何量化自己的指标。

     

  • 相关阅读:
    如何挖掘xss漏洞
    基于Vue+Node+MySQL的美食菜谱食材网站设计与实现
    如何安装HTMLTestRunner?
    后勤仓库物资领用发放小程序开发制作功能介绍
    计算机二级Office真题解析 excel减免税,订单,成绩
    vue3 编写.netcore可视组件
    【学习笔记之我要C】预处理
    海象赋值表达式减少重复变量
    Qt实现图书管理系统(C++)
    Allavsoft Video Downloader Converter Mac(视频下载工具)
  • 原文地址:https://blog.csdn.net/Together_CZ/article/details/133851589