电脑基础 · 2023年3月28日

最新|全新风格原创YOLOv7、YOLOv5和YOLOX网络结构解析图

💡本篇分享一下个人绘制的原创全新风格YOLOv7网络结构图YOLOv5网络结构图YOLOX网络结构图
个人感觉搭配还行,看着比较直观,所以开源分享一下。

文章目录

    • YOLOv5 网络结构图(最新 推荐🔥🔥🔥)
    • YOLOv7 网络结构图(最新 推荐🔥🔥🔥)
    • YOLOX 网络结构图(最新 推荐🔥🔥🔥)
    • 最新YOLOv5、YOLOv7创新点首发原创改进博客推荐
    • YOLOv7解析
        • 扩展的高效层聚合
        • 模型缩放技术
        • 重新参数化规划
        • 辅助头粗到细
    • YOLOv5 网络配置
    • YOLOv7 网络配置
    • YOLOX 网络配置

YOLOv5 网络结构图(最新 推荐🔥🔥🔥)

YOLOv5 结构:

Backbone: New CSP-Darknet53
Neck: SPPF, CSPPAN
Head: YOLOv3 Head

最新|全新风格原创YOLOv7、YOLOv5和YOLOX网络结构解析图

By YOLOAir CSDN芒果汁没有芒果

YOLOv7 网络结构图(最新 推荐🔥🔥🔥)

论文:YOLOv7: Trainable bag-of-freebies sets new state-of-the-art for real-time object detectors

YOLOv7 结构:

Backbone: New ELANCSP
Neck: SPPCSPC, ELANPAN
Head: YOLOv7 Head

最新|全新风格原创YOLOv7、YOLOv5和YOLOX网络结构解析图
By YOLOAir CSDN芒果汁没有芒果

YOLOX 网络结构图(最新 推荐🔥🔥🔥)

YOLOX 结构:

Backbone: New CSP-Darknet53
Neck: SPP, CSPPAN
Head: YOLOX Head
最新|全新风格原创YOLOv7、YOLOv5和YOLOX网络结构解析图
By YOLOAir CSDN芒果汁没有芒果

最新YOLOv5、YOLOv7创新点首发原创改进博客推荐

(🔥 博客内 附有多种模型改进方式,均适用于YOLOv5系列 以及 YOLOv7系列 改进!!!)

  • 💡🎈☁️:改进YOLOv7系列:首发最新结合多种X-Transformer结构新增小目标检测层,让YOLO目标检测任务中的小目标无处遁形

  • 💡🎈☁️:改进YOLOv7系列:结合Adaptively Spatial Feature Fusion自适应空间特征融合结构,提高特征尺度不变性

  • 💡🎈☁️:改进YOLOv5系列:首发结合最新Extended efficient Layer Aggregation Networks结构,高效的聚合网络设计,提升性能

  • 💡🎈☁️:改进YOLOv7系列:首发结合最新CSPNeXt主干结构(适用YOLOv7),高性能,低延时的单阶段目标检测器主干,通过COCO数据集验证高效涨点

  • 💡🎈☁️:改进YOLOv7系列:最新结合DO-DConv卷积、Slim范式提高性能涨点,打造高性能检测器

  • 💡🎈☁️:改进YOLOv7系列:结合最新即插即用的动态卷积ODConv

  • 💡🎈☁️:改进YOLOv7系列:首发结合最新Transformer视觉模型MOAT结构:交替移动卷积和注意力带来强大的Transformer视觉模型,超强的提升

  • 💡🎈☁️:改进YOLOv7系列:首发结合最新Centralized Feature Pyramid集中特征金字塔,通过COCO数据集验证强势涨点

  • 💡🎈☁️:改进YOLOv7系列:首发结合 RepLKNet 构建 最新 RepLKDeXt 结构|CVPR2022 超大卷积核, 越大越暴力,大到31x31, 涨点高效

  • 💡🎈☁️:改进YOLOv5系列:4.YOLOv5_最新MobileOne结构换Backbone修改,超轻量型架构,移动端仅需1ms推理!苹果最新移动端高效主干网络

  • 💡🎈☁️:改进YOLOv7系列:最新HorNet结合YOLOv7应用! | 新增 HorBc结构,多种搭配,即插即用 | Backbone主干、递归门控卷积的高效高阶空间交互


YOLOv7解析

扩展的高效层聚合

骨干网中 YOLO 网络卷积层的效率对于高效推理速度至关重要。WongKinYiu 通过 Cross Stage Partial Networks 开始了最高层效率的道路。

在 YOLOv7 中,作者建立在关于这个主题的研究的基础上,牢记将层保存在内存中所需的内存量以及梯度在层中反向传播所需的距离——梯度越短,他们的网络学习能力越强。他们选择的最后一层聚合是 E-ELAN,它是 ELAN 计算块的扩展版本。

模型缩放技术

对象检测模型通常以一系列模型的形式发布,大小按比例放大和缩小,因为不同的应用程序需要不同级别的准确度和推理速度。

通常,对象检测模型会考虑网络的深度、网络的宽度以及网络训练的分辨率。在 YOLOv7 中,作者在将层级联在一起的同时协同缩放网络深度和宽度。消融研究表明,这种技术在针对不同尺寸进行缩放的同时保持模型架构最佳。

重新参数化规划

重新参数化技术涉及对一组模型权重进行平均,以创建一个对其尝试建模的一般模式更稳健的模型。在研究中,最近关注模块级重新参数化,其中网络的一部分有自己的重新参数化策略。

YOLOv7 作者使用梯度流传播路径来查看网络中的哪些模块应该使用重新参数化策略,哪些不应该。

辅助头粗到细

YOLO 网络头对网络进行最终预测,但由于它位于网络的下游,因此向位于中间某处的网络添加辅助头可能是有利的。当你在训练时,你正在监督这个检测头以及实际要进行预测的头。

辅助头的训练效率不如最终头,因为它与预测之间的网络较少——因此 YOLOv7 作者对这个头进行了不同级别的监督试验,确定了通过监督的粗到细定义从不同粒度的铅头返回。

YOLOv5 网络配置

# YOLOv5 🚀 by Ultralytics, GPL-3.0 license
# Parameters
nc: 80  # number of classes
depth_multiple: 1.0  # model depth multiple
width_multiple: 1.0  # layer channel multiple
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 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, 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
  ]
# YOLOv5 v6.0 head
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)
  ]

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)
  ]

YOLOX 网络配置

参考YOLOAir算法库

注:YOLOv5、YOLOv7、YOLOX网络结构图均为博主原创,未经允许,不得转发在其他平台或者其他博客!!