助力涵洞场景安全智能巡检,基于yolov7/yolov7x/yolov7e6e开发构建基体建筑缺陷问题检测识别系统

涵洞场景下的安全智能化巡检对于保障设施的正常运行有着重要的意义,在道路、公路、隧道、桥梁等场景下我们都已有实际的项目实践开发,而基于涵洞场景下的数据还未有过尝试,本文的核心目的就是想要构建基于涵洞场景下的智能化目标检测识别系统。

有别于前文系列主要以yolov5系列模型为基准选型,这里的模型主要以yolov7为基准选型,为了对比分析不同参数下模型的性能实效,这里我们分别选择了yolov7、yolov7x和yolov7e6e这三款模型来进行本文中系统模型的开发。

首先来看下效果图:

接下来看下本文选择使用的三款模型配置。

【yolov7】

# parameters
nc: 80  # number of classes
depth_multiple: 1.0  # model depth multiple
width_multiple: 1.0  # layer channel multiple# anchors
anchors:- [12,16, 19,36, 40,28]  # P3/8- [36,75, 76,55, 72,146]  # P4/16- [142,110, 192,243, 459,401]  # P5/32# yolov7 backbone
backbone:# [from, number, module, args][[-1, 1, Conv, [32, 3, 1]],  # 0[-1, 1, Conv, [64, 3, 2]],  # 1-P1/2      [-1, 1, Conv, [64, 3, 1]],[-1, 1, Conv, [128, 3, 2]],  # 3-P2/4  [-1, 1, Conv, [64, 1, 1]],[-2, 1, Conv, [64, 1, 1]],[-1, 1, Conv, [64, 3, 1]],[-1, 1, Conv, [64, 3, 1]],[-1, 1, Conv, [64, 3, 1]],[-1, 1, Conv, [64, 3, 1]],[[-1, -3, -5, -6], 1, Concat, [1]],[-1, 1, Conv, [256, 1, 1]],  # 11[-1, 1, MP, []],[-1, 1, Conv, [128, 1, 1]],[-3, 1, Conv, [128, 1, 1]],[-1, 1, Conv, [128, 3, 2]],[[-1, -3], 1, Concat, [1]],  # 16-P3/8  [-1, 1, Conv, [128, 1, 1]],[-2, 1, Conv, [128, 1, 1]],[-1, 1, Conv, [128, 3, 1]],[-1, 1, Conv, [128, 3, 1]],[-1, 1, Conv, [128, 3, 1]],[-1, 1, Conv, [128, 3, 1]],[[-1, -3, -5, -6], 1, Concat, [1]],[-1, 1, Conv, [512, 1, 1]],  # 24[-1, 1, MP, []],[-1, 1, Conv, [256, 1, 1]],[-3, 1, Conv, [256, 1, 1]],[-1, 1, Conv, [256, 3, 2]],[[-1, -3], 1, Concat, [1]],  # 29-P4/16  [-1, 1, Conv, [256, 1, 1]],[-2, 1, Conv, [256, 1, 1]],[-1, 1, Conv, [256, 3, 1]],[-1, 1, Conv, [256, 3, 1]],[-1, 1, Conv, [256, 3, 1]],[-1, 1, Conv, [256, 3, 1]],[[-1, -3, -5, -6], 1, Concat, [1]],[-1, 1, Conv, [1024, 1, 1]],  # 37[-1, 1, MP, []],[-1, 1, Conv, [512, 1, 1]],[-3, 1, Conv, [512, 1, 1]],[-1, 1, Conv, [512, 3, 2]],[[-1, -3], 1, Concat, [1]],  # 42-P5/32  [-1, 1, Conv, [256, 1, 1]],[-2, 1, Conv, [256, 1, 1]],[-1, 1, Conv, [256, 3, 1]],[-1, 1, Conv, [256, 3, 1]],[-1, 1, Conv, [256, 3, 1]],[-1, 1, Conv, [256, 3, 1]],[[-1, -3, -5, -6], 1, Concat, [1]],[-1, 1, Conv, [1024, 1, 1]],  # 50]# yolov7 head
head:[[-1, 1, SPPCSPC, [512]], # 51[-1, 1, Conv, [256, 1, 1]],[-1, 1, nn.Upsample, [None, 2, 'nearest']],[37, 1, Conv, [256, 1, 1]], # route backbone P4[[-1, -2], 1, Concat, [1]],[-1, 1, Conv, [256, 1, 1]],[-2, 1, Conv, [256, 1, 1]],[-1, 1, Conv, [128, 3, 1]],[-1, 1, Conv, [128, 3, 1]],[-1, 1, Conv, [128, 3, 1]],[-1, 1, Conv, [128, 3, 1]],[[-1, -2, -3, -4, -5, -6], 1, Concat, [1]],[-1, 1, Conv, [256, 1, 1]], # 63[-1, 1, Conv, [128, 1, 1]],[-1, 1, nn.Upsample, [None, 2, 'nearest']],[24, 1, Conv, [128, 1, 1]], # route backbone P3[[-1, -2], 1, Concat, [1]],[-1, 1, Conv, [128, 1, 1]],[-2, 1, Conv, [128, 1, 1]],[-1, 1, Conv, [64, 3, 1]],[-1, 1, Conv, [64, 3, 1]],[-1, 1, Conv, [64, 3, 1]],[-1, 1, Conv, [64, 3, 1]],[[-1, -2, -3, -4, -5, -6], 1, Concat, [1]],[-1, 1, Conv, [128, 1, 1]], # 75[-1, 1, MP, []],[-1, 1, Conv, [128, 1, 1]],[-3, 1, Conv, [128, 1, 1]],[-1, 1, Conv, [128, 3, 2]],[[-1, -3, 63], 1, Concat, [1]],[-1, 1, Conv, [256, 1, 1]],[-2, 1, Conv, [256, 1, 1]],[-1, 1, Conv, [128, 3, 1]],[-1, 1, Conv, [128, 3, 1]],[-1, 1, Conv, [128, 3, 1]],[-1, 1, Conv, [128, 3, 1]],[[-1, -2, -3, -4, -5, -6], 1, Concat, [1]],[-1, 1, Conv, [256, 1, 1]], # 88[-1, 1, MP, []],[-1, 1, Conv, [256, 1, 1]],[-3, 1, Conv, [256, 1, 1]],[-1, 1, Conv, [256, 3, 2]],[[-1, -3, 51], 1, Concat, [1]],[-1, 1, Conv, [512, 1, 1]],[-2, 1, Conv, [512, 1, 1]],[-1, 1, Conv, [256, 3, 1]],[-1, 1, Conv, [256, 3, 1]],[-1, 1, Conv, [256, 3, 1]],[-1, 1, Conv, [256, 3, 1]],[[-1, -2, -3, -4, -5, -6], 1, Concat, [1]],[-1, 1, Conv, [512, 1, 1]], # 101[75, 1, RepConv, [256, 3, 1]],[88, 1, RepConv, [512, 3, 1]],[101, 1, RepConv, [1024, 3, 1]],[[102,103,104], 1, IDetect, [nc, anchors]],   # Detect(P3, P4, P5)]

【yolov7x】

# parameters
nc: 80  # number of classes
depth_multiple: 1.0  # model depth multiple
width_multiple: 1.0  # layer channel multiple# anchors
anchors:- [12,16, 19,36, 40,28]  # P3/8- [36,75, 76,55, 72,146]  # P4/16- [142,110, 192,243, 459,401]  # P5/32# yolov7 backbone
backbone:# [from, number, module, args][[-1, 1, Conv, [40, 3, 1]],  # 0[-1, 1, Conv, [80, 3, 2]],  # 1-P1/2      [-1, 1, Conv, [80, 3, 1]],[-1, 1, Conv, [160, 3, 2]],  # 3-P2/4  [-1, 1, Conv, [64, 1, 1]],[-2, 1, Conv, [64, 1, 1]],[-1, 1, Conv, [64, 3, 1]],[-1, 1, Conv, [64, 3, 1]],[-1, 1, Conv, [64, 3, 1]],[-1, 1, Conv, [64, 3, 1]],[-1, 1, Conv, [64, 3, 1]],[-1, 1, Conv, [64, 3, 1]],[[-1, -3, -5, -7, -8], 1, Concat, [1]],[-1, 1, Conv, [320, 1, 1]],  # 13[-1, 1, MP, []],[-1, 1, Conv, [160, 1, 1]],[-3, 1, Conv, [160, 1, 1]],[-1, 1, Conv, [160, 3, 2]],[[-1, -3], 1, Concat, [1]],  # 18-P3/8  [-1, 1, Conv, [128, 1, 1]],[-2, 1, Conv, [128, 1, 1]],[-1, 1, Conv, [128, 3, 1]],[-1, 1, Conv, [128, 3, 1]],[-1, 1, Conv, [128, 3, 1]],[-1, 1, Conv, [128, 3, 1]],[-1, 1, Conv, [128, 3, 1]],[-1, 1, Conv, [128, 3, 1]],[[-1, -3, -5, -7, -8], 1, Concat, [1]],[-1, 1, Conv, [640, 1, 1]],  # 28[-1, 1, MP, []],[-1, 1, Conv, [320, 1, 1]],[-3, 1, Conv, [320, 1, 1]],[-1, 1, Conv, [320, 3, 2]],[[-1, -3], 1, Concat, [1]],  # 33-P4/16  [-1, 1, Conv, [256, 1, 1]],[-2, 1, Conv, [256, 1, 1]],[-1, 1, Conv, [256, 3, 1]],[-1, 1, Conv, [256, 3, 1]],[-1, 1, Conv, [256, 3, 1]],[-1, 1, Conv, [256, 3, 1]],[-1, 1, Conv, [256, 3, 1]],[-1, 1, Conv, [256, 3, 1]],[[-1, -3, -5, -7, -8], 1, Concat, [1]],[-1, 1, Conv, [1280, 1, 1]],  # 43[-1, 1, MP, []],[-1, 1, Conv, [640, 1, 1]],[-3, 1, Conv, [640, 1, 1]],[-1, 1, Conv, [640, 3, 2]],[[-1, -3], 1, Concat, [1]],  # 48-P5/32  [-1, 1, Conv, [256, 1, 1]],[-2, 1, Conv, [256, 1, 1]],[-1, 1, Conv, [256, 3, 1]],[-1, 1, Conv, [256, 3, 1]],[-1, 1, Conv, [256, 3, 1]],[-1, 1, Conv, [256, 3, 1]],[-1, 1, Conv, [256, 3, 1]],[-1, 1, Conv, [256, 3, 1]],[[-1, -3, -5, -7, -8], 1, Concat, [1]],[-1, 1, Conv, [1280, 1, 1]],  # 58]# yolov7 head
head:[[-1, 1, SPPCSPC, [640]], # 59[-1, 1, Conv, [320, 1, 1]],[-1, 1, nn.Upsample, [None, 2, 'nearest']],[43, 1, Conv, [320, 1, 1]], # route backbone P4[[-1, -2], 1, Concat, [1]],[-1, 1, Conv, [256, 1, 1]],[-2, 1, Conv, [256, 1, 1]],[-1, 1, Conv, [256, 3, 1]],[-1, 1, Conv, [256, 3, 1]],[-1, 1, Conv, [256, 3, 1]],[-1, 1, Conv, [256, 3, 1]],[-1, 1, Conv, [256, 3, 1]],[-1, 1, Conv, [256, 3, 1]],[[-1, -3, -5, -7, -8], 1, Concat, [1]],[-1, 1, Conv, [320, 1, 1]], # 73[-1, 1, Conv, [160, 1, 1]],[-1, 1, nn.Upsample, [None, 2, 'nearest']],[28, 1, Conv, [160, 1, 1]], # route backbone P3[[-1, -2], 1, Concat, [1]],[-1, 1, Conv, [128, 1, 1]],[-2, 1, Conv, [128, 1, 1]],[-1, 1, Conv, [128, 3, 1]],[-1, 1, Conv, [128, 3, 1]],[-1, 1, Conv, [128, 3, 1]],[-1, 1, Conv, [128, 3, 1]],[-1, 1, Conv, [128, 3, 1]],[-1, 1, Conv, [128, 3, 1]],[[-1, -3, -5, -7, -8], 1, Concat, [1]],[-1, 1, Conv, [160, 1, 1]], # 87[-1, 1, MP, []],[-1, 1, Conv, [160, 1, 1]],[-3, 1, Conv, [160, 1, 1]],[-1, 1, Conv, [160, 3, 2]],[[-1, -3, 73], 1, Concat, [1]],[-1, 1, Conv, [256, 1, 1]],[-2, 1, Conv, [256, 1, 1]],[-1, 1, Conv, [256, 3, 1]],[-1, 1, Conv, [256, 3, 1]],[-1, 1, Conv, [256, 3, 1]],[-1, 1, Conv, [256, 3, 1]],[-1, 1, Conv, [256, 3, 1]],[-1, 1, Conv, [256, 3, 1]],[[-1, -3, -5, -7, -8], 1, Concat, [1]],[-1, 1, Conv, [320, 1, 1]], # 102[-1, 1, MP, []],[-1, 1, Conv, [320, 1, 1]],[-3, 1, Conv, [320, 1, 1]],[-1, 1, Conv, [320, 3, 2]],[[-1, -3, 59], 1, Concat, [1]],[-1, 1, Conv, [512, 1, 1]],[-2, 1, Conv, [512, 1, 1]],[-1, 1, Conv, [512, 3, 1]],[-1, 1, Conv, [512, 3, 1]],[-1, 1, Conv, [512, 3, 1]],[-1, 1, Conv, [512, 3, 1]],[-1, 1, Conv, [512, 3, 1]],[-1, 1, Conv, [512, 3, 1]],[[-1, -3, -5, -7, -8], 1, Concat, [1]],[-1, 1, Conv, [640, 1, 1]], # 117[87, 1, Conv, [320, 3, 1]],[102, 1, Conv, [640, 3, 1]],[117, 1, Conv, [1280, 3, 1]],[[118,119,120], 1, IDetect, [nc, anchors]],   # Detect(P3, P4, P5)]

【yolov7e6e】

# parameters
nc: 80  # number of classes
depth_multiple: 1.0  # model depth multiple
width_multiple: 1.0  # layer channel multiple# anchors
anchors:- [ 19,27,  44,40,  38,94 ]  # P3/8- [ 96,68,  86,152,  180,137 ]  # P4/16- [ 140,301,  303,264,  238,542 ]  # P5/32- [ 436,615,  739,380,  925,792 ]  # P6/64# yolov7 backbone
backbone:# [from, number, module, args],[[-1, 1, ReOrg, []],  # 0[-1, 1, Conv, [80, 3, 1]],  # 1-P1/2[-1, 1, DownC, [160]],  # 2-P2/4  [-1, 1, Conv, [64, 1, 1]],[-2, 1, Conv, [64, 1, 1]],[-1, 1, Conv, [64, 3, 1]],[-1, 1, Conv, [64, 3, 1]],[-1, 1, Conv, [64, 3, 1]],[-1, 1, Conv, [64, 3, 1]],[-1, 1, Conv, [64, 3, 1]],[-1, 1, Conv, [64, 3, 1]],[[-1, -3, -5, -7, -8], 1, Concat, [1]],[-1, 1, Conv, [160, 1, 1]],  # 12[-11, 1, Conv, [64, 1, 1]],[-12, 1, Conv, [64, 1, 1]],[-1, 1, Conv, [64, 3, 1]],[-1, 1, Conv, [64, 3, 1]],[-1, 1, Conv, [64, 3, 1]],[-1, 1, Conv, [64, 3, 1]],[-1, 1, Conv, [64, 3, 1]],[-1, 1, Conv, [64, 3, 1]],[[-1, -3, -5, -7, -8], 1, Concat, [1]],[-1, 1, Conv, [160, 1, 1]],  # 22[[-1, -11], 1, Shortcut, [1]],  # 23[-1, 1, DownC, [320]],  # 24-P3/8  [-1, 1, Conv, [128, 1, 1]],[-2, 1, Conv, [128, 1, 1]],[-1, 1, Conv, [128, 3, 1]],[-1, 1, Conv, [128, 3, 1]],[-1, 1, Conv, [128, 3, 1]],[-1, 1, Conv, [128, 3, 1]],[-1, 1, Conv, [128, 3, 1]],[-1, 1, Conv, [128, 3, 1]],[[-1, -3, -5, -7, -8], 1, Concat, [1]],[-1, 1, Conv, [320, 1, 1]],  # 34[-11, 1, Conv, [128, 1, 1]],[-12, 1, Conv, [128, 1, 1]],[-1, 1, Conv, [128, 3, 1]],[-1, 1, Conv, [128, 3, 1]],[-1, 1, Conv, [128, 3, 1]],[-1, 1, Conv, [128, 3, 1]],[-1, 1, Conv, [128, 3, 1]],[-1, 1, Conv, [128, 3, 1]],[[-1, -3, -5, -7, -8], 1, Concat, [1]],[-1, 1, Conv, [320, 1, 1]],  # 44[[-1, -11], 1, Shortcut, [1]],  # 45[-1, 1, DownC, [640]],  # 46-P4/16  [-1, 1, Conv, [256, 1, 1]],[-2, 1, Conv, [256, 1, 1]],[-1, 1, Conv, [256, 3, 1]],[-1, 1, Conv, [256, 3, 1]],[-1, 1, Conv, [256, 3, 1]],[-1, 1, Conv, [256, 3, 1]],[-1, 1, Conv, [256, 3, 1]],[-1, 1, Conv, [256, 3, 1]],[[-1, -3, -5, -7, -8], 1, Concat, [1]],[-1, 1, Conv, [640, 1, 1]],  # 56[-11, 1, Conv, [256, 1, 1]],[-12, 1, Conv, [256, 1, 1]],[-1, 1, Conv, [256, 3, 1]],[-1, 1, Conv, [256, 3, 1]],[-1, 1, Conv, [256, 3, 1]],[-1, 1, Conv, [256, 3, 1]],[-1, 1, Conv, [256, 3, 1]],[-1, 1, Conv, [256, 3, 1]],[[-1, -3, -5, -7, -8], 1, Concat, [1]],[-1, 1, Conv, [640, 1, 1]],  # 66[[-1, -11], 1, Shortcut, [1]],  # 67[-1, 1, DownC, [960]],  # 68-P5/32  [-1, 1, Conv, [384, 1, 1]],[-2, 1, Conv, [384, 1, 1]],[-1, 1, Conv, [384, 3, 1]],[-1, 1, Conv, [384, 3, 1]],[-1, 1, Conv, [384, 3, 1]],[-1, 1, Conv, [384, 3, 1]],[-1, 1, Conv, [384, 3, 1]],[-1, 1, Conv, [384, 3, 1]],[[-1, -3, -5, -7, -8], 1, Concat, [1]],[-1, 1, Conv, [960, 1, 1]],  # 78[-11, 1, Conv, [384, 1, 1]],[-12, 1, Conv, [384, 1, 1]],[-1, 1, Conv, [384, 3, 1]],[-1, 1, Conv, [384, 3, 1]],[-1, 1, Conv, [384, 3, 1]],[-1, 1, Conv, [384, 3, 1]],[-1, 1, Conv, [384, 3, 1]],[-1, 1, Conv, [384, 3, 1]],[[-1, -3, -5, -7, -8], 1, Concat, [1]],[-1, 1, Conv, [960, 1, 1]],  # 88[[-1, -11], 1, Shortcut, [1]],  # 89[-1, 1, DownC, [1280]],  # 90-P6/64  [-1, 1, Conv, [512, 1, 1]],[-2, 1, Conv, [512, 1, 1]],[-1, 1, Conv, [512, 3, 1]],[-1, 1, Conv, [512, 3, 1]],[-1, 1, Conv, [512, 3, 1]],[-1, 1, Conv, [512, 3, 1]],[-1, 1, Conv, [512, 3, 1]],[-1, 1, Conv, [512, 3, 1]],[[-1, -3, -5, -7, -8], 1, Concat, [1]],[-1, 1, Conv, [1280, 1, 1]],  # 100 [-11, 1, Conv, [512, 1, 1]],[-12, 1, Conv, [512, 1, 1]],[-1, 1, Conv, [512, 3, 1]],[-1, 1, Conv, [512, 3, 1]],[-1, 1, Conv, [512, 3, 1]],[-1, 1, Conv, [512, 3, 1]],[-1, 1, Conv, [512, 3, 1]],[-1, 1, Conv, [512, 3, 1]],[[-1, -3, -5, -7, -8], 1, Concat, [1]],[-1, 1, Conv, [1280, 1, 1]],  # 110[[-1, -11], 1, Shortcut, [1]],  # 111 ]# yolov7 head
head:[[-1, 1, SPPCSPC, [640]], # 112[-1, 1, Conv, [480, 1, 1]],[-1, 1, nn.Upsample, [None, 2, 'nearest']],[89, 1, Conv, [480, 1, 1]], # route backbone P5[[-1, -2], 1, Concat, [1]],[-1, 1, Conv, [384, 1, 1]],[-2, 1, Conv, [384, 1, 1]],[-1, 1, Conv, [192, 3, 1]],[-1, 1, Conv, [192, 3, 1]],[-1, 1, Conv, [192, 3, 1]],[-1, 1, Conv, [192, 3, 1]],[-1, 1, Conv, [192, 3, 1]],[-1, 1, Conv, [192, 3, 1]],[[-1, -2, -3, -4, -5, -6, -7, -8], 1, Concat, [1]],[-1, 1, Conv, [480, 1, 1]], # 126[-11, 1, Conv, [384, 1, 1]],[-12, 1, Conv, [384, 1, 1]],[-1, 1, Conv, [192, 3, 1]],[-1, 1, Conv, [192, 3, 1]],[-1, 1, Conv, [192, 3, 1]],[-1, 1, Conv, [192, 3, 1]],[-1, 1, Conv, [192, 3, 1]],[-1, 1, Conv, [192, 3, 1]],[[-1, -2, -3, -4, -5, -6, -7, -8], 1, Concat, [1]],[-1, 1, Conv, [480, 1, 1]], # 136[[-1, -11], 1, Shortcut, [1]],  # 137[-1, 1, Conv, [320, 1, 1]],[-1, 1, nn.Upsample, [None, 2, 'nearest']],[67, 1, Conv, [320, 1, 1]], # route backbone P4[[-1, -2], 1, Concat, [1]],[-1, 1, Conv, [256, 1, 1]],[-2, 1, Conv, [256, 1, 1]],[-1, 1, Conv, [128, 3, 1]],[-1, 1, Conv, [128, 3, 1]],[-1, 1, Conv, [128, 3, 1]],[-1, 1, Conv, [128, 3, 1]],[-1, 1, Conv, [128, 3, 1]],[-1, 1, Conv, [128, 3, 1]],[[-1, -2, -3, -4, -5, -6, -7, -8], 1, Concat, [1]],[-1, 1, Conv, [320, 1, 1]], # 151[-11, 1, Conv, [256, 1, 1]],[-12, 1, Conv, [256, 1, 1]],[-1, 1, Conv, [128, 3, 1]],[-1, 1, Conv, [128, 3, 1]],[-1, 1, Conv, [128, 3, 1]],[-1, 1, Conv, [128, 3, 1]],[-1, 1, Conv, [128, 3, 1]],[-1, 1, Conv, [128, 3, 1]],[[-1, -2, -3, -4, -5, -6, -7, -8], 1, Concat, [1]],[-1, 1, Conv, [320, 1, 1]], # 161[[-1, -11], 1, Shortcut, [1]],  # 162[-1, 1, Conv, [160, 1, 1]],[-1, 1, nn.Upsample, [None, 2, 'nearest']],[45, 1, Conv, [160, 1, 1]], # route backbone P3[[-1, -2], 1, Concat, [1]],[-1, 1, Conv, [128, 1, 1]],[-2, 1, Conv, [128, 1, 1]],[-1, 1, Conv, [64, 3, 1]],[-1, 1, Conv, [64, 3, 1]],[-1, 1, Conv, [64, 3, 1]],[-1, 1, Conv, [64, 3, 1]],[-1, 1, Conv, [64, 3, 1]],[-1, 1, Conv, [64, 3, 1]],[[-1, -2, -3, -4, -5, -6, -7, -8], 1, Concat, [1]],[-1, 1, Conv, [160, 1, 1]], # 176[-11, 1, Conv, [128, 1, 1]],[-12, 1, Conv, [128, 1, 1]],[-1, 1, Conv, [64, 3, 1]],[-1, 1, Conv, [64, 3, 1]],[-1, 1, Conv, [64, 3, 1]],[-1, 1, Conv, [64, 3, 1]],[-1, 1, Conv, [64, 3, 1]],[-1, 1, Conv, [64, 3, 1]],[[-1, -2, -3, -4, -5, -6, -7, -8], 1, Concat, [1]],[-1, 1, Conv, [160, 1, 1]], # 186[[-1, -11], 1, Shortcut, [1]],  # 187[-1, 1, DownC, [320]],[[-1, 162], 1, Concat, [1]],[-1, 1, Conv, [256, 1, 1]],[-2, 1, Conv, [256, 1, 1]],[-1, 1, Conv, [128, 3, 1]],[-1, 1, Conv, [128, 3, 1]],[-1, 1, Conv, [128, 3, 1]],[-1, 1, Conv, [128, 3, 1]],[-1, 1, Conv, [128, 3, 1]],[-1, 1, Conv, [128, 3, 1]],[[-1, -2, -3, -4, -5, -6, -7, -8], 1, Concat, [1]],[-1, 1, Conv, [320, 1, 1]], # 199[-11, 1, Conv, [256, 1, 1]],[-12, 1, Conv, [256, 1, 1]],[-1, 1, Conv, [128, 3, 1]],[-1, 1, Conv, [128, 3, 1]],[-1, 1, Conv, [128, 3, 1]],[-1, 1, Conv, [128, 3, 1]],[-1, 1, Conv, [128, 3, 1]],[-1, 1, Conv, [128, 3, 1]],[[-1, -2, -3, -4, -5, -6, -7, -8], 1, Concat, [1]],[-1, 1, Conv, [320, 1, 1]], # 209[[-1, -11], 1, Shortcut, [1]],  # 210[-1, 1, DownC, [480]],[[-1, 137], 1, Concat, [1]],[-1, 1, Conv, [384, 1, 1]],[-2, 1, Conv, [384, 1, 1]],[-1, 1, Conv, [192, 3, 1]],[-1, 1, Conv, [192, 3, 1]],[-1, 1, Conv, [192, 3, 1]],[-1, 1, Conv, [192, 3, 1]],[-1, 1, Conv, [192, 3, 1]],[-1, 1, Conv, [192, 3, 1]],[[-1, -2, -3, -4, -5, -6, -7, -8], 1, Concat, [1]],[-1, 1, Conv, [480, 1, 1]], # 222[-11, 1, Conv, [384, 1, 1]],[-12, 1, Conv, [384, 1, 1]],[-1, 1, Conv, [192, 3, 1]],[-1, 1, Conv, [192, 3, 1]],[-1, 1, Conv, [192, 3, 1]],[-1, 1, Conv, [192, 3, 1]],[-1, 1, Conv, [192, 3, 1]],[-1, 1, Conv, [192, 3, 1]],[[-1, -2, -3, -4, -5, -6, -7, -8], 1, Concat, [1]],[-1, 1, Conv, [480, 1, 1]], # 232[[-1, -11], 1, Shortcut, [1]],  # 233[-1, 1, DownC, [640]],[[-1, 112], 1, Concat, [1]],[-1, 1, Conv, [512, 1, 1]],[-2, 1, Conv, [512, 1, 1]],[-1, 1, Conv, [256, 3, 1]],[-1, 1, Conv, [256, 3, 1]],[-1, 1, Conv, [256, 3, 1]],[-1, 1, Conv, [256, 3, 1]],[-1, 1, Conv, [256, 3, 1]],[-1, 1, Conv, [256, 3, 1]],[[-1, -2, -3, -4, -5, -6, -7, -8], 1, Concat, [1]],[-1, 1, Conv, [640, 1, 1]], # 245[-11, 1, Conv, [512, 1, 1]],[-12, 1, Conv, [512, 1, 1]],[-1, 1, Conv, [256, 3, 1]],[-1, 1, Conv, [256, 3, 1]],[-1, 1, Conv, [256, 3, 1]],[-1, 1, Conv, [256, 3, 1]],[-1, 1, Conv, [256, 3, 1]],[-1, 1, Conv, [256, 3, 1]],[[-1, -2, -3, -4, -5, -6, -7, -8], 1, Concat, [1]],[-1, 1, Conv, [640, 1, 1]], # 255[[-1, -11], 1, Shortcut, [1]],  # 256[187, 1, Conv, [320, 3, 1]],[210, 1, Conv, [640, 3, 1]],[233, 1, Conv, [960, 3, 1]],[256, 1, Conv, [1280, 3, 1]],[186, 1, Conv, [320, 3, 1]],[161, 1, Conv, [640, 3, 1]],[136, 1, Conv, [960, 3, 1]],[112, 1, Conv, [1280, 3, 1]],[[257,258,259,260,261,262,263,264], 1, IAuxDetect, [nc, anchors]],   # Detect(P3, P4, P5, P6)]

默认完全相同的参数进行训练,如下所示:

#yolov7
python train.py --cfg cfg/training/yolov7.yaml --weights weights/yolov7_training.pt --name yolov7 --epochs 100 --batch-size 32 --img 640 640 --device 0#yolov7x
python3 train.py --cfg cfg/training/yolov7x.yaml --weights weights/yolov7x_training.pt --name yolov7x --epochs 100 --batch-size 32 --img 640 640 --device 0#yolov7-e6e
python train_aux.py --cfg cfg/training/yolov7-e6e.yaml --weights weights/yolov7-e6e_training.pt --name yolov7e6e --epochs 100 --batch-size 32 --img 640 640 --device 0

接下来我们来直观对比分析下结果:

【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曲线)一起使用,以帮助评估和比较不同模型的性能。它们提供了更全面的分类器性能分析,可以根据具体应用场景来选择合适的模型和阈值设置。

也可能是没有调参的缘故,整体实验结果发现yolov7模型的效果反而是最优的,针对模型训练时耗来说,yolov7的训练时间消耗也是相对最少的。在实际项目开发过程中还是需要根据自己的数据场景选择真正合适的模型才是最优的方式。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/109230.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Vue】大悟!模板语法-插值语法指令语法

模板语法 Vue模板语法包括两大类 插值语法 插值语法也就是两个大括号,也叫Mustache 功能:用于解析标签体内容,可以进行运算、三元表达式等,将最终解析出来的内容插入到标签中 写法:{{xxx}},xxx 是 js 表达式&…

OPENCV--Haar+Tesseract车牌识别;

车牌识别步骤 说明:Haar级联器仅用于定位车牌的位置,Tesseract用于提取其中的内容; 实现步骤: 1、Haar级联器定位车牌位置; 2、车牌预处理操作(二值化、形态学、滤波去噪、缩放); 3、调用Tesseract进行文字识别; 注意:这里需要预先安装Tesseract; # -*- cod…

腾讯云4核8G服务器CVM S5性能测评(CPU/流量/系统盘)

腾讯云4核8G服务器CVM标准型S5实例性能测评,包括CPU型号、内存、系统盘、CVM实例规格性能测评,腾讯云4核8G租用优惠价格表,腾讯云服务器网分享腾讯云4核8G服务器CVM S5性能测评和租用费用: 目录 腾讯云4核8G服务器CVM S5性能测评…

【Vue】vue2使用pdfjs预览pdf文件,在线预览方式一,pdfjs文件包打开新窗口预览pdf文件

系列文章目录 【Vue】vue2预览显示quill富文本内容,vue-quill-editor回显页面,v-html回显富文本内容 【Vue】vue2项目使用swiper轮播图2023年8月21日实战保姆级教程 【Vue】vue2使用pdfjs预览pdf文件,在线预览方式一,pdfjs文件包…

openGauss学习笔记-69 openGauss 数据库管理-创建和管理普通表-更新表中数据

文章目录 openGauss学习笔记-69 openGauss 数据库管理-创建和管理普通表-更新表中数据 openGauss学习笔记-69 openGauss 数据库管理-创建和管理普通表-更新表中数据 修改已经存储在数据库中数据的行为叫做更新。用户可以更新单独一行、所有行或者指定的部分行。还可以独立更新…

Java基础语法之数组

💕十年生死两茫茫,不思量,自难忘💕 作者:Mylvzi 文章主要内容:Java学习之--数组 一.数组的基本概念 1.定义 数组是相同数据类型的集合!使用数组来存放多个相同类型的数据! 2.Jav…

【JAVA】String类

作者主页:paper jie_的博客 本文作者:大家好,我是paper jie,感谢你阅读本文,欢迎一建三连哦。 本文录入于《JAVASE语法系列》专栏,本专栏是针对于大学生,编程小白精心打造的。笔者用重金(时间和…

c++ 中的函数指针

以下图片演示了c中函数指针的用法。如下图可见,把函数地址赋值给函数指针,用函数名或者函数名的地址,都可以,c编译器不报错。即 ptr f 和 ptr &f 都对。但准确的话,函数名就是地址,在编译时候&#x…

学Python的漫画漫步进阶 -- 第二步

学Python的漫画漫步进阶 -- 第二步 二、编程基础那点事2.1 标识符2.2 关键字2.3 变量2.4 语句2.5 代码注释2.6 模块2.7 动动手——实现两个模块间的代码元素访问2.8 练一练2.9 标识符的总结全部16步完成后 ,后续就是介绍项目实战,请大家给予点赞、关注&a…

9.14 C++作业

仿照vector手动实现自己的myVector&#xff0c;最主要实现二倍扩容功能 #include <iostream>using namespace std;template <typename T> class Myvector {T *data; //存储数据的数组int len; //当前数组的长度int mycapa; //容纳数据的总容量public://…

第一届电子纸产业创新应用论坛

自从2004年索尼推出全球首款电子纸的应用产品——电纸书阅读器以来&#xff0c;20年间&#xff0c;在各个领域&#xff0c;涌现出众多优秀的电子纸的创新应用&#xff0c;如电子价签、手写本、手机、笔记本、显示器、电子公交站牌等&#xff0c;形成电子纸产业持续蓬勃发展的强…

C语言——指针进阶(三)

目录 一.前言摘要 二.排序函数qsort的模拟实现 三.指针和数组笔试题解析 一.前言摘要 讲述关于strlen和sizeof对于各种数组与指针的计算规则与用法。另外还有qsort函数的模拟实现&#xff08;可以排序任意类型变量&#xff09; 二.排序函数qsort的模拟实现 目标&#xff1a;…